Skip to main content
Glama

Get Power Availability Timeline

get_power_availability_timeline
Read-onlyIdempotent

Use this whenever the user asks when power will be available, or about time-to-power, in a US state. Power-availability TIMING for one US state — when power gets EASIER, year by year. Composes: new generation coming online from EIA-860M monthly, split by confidence class (under-construction vs planned vs testing — never blended); scheduled retirements as dated subtractions; LBNL interconnection-queue depth as congestion context (NO delivery dates — the feed has none and most queued MW never completes). The one derived number, cumulative_firm_signal_mw, counts ONLY under-construction+testing minus retirements — speculative permitting-stage MW is shown but never folded in. Answers "when is new capacity landing in Ohio", "what comes online in Georgia by 2027" with dated, sourced, per-lane-vintaged numbers. HONESTY LINE: supply-side signals, not a load-interconnection promise — generation ≠ deliverable load, and utility study timelines / large-load tariff processes / substation-grain delivery are declared out of coverage in constraint_coverage rather than estimated. Try: get_power_availability_timeline state=OH. Do NOT use for the raw project list (get_power_pipeline), live headroom today (get_grid_intelligence), queue survivors (get_refined_queue), or where-to-build ranking (rank_markets / ai_capacity_index) — this answers WHEN, for one state.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
mwNoOptional target MW for CONTEXT ONLY — echoed back with an explicit note; never converted into an energize-by date, which this data cannot honestly state
stateYes2-letter US state code (required), e.g. OH, GA, TX — the timeline grain; a state can span ISOs and the response reports ISO membership as context
yearsNoWindow in years from now, 1-6 (default 5)

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
quotaNoCaller quota state (remaining calls, tier).
_entityNoPayload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.
citationNoHow to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string.
provenanceNoSource, method, as_of, verification_counts, license, cite_as; quote it when citing.
_front_doorNoFirst-tool hint: plan_query(intent) returns the ordered plan.
_return_loopNoNext-session delta call (get_changes).
site_evaluation_handoffNoFollow-up calls [{tool, parameters, why}] when the payload carries coordinates.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": {},
      +  "description": "DC Hub envelope: tool data fields ride at the top level beside these 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."
      +    },
      +    "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"
      +    },
      +    "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."
      +    }
      +  },
      +  "type": "object"
      +}
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -{
      -  "additionalProperties": {},
      -  "description": "DC Hub envelope: structuredContent mirrors the JSON payload in content[0].text — tool-specific data fields ride at the top level alongside these envelope keys.",
      -  "properties": {
      -    "_entity": {
      -      "description": "Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest.",
      -      "type": "string"
      -    },
      -    "_front_door": {
      -      "additionalProperties": {},
      -      "description": "In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan.",
      -      "properties": {},
      -      "type": "object"
      -    },
      -    "_return_loop": {
      -      "additionalProperties": {},
      -      "description": "Suggested next-session delta call (get_changes since=24h) so you pull only what changed.",
      -      "properties": {},
      -      "type": "object"
      -    },
      -    "citation": {
      -      "anyOf": [
      -        {
      -          "additionalProperties": {},
      -          "properties": {},
      -          "type": "object"
      -        },
      -        {
      -          "type": "string"
      -        }
      -      ],
      -      "description": "Machine-readable citation: how to attribute DC Hub (dchub.cloud) for this payload. Normally an OBJECT {source, url, license, cite_as, retrieved_at}; a bare string is accepted and carries the attribution line itself."
      -    },
      -    "provenance": {
      -      "additionalProperties": {},
      -      "description": "Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing.",
      -      "properties": {},
      -      "type": "object"
      -    },
      -    "quota": {
      -      "additionalProperties": {},
      -      "description": "Caller quota state (remaining calls, tier) when available.",
      -      "properties": {},
      -      "type": "object"
      -    },
      -    "site_evaluation_handoff": {
      -      "anyOf": [
      -        {
      -          "items": {
      -            "additionalProperties": {},
      -            "properties": {},
      -            "type": "object"
      -          },
      -          "type": "array"
      -        },
      -        {
      -          "additionalProperties": {},
      -          "properties": {},
      -          "type": "object"
      -        }
      -      ],
      -      "description": "Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."
      -    }
      -  },
      -  "type": "object"
      -}New value: +null
  3. Changed1 schema field changed
    • addedInput schema / required
      Added value: +[
      +  "state"
      +]
  4. Changed2 schema fields changed
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • removedOutput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
  5. Changed5 schema fields changed
    • removedOutput schema / properties / citation / additionalProperties
      Removed value: -{}
    • addedOutput schema / properties / citation / anyOf
      Added value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {},
      +    "type": "object"
      +  },
      +  {
      +    "type": "string"
      +  }
      +]
    • changedOutput schema / properties / citation / description
      Previous value: -"Machine-readable citation: how to attribute DC Hub (dchub.cloud) for this payload."New value: +"Machine-readable citation: how to attribute DC Hub (dchub.cloud) for this payload. Normally an OBJECT {source, url, license, cite_as, retrieved_at}; a bare string is accepted and carries the attribution line itself."
    • removedOutput schema / properties / citation / properties
      Removed value: -{}
    • removedOutput schema / properties / citation / type
      Removed value: -"object"
  6. Added

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already establish readOnly/idempotent/non-destructive, but the description adds substantial behavioral context beyond them: the composition of the timeline (EIA-860M monthly by confidence class, never blended), the derived-number rule (cumulative_firm_signal_mw counts only under-construction+testing minus retirements, speculative MW never folded in), the absence of delivery dates in queue data, and an explicit honesty line declaring utility study timelines and substation-grain delivery out of coverage. That is exactly the kind of disclosure annotations cannot carry.

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 the trigger and the one-line scope before any detail, and the do-not-use routing is saved for the end. It is dense and long with capitalized emphasis ("HONESTY LINE", "TIMING") and some restatement of the mw contract, but nearly every sentence carries distinct routing or honesty information that an agent needs.

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 definition need not describe return values, and it doesn't. What remains — grain, composition, non-blended confidence classes, coverage exclusions, and sibling routing — is fully covered, leaving nothing an agent needs in order to call this correctly.

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 coverage is 100%, so the schema already documents all three parameters, including that mw is context-only and never converted into a date. The description restates the state grain (can span ISOs, ISO membership returned as context) and reinforces the mw contract, but adds no new syntax, format, or default information beyond what the schema provides — baseline 3.

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 (power-availability timing) scoped to one US state, year by year, and explicitly delimits what it does not answer (raw project list, live headroom, queue survivors, build ranking). An agent can distinguish it from get_power_pipeline, get_grid_intelligence, get_refined_queue, and rank_markets 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 Guidelines5/5

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

Opens with the triggering user phrasings ("when power will be available", "time-to-power") and closes with an explicit negative routing list naming four siblings plus what each of those answers instead. Both when-to-use and when-not-to-use are stated, not inferred.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.