Docs API reference

Power Prices (ERCOT day-ahead) API v1

Generated from core.contract.describe_power_price_ercot_v1() and checked fixture-backed examples. Do not hand-edit the example JSON files.

Capability

What It Can Answer

Represented Facts

Data Point Contract

Does not answer:

REST Surface

MCP Surface

Local MCP Setup

Some MCP clients launch servers from the user's home directory or ignore a configured cwd. Use uv run --directory so the server always starts from the repository project.

{
  "command": "uv",
  "args": [
    "run",
    "--directory",
    "/absolute/path/to/OSINT",
    "python",
    "-m",
    "core.mcp_server"
  ]
}

Leave EXASCALE_PARQUET_BASE / EXASCALE_RAW_BASE unset: the one server hosts every data point's tools, and with no override it resolves each block's promoted snapshots and raw archive from the repository layout. Setting either env var points ALL tools at one directory — a per-block path breaks every other block's tools. They exist only for single-source sandboxes and tests.

Request Schema

Filters:

Group by:

Date range parameters:

Controls:

Ranking (how order_by / top_n / order join — order_by ranks groups by a metric, never a group_by dimension; top_n needs both a group_by and an order_by):

{
  "no_ranking": "Omit order_by and top_n to return all groups in group-key order.",
  "order": {
    "default": "desc",
    "valid_values": [
      "desc",
      "asc"
    ]
  },
  "order_by": {
    "accepts": "one of output.metrics",
    "note": "Ranks the groups by a metric (a measure). Not a group_by dimension \u2014 rows already come back grouped by each group_by field.",
    "requires": [
      "group_by"
    ],
    "valid_values": [
      "avg_price_usd_per_mwh",
      "min_price_usd_per_mwh",
      "max_price_usd_per_mwh",
      "source_record_count"
    ]
  },
  "top_n": {
    "note": "Keeps the top N groups by order_by; the rest fold into one (other) remainder (additive metrics sum into it, non-additive ones are nulled) so the result still reconciles to summary.totals.",
    "requires": [
      "group_by",
      "order_by"
    ],
    "type": "positive integer"
  }
}

Output Schema

Aggregate metrics:

Metric groups:

{
  "price": [
    "avg_price_usd_per_mwh",
    "min_price_usd_per_mwh",
    "max_price_usd_per_mwh"
  ],
  "records": [
    "source_record_count"
  ]
}

Response summary fields:

Accepted fact policy:

Metric metadata:

Metric Category Unit Aggregation Additive Across Groups Authoritative Total Definition
avg_price_usd_per_mwh price USD/MWh average false summary.totals.avg_price_usd_per_mwh The average ERCOT day-ahead settlement-point price ($/MWh) over the result scope.
min_price_usd_per_mwh price USD/MWh minimum false summary.totals.min_price_usd_per_mwh The minimum ERCOT day-ahead settlement-point price ($/MWh) over the result scope.
max_price_usd_per_mwh price USD/MWh maximum false summary.totals.max_price_usd_per_mwh The maximum ERCOT day-ahead settlement-point price ($/MWh) over the result scope.
source_record_count records count count source records true summary.totals.source_record_count Count of (settlement_point, delivery_date, hour_ending) day-ahead prices in the current result scope.

Rollup rules:

Detail record fields returned when include_records is true:

Row-level citation fields:

Aggregate citation fields:

Codebooks

Field Coverage Codes Examples Note
settlement_point_type the distinct ERCOT type codes served from the pinned settlement-points mapping 11 HU = Trading Hub — a regional benchmark price (e.g. HB_NORTH, HB_HOUSTON, HB_WEST), LZ = Load Zone — a load-aggregation zone (e.g. LZ_HOUSTON, LZ_NORTH), RN = Resource Node — a single generating resource's settlement point, PUN = Private Use Network resource node (served verbatim), LZ_DC = DC-tie load zone — a settlement point at a DC interconnection (e.g. DC_E) ERCOT's OWN verbatim codes, never collapsed. The common classes: HU = trading Hub (a regional benchmark, e.g. HB_NORTH/HB_HOUSTON), LZ = Load Zone (e.g. LZ_HOUSTON), RN = Resource Node (a single generating resource's connection point), LZ_DC = a DC-tie zone (a settlement point at a DC interconnection to a neighboring grid, e.g. DC_E). The finer codes — PCCRN, LCCRN, PUN, AH, SH, LZ_DCEW, LZEW — are ERCOT's own subclassifications, served as-is (see ERCOT's settlement-points list for their precise definitions); we never guess or collapse them. Filter by ERCOT's EXACT code.
market DAM only 1 DAM = Day-Ahead Market (hourly, cleared the day before the operating day) Every price in this block is a DAY-AHEAD (DAM) settlement-point price. Real-time / 5-minute prices are not served.

The complete machine-readable codebooks are included in capability-schema.json.

Checked Examples

Agent question Request params Checked output
What were the hourly day-ahead prices at the ERCOT North hub (HB_NORTH) on 2026-06-20? {"delivery_date": "2026-06-20", "group_by": ["hour_ending"], "settlement_point": "HB_NORTH"} hub-hourly-day-ahead-price.json
What was the average ERCOT day-ahead price by settlement-point type on 2026-06-20? {"delivery_date": "2026-06-20", "group_by": ["settlement_point_type"]} avg-price-by-location-type.json
What was the average day-ahead price at each ERCOT trading hub (type HU) on 2026-06-20? {"delivery_date": "2026-06-20", "group_by": ["settlement_point"], "settlement_point_type": "HU"} hub-prices-by-point.json
Return one ERCOT day-ahead price at HB_NORTH with a row-level citation. {"delivery_date": "2026-06-20", "include_records": true, "limit": 1, "settlement_point": "HB_NORTH"} price-detail-with-citation.json
Verify the raw workbook row behind a returned citation citations[ref].verify (aggregate) or records[0].citation (detail) source-row-evidence.json
Dogfood the tool sequence as an agent list -> describe -> query -> evidence agent-dogfood-transcript.json

The checked schema output is capability-schema.json.

Agent Workflow

  1. Call list_capabilities_v1 and select power.price_ercot.
  2. Call describe_power_price_ercot_v1 to inspect valid filters, groupings, metrics, and citation fields.
  3. Call query_power_price_ercot_v1 with bounded JSON params.
  4. If the answer needs proof, pass a returned row-level citation object to get_source_evidence_v1.
  5. Answer with the resolved as_of and relevant citations. Present returned metrics as authoritative for their declared source, snapshot, grain, and aggregation.
Generated from the tested API contract. Compare with the live capability map ↗