@pipeworx/pjm

Connect: https://gateway.pipeworx.io/pjm/mcp · Install: one-click buttons

No MCP client? Skip the connection: POST https://gateway.pipeworx.io/v1/tools/search_packs {"query":"..."} to find a tool below, GET /v1/tools/<name> for its schema, POST the same URL with arguments for the data — see For AI agents.

Tools: 4

PJM Interconnection market data via Data Miner 2 — real-time LMPs, generation by fuel type and the seven-day load forecast for the largest US grid operator (13 states + DC, ~65 million people, Illinois to New Jersey).

Tools

  • pjm_feeds(feed?, row_count?, start_row?) — list the Data Miner 2 feed catalog, or fetch ANY feed by exact name (da_hrl_lmps, inst_load, …). The escape hatch for the hundreds of PJM feeds without a dedicated tool here.
  • pjm_lmp_realtime(pnode_id?, pnode_name?, datetime_beginning_ept?, row_count?) — five-minute real-time LMP with congestion and loss components.
  • pjm_load_forecast(forecast_area?, row_count?) — seven-day hourly load forecast by transmission zone and RTO total.
  • pjm_generation_fuel_mix(fuel_type?, datetime_beginning_ept?, row_count?) — MW and percentage of total by fuel type.

Auth

BYO only today. Ocp-Apim-Subscription-Key header (Azure API Management). Platform fallback env var — not provisioned: PLATFORM_PJM_KEY.

A key is free but requires registering an account at https://apiportal.pjm.com/ and subscribing that account to the Data Miner 2 product. Those are two steps: a registered key that is not subscribed to the feed is refused identically to no key at all, which is why the pack’s 401 message names the subscription explicitly rather than just saying “bad key”.

Until the key lands, every tool refuses with a message containing requires an API key, and the pack is marked byoExpected: true in workers/gateway/src/pack-manifest.json so the vendor-key ratchet does not fail the deploy. Drop byoExpected the day PLATFORM_PJM_KEY is provisioned.

Data sources

Traps

  • Response shapes here are UNVERIFIED. Holding no key, no PJM response body in this pack has been observed live. The pack normalizes the documented {totalRows, items, links} envelope and returns items as published, without renaming or reshaping individual fields. That is deliberate: a field mapping invented from documentation we could not exercise is a silent-wrong- answer waiting to happen, and returning upstream rows untouched is honest about what we actually know. Tighten this once a key exists and the real payload can be read.
  • A 401 here tells you almost nothing. Verified 2026-09-17: api.pjm.com answers 401 with an empty body and no WWW-Authenticate header, both with no key and with a syntactically valid but unregistered one. So 401 cannot distinguish “no key” from “wrong key” from “key not subscribed to this feed”. The pack says so in the error rather than guessing at a cause.
  • format=json is not the default — Data Miner 2 defaults to another representation. This pack always sets it.
  • Times are Eastern Prevailing Time (EPT — shifts with DST), and the range filter uses Data Miner’s own "M/D/YYYY HH:MM to M/D/YYYY HH:MM" syntax, not ISO-8601.
  • A 200 with 0 rows is treated as an error, not an empty success: it almost always means the date filter fell outside the feed’s published range.

Tools

  • pjm_feeds — List the feeds published by PJM Data Miner 2 — the catalog of every market-data dataset PJM exposes (LMPs, load, generation, ancillary services, capacity, transmission). Returns each feed’s name and m
  • pjm_lmp_realtime — PJM real-time five-minute locational marginal prices (LMP $/MWh) by pricing node, with the total price and its congestion and marginal-loss components. PJM is the largest US grid operator (13 states +
  • pjm_load_forecast — PJM seven-day load forecast — forecast electricity demand in MW by forecast area (each transmission zone plus the RTO total), hour by hour. Use for “what will PJM demand be tomorrow”, “PJM peak for
  • pjm_generation_fuel_mix — PJM generation by fuel type — MW generated and percentage of total from coal, natural gas, nuclear, wind, solar, hydro, oil, storage and other, per published interval. Use for “what is PJM burning rig

Tools

  • pjm_feeds — List the feeds published by PJM Data Miner 2 — the catalog of every market-data dataset PJM exposes (LMPs, load, generation, ancillary services, capacity, transmission). Returns each feed's name and m
  • pjm_generation_fuel_mix — PJM generation by fuel type — MW generated and percentage of total from coal, natural gas, nuclear, wind, solar, hydro, oil, storage and other, per published interval. Use for what is PJM burning righ
  • pjm_lmp_realtime — PJM real-time five-minute locational marginal prices (LMP $/MWh) by pricing node, with the total price and its congestion and marginal-loss components. PJM is the largest US grid operator (13 states +
  • pjm_load_forecast — PJM seven-day load forecast — forecast electricity demand in MW by forecast area (each transmission zone plus the RTO total), hour by hour. Use for what will PJM demand be tomorrow , PJM peak forecast

Regenerated from source · build September 18, 2026