Skip to main content
Glama

GridHub Electricity Market Data

Server Details

Live and historical electricity prices and demand for 25 grids; carbon intensity for GB.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 39 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
jalcodev/gridhub-mcp
GitHub Stars
0
Server Listing
gridhub-mcp

TDQS

A4.6/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a clearly distinct retrieval pattern: raw time series, latest single-zone values, all-zone snapshot, composite contextual brief, source health, and zone directory. The only overlap—get_latest vs get_zone_brief—is explicitly differentiated as raw current data versus interpretation-ready context.

Naming Consistency5/5

All names use snake_case and follow a predictable get_/list_ verb-noun pattern: get_history, get_latest, get_map_snapshot, get_status, get_zone_brief, list_zones. The single list_ prefix is appropriate for a directory operation and does not break consistency.

Tool Count5/5

Six tools is well-scoped for a read-only electricity market data API. It covers the essential access patterns without redundant or trivial endpoints, keeping the set easy to navigate.

Completeness4/5

The surface covers zone listing, historical time series, latest values, cross-zone comparison, contextual briefs, and ingestion health, which is strong coverage for the domain. A minor gap is the lack of bulk historical or multi-zone time-series queries, though agents can work around this with repeated get_history calls.

Available Tools

6 tools
get_historyHistorical time seriesA
Read-onlyIdempotent
Inspect

