changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "additionalProperties": {},
+ "description": "Live global grid scoreboard: ranked `grids` + unranked `partial_grids`, fuel mix + demand right now, alongside the DC Hub envelope keys.",
+ "properties": {
+ "_entity": {
+ "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
+ "type": "string"
+ },
+ "_front_door": {
+ "additionalProperties": {},
+ "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
+ "properties": {},
+ "type": "object"
+ },
+ "_return_loop": {
+ "additionalProperties": {},
+ "description": "Next-session delta call (get_changes).",
+ "properties": {},
+ "type": "object"
+ },
+ "citation": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {},
+ "type": "object"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
+ },
+ "count": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Ranked grids — the long-standing alias of zones_ranked (NOT grids.length, which also carries the unrankable rows)"
+ },
+ "counts_basis": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {},
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "What each count actually counts, plus per_source rows, eu_zones_live vs eu_zones_configured, and the unranked/unavailable tallies"
+ },
+ "coverage": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Coverage line GENERATED from the rows that actually ranked — a feed that returned nothing is absent from it"
+ },
+ "deep_intelligence": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {},
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Pointers to the deeper per-ISO / per-site tools to call next"
+ },
+ "eu_gas_context": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {},
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "EU gas-flow context: {active_countries, total_throughput_gwh_per_day, unit, source, note}"
+ },
+ "freshness": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {},
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Rows are each feed's LATEST PUBLISHED reading, NOT a synchronized snapshot: {basis, us_mix_source, stale_mix_threshold_hours, stale_mix_rows[], how_to_read}. Read this before narrating any row as current"
+ },
+ "grids": {
+ "anyOf": [
+ {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "avg_price_usd_per_mwh": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Average wholesale price in USD/MWh (where the feed carries price)"
+ },
+ "country": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Country (code or name)"
+ },
+ "demand_age_hours": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Age of the demand reading against the current UTC clock"
+ },
+ "demand_mw": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Current demand in MW"
+ },
+ "demand_period": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Period of the demand reading — a DIFFERENT clock from mix_period on US rows"
+ },
+ "demand_vs_mix_lag_hours": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "How far the fuel mix trails demand WITHIN this row. Non-zero means the two figures are from different hours"
+ },
+ "freshness_basis": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Which clock the ages on this row are measured against"
+ },
+ "fuel_mw": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {},
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Fuel mix in MW, e.g. {gas, nuclear, coal, wind, solar, hydro, …}"
+ },
+ "gas_share_pct": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Gas share of generation, % (null where the feed cannot honestly split gas out, e.g. Brazil ONS thermal)"
+ },
+ "generation_total_mw": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Total generation in MW"
+ },
+ "iso": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Grid operator / bidding-zone code, e.g. PJM, ERCOT, NESO, DE, JP-TOKYO"
+ },
+ "mix_age_hours": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "How old the fuel-mix reading is against the CURRENT UTC clock. US rows are routinely 18-24h overnight — check this before calling a row current"
+ },
+ "mix_is_stale": {
+ "anyOf": [
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Set when mix_age_hours is at or over the stale threshold — do not narrate this row as the mix \"right now\""
+ },
+ "mix_note": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Plain-language warning composed for a stale mix reading"
+ },
+ "mix_period": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Timestamp / period of the fuel-mix reading"
+ },
+ "mix_vs_demand_warning": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Present when generation and demand are hours apart: their difference is a clock gap, NOT net imports"
+ },
+ "note": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Per-grid caveat"
+ },
+ "partial_feed": {
+ "description": "Set when the feed is partial (no full fuel split) — why the grid is unranked"
+ },
+ "region": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Human-readable region name"
+ },
+ "renewable_definition": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Exactly what renewable_share_pct counts, identical on every ranked feed"
+ },
+ "renewable_share_incl_geothermal_pct": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Same share WITH geothermal in the numerator — present only where geothermal > 0. This is the figure get_grid_intelligence publishes for US ISOs; renewable_share_pct above is the cross-feed-comparable one used for the ranking"
+ },
+ "renewable_share_pct": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Wind+solar+hydro share of generation, % (the ranking key)"
+ },
+ "variable_renewable_pct": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Wind+solar-only share, % (partial feeds)"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Fully-ranked grids, greenest (highest renewable share) first — US ISOs + GB + EU zones + TW + JP + KR + BR"
+ },
+ "independent_sources": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Distinct upstream feeds behind those rows — far below zones_ranked because every EU bidding zone comes from ONE feed (ENTSO-E). null when the per-source tally failed"
+ },
+ "ok": {
+ "anyOf": [
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "true when the scoreboard build succeeded"
+ },
+ "partial_grids": {
+ "anyOf": [
+ {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "avg_price_usd_per_mwh": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Average wholesale price in USD/MWh (where the feed carries price)"
+ },
+ "country": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Country (code or name)"
+ },
+ "demand_age_hours": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Age of the demand reading against the current UTC clock"
+ },
+ "demand_mw": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Current demand in MW"
+ },
+ "demand_period": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Period of the demand reading — a DIFFERENT clock from mix_period on US rows"
+ },
+ "demand_vs_mix_lag_hours": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "How far the fuel mix trails demand WITHIN this row. Non-zero means the two figures are from different hours"
+ },
+ "freshness_basis": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Which clock the ages on this row are measured against"
+ },
+ "fuel_mw": {
+ "anyOf": [
+ {
+ "additionalProperties": {},
+ "properties": {},
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Fuel mix in MW, e.g. {gas, nuclear, coal, wind, solar, hydro, …}"
+ },
+ "gas_share_pct": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Gas share of generation, % (null where the feed cannot honestly split gas out, e.g. Brazil ONS thermal)"
+ },
+ "generation_total_mw": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Total generation in MW"
+ },
+ "iso": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Grid operator / bidding-zone code, e.g. PJM, ERCOT, NESO, DE, JP-TOKYO"
+ },
+ "mix_age_hours": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "How old the fuel-mix reading is against the CURRENT UTC clock. US rows are routinely 18-24h overnight — check this before calling a row current"
+ },
+ "mix_is_stale": {
+ "anyOf": [
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Set when mix_age_hours is at or over the stale threshold — do not narrate this row as the mix \"right now\""
+ },
+ "mix_note": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Plain-language warning composed for a stale mix reading"
+ },
+ "mix_period": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Timestamp / period of the fuel-mix reading"
+ },
+ "mix_vs_demand_warning": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Present when generation and demand are hours apart: their difference is a clock gap, NOT net imports"
+ },
+ "note": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Per-grid caveat"
+ },
+ "partial_feed": {
+ "description": "Set when the feed is partial (no full fuel split) — why the grid is unranked"
+ },
+ "region": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Human-readable region name"
+ },
+ "renewable_definition": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Exactly what renewable_share_pct counts, identical on every ranked feed"
+ },
+ "renewable_share_incl_geothermal_pct": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Same share WITH geothermal in the numerator — present only where geothermal > 0. This is the figure get_grid_intelligence publishes for US ISOs; renewable_share_pct above is the cross-feed-comparable one used for the ranking"
+ },
+ "renewable_share_pct": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Wind+solar+hydro share of generation, % (the ranking key)"
+ },
+ "variable_renewable_pct": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Wind+solar-only share, % (partial feeds)"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Grids listed UNRANKED because the feed has no full fuel split (Australia NEM, Singapore EMA)"
+ },
+ "provenance": {
+ "additionalProperties": {},
+ "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
+ "properties": {},
+ "type": "object"
+ },
+ "quota": {
+ "additionalProperties": {},
+ "description": "Caller quota state (remaining calls, tier).",
+ "properties": {},
+ "type": "object"
+ },
+ "ranked_by": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Ranking criterion (renewable share = wind+solar+hydro, greenest first) plus the full definition — identical on every feed, geothermal and biomass excluded from the numerator"
+ },
+ "site_evaluation_handoff": {
+ "anyOf": [
+ {
+ "items": {
+ "additionalProperties": {},
+ "properties": {},
+ "type": "object"
+ },
+ "type": "array"
+ },
+ {
+ "additionalProperties": {},
+ "properties": {},
+ "type": "object"
+ }
+ ],
+ "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
+ },
+ "source": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Upstream feeds behind the rows in THIS response, generated (EIA hourly RTO, Elexon, ENTSO-E, Taipower, OCCTO, KPX, ONS, AEMO, EMA)"
+ },
+ "us_interconnection_queue_gw": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Total queued generation across the 7 US ISO interconnection queues, GW"
+ },
+ "zones_ranked": {
+ "anyOf": [
+ {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Grid rows carrying a live renewable_share_pct, i.e. the ranked set"
+ }
+ },
+ "type": "object"
+}