Elexon BMRS Insights MCP — Great Britain electricity grid & market data. Keyless wrapper over the Elexon Balancing Mechanism Reporting Service (BMRS) Insights API: half-hourly generation by fuel type (wind/gas/nuclear/etc), system demand, and market index (day-ahead) prices.
Three tools with complete schemas and reasonable descriptions, but significant gaps in parameter documentation and output schema clarity. Tool names lack action verbs (generation_by_fuel, system_demand, query_dataset are noun-heavy). Descriptions are adequate (100-200 chars) but lack WHEN/WHY guidance. Parameters from/to lack format constraints beyond 'ISO datetime'. No output schema documented, LLMs cannot predict response structure. Error handling returns generic {error: string} without recovery guidance. No tool annotations (readOnlyHint, idempotentHint). Baseline: 194 chars avg description (these are 150-180), 72 chars avg param description (these are 40-80). Missing: per-parameter type hints in descriptions, output field documentation, error classification.
Great Britain half-hourly electricity generation by fuel type (Elexon BMRS FUELHH dataset). Returns MW generated per fuel (CCGT/gas, COAL, NUCLEAR, WIND, BIOMASS, NPSHYD hydro, PS pumped-storage, OCGT, OIL, and interconnector flows INTFR/INTIRL/etc) for each half-hour settlement period. Keyless. 48 settlement periods per day.
Generic escape hatch for any Elexon BMRS Insights dataset (e.g. MID market index/day-ahead prices, DGWS actual wind/solar generation, FUELHH generation by fuel). Pass a dataset code and a datetime window; pick the date parameter style with date_param. Keyless. Returns the raw records.
Great Britain electricity system demand outturn (Elexon BMRS ITSDO — Initial Transmission System Demand Outturn) over a datetime window. Returns demand in MW per half-hourly settlement period. Keyless.
Tool names lack action verbs. 'generation_by_fuel', 'system_demand', 'query_dataset' are noun-heavy and do not signal intent. Should be 'get_generation_by_fuel', 'get_system_demand', 'query_bmrs_dataset' to match LLM parsing conventions (90% of A+ tools start with verb).
No output schema documented. callTool returns {count, generation/demand/records, byFuel} but LLMs cannot predict field names or types. Must document: 'Returns {count: number, generation: [{time, settlementDate, settlementPeriod, fuelType, mw}], byFuel: {[fuelType]: MW}}'.
Parameter descriptions lack format constraints. 'from' and 'to' say 'ISO datetime' but do not specify timezone (Z required?), precision (seconds vs milliseconds?), or valid range. Should be: 'ISO 8601 datetime with Z suffix, e.g. 2024-06-01T00:00Z. Max 48 hours per query.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Error handling returns bare {error: string} without recovery guidance. Per pattern:recovery-guide, errors must tell LLM what to do next. E.g. 'Elexon 429: Rate limited. Retry in 60s.' or 'Invalid dataset code. Valid codes: FUELHH, ITSDO, MID, DGWS.'
No tool annotations. Tools are read-only (safe to retry) but lack readOnlyHint in schema. query_dataset is idempotent but lacks idempotentHint. These hints guide agent retry logic and safety reasoning.