Time series for one metric in one zone over a start/end window (Unix seconds). Rows are returned oldest-first and the 'limit' truncates from the OLDEST end, so a small limit over a wide window returns old data, not recent data — for 'the latest N points' set start close to now, or use get_latest / get_zone_brief for current values. Default window is the last 24h (last ~400 days for capacity, which is annual). Max window 31 days per call (400 for capacity); paginate with start/end for more. Metrics: price (wholesale, local currency per MWh), demand (MW), generation (per fuel, 'fuel' field set; % or MW depending on zone; GB and US-CAISO only), carbon-intensity (gCO2/kWh; GB only), interchange (net imports, MW), capacity (installed MW per fuel; European zones only). Authentication: send 'Authorization: Bearer ' on the MCP connection (free key, 500 requests/day, instant email signup at https://grid-hub.app/developers), or pay per call with x402 (USDC on Base) via the X-PAYMENT header. With no credentials, data tools run in free sample mode: real, current data but truncated (history capped at 50 rows; brief returns one context block). Sample results are clearly marked.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoWindow end, Unix seconds. Default: now.
zoneYesZone id. US ISOs: US-CAISO, US-ERCOT, US-PJM, US-MISO, US-NYISO, US-ISONE, US-SPP. Europe: DE-LU, FR, ES, IT-NO, NL, BE, PL, SE-3, NO-2, DK-1, AT, CH. Great Britain: GB. Australia (NEM): AU-NSW, AU-QLD, AU-VIC, AU-SA, AU-TAS. Call list_zones for names, sources, currencies and licences.
limitNoMax rows (default 200, max 1000 via MCP; sample mode caps at 50).
startNoWindow start, Unix seconds. Default: end minus 24h.
metricYesWhich series to fetch.
api_keyNoOptional GridHub API key (ghk_...). Prefer sending it as an 'Authorization: Bearer <key>' HTTP header on the MCP connection; use this argument only if your client cannot set headers. Without a key the tool runs in free sample mode (truncated output).

Output Schema

ParametersJSON Schema
NameRequiredDescription
endNo
dataNo
zoneNo
countNo
startNo
metricNo
licenseNo
attributionNo

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint, idempotentHint, and non-destructive behavior, so the description correctly focuses on what they cannot convey: oldest-first row ordering, the counterintuitive 'limit truncates from the OLDEST end' behavior, default and maximum window sizes, pagination via start/end, and the credential modes (Bearer key at 500 req/day, x402 pay-per-call, or truncated free sample mode). This is rich behavioral disclosure beyond annotations. The only remaining gap is that it doesn't state the response row shape or timestamp resolution, though an output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The most consequential gotcha (limit truncates from the oldest end) is front-loaded, and the dense paragraphs are each load-bearing. It is long, but the length is driven by genuine complexity (six metrics, two window regimes, three auth modes) rather than padding. Minor tightening of the auth paragraph is possible but would risk losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given six parameters, two enums, an output schema, and open-world annotations, the description covers everything an agent needs to call this correctly: metric semantics, window defaults and limits, ordering/limit behavior, pagination, and the full authentication and sample-mode story. Because an output schema exists, it correctly does not spend space on return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is already 100%, so the baseline is 3, but the description adds substantial meaning beyond the schema: metric units and semantics (wholesale price in local currency per MWh, demand in MW, generation per fuel with zone restrictions like GB/US-CAISO, carbon-intensity in gCO2/kWh GB-only, capacity European-only), the ~400-day annual default window for capacity, and the direction in which limit truncates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence gives a precise verb+resource+scope: 'Time series for one metric in one zone over a start/end window (Unix seconds).' It enumerates exactly which metrics are available (price, demand, generation, carbon-intensity, interchange, capacity) with units, so the agent knows what this tool retrieves versus its siblings like get_latest and get_zone_brief, which the description explicitly positions as the alternative for current values.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing: for 'the latest N points' set start close to now, or use get_latest / get_zone_brief instead. It also gives window defaults, max window per call, pagination guidance, and sample-mode behavior, so an agent knows when this tool is and isn't the right choice without opening the schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_latestLatest values for a zoneA
Read-onlyIdempotent
Inspect

The most recent value of every metric one zone publishes (price and demand for every zone; generation by fuel for GB and US-CAISO; carbon intensity for GB; interchange where available), each with unit and timestamp. This is the right tool for 'what is the price/demand/carbon intensity in X right now'. Note: some European sources publish day-ahead prices, so the price timestamp can be up to ~36h in the future; use get_zone_brief for a strictly at-or-before-now value with historical context. Authentication: send 'Authorization: Bearer ' on the MCP connection (free key, 500 requests/day, instant email signup at https://grid-hub.app/developers), or pay per call with x402 (USDC on Base) via the X-PAYMENT header. With no credentials, data tools run in free sample mode: real, current data but truncated (history capped at 50 rows; brief returns one context block). Sample results are clearly marked.

ParametersJSON Schema
NameRequiredDescriptionDefault
zoneYesZone id. US ISOs: US-CAISO, US-ERCOT, US-PJM, US-MISO, US-NYISO, US-ISONE, US-SPP. Europe: DE-LU, FR, ES, IT-NO, NL, BE, PL, SE-3, NO-2, DK-1, AT, CH. Great Britain: GB. Australia (NEM): AU-NSW, AU-QLD, AU-VIC, AU-SA, AU-TAS. Call list_zones for names, sources, currencies and licences.
api_keyNoOptional GridHub API key (ghk_...). Prefer sending it as an 'Authorization: Bearer <key>' HTTP header on the MCP connection; use this argument only if your client cannot set headers. Without a key the tool runs in free sample mode (truncated output).

Output Schema

ParametersJSON Schema
NameRequiredDescription
zoneNo
licenseNo
metricsNo
updatedNo
attributionNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive), yet the description adds auth mechanics (Bearer ghk_key header vs x402/X-PAYMENT pay-per-call), rate limits (free key, 500 req/day), and degraded no-credential behavior (sample mode, 50-row history cap, results clearly marked). These are behavior traits not present in the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and payload, then caveat, then auth. Every sentence is useful, though the auth/credential block is dense and could be trimmed for a tool whose primary job is data retrieval.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained; the description still covers the timestamp semantics caveat, alternatives, and authentication/sample-mode limits. Nothing an agent needs to invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the enum values and the api_key header preference are already documented. The description still reinforces the zone scope (per-region metric availability) and why api_key matters (free sample truncation), adding modest meaning beyond the schema's baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('most recent value of every metric one zone publishes') and enumerates the exact payload per region (price/demand, generation by fuel for GB and US-CAISO, carbon intensity for GB, interchange where available). It also names the sibling it is not (get_zone_brief), so an agent can differentiate without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the triggering question ('what is the price/demand/carbon intensity in X right now') and gives a when-not/alternative rule: 'use get_zone_brief for a strictly at-or-before-now value with historical context', with the reason (day-ahead prices up to ~36h ahead).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_map_snapshotAll zones right nowA
Read-onlyIdempotent
Inspect

Current headline values for all 25 zones in one call — the cheapest way to compare zones (e.g. 'which European zone has the lowest price right now', 'rank US ISOs by demand'). Rebuilt every 5 minutes. Authentication: send 'Authorization: Bearer ' on the MCP connection (free key, 500 requests/day, instant email signup at https://grid-hub.app/developers), or pay per call with x402 (USDC on Base) via the X-PAYMENT header. With no credentials, data tools run in free sample mode: real, current data but truncated (history capped at 50 rows; brief returns one context block). Sample results are clearly marked.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyNoOptional GridHub API key (ghk_...). Prefer sending it as an 'Authorization: Bearer <key>' HTTP header on the MCP connection; use this argument only if your client cannot set headers. Without a key the tool runs in free sample mode (truncated output).

Output Schema

ParametersJSON Schema
NameRequiredDescription
zonesNo
generatedNo

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent annotations by disclosing refresh cadence ('Rebuilt every 5 minutes'), full auth options (Bearer ghk_ key, x402 payment), the free-tier rate limit (500 requests/day), and the exact consequence of no credentials (sample mode, history capped at 50 rows). These are operationally decisive details an agent cannot get from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose and usage examples before the auth/billing detail, and every sentence carries real information. The auth paragraph is dense but earn its place given the free-sample and pay-per-call behavior; only slight verbosity keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and the description still covers freshness, auth paths, rate limits, and degraded-mode behavior. Nothing an agent needs to invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single api_key parameter is fully documented in the schema, including the header-vs-argument preference and sample-mode consequence. The description largely repeats that auth context rather than adding new parameter semantics, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Current headline values for all 25 zones in one call') and immediately contrasts with the per-zone siblings via 'cheapest way to compare zones' and examples like ranking US ISOs. An agent can distinguish this bulk-snapshot tool from get_latest/get_zone_brief without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides concrete usage scenarios ('which European zone has the lowest price right now', 'rank US ISOs by demand') that clearly convey when this tool is the right pick. It does not, however, explicitly name alternatives (get_latest, get_history) or state exclusions, so routing is implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_statusData freshnessA
Read-onlyIdempotent
Inspect

Ingestion health per source and zone: last successful fetch timestamp and last error, if any. Free. Use it to explain stale or missing values before drawing conclusions from them.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
nowNo
sourcesNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnly, idempotent, non-destructive, openWorld), so the bar is lower. The description adds genuinely new context: the tool is free of cost and 'last error, if any' tells the agent the error field is optional. It does not discuss auth or rate limits, but for a zero-param read tool that is minor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each earning its place: what it returns, cost, and when to use it. The return payload is front-loaded and nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain the response shape. It covers purpose, trigger condition, and cost, which is everything an agent needs to call a zero-parameter read tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so there is nothing for the description to disambiguate; the baseline for a zero-param tool is 4. The description correctly does not waste space restating an empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Ingestion health per source and zone') plus the exact payload ('last successful fetch timestamp and last error'). It is immediately distinguishable from siblings like get_latest or get_history, which return data rather than health metadata.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use it to explain stale or missing values before drawing conclusions from them' gives a clear triggering condition. It stops short of naming an alternative sibling or stating when not to call it, so it falls just short of the top band.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_zone_briefZone brief (current state in context)A
Read-onlyIdempotent
Inspect

Composite, interpretation-ready snapshot of one zone: current price / demand / carbon intensity where published (strictly at-or-before now), each ranked against that zone's own last ~30 days (percentile, vs-median %, min/max, sample count and the actual data window), a 24h trend per metric, the generation mix where published (GB, US-CAISO), and a one-sentence plain-English summary. Best tool for questions like 'is electricity cheap/clean in X right now' or 'is this a good time to run a flexible workload'. A raw price means little without this context. Authentication: send 'Authorization: Bearer ' on the MCP connection (free key, 500 requests/day, instant email signup at https://grid-hub.app/developers), or pay per call with x402 (USDC on Base) via the X-PAYMENT header. With no credentials, data tools run in free sample mode: real, current data but truncated (history capped at 50 rows; brief returns one context block). Sample results are clearly marked.

ParametersJSON Schema
NameRequiredDescriptionDefault
zoneYesZone id. US ISOs: US-CAISO, US-ERCOT, US-PJM, US-MISO, US-NYISO, US-ISONE, US-SPP. Europe: DE-LU, FR, ES, IT-NO, NL, BE, PL, SE-3, NO-2, DK-1, AT, CH. Great Britain: GB. Australia (NEM): AU-NSW, AU-QLD, AU-VIC, AU-SA, AU-TAS. Call list_zones for names, sources, currencies and licences.
api_keyNoOptional GridHub API key (ghk_...). Prefer sending it as an 'Authorization: Bearer <key>' HTTP header on the MCP connection; use this argument only if your client cannot set headers. Without a key the tool runs in free sample mode (truncated output).

Output Schema

ParametersJSON Schema
NameRequiredDescription
zoneNo
as_ofNo
contextNo
currentNo
licenseNo
summaryNo
zone_nameNo
attributionNo
coverage_noteNo
context_window_requested_daysNo

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), and the description adds real behavioral context beyond that: strict at-or-before-now freshness, the ~30-day comparison window, generation-mix coverage limits, and full auth/rate-limit/sample-mode disclosure (500 req/day, truncated history at 50 rows, one context block in sample mode, clearly marked).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose and contents in the opening sentence, then usage, then auth/sample mode. Dense and mostly free of waste, though the auth/sample-mode passage is lengthy and somewhat secondary to tool selection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a 2-parameter schema at full coverage and an output schema present, the description needn't explain return values; it still covers freshness, coverage limits, auth, and sample-mode behavior. Nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so zone enum and api_key are already fully documented in the schema; the description adds little parameter-level detail beyond reinforcing the header-vs-argument preference for the key. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('composite, interpretation-ready snapshot of one zone') and enumerates exactly what the snapshot contains (price/demand/carbon percentile-vs-own-history, 24h trend, generation mix, one-line summary). This clearly distinguishes it from siblings like get_latest and get_history, which return raw single points or series without context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit triggering questions ('is electricity cheap/clean in X right now', 'good time to run a flexible workload') and argues against the raw alternative ('A raw price means little without this context'). It does not name a specific sibling to use instead nor state when NOT to use it, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_zonesList zonesA
Read-onlyIdempotent
Inspect

