@pipeworx/miso

Connect: https://gateway.pipeworx.io/miso/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: 5

MISO (Midcontinent ISO) real-time electricity data — fuel mix, load, five-minute LMPs, wind/solar forecast-vs-actual and transmission binding constraints for the 15-state footprint from Louisiana to Minnesota plus Manitoba.

Tools

  • miso_fuel_mix(period?) — MW generated per fuel category (coal, gas, nuclear, wind, solar, hydro, battery storage, other) plus the footprint total. current (default) = the latest 5-minute interval; today / yesterday = the whole day.
  • miso_lmp(region?, node?, limit?) — five-minute LMP $/MWh per pricing node with loss and congestion components and every ancillary-service clearing price (regulation, mileage, spinning, supplemental, short-term reserve, ramp up/down). ~1,600 nodes across the Central, North and South regions.
  • miso_binding_constraints(kind?) — the flowgates currently binding, with their shadow price. transmission (default), subregional or reserve.
  • miso_load() — today’s actual load hour by hour against the medium-term load forecast for the same hours, plus the five-minute total-load series.
  • miso_wind_solar() — hourly wind and solar forecast vs actual MW.

Auth

Keyless. No registration, no key, no rate-limit documented.

Data sources

Traps

The endpoint everyone still cites is a silent zero. MISO’s long-documented Real-Time Data Broker —

https://api.misoenergy.org/MISORTWDDataBroker/DataBrokerServices.asmx
  ?messageType=getfuelmix&returnType=json

— still resolves, still answers HTTP 200, and returns

{"error": "no data", "See": "https://www.misoenergy.org/markets-and-operations/rtdataapis"}

for every data messageType (getfuelmix, getlmpconsolidatedtable, gettotalload, …). Only getapiversion still carries a payload. Any client that checks res.ok reports success forever while returning nothing — the failure class in docs/silent-zero-policy.md. Verified dead 2026-09-17. This pack talks only to public-api.misoenergy.org, and misoGet throws on a body carrying a string error so a future retirement fails loudly instead of silently.

Other things worth knowing:

  • Every number is a string. "34168", and in the /api/Snapshot display feed comma-grouped as "99,978". num() coerces and returns null — never 0 — for a blank, so “no reading” never reads as “zero megawatts”.
  • Timestamps are EST year-round. MISO does not shift the market clock for daylight saving; the payload labels this explicitly.
  • /api/FuelMix is one interval, not a series. Use /Today or /Yesterday for the full day.
  • MediumTermLoadForecast uses HourEnding, not Hour — unlike ClearedMW right beside it, which uses Hour. Keying both off Hour silently produces an all-null forecast column.
  • /api/WindSolar/GetCombined returns future hours too, with actuals that are absent rather than meaningful. This pack emits null for an actual whose hour has not happened, rather than reporting 0 MW of wind at 11pm.
  • getapiversion is gzipped without negotiation, so a raw curl without --compressed prints binary. Workers’ fetch decompresses automatically.

Tools

  • miso_fuel_mix — MISO (Midcontinent ISO — 15 US states from Louisiana to Minnesota plus Manitoba) real-time generation by fuel type: coal, natural gas, nuclear, wind, solar, hydro, battery storage, other. Returns MW a
  • miso_lmp — MISO real-time five-minute locational marginal prices (LMP $/MWh) by pricing node, split into its energy / congestion / loss components (MEC-equivalent, MCC, MLC) together with the ancillary-service c
  • miso_binding_constraints — MISO real-time transmission binding constraints — the specific flowgates and facility limits currently constraining the market, with their shadow price ($/MWh of relief). A binding constraint is why L
  • miso_load — MISO real-time total load (electricity demand) for today, hour by hour in MW, alongside the medium-term load forecast for the same hours so actual-vs-forecast is directly comparable. Use for “MISO dem
  • miso_wind_solar — MISO wind and solar generation for today — hourly forecast vs actual output in MW for both, from the same feed MISO publishes to its operators. Hours that have not happened yet carry a forecast and a

Tools

  • miso_binding_constraints — MISO real-time transmission binding constraints — the specific flowgates and facility limits currently constraining the market, with their shadow price ($/MWh of relief). A binding constraint is why L
  • miso_fuel_mix — MISO (Midcontinent ISO — 15 US states from Louisiana to Minnesota plus Manitoba) real-time generation by fuel type: coal, natural gas, nuclear, wind, solar, hydro, battery storage, other. Returns MW a
  • miso_lmp — MISO real-time five-minute locational marginal prices (LMP $/MWh) by pricing node, split into its energy / congestion / loss components (MEC-equivalent, MCC, MLC) together with the ancillary-service c
  • miso_load — MISO real-time total load (electricity demand) for today, hour by hour in MW, alongside the medium-term load forecast for the same hours so actual-vs-forecast is directly comparable. Use for MISO dema
  • miso_wind_solar — MISO wind and solar generation for today — hourly forecast vs actual output in MW for both, from the same feed MISO publishes to its operators. Hours that have not happened yet carry a forecast and a

Regenerated from source · build September 18, 2026