MCP server

Live US power market data, as tools for your agent

A free, public MCP server with 135 streams across ERCOT, MISO, PJM, SPP, CAISO, NYISO, ISO-NE — real-time and day-ahead prices, load, generation and forecasts — plus weather and building permits, collected live from the source and checked against it. Connect once and ask for “ERCOT's Houston price over the last day” instead of building URLs.

https://api.dryos.ai/mcpAdd to CursorAdd to VS Code
  • no key
  • no sign-up
  • read-only
  • streamable http

Connect your client

Claude Code
claude mcp add --transport http dryos https://api.dryos.ai/mcp
Cursor · ~/.cursor/mcp.json
{
  "mcpServers": {
    "dryos": {
      "url": "https://api.dryos.ai/mcp"
    }
  }
}
Claude.ai & Claude Desktop
Settings → Connectors → Add custom connector
Name: Dryos
URL:  https://api.dryos.ai/mcp
ChatGPT (developer mode)
Settings → Apps & Connectors → Create
URL: https://api.dryos.ai/mcp
Authentication: none
VS Code · .vscode/mcp.json
{
  "servers": {
    "dryos": {
      "type": "http",
      "url": "https://api.dryos.ai/mcp"
    }
  }
}
Windsurf · mcp_config.json
{
  "mcpServers": {
    "dryos": {
      "serverUrl": "https://api.dryos.ai/mcp"
    }
  }
}
Gemini CLI
gemini mcp add --transport http dryos https://api.dryos.ai/mcp
Codex · ~/.codex/config.toml
[mcp_servers.dryos]
url = "https://api.dryos.ai/mcp"

Then ask

  • What was the highest real-time price at ERCOT's Houston hub in the last 24 hours, and when?
  • Compare the hourly average price at ERCOT's North hub, PJM's Western hub and MISO's Indiana hub over the past week.
  • Which NYISO zones are pricing above $100 right now?
  • Build me a React dashboard of CAISO's NP15 and SP15 real-time prices that refreshes every five minutes.
  • How many roofing permits did San Antonio issue each week this quarter?

Building something? Every query_stream result carries restUrl, the same request as a plain GET on the public REST API, so the agent that answered the question also hands you the endpoint for your app.

Build it on your own infrastructure

The workspace is open source. Clone it, point it at the MCP server, deploy it anywhere — your stack, the same live data.

Star1
claytonhorning/dryos-workspace
git clone https://github.com/claytonhorning/dryos-workspace.git

Build in your account

A second server lets your agent build live dashboards in your own Dryos workspace: “chart ERCOT's Houston price against the Austin temperature forecast and put it in a new workspace called Houston desk.” It asks you to sign in with your Dryos account the first time, and it can only add — never delete. Use it alongside the data server above: the agent finds the data there and builds with it here.

https://www.dryos.ai/api/mcp
Claude Code
claude mcp add --transport http dryos-workspace https://www.dryos.ai/api/mcp

In Claude.ai, Claude Desktop or ChatGPT, add a custom connector with this URL; the sign-in opens on its own.

list_workspacesYour workspaces and their pages, with links.
list_communityThe workspaces Dryos publishes for everyone — one per grid operator — with a link to view each page and copy it.
copy_communityYour own editable copy of a community workspace, every page included, ready for add_tile.
list_componentsThe tile shapes and their settings, and the published recipes a page can start from.
create_workspaceA new workspace with its first page, blank or from a recipe.
add_pageAnother page in a workspace.
add_tileA chart, ticker, bar, table, map, heatmap or title on live data — compiled before it is saved.
get_pageWhat is on a page and where.

Data tools

list_streamsEvery stream, filterable by domain, grid operator or a word.
describe_streamOne stream's columns, key, source, health and recent collector changes.
find_entitiesLook up node, zone or station names — never guess one.
column_valuesThe distinct values of a text column, for filters.
query_streamRows, raw or bucketed; times in ISO-8601 or relative (-24h). At most 2,000 a call. Each result carries restUrl — the same request as a GET, ready for an app.

What is in it

Prices

Real-time and day-ahead LMPs at every hub, zone and node — energy, congestion and loss where the operator publishes them.

Grid

Load, generation by fuel, wind and solar output, interchange, constraints, reserves and ancillary prices.

Forecasts

Load, wind and solar forecasts with every vintage kept, so a forecast is never silently overwritten.

Weather

NWS station observations and gridpoint forecasts, and a wind field across Texas.

Property

Building permits from Austin, San Antonio, Fort Worth and Collin County, labelled by trade.

Every stream, with its columns and cadence, is listed in the API reference and in llms.txt.

Questions

What is the Dryos MCP server?
A remote Model Context Protocol server at https://api.dryos.ai/mcp. It gives an AI agent five read-only tools over the same data the Dryos API serves: US power markets (ERCOT, MISO, PJM, SPP, CAISO, NYISO, ISO-NE), weather and building permits, collected live from each source and checked against it.
Does it need an API key or an account?
No. It is public, read-only and speaks Streamable HTTP, so any MCP client that can add a server by URL can use it. Calls are limited per address, and a refusal says so in words an agent can act on.
Which clients work with it?
Claude Code, Claude.ai and Claude Desktop (as a custom connector), ChatGPT in developer mode, Cursor, VS Code, Windsurf, Gemini CLI and Codex — any client that supports remote MCP servers.
How fresh is the data?
Each stream is collected on its source's own cadence. Five-minute real-time prices land within minutes of the operator publishing them, and every stream reports its collection history, so an agent can say how fresh a number is.
Can I use it to build an app?
Yes. Every query_stream result carries restUrl — the same request as a plain GET on the public REST API at api.dryos.ai. The agent answers the question and hands you the endpoint to put in your code.
How does it stop an agent reporting a wrong number?
The server's instructions ride along with the connection: every timestamp is UTC, names are looked up rather than guessed, forecasts keep their vintages, null means the source did not report it, and every answer cites the stream and the intervals behind it.