PJM RPM Capacity-Market Results (internal) API v1
Generated from
core.contract.describe_power_capacity_market_pjm_v1()and checked fixture-backed examples. Do not hand-edit the example JSON files.
Capability
- Capability:
power.capacity_market_pjm - Primitive:
query_power_capacity_market_pjm_v1 - Status:
available - Current source:
energy.pjm.capacity_market - Source publisher: PJM Interconnection, L.L.C.
- Snapshot behavior:
as_of = latestresolves to an exact snapshot date in every response.
What It Can Answer
- PJM Base Residual Auction UCAP clearing prices by delivery year and LDA.
- RTO cleared UCAP and report-stated reliability requirement where published.
- Published administrative UCAP price cap and floor parameters, preserving cap-bound outcomes.
- Raw workbook row or PDF page-row evidence for any returned detail citation.
Represented Facts
PJM Reliability Pricing Model Base Residual Auction results: UCAP-basis resource clearing prices in USD per MW-day for the RTO and published LDAs, RTO cleared UCAP MW, the stated RTO reliability requirement, and any administrative price cap and floor stated in the auction results report or the planning-period-parameters workbook — each on the basis its stating document uses, quoted verbatim in cap_basis. Documents searched for a collar that state none yield a collar_search atom, so absence is provably "not stated", never "not parsed". Workbook and report facts remain separate cited atoms at their exact source coordinates.
Data Point Contract
- Data point:
power.capacity_market_pjm - Product spec:
blocks/power_capacity_market_pjm/card.md - Grain:
auction_delivery_year_lda_or_auction_parameter - Source basis:
energy.pjm.capacity_market - Represented fact: PJM Reliability Pricing Model Base Residual Auction results: UCAP-basis resource clearing prices in USD per MW-day for the RTO and published LDAs, RTO cleared UCAP MW, the stated RTO reliability requirement, and any administrative price cap and floor stated in the auction results report or the planning-period-parameters workbook — each on the basis its stating document uses, quoted verbatim in cap_basis. Documents searched for a collar that state none yield a collar_search atom, so absence is provably "not stated", never "not parsed". Workbook and report facts remain separate cited atoms at their exact source coordinates.
Does not answer:
energy-market LMPs, day-ahead energy prices, real-time prices, or plant revenuea scarcity-adjusted, uncapped, forecast, or effective capacity priceICAP-to-UCAP conversions or resource-specific accreditationauctions or LDAs not published by PJMa blended price across delivery years, auctions, or LDAs
REST Surface
GET /v1/healthGET /v1/capabilitiesGET /v1/power/capacity-market-pjm/schemaPOST /v1/power/capacity-market-pjm/queryPOST /v1/evidence/source-row
MCP Surface
list_capabilities_v1describe_power_capacity_market_pjm_v1query_power_capacity_market_pjm_v1get_source_evidence_v1
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:
as_ofauction_labeldelivery_yearldaatom_typedocument_kind
Group by:
auction_labeldelivery_yearldaatom_typedocument_kind
Date range parameters:
Controls:
include_recordsinclude_evidencelimitorder_bytop_norderrollup_other
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_clearing_price_usd_mw_day",
"min_clearing_price_usd_mw_day",
"max_clearing_price_usd_mw_day",
"cleared_ucap_mw",
"reliability_requirement_mw",
"price_cap_usd_mw_day",
"price_floor_usd_mw_day",
"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:
avg_clearing_price_usd_mw_daymin_clearing_price_usd_mw_daymax_clearing_price_usd_mw_daycleared_ucap_mwreliability_requirement_mwprice_cap_usd_mw_dayprice_floor_usd_mw_daysource_record_count
Metric groups:
{
"capacity": [
"cleared_ucap_mw",
"reliability_requirement_mw"
],
"price": [
"avg_clearing_price_usd_mw_day",
"min_clearing_price_usd_mw_day",
"max_clearing_price_usd_mw_day",
"price_cap_usd_mw_day",
"price_floor_usd_mw_day"
],
"records": [
"source_record_count"
]
}
Response summary fields:
group_counttotals
Accepted fact policy:
- Query responses contain accepted, gate-passed facts only.
- Gate, monitor, and audit quality signals are internal controls, not agent-facing answer caveats.
- If a source snapshot is not fit to serve, the source must fail closed before it reaches this API.
Metric metadata:
| Metric | Category | Unit | Aggregation | Additive Across Groups | Authoritative Total | Definition |
|---|---|---|---|---|---|---|
avg_clearing_price_usd_mw_day |
price | USD/MW-day | average | false | summary.totals.avg_clearing_price_usd_mw_day |
Average UCAP clearing price over the current result scope. |
min_clearing_price_usd_mw_day |
price | USD/MW-day | minimum | false | summary.totals.min_clearing_price_usd_mw_day |
Minimum UCAP clearing price over the current result scope. |
max_clearing_price_usd_mw_day |
price | USD/MW-day | maximum | false | summary.totals.max_clearing_price_usd_mw_day |
Maximum UCAP clearing price over the current result scope. |
cleared_ucap_mw |
capacity | MW | maximum | false | summary.totals.cleared_ucap_mw |
Published RTO cleared UCAP over the current result scope. |
reliability_requirement_mw |
capacity | MW | maximum | false | summary.totals.reliability_requirement_mw |
Published RTO reliability requirement over the current result scope. |
price_cap_usd_mw_day |
price | USD/MW-day | maximum | false | summary.totals.price_cap_usd_mw_day |
Administrative price cap (basis per stating document, see cap_basis) over the current result scope. |
price_floor_usd_mw_day |
price | USD/MW-day | maximum | false | summary.totals.price_floor_usd_mw_day |
Administrative price floor (basis per stating document, see cap_basis) over the current result scope. |
source_record_count |
records | count | count source records | true | summary.totals.source_record_count |
Capacity-market result atom count over the current result scope. |
Rollup rules:
summary.totals.<metric>is the authoritative total for the full matched query.- Grouped row metrics may be summed only when
additive_across_groupsistrue. - Do not sum grouped values for these non-additive metrics:
avg_clearing_price_usd_mw_day,min_clearing_price_usd_mw_day,max_clearing_price_usd_mw_day,cleared_ucap_mw,reliability_requirement_mw,price_cap_usd_mw_day,price_floor_usd_mw_day.
Detail record fields returned when include_records is true:
source_idsheet_nameisodocument_kindauction_labeldelivery_yearldaatom_typeclearing_price_usd_mw_daycleared_ucap_mwreliability_requirement_mwprice_cap_usd_mw_dayprice_floor_usd_mw_daycap_basisreport_periodsource_record_keysource_row_numberas_ofraw_file_sha256citation
Row-level citation fields:
source_idsource_urlsource_filesheetsource_rowraw_file_sha256as_of
Aggregate citation fields:
source_idpublishersource_urlsource_fileraw_file_sha256as_ofsource_rows_countsource_rows_sampleverifylineage_filter
Codebooks
| Field | Coverage | Codes | Examples | Note |
|---|---|---|---|---|
document_kind |
supported BRA result documents | 3 | results_workbook = PJM auction results workbook, results_report = PJM auction results report, parameters_workbook = PJM planning-period parameters workbook |
The complete machine-readable codebooks are included in capability-schema.json.
Checked Examples
| Agent question | Request params | Checked output |
|---|---|---|
| What was the PJM RTO UCAP clearing price for delivery year 2026/2027? | {"atom_type": "clearing_price", "delivery_year": "2026/2027", "include_records": true, "lda": "RTO"} |
rto-clearing-price.json |
| What LDA UCAP clearing prices did PJM publish for delivery year 2026/2027? | {"atom_type": "clearing_price", "delivery_year": "2026/2027", "group_by": ["lda"]} |
lda-clearing-prices.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
- Call
list_capabilities_v1and selectpower.capacity_market_pjm. - Call
describe_power_capacity_market_pjm_v1to inspect valid filters, groupings, metrics, and citation fields. - Call
query_power_capacity_market_pjm_v1with bounded JSON params. - If the answer needs proof, pass a returned row-level
citationobject toget_source_evidence_v1. - Answer with the resolved
as_ofand relevant citations. Present returned metrics as authoritative for their declared source, snapshot, grain, and aggregation.