Ask the market, not the menu
Name a time, place, asset, fuel, constraint, or event. The agent picks the datasets and tools required — no query builder, no schema to learn.
Ask a market question in plain English. The agent reads across the full catalog to answer it — for right now, for what already happened, or for what's forecast next — moves the map to what it finds, and already knows what you're looking at, so a follow-up doesn't have to repeat the setup.
15 typed tools, one active market per turn, and evidence rules enforced in code rather than asserted in prose.

Source-bound
Every consequential answer arrives as an answer package, not a sentence you have to trust — the number travels with the evidence that produced it.
Nothing is modeled in silently. Every figure resolves back to the dataset it was read from, the interval it covers, and the arithmetic that produced it.
What ships with every answer
The exact ISO publication or table the figure was read from.
The as-of interval — which minute of the market this reflects.
The tools called and the arithmetic that produced the number.
Whether the figure is observed, forecast, cleared day-ahead, reference, or mixed.
Ask in plain English. The agent plans, calls typed grid tools, runs the calculation, and hands back an answer that can move the product to its own evidence.
Active market
ERCOT · CAISO · NYISO · PJM
One is active per turn. Every product-data call the agent makes is held inside it, so an answer does not quietly borrow another market's numbers.
Name a time, place, asset, fuel, constraint, or event. The agent picks the datasets and tools required — no query builder, no schema to learn.
Catalog search, time-series and geospatial queries, event lookup, derived calculations, and charts run against live ISO data — not a summary of scraped text.
The active market, map selection, time window, and prior work stay attached, so a follow-up sharpens the thread instead of restarting it.
Answers arrive with the dataset, timestamp, and calculation path, and can open the originating public record for a check.
An answer can select the node, move the timeline, draw the chart, and hand the live state to the map or radar.
An evidence loop, not a question router. The agent forms the smallest plan that answers the whole job, runs it, reads the results, and adapts when the evidence disagrees with the plan.
server-owned
The server stamps one active market on every turn — ERCOT, CAISO, NYISO, or PJM — and holds every product-data call inside it. Ask for another market's current metric and the answer is to switch grids, not a cross-market guess.
catalog search
The question goes in whole, intent intact. What comes back is a short list of the datasets that actually bear on it, each labelled by how directly it applies — so a rough substitute is never counted as equal to a precise match.
schema check
Before anything is queried, the agent checks what a dataset's columns and values actually look like — so a filter is written against real identifiers, not a guessed spelling.
bounded read
The agent queries only the datasets it identified, read-only, held inside the active market — it cannot wander into a different grid's numbers or write anything.
computed, not guessed
Math runs over the actual retrieved numbers, not values re-typed from memory — a total is a real sum, and mixing incompatible measures or markets is refused outright.
answer contract
Conclusion or value first, with the entity, the local timestamp, and the freshness; then the evidence and what it implies. Where the data itself has a stated boundary, the answer stops there instead of filling the gap.
15tools the agent can call inside a turn, grouped by what they're for.
Evidence
The path every data answer takes — the four steps above, as callable tools.
Grid objects
Typed lookups for things on the grid — not market values.
Public record
Public sources and public-entity display — only web search returns citable evidence.
The surface
How an answer moves the product it was asked from.
These are the agent's own tools, called inside a turn — they are not an API. The MCP server is a separate surface with its own names: search_data, describe_data, query_data, plus grid-asset, live-status, and asset-profile tools, for pointing your own client at the same catalog. See the MCP surface.
Attribution is not a formatting habit at the end of the answer. It is attached to the result before the model reads it, and the model is held to it.
Two real turns against live ERCOT data — nothing staged, nothing mocked. The step counts shown are the agent's own.


One live market state runs the whole platform. The answer can move the map, draw a chart, and hand its evidence to the next surface.