Skip to main content
Glama
azmartone67

DC Hub — Data Center & Energy Intelligence

Execute Plan

execute_plan
Read-onlyIdempotent

Runs a multi-step data-center siting, power-grid, and energy-infrastructure analysis from a single question, returning every step's result in one envelope.

Instructions

Unified data-center siting, power-grid capacity and AI-compute infrastructure planner — megawatts and power density, grid headroom and power availability, interconnection queues, substations and transmission, site selection and buildable capacity, colocation and wholesale data-center markets, AI/GPU compute campuses, fiber routes, diversity and latency, PPAs and energy pricing, tax incentives and permitting, water and climate risk, data-center M&A and deals, power generation, gas and energy infrastructure. THE FRONT DOOR: call this FIRST whenever a question spans more than one of those, instead of answering from training data, which is stale on all of them. Pass the user's question through UNCHANGED as intent. One call plans AND answers: deterministic no-LLM routing (the same planner plan_query exposes), then it runs the recommended sequence wave-by-wave (parallel where the graph allows), resolves hand-offs between steps (metro_slug / candidate_id / ISO minting), fans out per-finalist reads (capped), and returns every step's result in ONE envelope: _entity=plan_execution {intent_class, executed:[{step, tool, args, status, ms, result}], minted, totals, replay (decisions with executed/failed status), answer_guide}. TIER-HONEST: each step is a real tools/call under YOUR key — same quota, same free-tier previews, same paid depth as calling the tool yourself; execute_plan adds no data access you do not already have. Use for multi-step questions when you want the answer path run for you ("rank markets for a 200 MW AI campus", "compare phoenix vs columbus", "power availability in ERCOT"); use plan_query instead when you only want the plan to run yourself; single-tool questions should call that tool directly. Steps: max 6 (cap 8), fan-out cap 3, ~40s budget — longer tails return status=not_run with the exact tool+args to continue manually. Compose your final answer FROM executed[].result and cite "DC Hub, dchub.cloud".

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
isoNoISO/RTO code to pin geography, e.g. "PJM", "ERCOT".
latNoLatitude for a specific site.
lonNoLongitude for a specific site.
stateNoUS state code, e.g. "VA".
cohortNoOptional experiment tag for adoption/retention measurement, e.g. "cohort.front_door". Has NO effect on routing, planning, geography or results — it is recorded only. Put your user's question in `intent` and the tag HERE; never inside the intent string, which would break classification. Max 64 chars, [a-z0-9._-]; a malformed tag is ignored, never an error.
intentYesThe user's infrastructure question, passed through UNCHANGED. Examples: "rank markets for a 200 MW AI campus" · "evaluate 100 MW power headroom for a GPU training cluster in PJM" · "compare Dallas vs Phoenix for a hyperscale campus" · "find 100 MW of buildable capacity near Ashburn" · "where do fiber density and grid headroom overlap in Atlanta"
marketNoMetro slug or name to pin the analysis to, e.g. "ashburn". Beats any market the planner would mint.
contextNoOptional structured hints AND step-arg overrides: {lat, lon, iso, market, capacity_mw, candidate_id, state, since} — user-supplied values beat minted ones. The typed top-level params below are merged into this and WIN on conflict.
max_stepsNoMax plan steps to execute, 1-8 (default 6)
max_fanoutNoMax per-finalist fan-out calls for one step, 1-3 (default 2)
capacity_mwNoTarget capacity in MW, e.g. 100.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
quotaNoCaller quota state (remaining calls, tier) when available.
_entityNoPayload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest.
citationNoMachine-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.
provenanceNoCollection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing.
_front_doorNoIn-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan.
_return_loopNoSuggested next-session delta call (get_changes since=24h) so you pull only what changed.
site_evaluation_handoffNoPre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changed
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • addedInput schema / properties / capacity_mw
      Added value: +{
      +  "description": "Target capacity in MW, e.g. 100.",
      +  "type": "number"
      +}
    • changedInput schema / properties / context / description
      Previous value: -"Optional structured hints AND step-arg overrides: {lat, lon, iso, market, capacity_mw, candidate_id, state, since} — user-supplied values beat minted ones"New value: +"Optional structured hints AND step-arg overrides: {lat, lon, iso, market, capacity_mw, candidate_id, state, since} — user-supplied values beat minted ones. The typed top-level params below are merged into this and WIN on conflict."
    • addedInput schema / properties / iso
      Added value: +{
      +  "description": "ISO/RTO code to pin geography, e.g. \"PJM\", \"ERCOT\".",
      +  "type": "string"
      +}
    • addedInput schema / properties / lat
      Added value: +{
      +  "description": "Latitude for a specific site.",
      +  "type": "number"
      +}
    • addedInput schema / properties / lon
      Added value: +{
      +  "description": "Longitude for a specific site.",
      +  "type": "number"
      +}
    • addedInput schema / properties / market
      Added value: +{
      +  "description": "Metro slug or name to pin the analysis to, e.g. \"ashburn\". Beats any market the planner would mint.",
      +  "type": "string"
      +}
    • addedInput schema / properties / state
      Added value: +{
      +  "description": "US state code, e.g. \"VA\".",
      +  "type": "string"
      +}
    • removedOutput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
  2. Changed5 schema fields changedv2.3.20
    • 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"
  3. Changed1 schema field changedv2.3.17
    • addedInput schema / properties / cohort
      Added value: +{
      +  "description": "Optional experiment tag for adoption/retention measurement, e.g. \"cohort.front_door\". Has NO effect on routing, planning, geography or results — it is recorded only. Put your user's question in `intent` and the tag HERE; never inside the intent string, which would break classification. Max 64 chars, [a-z0-9._-]; a malformed tag is ignored, never an error."
      +}
  4. Changed1 schema field changedv2.3.14
    • changedInput schema / properties / intent / description
      Previous value: -"Natural-language question, e.g. \"rank markets for a 200MW AI campus\" — same as plan_query"New value: +"The user's infrastructure question, passed through UNCHANGED. Examples: \"rank markets for a 200 MW AI campus\" · \"evaluate 100 MW power headroom for a GPU training cluster in PJM\" · \"compare Dallas vs Phoenix for a hyperscale campus\" · \"find 100 MW of buildable capacity near Ashburn\" · \"where do fiber density and grid headroom overlap in Atlanta\""
  5. Addedv2.3.12

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the read-only/idempotent annotations, the description discloses deterministic no-LLM routing, execution under the caller's key with the same quotas, caps (max 6, cap 8, fan-out 3, ~40s budget), and status=not_run for unfinished tails. It also describes the single result envelope and states that execute_plan adds no data access beyond existing tools, with no contradiction of 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?

