Get latest grid carbon intensity for a zone
get_carbon_intensityRetrieve the most recently published carbon intensity for any electricity zone, reported in gCO2eq/kWh with its timestamp and age, so you can decide when to run power-hungry workloads.
Instructions
Return the most recently published carbon intensity for ONE electricity zone.
Answers questions like "how clean is the German grid right now", "should I run this batch job in Ireland or leave it", "what is the CO2 per kWh in Texas".
Data contract (read this before you report any number to a user):
Unit is gCO2eq/kWh (grams of CO2-equivalent per kilowatt-hour of electricity consumed). LOWER IS CLEANER. There is no upper bound; roughly <100 is very clean, ~100-300 is moderate, >400 is fossil-heavy.
"ts" is the START of the reporting interval, in UTC (ISO-8601, "Z" suffix). A value with ts=2026-08-26T01:00:00Z and a 60-minute resolution covers 01:00-02:00 UTC.
"latest" means NEWEST PUBLISHED, NOT "now". European zones typically run 2-4 hours behind real time; US (EIA) zones run 11-28 hours behind. Every reading carries "age_minutes" and "age_human" -- state that age when you report the value. Saying "the current carbon intensity in Texas is X" about a 20-hour-old number is wrong.
GB values come from NESO and use OPERATIONAL (combustion-only) emission factors, not the IPCC AR5 lifecycle factors used for the other 44 zones. GB numbers are systematically lower and MUST NOT be compared or ranked against other zones.
Coverage starts 2026-08-21T00:00:00Z; there is no data before that date.
Attribution is a licence condition. If you surface these values to an end user, credit: ENTSO-E Transparency Platform / U.S. Energy Information Administration (EIA) / NESO Carbon Intensity API. EIA does not endorse this service or any use of it.
Args:
zone (string, required): Zone code such as "DE", "FR", "US-ERCOT", "IT-NORD", "GB". Case-insensitive; unambiguous names like "Texas" or "Portugal" also resolve. Unknown zones return an error listing near matches — do NOT fall back to a neighbouring country.
response_format ("markdown" | "json", default "markdown"): text rendering.
Returns (structured): { "reading": { "zone": "DE", "zone_name": "Germany-Luxembourg", "source": "entsoe", "resolution_min": 60, "ts": "2026-08-26T01:00:00Z", // START of the interval, UTC "gco2eq_kwh": 371.4, "unit": "gCO2eq/kWh", "method": "computed:v1", "age_minutes": 107, "age_human": "1h 47m ago", "freshness": "normal", // fresh | normal | stale | very_stale "operational_factors_only": false, "warning": "..." // present only when something could mislead }, "as_of_statement": "As of 2026-08-26 01:00 UTC ... was 371.4 gCO2eq/kWh.", "unit": "gCO2eq/kWh", "interpretation": "371.4 gCO2eq/kWh is fossil-heavy.", "warnings": [] }
How to report the answer: Quote or paraphrase "as_of_statement". Always include the timestamp or the age. Never say "currently" or "right now" about a reading whose freshness is "stale" or "very_stale", and never about any US zone without naming the time it refers to.
Examples:
"How clean is France's grid?" -> zone="FR"
"Carbon intensity in Texas" -> zone="US-ERCOT" (freshness will be ~1 day old; say so)
Don't use for: comparing several zones (use compare_zones), or for a time series (use get_intensity_history).
Errors:
Unknown zone -> "Unknown zone "XX". ... Call list_zones ..." with suggestions.
Network/timeout -> a message saying the API is unreachable. Do not invent a value.
A covered zone with no published data yet returns "No published data for yet."
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| zone | Yes | Zone code, e.g. 'DE' (Germany-Luxembourg), 'FR' (France), 'US-ERCOT' (Texas), 'IT-NORD', 'GB'. Case-insensitive and '_' is accepted for '-'. An unambiguous country/region name such as 'Texas' or 'Portugal' also resolves. Call list_zones if you are unsure — never substitute a neighbouring zone that is not covered. | |
| response_format | No | Output format for the text content. 'markdown' is compact and human-readable; 'json' returns the full structured payload as text. Structured data is always returned alongside either way. | markdown |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| unit | Yes | ||
| reading | Yes | ||
| warnings | Yes | ||
| interpretation | No | ||
| as_of_statement | Yes | A ready-to-quote sentence that states the value with its as-of time. |