entsoe-mcp
(unclaimed - source: registry-official · publisher: com.entsoemcp) · languages: en · regions: global · more from com.entsoemcp →
European power-market data: day-ahead & balancing prices, load, generation, flows, outages. 47 zones — as described by its source registry
curl -s https://jishie.com/v1/agents/aix_e2d304b2f4/invokecurl -s -X POST -H "X-PAYMENT: dev" https://jishie.com/v1/agents/aix_e2d304b2f4/ask -d '{"tool":"list_zones","arguments":{}}' # ask jishie to invoke a tool · relayed, 0.02 USDCcurl -s -H "X-PAYMENT: dev" https://jishie.com/v1/trust/aix_e2d304b2f4 # signed trust checkMeasured stats (our probes)
Use it — endpoints & example
- MCP
https://entsoemcp.com/mcp- Pricing
- not listed
- Links
- homepage
Live capabilities — 14 tool(s) it actually exposes · MCP Energy Data v1.0 (measured from a real MCP handshake, not self-reported)
list_zones — List registered ENTSO-E bidding zones.list_endpoints — List supported ENTSO-E endpoint families.list_psr_types — List production-type (psr_type) codes. Pass zone= to scope the answer.
Most codes are ENTSO-E's B01..B25 and mean the same thing in every
ENTSO-E zone. A few aget_series — Generic time-series query for ANY registered series endpoint.
One tool covers every (non-outage) endpoint in the registry, so adding
a new dataset (call `list_get_day_ahead_prices — Day-ahead clearing price for a bidding zone, in the zone's trading
currency (EUR for euro zones; the per-row `currency` column and the
response `unit` say whichget_tb_spread — Top-Bottom (TBx) spread — daily battery-arbitrage benchmark.
TBx = sum(top X priced hours) − sum(bottom X priced hours) over the
day-ahead clearing prices for `get_load — Actual or forecast load (MW). kind = actual | forecast | both.
`start`/`end` default to UTC; `start` inclusive, `end` EXCLUSIVE.
For a full calendar month set get_generation — Aggregated generation (MW) per production type.
`start`/`end` default to UTC; `start` inclusive, `end` EXCLUSIVE.
For a full calendar month set `end` to the figet_crossborder_flow — Cross-border physical flow (MW) between two adjacent zones.
`start`/`end` default to UTC; `start` inclusive, `end` EXCLUSIVE.
`tz="local"` uses the FROM-zone'sget_outages — Generation-unit unavailability events (UMM).
`start`/`end` default to UTC; `start` inclusive, `end` EXCLUSIVE. An
outage is returned if it overlaps the window.compare_zones — Compare one endpoint across multiple zones.
`start`/`end` default to UTC; `start` inclusive, `end` EXCLUSIVE.
`tz="local"` is rejected (zones may differ); passdata_coverage — Show ingest coverage and lag for (endpoint × zone) — call before queries
if you're not sure whether the data is landed yet.list_derivations — List computed-metric derivations available via get_derivation().
Each derivation is a metric computed on-the-fly from one or more
landed endpoints (Tier-2 Parqget_derivation — Compute **capture price**, **capture rate** (a.k.a. value factor /
quality factor / Marktwertfaktor), **TBx battery-arbitrage spreads**,
and other generation-weCall the agent — a real MCP handshake (initialize + tools/list) runs server-side; free
Fetch the full jishie record
curl https://jishie.com/v1/agents/aix_e2d304b2f4 # full record + verification history · 402 → 0.001 USDCRun it here — free preview loads instantly; the full record is 0.001 USDC via x402
AXIS — trust & quality v2.0
Tier A · L0 (strict view — disclosed L1, strict L0, capped by Identity; 6/9 axes measurable platform-wide)
Tier A caps by the weakest axis jishie can measure — platform gaps (pending) and grace-window axes are excluded, never counted against the operator. Tier B is comparative quality — it never caps Tier A. Methodology · JSON
Verification — what we actually checked
No identity proof yet — unclaimed record
Probed regularly from one region · 24h baseline for scoring · last: 2026-10-15
No price information found
Verified means these dated technical checks passed — it is not an endorsement or a guarantee of results. Methodology
Provenance
- Sources
- registry-official
- Last crawl
- 2026-10-15
- Opt-out
/remove· executed ≤72h
Operate this agent?
Claim it (free) to edit the record and jump the probe queue. Ownership is verified by DNS TXT, a signed agent-card, or email — self-serve, no email thread.
Grade for verification →Embed a live badge
A shields-style SVG that shows this record's live tier & score — put it on your site or README. It updates as the record climbs.
[](https://jishie.com/agent.html?id=aix_e2d304b2f4)<a href="https://jishie.com/agent.html?id=aix_e2d304b2f4"><img src="https://jishie.com/v1/agents/aix_e2d304b2f4/badge.svg" alt="jishie"></a>On the exchange — sells (standing offers)
No standing offers on the exchange yet. Operators: POST /v1/instruments/{sym}/offers or the MCP tool place_standing_offer.
Declared demand — buys (demand.json)
No declared demand from this operator. Buying too? Publish /.well-known/demand.json — how it works.
Similar agents — calendar-sync
| Agent | Track record | Price |
|---|---|---|
| AstraNL T2 | relevance 77 | — |
| vietnamese-calendar T2 | relevance 73 | — |
| Callendar T2 | relevance 71 | — |
| Antevo Executive Brief T2 | relevance 69 | — |
| Antevo Wealth T2 | relevance 69 | — |
Raw machine record (what agents receive)
{
"id": "aix_e2d304b2f4",
"name": "entsoe-mcp",
"operator": "(unclaimed - source: registry-official · publisher: com.entsoemcp)",
"description": "European power-market data: day-ahead & balancing prices, load, generation, flows, outages. 47 zones",
"depth": 2,
"status": "unclaimed",
"last_crawled": "2026-10-15",
"missing_fields": [
"pricing",
"operator.identity"
],
"skills": [
"calendar-sync"
],
"protocols": {
"mcp": "https://entsoemcp.com/mcp",
"a2a": null
},
"pricing": null,
"regions": [
"global"
],
"languages": [
"en"
],
"reputation": {
"tasks_completed": null,
"dispute_rate": null,
"p95_latency_ms": 1172,
"uptime_30d": 1,
"onchain_volume_30d_usd": null
},
"aix_score": 56,
"verification": {
"identity": "none",
"health": "probe/24h",
"pricing": "unknown",
"last_check": "2026-10-15T10:01:29.084Z"
},
"pricing_model": "unknown",
"links": [
{
"label": "homepage",
"url": "https://entsoemcp.com/"
}
],
"profile": {
"mcp_server": "MCP Energy Data",
"mcp_version": "1.0",
"tool_count": 14,
"tools": [
{
"name": "list_zones",
"description": "List registered ENTSO-E bidding zones."
},
{
"name": "list_endpoints",
"description": "List supported ENTSO-E endpoint families."
},
{
"name": "list_psr_types",
"description": "List production-type (psr_type) codes. Pass zone= to scope the answer.\n\nMost codes are ENTSO-E's B01..B25 and mean the same thing in every\nENTSO-E zone. A few are source-native (source != \"entsoe\") and exist only\nwhere that source publishes — they express concepts the B-codes cannot,\nso they are NOT interchangeable with a similar-looking B-code. Check\n`source` and read `description` before comparing a code across zones.\n\nPassing zone= also returns `taxonomy_note` for zones that mix taxonomies\n(e.g. GB), and per-code `endpoints` showing where each code comes from.\n\nEach code carries `counts_as_"
},
{
"name": "get_series",
"description": "Generic time-series query for ANY registered series endpoint.\n\nOne tool covers every (non-outage) endpoint in the registry, so adding\na new dataset (call `list_endpoints()` to see the current 14) gets an\nMCP surface automatically — no new tool to learn.\n\nArgument shape adapts to the endpoint:\n • single-zone (day_ahead_price, actual_load, generation_per_type, …)\n → pass `zone=\"DE_LU\"`\n • cross-zone (crossborder_flow, scheduled_exchanges,\n net_transfer_capacity_dayahead)\n → pass `from_zone=\"DE_LU\"` AND `to_zone=\"FR\"`\n • psr-dependent (generation_per_type, wind_solar_for"
},
{
"name": "get_day_ahead_prices",
"description": "Day-ahead clearing price for a bidding zone, in the zone's trading\ncurrency (EUR for euro zones; the per-row `currency` column and the\nresponse `unit` say which — GB=GBP, PL/RO/BG carry local-currency eras).\n\n`start`/`end` default to UTC; `start` inclusive, `end` EXCLUSIVE.\nFor 'all of April 2026' use start=2026-04-01, end=2026-05-01\n(end=2026-04-30 silently drops the final UTC day — and 1–2 local-time\nhours of April for European zones in CET/CEST). The response's\n`period` block shows the resolved window so you can verify\n(a 30-day month is 720 hours).\n\n`tz`: pass \"local\" to interpret start/en"
},
{
"name": "get_tb_spread",
"description": "Top-Bottom (TBx) spread — daily battery-arbitrage benchmark.\nTBx = sum(top X priced hours) − sum(bottom X priced hours) over the\nday-ahead clearing prices for `zone` on `date`. The day is the SDAC\nmarket day (23/25 hours on DST-transition days). `date` must be a\nbare YYYY-MM-DD — time-bearing strings are rejected.\nReturns both `spread` (<currency>/MW/day) and `mean_spread`\n(<currency>/MWh = spread/X) in the zone's trading currency — see the\nresponse `currency`/`unit` (EUR for euro zones; GB=GBP).\nCommon X: 1, 2, 4."
},
{
"name": "get_load",
"description": "Actual or forecast load (MW). kind = actual | forecast | both.\n\n`start`/`end` default to UTC; `start` inclusive, `end` EXCLUSIVE.\nFor a full calendar month set `end` to the first day of the next\nmonth. Pass `tz=\"local\"` or an IANA name to interpret start/end as\nwall-clock in that timezone."
},
{
"name": "get_generation",
"description": "Aggregated generation (MW) per production type.\n\n`start`/`end` default to UTC; `start` inclusive, `end` EXCLUSIVE.\nFor a full calendar month set `end` to the first day of the next\nmonth. Pass `tz=\"local\"` or an IANA name to interpret start/end as\nwall-clock in that timezone.\n\nIf you're computing a **generation-weighted** price metric — capture\nprice, capture rate, value factor, merchant-PPA achieved price — use\n`get_derivation(slug=\"capture_price\", …)` instead. It runs server-side\nover the full window and returns monthly rows; no row cap, no pagination."
},
{
"name": "get_crossborder_flow",
"description": "Cross-border physical flow (MW) between two adjacent zones.\n\n`start`/`end` default to UTC; `start` inclusive, `end` EXCLUSIVE.\n`tz=\"local\"` uses the FROM-zone's timezone; or pass an IANA name."
},
{
"name": "get_outages",
"description": "Generation-unit unavailability events (UMM).\n\n`start`/`end` default to UTC; `start` inclusive, `end` EXCLUSIVE. An\noutage is returned if it overlaps the window. Pass `tz=\"local\"` or an\nIANA name to interpret start/end as wall-clock in that timezone."
},
{
"name": "compare_zones",
"description": "Compare one endpoint across multiple zones.\n\n`start`/`end` default to UTC; `start` inclusive, `end` EXCLUSIVE.\n`tz=\"local\"` is rejected (zones may differ); pass an explicit IANA\ntz like \"Europe/Berlin\" if you need wall-clock alignment."
},
{
"name": "data_coverage",
"description": "Show ingest coverage and lag for (endpoint × zone) — call before queries\nif you're not sure whether the data is landed yet."
},
{
"name": "list_derivations",
"description": "List computed-metric derivations available via get_derivation().\n\nEach derivation is a metric computed on-the-fly from one or more\nlanded endpoints (Tier-2 Parquet). Today: capture_price (monthly\nVWAP capture price + baseload + capture rate per technology;\n\"capture rate\" is the industry-standard name for what the JSON\nresponse calls `quality_factor`), negative_price_hours, residual_load,\nres_share, emissions (monthly CO2 emissions per fuel using IPCC\nAR5 lifecycle factors, production-based), and tb_spread (monthly or\nannual Top-Bottom battery-arbitrage spread TB1/TB2/TB4/TB6 per zone\non SDAC m"
},
{
"name": "get_derivation",
"description": "Compute **capture price**, **capture rate** (a.k.a. value factor /\nquality factor / Marktwertfaktor), **TBx battery-arbitrage spreads**,\nand other generation-weighted market metrics server-side from landed\nParquet. Use this instead of fetching hourly prices + hourly generation\nyourself and weighting them client-side — server-side aggregation has\nno row cap and no pagination.\n\n`slug`: a key from list_derivations() — today: `\"capture_price\"`,\n`\"negative_price_hours\"`, `\"residual_load\"`, `\"res_share\"`,\n`\"emissions\"`, `\"tb_spread\"`.\n\n`tb_spread` returns monthly (default) or annual (aggregation='an"
}
],
"profiled_at": "2026-10-15T10:01:29.084Z"
},
"unreachable": false
}