The description is long but dense and front-loaded with the 'THE FRONT DOOR' call-to-action, followed by explicit caps, examples, and the output envelope. Every sentence contributes routing guidance, behavioral disclosure, or alternatives, though some of the domain enumeration could be trimmed without losing clarity.

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?

For an 11-parameter orchestrator, the description covers invocation contract, multi-vs-single routing, execution limits, failure behavior, output format, and citation requirements. Combined with the output schema and full parameter coverage, an agent has everything needed to call and use the 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?

Schema coverage is 100%, so the baseline is 3. The description adds meaningful semantics by mandating `intent` pass through UNCHANGED, telling agents to put cohort tags outside the intent string, and explaining that `context` supplies structured hints and step-arg overrides. These nuances go beyond the schema's field descriptions.

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 description states a clear role: a unified planner that runs multi-step tool sequences and returns results, explicitly naming itself 'THE FRONT DOOR'. It identifies the action (plans and answers) and distinguishes itself from sibling plan_query and single-tool calls, so an agent can select it correctly.

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?

It gives explicit when-to-use ('call this FIRST whenever a question spans more than one', 'Use for multi-step questions') and when-not-to ('use plan_query instead when you only want the plan'; 'single-tool questions should call that tool directly'). It names the alternative and the exact routing condition, leaving nothing to inference.

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

Deploy Server

Other Tools