@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),subregionalorreserve.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
- https://public-api.misoenergy.org/ — the live public API. Endpoint index is rendered as HTML at the root of that host.
- https://www.misoenergy.org/markets-and-operations/rtdataapis/ — MISO’s own page for these feeds.
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/Snapshotdisplay feed comma-grouped as"99,978".num()coerces and returnsnull— never0— 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/FuelMixis one interval, not a series. Use/Todayor/Yesterdayfor the full day.MediumTermLoadForecastusesHourEnding, notHour— unlikeClearedMWright beside it, which usesHour. Keying both offHoursilently produces an all-null forecast column./api/WindSolar/GetCombinedreturns future hours too, with actuals that are absent rather than meaningful. This pack emitsnullfor an actual whose hour has not happened, rather than reporting 0 MW of wind at 11pm.getapiversionis gzipped without negotiation, so a rawcurlwithout--compressedprints binary. Workers’fetchdecompresses 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 Lmiso_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 amiso_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 cmiso_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 demamiso_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