List the 25 electricity grid zones GridHub covers, with id, name, data source (EIA, ENTSO-E, NESO, AEMO), timezone, currency, licence and required attribution. Free, no credentials needed. Call this first if you are unsure which zone id to use.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
zonesNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and openWorld behavior, so the safety profile is covered. The description adds value the annotations do not: 'Free, no credentials needed,' which tells the agent no auth setup is required before calling. It stops short of noting rate limits or response size, but for a 25-item static catalog that is a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly packed sentences with the core payload list front-loaded and the routing advice last. Every clause carries information (coverage count, fields, sources, cost/auth, invocation order) with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, yet the description still summarizes them helpfully for routing. With no parameters, no credentials, and full annotation coverage, an agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, and the schema accepts no properties, so there is nothing for the description to disambiguate. Baseline 4 applies; the description's field enumeration describes the response rather than inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the 25 electricity grid zones') and enumerates exactly what each entry contains (id, name, data source, timezone, currency, licence, attribution). An agent can distinguish this catalog-lookup tool from get_zone_brief or get_latest without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly prescribes a trigger condition: 'Call this first if you are unsure which zone id to use.' That is clear when-to-use guidance, though it does not name the specific sibling tools (get_zone_brief, get_latest, get_history) that consume a zone id, nor state any when-not condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updates
    • Changedget_history1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "attribution": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "count": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "data": {
        +      "items": {
        +        "properties": {
        +          "fuel": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "metric": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "resolution": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "ts": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "unit": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "end": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "license": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "metric": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "start": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "zone": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_latest1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "attribution": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "license": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "metrics": {
        +      "additionalProperties": {
        +        "properties": {
        +          "resolution": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "ts": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "unit": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "updated": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "zone": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_map_snapshot1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "generated": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "zones": {
        +      "additionalProperties": {
        +        "properties": {
        +          "attribution": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "license": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "metrics": {
        +            "additionalProperties": {
        +              "properties": {
        +                "resolution": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "ts": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "unit": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "value": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": [
        +                "object",
        +                "null"
        +              ]
        +            },
        +            "type": [
        +              "object",
        +              "null"
        +            ]
        +          },
        +          "updated": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "zone": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_status1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "now": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "sources": {
        +      "items": {
        +        "properties": {
        +          "last_error": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "last_ok": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "zone": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_zone_brief1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "as_of": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "attribution": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "context": {
        +      "additionalProperties": {
        +        "properties": {
        +          "max": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "median": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "min": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "percentile": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "sample_count": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "unit": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "vs_median_pct": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "window_days_actual": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "context_window_requested_days": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "coverage_note": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "current": {
        +      "additionalProperties": {
        +        "properties": {
        +          "ts": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "unit": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "value": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "license": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "summary": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "zone": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "zone_name": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedlist_zones1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "zones": {
        +      "items": {
        +        "properties": {
        +          "attribution": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "currency": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "id": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "license": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "tz": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
  2. 6 tool updates
    • First observedget_history
    • First observedget_latest
    • First observedget_map_snapshot
    • First observedget_status
    • First observedget_zone_brief
    • First observedlist_zones

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    Provides real-time European and GB electricity grid data via MCP, including generation, prices, carbon intensity, and grid infrastructure.
    44
    165 npm
    6
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides real-time electricity grid data including CO2 intensity, power mix, and wholesale prices, plus optimal green time windows for energy-intensive AI tasks. Supports UK, Germany, and global regions with optional API keys.
    9
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    Hourly electricity grid carbon intensity (gCO2eq/kWh) for 45 zones across Europe, the US and Great Britain, computed from ENTSO-E, EIA and NESO generation data. Four read-only tools; every value carries its interval timestamp and how stale it is. No API key, no account.
    4
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides real-time grid carbon intensity, power generation breakdown, and carbon-intensity forecasts for any zone or lat/lon location.
    259 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.