Skip to main content
Glama
azmartone67

DC Hub: Data Center, Power Grid & Energy Intelligence

DC Hub MCP Server

DCPI (Data Center Power Index): a daily score of where data centers can get grid power, across 300+ markets. Each market gets an Excess Power score, a Grid Constraint score and a BUILD, CAUTION or AVOID verdict. Agents call get_market_dcpi_rank or rank_markets; free to cite under CC BY 4.0.

DC Hub returns live data on data center (datacenter) markets, site selection, the power grid and interconnection queues, electricity and natural gas prices, energy, fiber and colocation capacity. Tool results carry a dated citation line in cite_as (DC Hub (dchub.cloud), as of <date>) and, where one applies, a suggested follow-up question in next_ask. Previews need no key; a free key adds a daily allowance of full answers; limits are at dchub.cloud/pricing. Connect: https://dchub.cloud/connect · MCP endpoint: https://dchub.cloud/mcp

To start, add the MCP server or grab a free key. Setup for Claude, Cursor, Gemini CLI, VS Code, Cline and others is under Install below.

DC Hub (dchub.cloud) is a live data layer for data center and energy questions: power, grid, interconnection queues, fiber, markets and sites, with an as_of date and a source on every result.
MCP server: https://dchub.cloud/mcp
Start with execute_plan(intent="<the user's question>"): it picks and chains the right tools and returns one dated, cited answer.

Install in VS Code Add to Cursor npm Official MCP Registry


Using DC Hub data without MCP

The same data is published over plain HTTPS, for clients with no MCP connection.

Keyless endpoints. Each answers an anonymous GET with HTTP 200 and open CORS (access-control-allow-origin: *):

Endpoint

Returns

https://dchub.cloud/api/v1/canon/phrases

current published counts and floors, with their sources in value_source

https://dchub.cloud/api/v1/stats

platform stats

https://dchub.cloud/api/v1/stats/canonical

the same figures with their provenance

https://dchub.cloud/api/v1/dcpi/scores?limit=500

DCPI per market

Published counts change over time; /api/v1/canon/phrases serves the current values.

Dates and citation fields. MCP tool results carry dated provenance:

  • as_of is the data date. When several sources feed one answer, it is the oldest of their timestamps, since an answer is no fresher than its stalest input. When a response carries only per-record dates, or no source timestamp at all, as_of is null and as_of_basis states why.

  • retrieved_at is when DC Hub served the response, not when the data was collected.

  • cite_as is a ready citation line. It names DC Hub and dchub.cloud, adds the as_of date when one is known, and marks a tier-gated preview as PARTIAL.

Citation format. A short attribution block for text that quotes DC Hub data. /llms.txt gives a longer form that adds the as_of date and the licence terms of each data layer.

Source: DC Hub (dchub.cloud) — live data-center & energy intelligence
https://dchub.cloud/land-power-map
https://dchub.cloud/dcpi
https://dchub.cloud/connect

Further documentation: /llms.txt · /llms-full.txt · /ai-agents · /AGENTS.md · MCP endpoint https://dchub.cloud/mcp/github (client setup at /connect)


Related MCP server: geographic-data

What you can do with it

"Can I get 200 MW in PJM, and how long would it take?"
"Show me AWS data center construction pipeline in Ohio"
"Compare ERCOT vs PJM capacity prices over the last 30 days"
"Find data centers within 50km of Northern Virginia substations >230kV"
"What's the live demand and generation mix in CAISO right now?"
"Is behind-the-meter gas power cheaper than the grid in Texas?"
"What's the grid mix in Atlanta (SOCO) and is power available?"
"Get fiber routes between Ashburn and Atlanta"
"Find 5 MW of powered shell I can lease in Texas"
"Who has 500 kW of colocation capacity anywhere in Europe?"

Your AI assistant gets real-time, structured answers — not links to PDFs.

What's inside

  • Global data-center facility map across 170+ countries — operator, capacity, location, fiber connectivity

  • 134,000+ substations with voltage class, available capacity estimates

  • Real-time grid telemetry — live load + generation mix across the 7 US ISOs (PJM, ERCOT, CAISO, MISO, SPP, NYISO, ISO-NE) + 40+ EIA balancing authorities (Atlanta, Carolinas, Florida, Pacific NW...), plus Canada (IESO, AESO, Hydro-Québec), Great Britain (NESO), 30+ EU bidding zones (ENTSO-E), Taiwan, Japan, South Korea, Brazil & Australia — refreshed ~every 5 min; get_grid_data reads any one of them, compare_isos sets 2-4 side by side

  • Interconnection-queue snapshots with per-ISO BUILD/CAUTION/AVOID verdicts — including live large-load queue depth where the ISO publishes it (ERCOT publishes a data-center-scale large-load feed)

  • 1,800+ tracked M&A transactions + AI capacity index + hyperscaler $1B+ deal tracker

  • Transmission lines, gas pipelines, fiber routes — the full infrastructure stack

  • NEPA filings for upcoming federal energy + data center projects

  • Tax incentives by state with eligibility details

  • Market intelligence — 300+ markets scored daily with DCPI BUILD/CAUTION/AVOID verdicts, plus facilities tracked across 170+ countries

  • Capacity Source — data-center capacity to buy or lease (powered land, powered shells, turnkey, colocation), searchable by size in kW or MW and by location

94 MCP tools across facility search, market intel, grid + interconnection, renewable-energy, site analysis, deals, fiber routing, and infrastructure. Full tool list →

Two of them are partner tools: read_inbox (the notes DC Hub leaves for a partner key; the same inbox as the dchub://inbox resource) and report_finding (files an observation about a DC Hub surface as a brain finding, detector external_audit). They are listed for every caller so the catalog is one stable list, and they answer only a key issued under a partner slug; any other key gets a clear "partner key required".

These counts are served, not stated. Every number above is rendered from a live source and this file is a copy of it — mirrors and registry listings copy it again, and each hop can freeze. The current values are served by /api/v1/canon/phrases (quantities) and /api/v1/ops/deadman (per-source ingest freshness), both keyless JSON endpoints on dchub.cloud, and by tools/list on the MCP endpoint (the canonical tool catalog).

Actively used by Claude and Cursor — see /cited-by.

Guided prompts & resources

Beyond the 94 tools, DC Hub ships 14 guided prompts — they surface as slash-commands in Claude Desktop, Cursor, and other MCP clients (every invocation is telemetry-tracked as recipe:<name>):

  • /dchub:analyze-site — full buildability read for an address or lat,lon

  • /dchub:pick-a-market — where to build N MW (DCPI-ranked, with time-to-power)

  • /dchub:power-availability — power availability + time-to-power for an ISO

  • /dchub:site-report — premium one-page site brief (power · gas · fiber · market · risk)

  • /dchub:compare-markets — 2–4 markets head-to-head

  • /dchub:fiber-plan — diverse fibre lead-in routes to a carrier hotel

  • /dchub:market_selection — DCPI shortlist → per-finalist verdict → grid reality-check

  • /dchub:grid_and_queue — power availability + interconnection queue for an ISO

  • /dchub:site_analysis — one site, multi-factor: composite score, FEMA hazards, water

  • /dchub:water_risk — water stress & hazard read for a site

  • /dchub:hyperscaler_activity — deals + forward pipeline: who is buying and building

  • /dchub:whats_changed — what moved since your last call (the return hook)

  • /dchub:fiber_power_pairing — where fiber density and available power overlap in a market

  • /dchub:find_capacity — data-center capacity to buy or lease: Capacity Source listings for a requirement, then a deal registration (the provider's identity, site and contact are released only if the provider accepts)

Plus citable resources: dchub://about, dchub://methodology (DCPI/DCGI), dchub://data-sources, dchub://coverage, and dchub://testimonials — named customers (people, not AI assistants) who approved public use of their words, read live from dchub.cloud/testimonials (machine-readable: testimonials.json beside it).

Capacity Source — capacity to buy or lease

Everything above answers where to build. Capacity Source answers what is available now: data center capacity to buy or lease — powered land, powered shells, turnkey capacity and colocation — for enterprise and agent-led procurement. Operators and brokers list capacity free at dchub.cloud/listings.

Searchable by size and by location. source_capacity takes a size — min_kw in kW, or min_mw in MW — and a location:

  • region — north_america, latin_america, europe, asia_pacific, middle_east_africa (the aliases emea, apac, latam and americas also resolve)

  • location — free text matched against each listing's region, country, state and metro, e.g. "Germany" or "Texas, Phoenix"

  • market, state, delivery_type (land · powered_shell · turnkey · colocation) and available_by narrow further; slug returns a single listing

So "500 kW anywhere in Europe" is min_kw=500, region=europe. Any caller — keyless included — gets the listing cards, the filters that were applied, and when each listing was last updated.

A size is matched against what a listing can actually deliver, not just its headline total. A listing may declare contiguous_kw — the largest single contiguous block available — and min_contract_kw — the smallest chunk the provider will contract. A colocation with 2 MW available but only 500 kW contiguous does not answer a 1 MW search; a 40 MW site willing to contract 1 MW chunks does. Both are teaser-level, so they come back on the cards and the single-listing read, and the rendered lines carry them beside the capacity.

Then a deal registration, not a lead form. request_capacity_intro registers a deal: DC Hub sends the provider your company name and your requirement, and nothing more. The provider accepts or declines. Identities, site detail and contacts are exchanged only if the provider accepts — on a decline, nothing is shared. accept_capacity_terms records your agreement to the introduction terms once, which is what opens listing detail for you.

The /dchub:find_capacity prompt runs the whole path: requirement → listings → deal registration.

Task-scoped endpoints

https://dchub.cloud/mcp serves the full catalog. A client that only needs one job can bind to a narrower surface instead — same server, same key, a much smaller tool list in the context window. Every pack except /mcp/deepresearch carries discover_tools, claim_free_key, unlock_more_data and summarize_for_citation, so a pack is never a dead end; /mcp/deepresearch is deliberately exactly the two tools the Deep Research connector contract expects.

Endpoint

What it covers

https://dchub.cloud/mcp/github

everything — all 94 tools

https://dchub.cloud/mcp/siting

site selection end to end: find, analyze, score, compare, rank — plus Capacity Source

https://dchub.cloud/mcp/grid

power availability: live ISO telemetry, interconnection queue, hosting + retirement headroom, prices

https://dchub.cloud/mcp/fiber

routes, metro fiber, subsea cables, peering, lead-in planning, latency clustering

https://dchub.cloud/mcp/deals

transactions, pipeline, news, market intelligence — plus Capacity Source

https://dchub.cloud/mcp/gas

behind-the-meter and gas-fired economics against grid prices and forward generation

https://dchub.cloud/mcp/site

the in-browser agent surface: find a record, read it, quote it, mint a key

https://dchub.cloud/mcp/deepresearch

the OpenAI Deep Research connector contract: search + fetch, nothing else

Why DC Hub vs other directories

DC Hub

datacenters.com

dcbyte

baxtel

Live grid data

✅

❌

❌

❌

MCP / AI integration

✅

❌

❌

❌

Facility + infra + grid

✅

❌

❌

❌

Real-time API

✅

❌

❌

❌

NEPA filings

✅

❌

❌

❌

Free dev tier

✅

❌

❌

✅

Their strength: directories of facilities you can browse. Our strength: an API your AI assistant can query in real time across the full infrastructure stack.

Install

Claude Desktop — Quickstart (stdio)

Claude Desktop's claude_desktop_config.json runs local (stdio) servers, so use the launcher package, which connects it to the hosted server. Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "dchub": {
      "command": "npx",
      "args": ["-y", "dchub-mcp-server"],
      "env": { "DCHUB_API_KEY": "" }
    }
  }
}

Leave DCHUB_API_KEY empty for previews, or paste a free key from https://dchub.cloud/connect#free-key. Needs Node 18+. Same block works in Cursor, Windsurf and Cline. To use the hosted URL instead, open Settings → Connectors → Add custom connector in Claude Desktop and paste https://dchub.cloud/mcp; do not put a url entry in claude_desktop_config.json.

Claude Code

claude mcp add dchub --transport http https://dchub.cloud/mcp/github

Cursor

Search for "DC Hub" in Cursor MCP marketplace → click Install.

Cline / Continue.dev

{
  "name": "dchub",
  "url": "https://dchub.cloud/mcp/github",
  "transport": "http"
}

Gemini CLI

~/.gemini/settings.json (or .gemini/settings.json in a project):

{
  "mcpServers": {
    "dchub": {
      "httpUrl": "https://dchub.cloud/mcp/github"
    }
  }
}

Or one command: gemini mcp add --transport http dchub https://dchub.cloud/mcp/github

httpUrl, not url. In Gemini CLI url is the SSE form and command is stdio — put a Streamable-HTTP server under either and it is dialled with the wrong transport and never connects. This is the free Gemini CLI: no OAuth, no admin console, no enterprise account. Add a headers object with X-API-Key for full data.

Antigravity

~/.gemini/antigravity/mcp_config.json (or .agents/mcp_config.json in a workspace):

{
  "mcpServers": {
    "dchub": {
      "serverUrl": "https://dchub.cloud/mcp/github"
    }
  }
}

serverUrl, not url or httpUrl. Antigravity rejects both — the block stays valid JSON and registers nothing. It is a different client from Gemini CLI with a different config file, so installing one does not install the other, even though both live under ~/.gemini/.

Smithery.ai

Listed at smithery.ai/servers/azmartone67/dchub. Smithery's hosted proxy and CLI shut down on 2026-10-31, so installing through the Smithery CLI stops working that day. The listing then becomes a directory entry that points to the direct URL, https://dchub.cloud/mcp; connect your client to that URL (per-client setup above).

Docker MCP Toolkit

Add DC Hub to Docker Desktop's MCP Toolkit from its catalog file:

docker mcp catalog import https://raw.githubusercontent.com/azmartone67/dchub-mcp-server/main/integrations/docker/catalog.yaml
docker mcp server enable dchub

Details are in integrations/docker/.

Arcade

Register DC Hub in Arcade as a Remote MCP server: ID dchub, URI https://dchub.cloud/mcp, plus the header X-DCHub-Via: arcade. You can add X-API-Key: ${secret:DCHUB_API_KEY} as well. Then choose the tools for your MCP gateway. Setup, gateway tool profiles and auth options are in integrations/arcade/.

Privacy and data handling

  • Per-call telemetry (first-party only). Every tool call is logged to the DC Hub backend (POST /api/v1/mcp/track): timestamp, tool name, call parameters, detected client/platform, tier, session id, your API key (if you sent one), status and duration. It is used for rate limits, billing and quality. It is never sent to a third party, and there is no advertising or third-party analytics. Anonymous calls carry no key. Details: SECURITY.md.

  • Email capture (bind_email) is optional. The bind_email tool exists to raise your daily limit. If you call it, the email you pass is stored against your key, and you can ignore the tool. The server never asks for or collects an email any other way.

  • No install-time code. Installing this package runs no scripts (no preinstall, install, postinstall or prepare). The git pre-commit hook for contributors is opt-in: npm run hooks:install.

Pricing

  • Anonymous: previews, no API key needed

  • Free key (one claim_free_key call, no email): previews plus 2 full answers per tool per day, every tool callable, most as previews. Grid/queue/market-intel tools: previews on free; an email adds 10 full answers/day each. analyze_site: a free key gets a few free full site reports each month; after that, previews.

  • Add an email (bind_email): 50 calls/day (up to 10 full answers per tool per day)

  • Paid plans (more volume, every tool, exports): plans and prices at https://dchub.cloud/pricing

Data sources

EIA hourly RTO data · HIFLD substation database · OpenStreetMap · PeeringDB · DC Hub proprietary news + facility pipeline · regulations.gov NEPA filings · USGS · EPA eGRID · FEMA NRI

Open source

This MCP server's transport layer is open source. The data + business logic lives at dchub.cloud. Issues: GitHub Issues.

Contact

azmartone@gmail.com — Jonathan Martone — Martone Advisors LLC

Available Tools

94 tools
accept_capacity_termsAccept Capacity TermsAInspect

Use this when the user has read and agreed to DC Hub's capacity introduction terms (https://dchub.cloud/listings#terms): records that acceptance, once per terms version, so Capacity Source listing details open for them. Call it when source_capacity returns a listing locked with access.reason terms_acceptance_required, never on your own judgement: nothing opens without your human's agreement. Requires an identified caller (claim_free_key, then bind_email with your human's address, or an OAuth connection) and accept_terms=true. Returns accepted and the terms version, recorded in DC Hub's lead register. Do NOT use to request an introduction (use request_capacity_intro) or to browse listings (use source_capacity).

NameRequiredDescriptionDefault
accept_termsNoSet true ONLY after your human has read and agreed to the introduction terms at https://dchub.cloud/listings#terms. Unless it is exactly true, nothing is sent
terms_versionNoThe terms version your human agreed to, e.g. access.unlock.terms.version from source_capacity. Omit to send the version currently published

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only supply safety flags (readOnlyHint=false, idempotentHint=false, destructiveHint=false); the description goes well beyond them by disclosing prerequisites (an identified caller via claim_free_key + bind_email, or an OAuth connection; accept_terms=true), the once-per-terms-version recording behavior, and the side effect of writing to DC Hub's lead register. It even states what unlocks afterward (listing details open), which is exactly the guidance an agent needs before invoking a non-read-only tool.

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 condition and constraint ('never on your own judgement'), and each clause carries signal (prerequisites, return, exclusions). It is densely packed into few sentences with parenthetical asides, which is efficient but slightly harder to scan than a shorter definition would be.

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 a two-parameter, non-read-only tool with an output schema, the description covers trigger condition, caller identity prerequisites, version semantics, return values, and sibling exclusions. Nothing an agent needs to invoke it correctly is missing, and the output schema handles the return shape.

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 description coverage is 100%, so the baseline is 3, but the description adds provenance the schema does not: terms_version should come from access.unlock.terms.version returned by source_capacity, and omitting it sends the currently published version. These are real usage rules beyond the field documentation.

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?

Specific verb+resource ('accept_capacity_terms' records acceptance of DC Hub capacity introduction terms) with the exact artifact named and linked. It explicitly distinguishes itself from the two nearest siblings, request_capacity_intro and source_capacity, so an agent can route 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 Guidelines5/5

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

States the precise triggering condition: call only when source_capacity returns a listing locked with access.reason terms_acceptance_required, 'never on your own judgement.' It also names the two prohibited uses and the correct alternative for each (request_capacity_intro, source_capacity), which is explicit when/when-not guidance.

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

ai_capacity_indexAI Capacity IndexA
Read-onlyIdempotent
Inspect

Use this when the user asks where AI compute capacity could land: ranks data center markets by where 100MW of AI training capacity can land in the next 30/60/90 days. Returns top markets with facility_count, operator_count, deployable_mw estimate (megawatts), hyperscale_ready flag, rack power density and cooling-type signals where facility data carries them, and composite score (depth + diversity + power). Refreshed Fridays 14:00 UTC. Use for AI capex planning, GPU cluster siting, hyperscaler deal forecasting. For grid power availability use DCPI (rank_markets ai_ready). Do NOT use for a general best-markets ranking (use rank_markets) or forward grid-emergence (use grid_transition_radar).

NameRequiredDescriptionDefault
limitNoNumber of top markets to return (default 20)
horizonNoDeployment horizon in days: 30, 60, or 90 (default 90)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (read-only, idempotent, not open-world, non-destructive), so the description's real contribution is freshness ('Refreshed Fridays 14:00 UTC') and the composite score's composition (depth + diversity + power), which the agent cannot get from annotations. The field enumeration partly duplicates the existing output schema, keeping it short of a 5.

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 trigger and scope, and the use-case and do-not-use sentences each carry routing value. The one dense sentence enumerating return fields is somewhat long and partly redundant with the output schema, but no sentence is pure 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?

Given only two optional params, an output schema, and full annotation coverage, the description supplies everything else an agent needs: freshness cadence, what the score means, primary use cases, and explicit sibling alternatives. No gaps remain for correct invocation.

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 both params (limit, horizon) are already documented, and the description only echoes the 30/60/90 horizon values in prose without adding format or edge-case guidance. Per the high-coverage baseline this is a 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 and resource ('ranks data center markets') plus a precise scope ('where 100MW of AI training capacity can land in the next 30/60/90 days'). It explicitly distinguishes itself from three siblings (rank_markets, grid_transition_radar, and DCPI/rank_markets ai_ready), so an agent can route correctly 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?

Opens with an explicit trigger ('Use this when the user asks where AI compute capacity could land'), names concrete use cases (AI capex planning, GPU cluster siting, hyperscaler deal forecasting), and gives two explicit 'Do NOT use for' exclusions with the correct alternative for each. Nothing is left to inference.

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

analyze_parcelAnalyze ParcelA
Read-onlyIdempotent
Inspect

Use this when the user has a land parcel for a data center site: structured read of its boundary — pass your own GeoJSON Polygon/MultiPolygon, OR just lat+lon and DC Hub finds the containing parcel in its HOSTED parcel-boundary layer (free county/state GIS polygons, covering a set of priority data-center counties in VA, IL, TX, OH, UT, OR, IA and WY; a point outside it returns parcel_not_covered with the analyze_site preview + the coverage list, never a guess). Returns _entity=parcel_analysis: geodesic total_acres, a per-member acreage breakdown, a contiguous flag, representative_point = the centroid of the LARGEST-area member (never the multi-part geometric center, which can land off-parcel on a highway median or river and poison every point-keyed read), and hosted_parcel {parcel_id, county, state, acres_per_source} when the polygon came from the hosted layer. Also returns a site_evaluation_handoff to pipe into analyze_site + get_water_risk at that anchor. Use when you HAVE a boundary or a point on a specific parcel and want it anchored + sized; for a general lat/lon site score use analyze_site; for the interconnection-queue survivor set use get_refined_queue (queue rows carry NO parcel identity, so they never auto-join to hosted parcels).

NameRequiredDescriptionDefault
latNoLatitude of a point ON the parcel — used with lon when geometry is omitted to look up the containing parcel from the hosted county/state GIS layer
lngNoAlias for lon — either name works
lonNoLongitude of a point ON the parcel (used with lat when geometry is omitted)
geometryNoGeoJSON Polygon or MultiPolygon parcel boundary, e.g. {"type":"Polygon","coordinates":[[[lng,lat],[lng,lat],...]]} — a MultiPolygon carries discontinuous parcels as one envelope. Omit to look up the hosted parcel containing lat/lon instead
latitudeNoAlias for lat — either name works
longitudeNoAlias for lon — either name works
capacity_mwNoOptional target load in MW to pass through into the site_evaluation_handoff

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description adds substantial behavior beyond that: out-of-coverage points return parcel_not_covered with an analyze_site preview plus coverage list and "never a guess," and representative_point is deliberately the largest member's centroid rather than the geometric center to avoid poisoning point-keyed reads. It also states hosted layer scope (VA, IL, TX, OH, UT, OR, IA, WY counties) and the downstream handoff.

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 "Use this when..." and organized logically (inputs, return shape, handoff, alternatives). Dense with parentheticals and slightly long, but nearly every clause carries actionable 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?

For a read-only analysis tool with an output schema present, everything an agent needs is there: both input modes, coverage scope, failure behavior, return shape, and the handoff to analyze_site and get_water_risk. Nothing essential 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 coverage is 100%, so the schema already documents all parameters including aliases and geometry format. The description restates the geometry-vs-lat/lon alternative and the capacity_mw pass-through, adding modest clarity on the OR relationship but mostly reflecting what the schema already says.

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?

Specific verb+resource: "structured read of its boundary" for a land parcel, with both input modes (own GeoJSON vs. lat/lon hosted-layer lookup) and outputs named. It is clearly distinguishable from analyze_site and get_refined_queue, which are both explicitly named.

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 when-to-use ("when you HAVE a boundary or a point on a specific parcel and want it anchored + sized") and names alternatives with their selection conditions: analyze_site for general lat/lon site scores, get_refined_queue for the queue survivor set. Even notes that queue rows carry no parcel identity, so they never auto-join.

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

analyze_siteAnalyze SiteA
Read-onlyIdempotent
Inspect

Use this when the user asks whether a specific site or coordinate works for a data center (lat/lon, or a market name for a market-level read). Returns a 0-100 composite, verdict, power/gas/fiber/market/risk sub-scores, nearby infrastructure and power cost; capacity_mw adds a capacity_context block and does NOT move overall_score. Keyless returns the verdict band, the power band, the weakest factor and counts; a free key adds factor bands, substation distance bands and a few free full site reports each month; other scores and figures need a paid DC Hub plan. When a result is partial, show your user the human_message (or for_your_human) text and its link. Ex: "Score 33.45,-112.07 for 100 MW." Needs BOTH lat and lon in decimal degrees (else missing_coordinates); take them from get_facility or search_facilities.

NameRequiredDescriptionDefault
latNoSite latitude in decimal degrees (-90 to 90; required unless candidate_id or location given), e.g. 33.45
lngNoAlias for lon — either name works
lonNoSite longitude in decimal degrees (-180 to 180; required unless candidate_id or location given), e.g. -112.07
stateNoUS state abbreviation (optional) — improves the tax-incentive lookup, e.g. AZ
latitudeNoAlias for lat — either name works
locationNoMarket NAME or metro slug instead of coordinates, e.g. "ashburn", "northern-virginia", "dallas". Resolved to that market's PUBLISHED CENTROID through the DCPI market row, and the answer carries a resolved_from block saying so.
longitudeNoAlias for lon — either name works
capacity_mwNoTarget power load for the build in megawatts (MW), e.g. 100 (typical 50-500)
candidate_idNoPREFERRED for queue survivors: a cand_… id from get_refined_queue — coordinates come from the FROZEN mint (lat/lon args are ignored; zero transcription drift; expired ids fail closed with candidate_expired).
include_gridNoInclude grid-headroom / substation analysis (default true)
include_riskNoInclude water/drought/climate risk analysis (default true)
include_fiberNoInclude fiber-connectivity analysis (default true)

Output Schema

NameRequiredDescription
fiberNo
lockedNo
nearbyNo
scoresNo
previewNo
verdictNo
locationNo
power_costNo
overall_scoreNo
site_headlineNo
interpretationNo
composite_scoreNo
limiting_factorNo

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the read-only/idempotent annotations, it discloses return contents, capacity_mw semantics that do not move overall_score, keyless/free/paid data limitations, partial-result human_message/link behavior, missing_coordinates errors, and frozen candidate_id fail-closed behavior. This adds substantial operational context.

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 front-loads the use case and return contract, then covers key tiers, partial-result handling, and coordinate constraints. It is dense and somewhat long, but most sentences earn their place.

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 a 12-parameter, zero-required tool with full schema coverage, annotations, and an output schema, the description covers input modes, auth/data tiers, error conditions, and result-handling. Nothing critical for correct invocation 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 schema already carries the baseline; the description adds important meaning for capacity_mw, candidate_id, location, and lat/lon requirements. It does not add much beyond schema for the include_* flags or state parameter.

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

Purpose4/5

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

States a specific verb/resource and decision support: whether a site or coordinate works for a data center, with composite and sub-scores. It is clear, but it does not explicitly distinguish itself from close siblings such as score_facility, get_composite_site_score, or generate_site_analysis.

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 a clear trigger ('Use this when the user asks...'), coordinate sourcing from get_facility/search_facilities, candidate_id preference for queue survivors, and key-tier/partial-result handling. It lacks explicit when-not guidance or alternative routing versus rank_sites/compare_sites.

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

bind_emailBind EmailAInspect

Use this when the user wants their DC Hub key tied to their email, or a result said an email unlocks more. WHAT AN EMAIL GETS (free, no card): 50 calls/day (up to 10 full answers per tool per day); 10 full answers a day each on the grid, queue and market-intel tools instead of previews; a weekly summary of what your key looked up (unsubscribe anytime); a key that can be recovered (recover_my_key re-sends it to that inbox). Ask your human for their email first; pass only an address they typed. ★ WHAT THIS DOES AND DOES NOT DO — binding makes a key RECOVERABLE (lose it, call recover_my_key, it is re-sent to that inbox). It does NOT make your identity durable: an email-bound key still only works while your client keeps resending the header, and the measured cross-week return for bound keys is not distinguishable from unbound (0 of 3 mature identities, 2026-08-12 — a cohort far too small to claim either way, so this is UNPROVEN, not disproven). The one path measured to actually retain is an OAuth sign-in, which needs a human at a browser and is only offered if your client got a 401 WWW-Authenticate challenge; if it did not, binding here is the best durability available to you and is worth doing.

NameRequiredDescriptionDefault
emailYesYour human's real email address (required) — use only an address they explicitly gave; placeholder/fake addresses are rejected
api_keyNoOptional key to bind; omit to bind the key already active on this session
marketing_opt_inNoSet true ONLY after your human explicitly agrees to marketing email (default false = transactional only)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations declare this is a non-readonly, non-idempotent, non-destructive mutation; the description goes well beyond that by spelling out what binding does (makes the key recoverable via recover_my_key) and what it does not do (does not make identity durable), plus the consent rule for marketing. It does not state what happens on a repeat bind of an already-bound key despite idempotentHint=false, which is the one meaningful behavioral gap.

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

Conciseness3/5

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

The usage trigger is correctly front-loaded, but the middle passage carries a lot of weight that does not help select or invoke the tool — the cohort statistics ('0 of 3 mature identities, 2026-08-12') and the OAuth aside read as internal justification rather than invocation guidance.

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

Completeness4/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 not be described; the description covers the mutation's benefit, its limits, and consent prerequisites well. What is missing is failure behavior (already-bound key, rejected placeholder address) which matters for a non-idempotent write.

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 the schema already documents all three parameters; the description only reinforces the email constraint ('pass only an address they typed'). It adds nothing beyond the schema on api_key or marketing_opt_in, so the 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?

The first sentence names the specific action (tie a DC Hub key to an email) and its trigger, and later sentences explicitly separate binding from recover_my_key and from OAuth sign-in. An agent can distinguish this from unlock_more_data or claim_free_key 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?

It states exactly when to call it ('user wants their key tied to their email, or a result said an email unlocks more'), gives the prerequisite (ask the human for their email first, pass only an address they typed), and names the competing alternative (OAuth sign-in, only offered after a 401 WWW-Authenticate challenge).

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

claim_free_keyClaim Free KeyAInspect

Use this when the user wants more DC Hub data center data than keyless allows, or asks for a key; no key is needed to start. Mints a free key and returns it plus connect_url, a connector URL with the key embedded (the only thing hosted chat clients keep). Free key: previews plus 2 full answers per tool per day. WHAT AN EMAIL GETS (free, no card): 50 calls/day (up to 10 full answers per tool per day); 10 full answers a day each on the grid, queue and market-intel tools instead of previews; a weekly summary of what your key looked up (unsubscribe anytime); a key that can be recovered (recover_my_key re-sends it to that inbox). Ask the user for an email first; pass it only if they typed it. Save and reuse the key (lost one: recover_my_key); don't re-mint. Then ask the real question (execute_plan for multi-step). If a call was answered with a sign-in challenge (401 WWW-Authenticate), prefer signing in: that identity persists, but a human must finish it in a browser. No challenge (Claude Code, Cursor, most agents) means OAuth is not available to you and the key is right. Ex: "Set me up with a DC Hub key."

NameRequiredDescriptionDefault
emailNoOptional owner email to make the key recoverable across sessions; use only an address your human explicitly gave
client_nameNoYour agent/app name for attribution, e.g. "Claude Desktop" or "acme-siting-bot"

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

The description adds substantial behavior beyond the annotations: no key is needed to start, the key is returned with an embedded connect_url, free vs email-key limits are specified, and email-based recovery is explained. It also clarifies the 401/OAuth branch and that keys should be saved rather than re-minted.

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 front-loaded with the triggering condition and core action, and most sentences carry operational guidance. It is dense and somewhat long, but the length is mostly justified by the branching rules around email, key recovery, and 401 challenges.

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?

Despite having an output schema, the description still explains the important return values (key and connect_url) and their significance. It covers limits, email consequences, recovery, re-minting, downstream execution, and the sign-in challenge case, leaving little an agent needs to infer.

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 both parameters are already documented in the schema. The description reinforces that the email must come explicitly from the user and is used for recovery, but it adds little about client_name beyond what the schema already says.

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 specific action and resource: it mints a free DC Hub key and returns it with connect_url. It also distinguishes this from keyless access, recover_my_key, and execute_plan, so an agent can identify the tool without opening the 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?

It gives explicit when-to-use conditions: when the user wants more data than keyless allows or asks for a key. It also names alternatives and exclusions: recover_my_key for lost keys, don't re-mint, prefer sign-in when a 401 challenge appears, and use execute_plan for multi-step questions.

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

cluster_sites_by_latencyCluster Sites By LatencyA
Read-onlyIdempotent
Inspect

Use this when the user asks which data center sites can form a low-latency cluster (2-8 sites) — returns viable low-latency clusters and pairwise RTT floors before any routing work. Use when your human wants to know which of N candidate sites can form a synchronous / low-latency cluster (sync replication, active-active pairs, HPC pods): deterministic pruning BEFORE detailed routing. Per site pair: haversine distance, round-trip physics floor (km × 4.9 µs/km — light in SMF-28 fiber, n≈1.468 — then ×2), estimated real RTT (floor × route_factor 1.4, a stamped inference), viable vs physics_impossible against your budget, and confidence_v — the provenance tier of the supporting evidence (published | tracked | inferred). Also returns clusters: the largest site subsets whose ALL pairwise estimates fit the budget, plus each site's inferred dark-fiber screening level. CANDIDATE CONTRACT: pass candidate_ids (from get_refined_queue) instead of raw coordinates — each resolves to its FROZEN mint coordinates (zero transposition), and cand_… tokens may also be mixed into the sites string; expired/unknown ids are dropped AND declared in candidate_contract (fail-closed).

NameRequiredDescriptionDefault
sitesNoSemicolon-separated "lat,lon" pairs, 2-8 sites (same format as compare_sites locations); optional per-site labels via "lat,lon:label", e.g. "39.04,-77.48:ashburn;39.29,-76.61:baltimore".
candidate_idsNoArray (or comma-separated string) of candidate_id values from get_refined_queue — each resolves to its FROZEN mint coordinates (zero transcription drift); expired/unknown are dropped and declared in candidate_contract.
max_latency_usNoRound-trip latency budget in microseconds (default 1000 µs = 1 ms; sync replication is typically 1000-2000 µs)
min_confidenceNoMinimum evidence tier a pair must meet to count as viable: "published" | "tracked" | "inferred" (default inferred = include all)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/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, non-destructive, closed-world), and the description layers on substantial extra context: the physics model (km x 4.9 µs/km x 2), route_factor 1.4 stamped as inference, confidence_v provenance tiers, dark-fiber screening, and a fail-closed candidate_contract for expired/unknown ids. This is genuinely value-adding behavior disclosure.

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 trigger and outcome before diving into the per-pair metrics, and uses a labeled 'CANDIDATE CONTRACT' block for the contract rules. It is dense and slightly repetitive in restating the candidate_id provenance, but nearly every clause carries operational 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?

For a 4-param, read-only analytical tool with an output schema and full annotation coverage, the description supplies everything an agent needs: trigger, sequencing, the physics/confidence semantics, and the candidate-id contract. Nothing material 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 baseline is 3, but the description adds real meaning: candidate_ids resolve to FROZEN mint coordinates (zero transposition), cand_ tokens may be mixed into the sites string, and expired/unknown ids are dropped and declared. It also frames max_latency_us against a realistic use case (sync replication 1000-2000 µs).

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 ('cluster sites by latency') plus the scope (2-8 sites) and the output ('viable low-latency clusters and pairwise RTT floors'). It distinguishes itself from routing work ('deterministic pruning BEFORE detailed routing') and cross-references compare_sites and get_refined_queue, so an agent can place it relative to siblings.

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 an explicit trigger ('when the user asks which data center sites can form a low-latency cluster') and a clear ordering rule ('BEFORE any routing work'). It stops short of naming the specific alternative tool to use for the downstream routing step, so it's clear context rather than full when/when-not routing.

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

compare_isosCompare ISO RegionsA
Read-onlyIdempotent
Inspect

Use this when the user asks to compare two to four power grids side by side — fuel mix, demand, renewable/gas share, and for the US ISOs interconnection-queue depth and time-to-power — in one call instead of N sequential get_grid_intelligence calls. Example: "Compare PJM vs ERCOT vs CAISO on gas share, renewable share, and queue depth right now." — compare_isos isos="PJM,ERCOT,CAISO"; "ERCOT vs AESO vs EU_DE_LU" also works. Params: isos is a comma-separated list (2-4 max): any of the 7 US ISOs ("PJM" | "ERCOT" | "CAISO" | "MISO" | "SPP" | "NYISO" | "ISO-NE"), TVA, BPA, a US utility BA, or a non-US grid (IESO, AESO, HYDROQUEBEC, NGESO, EU_, TAIPOWER, OCCTO, KEPCO-KR, ONS, AEMO, EMA); non-US and non-ISO rows carry null DCPI and queue fields (not tracked, not zero). Returns: {isos[], comparison:{:{demand_mw, generation_mix_pct, renewable_share_pct, gas_share_pct, constraint_score, excess_power_score, avg_time_to_power_months, avg_queue_wait_months, queue_depth_gw, retail_price_cents_kwh}}, as_of}. ★avg_time_to_power_months (DCPI per-market estimate, ISO-averaged) and avg_queue_wait_months (proxy from live queue DEPTH) are DIFFERENT measurements — quote whichever you mean by name.

NameRequiredDescriptionDefault
isosYesComma-separated list of 2-4 grids to compare, e.g. "PJM,ERCOT,CAISO" or "ERCOT,AESO,EU_DE_LU": US ISOs (ERCOT, PJM, MISO, CAISO, SPP, NYISO, ISONE), TVA, BPA, utility BAs, or non-US grids (IESO, AESO, HYDROQUEBEC, NGESO, EU_<zone>,…

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare read-only, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description adds important behavior beyond that: non-US and non-ISO rows have null DCPI/queue fields because they are not tracked rather than zero, and it distinguishes avg_time_to_power_months from avg_queue_wait_months as different measurements.

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?

The use case is front-loaded, followed by examples, parameter constraints, return shape, and a crucial measurement caveat. Despite its density, every sentence contributes operational detail needed to select and invoke the tool correctly.

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 the tool's complexity, the description is complete enough for correct selection and invocation. It explains when to use it, the accepted input domain, the comparison output fields, null-field semantics, and the key measurement distinction, while the output schema covers the return structure.

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 parameter is already documented. The description still adds meaningful constraints and enumerations: comma-separated list, two-to-four maximum, accepted US ISOs, TVA, BPA, utility BAs, and non-US grid identifiers. It does not add much syntax nuance beyond that, so it is strong but not exceptional.

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: compare two to four power grids side by side, including fuel mix, demand, renewable/gas share, and queue metrics. It explicitly distinguishes itself from making N sequential get_grid_intelligence calls, so an agent can route between this and the single-grid path.

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?

Gives a clear trigger: when the user asks to compare two to four grids side by side. It names the alternative it replaces, get_grid_intelligence for sequential single-grid calls, and supplies concrete examples including mixed US/non-US comparisons.

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

compare_sitesCompare SitesA
Read-onlyIdempotent
Inspect

Use this when the user has 2-4 candidate data center sites and asks which is best. Pass locations as "lat,lon;lat,lon" and optional capacity_mw. Returns each site's analyze_site scores side by side plus a recommended winner and why. Keyless returns each site's verdict band and power band, with the other factors named; a free key adds names and counts without figures; scores and figures need a paid DC Hub plan, as does the pick. Ex: "Phoenix vs Ashburn for 50 MW?"

NameRequiredDescriptionDefault
sitesNoAlternative to locations: an array of {lat, lon} (or {lat, lng}) objects, 2-4 sites
locationsNoSemicolon-separated list of 2-4 "lat,lon" pairs to compare, e.g. "33.45,-112.07;39.04,-77.48"
capacity_mwNoTarget power load for the build in megawatts (MW), e.g. 50 (typical 50-500)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already cover safety (readOnly, idempotent, closed-world), and the description adds the non-obvious behavioral layer: tiered data availability (keyless = bands only, free key = names/counts, paid plan = figures and the pick). That gating materially changes what the agent can promise a user and is not inferable 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.

Conciseness5/5

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

Front-loaded with the trigger condition, then format, then return tiers, then an example – each sentence carries distinct information with no filler or repetition.

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-shape detail is unnecessary, yet the description still supplies the crucial tier-dependency of results and the recommendation behavior. Nothing an agent needs to decide whether and how to call this 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 string format and capacity_mw semantics are already documented. The description adds value by restating the accepted 'lat,lon;lat,lon' form in context and framing capacity_mw as optional and tied to the user's build, but it does not explain the sites[] alternative or the 2-4 bound enforcement beyond what the schema says.

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 ('compare_sites', sites side by side) and scopes it precisely: 2-4 candidate sites, returns analyze_site scores plus a recommended winner. An agent can tell it apart from single-site siblings like analyze_site or rank_sites 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 Guidelines5/5

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

Explicit trigger ('when the user has 2-4 candidate sites and asks which is best') plus an example utterance ('Phoenix vs Ashburn for 50 MW?'). It also spells out the fallback path when the caller lacks a key, so an agent knows what it will actually get before calling.

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

deal_autopsyDeal AutopsyA
Read-onlyIdempotent
Inspect

Use this when the user asks what a data-center deal means for power: deal flow with each market's DCPI verdict — "what is the real play?". Returns recent deals (buyer, seller, value, market) + each market DCPI verdict and time-to-power; with a paid key, the per-deal autopsy read (long-dated land/power option vs near-term build vs queue gamble). Progressive disclosure to keep the default cheap: by default each read ships only a comparables COUNT (the verdict text is always included); pass comparables="summary" for the top-2 grounding signals, or comparables="full" to expand the complete cited set for a deal you're drilling into. Answers "who is actually buying data centers right now, and are those markets any good", "what is the real play behind this deal". Try: deal_autopsy limit=15.

NameRequiredDescriptionDefault
limitNoNumber of recent deals to return (default ~15)
comparablesNoComparables detail: "none" (default — count only, cheapest), "summary" (top-2 grounding signals), or "full" (the complete cited set). Escalate only for deals you're drilling into.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds genuinely non-obvious behavior: the per-deal autopsy read is gated behind a paid key, and the default response is deliberately trimmed (comparables count only) to keep it cheap. No rate limits or failure modes, but the paywall and progressive-disclosure cost model are real added context.

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

Conciseness3/5

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

Front-loaded with the trigger condition, which is good. But it is dense and repetitive: the 'what is the real play' framing appears twice, and there are many embedded quoted phrases and dashes that add length without adding information.

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

Completeness4/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 spelled out, and the description nonetheless sketches the shape (deal fields + DCPI verdict + time-to-power). Trigger conditions, the paid-key caveat, and the disclosure levels are all present, leaving only minor gaps such as ranking/ordering of the returned deals.

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 goes beyond the schema by giving escalation guidance for comparables ('escalate only for deals you're drilling into') and by confirming the verdict text is always included regardless of the comparables setting, which resolves a plausible ambiguity.

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

Purpose4/5

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

States a concrete verb and resource: returns recent data-center deals (buyer, seller, value, market) joined to each market's DCPI verdict and time-to-power. An agent can distinguish it from the broader deal listers. It never names a sibling it is not (e.g. hyperscaler_deals, list_transactions), so the differentiation is inferred rather than stated.

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?

Explicit when-to-use: 'Use this when the user asks what a data-center deal means for power' plus two representative user questions and a worked call example (deal_autopsy limit=15). Clear context, but no when-not-to-use and no named alternative for plain deal listing.

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

delete_standing_intentDelete Standing IntentA
Destructive
Inspect

Use this when the user wants to retire a standing intent (webhook watch) by intent_id — deliveries stop and the watch cannot be recovered. A cap_ intent_id retires your own Capacity Source requirement instead, and its alert emails stop. Requires a key (or an OAuth connection for cap_ ids). Get the intent_id from list_standing_intents or from the register response. Answers "stop watching this". Do NOT use to pause temporarily; there is no pause, this removes the watch.

NameRequiredDescriptionDefault
intent_idYesThe intent_id to delete (from list_standing_intents or register)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, but the description adds what the annotations cannot: deliveries stop, the watch is unrecoverable, cap_ ids instead retire a Capacity Source requirement and stop its alert emails, and a key/OAuth credential is required. This is exactly the extra operational context the annotation layer lacks.

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?

Front-loads the trigger condition, then consequences, then the cap_ edge case, then the credential requirement, then the anti-pattern. Every sentence carries distinct, decision-relevant information 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?

With an output schema present, return values need no explanation. The description covers auth, destructiveness, irreversibility, the cap_ variant, and id sourcing, leaving nothing an agent needs before calling it.

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 goes further by explaining the cap_ prefix semantics that branch behavior and by reinforcing the id provenance. It does not add format/syntax detail beyond that, so not a 5.

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 (retire/delete) and resource (standing intent / webhook watch), and immediately distinguishes it from list_standing_intents and register_standing_intent by naming them. The 'Answers "stop watching this"' phrasing pins the user intent without ambiguity.

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 when (user wants to retire a watch), explicit when-not ('Do NOT use to pause temporarily; there is no pause'), and names the source of the id (list_standing_intents or the register response). Alternatives and the absence of a pause path are spelled out.

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

discover_toolsDiscover ToolsA
Read-onlyIdempotent
Inspect

Use this when you are unsure which DC Hub data center, power or grid tool fits: lists tools by family. Returns _entity=tool_families — a front_door block (execute_plan for any multi-capability question, get_changes to refresh) plus families with a when-to-use note + their tools (facility, market, grid_power, gas_btm, site_geometry, fiber, deals_news, saved_work, account_meta, partner), optionally filtered by a query. Then call the chosen tool (its full schema is in tools/list). This is a navigation layer, not the exhaustive catalog — tools/list stays canonical, and if you are BINDING a capability map, bind it from tools/list, not from here.

NameRequiredDescriptionDefault
queryNoOptional keyword to filter families/tools, e.g. "site selection", "grid queue", "fiber", "deals", "market"

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds genuine beyond-annotation context: the returned _entity shape, a front_door block containing execute_plan and get_changes, and the caveat that this is a curated navigation layer rather than the canonical catalog. Return-value detail is partly redundant with the existing output schema, keeping this at 4 rather than 5.

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 when-to-use trigger and then the return shape, which is the right order. It runs long and restates the tools/list-is-canonical point twice (once as 'navigation layer, not the exhaustive catalog' and again as 'bind it from tools/list, not from here'), a minor redundancy that a single mention would cover.

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 a discovery/routing tool with an output schema present, the description supplies everything an agent needs: when to invoke it, what it returns at a structural level, how to proceed afterward (call the chosen tool; its full schema is in tools/list), and the caveat about binding capability maps. Nothing material 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% for the single optional query parameter, so the schema already carries the semantics. The description's example keywords ('site selection', 'grid queue', 'fiber', 'deals', 'market') largely mirror the schema's own examples, adding little new meaning; baseline 3 is appropriate.

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 ('lists tools by family') and frames the tool's role as a 'navigation layer' rather than a data tool. It explicitly distinguishes itself from the canonical catalog (tools/list) and from execution tools (execute_plan), so an agent can place it 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 Guidelines5/5

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

Opens with the triggering condition ('Use this when you are unsure which ... tool fits') and closes with an explicit when-not and alternative: it is not the exhaustive catalog, tools/list stays canonical, and capability maps should be bound from tools/list rather than here. Both routing and exclusion are spelled out.

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

execute_planExecute PlanA
Read-onlyIdempotent
Inspect

Use this when a data center question spans several topics: one-call planner over 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. Recommended entry for a question that spans more than one of those. Pass the user's question 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}.

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.
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" ·…
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

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only cover the safety profile (readOnly, idempotent, non-destructive, open-world), yet the description discloses substantial behavior: no-LLM deterministic routing, wave-by-wave execution with parallelism, angle-bracket hand-off resolution (metro_slug/candidate_id/ISO minting), capped per-finalist fan-out, and the exact envelope shape returned. This is rich context an agent could not infer from the 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-loaded with the use case and appropriately sized for a highly complex planner, but the long mid-sentence topic enumeration and the dense closing sentence run together, reducing scannability. The topic list earns its place by defining scope, but structure could be tighter.

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 a tool this complex, the description covers the routing model, execution strategy, hand-off resolution, caps, and even the return envelope (in addition to the existing output schema). An agent has everything needed to call it correctly with the right expectations.

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 most parameter meaning is already structured. The description reinforces a few points (e.g., intent 'UNCHANGED', cohort having no routing effect, user-supplied values beating minted ones), but these are duplicated in the schema rather than adding new distinction, so the baseline of 3 is appropriate.

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 ('one-call planner' that 'plans AND answers') and enumerates the exact multi-topic domain it covers, so the agent knows precisely what the tool does. It also distinguishes itself from plan_query by noting it runs the same deterministic planner and then executes it.

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 this when a data center question spans several topics' plus 'Recommended entry for a question that spans more than one of those' gives a clear when-to-use condition. It references plan_query as the shared planner but does not explicitly state when a single-topic question should bypass this in favor of individual tools, so it stops short of full alternative routing.

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

export_datasetExport DatasetA
Read-onlyIdempotent
Inspect

Use this when the user wants to export their saved data center sites for offline analysis, a spreadsheet, or ingestion into another tool (paid plan). Example: "Export my saved sites as GeoJSON for QGIS." — export_dataset format=geojson. Params: format ("csv" default, or "geojson"). Returns: the full file contents as text — CSV rows or a GeoJSON FeatureCollection of your saved sites with DCPI score, target MW, market, coordinates, and notes. Do NOT use to list sites in-chat (use list_saved_sites) or to save a new one (use save_site); this is the bulk-download path.

NameRequiredDescriptionDefault
formatNoOutput file format: "csv" (default) or "geojson" (for GIS tools like QGIS)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds context annotations cannot: the paid-plan gating and the fact that the whole file body is returned as text, which matters for how the agent should relay results.

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 alternatives, and every sentence serves routing or behavior. The 'Returns:' clause is mild redundancy given an output schema exists, but it is short and harmless.

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 a single-parameter, non-destructive export tool with an output schema already defined, the description supplies trigger, alternatives, plan gating, and format guidance. Nothing needed to invoke it 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 baseline is 3; the description goes slightly beyond by restating the default ('csv' default) and showing a format-specific invocation example ('export_dataset format=geojson'), which clarifies intent rather than duplicating fields.

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 ('export their saved data center sites') plus the purpose (offline analysis, spreadsheet, ingestion) and output forms. It explicitly names the sibling tools it is not (list_saved_sites, save_site), so an agent can route 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?

Gives a concrete trigger ('when the user wants to export'), a worked example with the exact call, and explicit exclusions with named alternatives ('Do NOT use to list sites in-chat (use list_saved_sites) or to save a new one (use save_site)'). This is the full when/when-not/alternative pattern.

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

fetchFetchA
Read-onlyIdempotent
Inspect

Use this when you have an id from search and need that data center facility record (search/fetch format). Returns {id, title, text, url, metadata} — a citable public summary of one data-center facility (name, operator, location, status, market). For full structured specs (capacity MW, coordinates) use get_facility or open the url.

NameRequiredDescriptionDefault
idYesA facility id/slug from a prior `search` result, e.g. equinix-dc1-ashburn

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), so the burden is lighter. The description contributes domain context beyond that — the record is a citable public summary covering name/operator/location/status/market — which helps the agent understand the nature of the data returned.

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 triggering condition and then the guarantee/alternative, which is the right ordering. Slightly redundant to enumerate the return shape when an output schema exists, but overall tight and purposeful.

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 a single-parameter read tool with full schema coverage, an output schema, and safety annotations, this covers the one open question — why choose `fetch` over `get_facility` — and answers it. Nothing needed to call it 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 coverage is 100% and the single `id` param already carries an example (equinix-dc1-ashburn), so the schema does the heavy lifting. The description only reinforces the provenance of the id ("from `search`"), adding no format or syntax detail beyond the schema — baseline 3 is appropriate.

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 action (fetch a data-center facility record by id) and explicitly frames it as the companion to `search`. It names the sibling it is not (get_facility) and what that sibling returns, so an agent can distinguish the two without opening either 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?

Gives an explicit precondition ("when you have an id from `search`") plus a clear alternative for the adjacent need ("For full structured specs... use get_facility or open the url"). When-to-use and when-to-use-something-else are both stated.

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

find_alternativesFind Alternative FacilitiesA
Read-onlyIdempotent
Inspect

Use this when the user wants data center facilities similar to one they like ("what else looks like this?"). Example: "Find alternatives to the Ashburn QTS campus for about 50MW." — find_alternatives facility_id=. Params: facility_id or name (the target, required); optional capacity_mw, radius_km, limit. Returns: ranked alternatives, each with similarity_score, match_reasons, and key_differences versus the target. Do NOT use to score one site (use score_facility or analyze_site) or to compare a known short-list head-to-head (use compare_sites); this DISCOVERS candidates from a single seed facility.

NameRequiredDescriptionDefault
limitNoMax results to return (1-500; default varies by tool)
match_onNoOptional similarity dimension to weight, e.g. capacity, operator, fiber, market
radius_kmNoSearch radius in km for candidate alternatives around the seed facility
facility_idYesThe seed facility id/slug (required) to find alternatives to, from a prior search result — there is no `name` param; an undeclared key is silently stripped
exclude_operatorNoIf true, exclude facilities from the same operator as the seed

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare it as read-only, idempotent, and non-destructive. The description adds useful behavior beyond that: it discovers candidates from one seed and returns ranked alternatives with similarity_score, match_reasons, and key_differences.

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 front-loaded with the use case and example, and the final sentence efficiently routes to alternatives. It is slightly weakened by a parameter sentence containing inaccurate extras and by return details that partly duplicate the output schema.

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

Completeness3/5

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

Purpose and sibling routing are complete, and annotations plus the output schema cover safety and return shape. However, the description's incorrect parameter guidance means it is not fully reliable as a standalone invocation guide.

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

Parameters2/5

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

The schema has 100% description coverage and explicitly says there is no `name` param, but the description incorrectly says 'facility_id or name' and mentions an optional `capacity_mw` that is not in the schema. It also omits the actual `match_on` and `exclude_operator` parameters, creating active confusion despite the schema being correct.

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: finding data center facilities similar to a seed facility. The example and sibling exclusions make it clearly distinct from score_facility, analyze_site, and compare_sites.

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 says when to use it, gives a concrete example, and names when not to use it with alternative tools. It also clarifies that this discovers candidates from a single seed rather than comparing a known short-list.

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

find_sitesFind SitesA
Read-onlyIdempotent
Inspect

Use this when the user has no data center site yet and wants candidate search areas (site selection by substation voltage, gas and fiber distance); execute_plan covers a multi-part siting question. THE INVERSE QUERY: every other DC Hub siting tool needs a coordinate you already have — analyze_site scores one, get_composite_site_score grades one, rank_sites orders candidates YOU already enriched, find_alternatives needs a seed facility. This one answers "where should I even be looking?". Returns candidate SEARCH AREAS anchored on real HIFLD substations at or above min_voltage_kv, spatially de-duplicated by cluster_km so a dense metro yields distinct areas instead of 40 near-identical rows, each carrying measured distance to the nearest gas pipeline and fiber route plus state-grain moratorium context, and a next_calls handoff. Answers "where should I even be looking for 200 MW in Ohio" and "which areas near Dallas sit on 230kV with gas within 5 miles". Try: find_sites state=OH min_voltage_kv=230 max_gas_km=8 — or find_sites lat=39.04 lon=-77.48 radius_km=60 min_voltage_kv=500.

NameRequiredDescriptionDefault
latNoLatitude of a search centre, e.g. 39.04 — use with lon (+ radius_km) instead of state
lngNoAlias for lon — either name works
lonNoLongitude of a search centre, e.g. -77.48
limitNoMax results to return (1-500; default varies by tool)
stateNo2-letter US state to search, e.g. OH — required unless you pass lat + lon
latitudeNoAlias for lat — either name works
longitudeNoAlias for lon — either name works
radius_kmNoSearch radius in km around lat/lon (default 80, clamped 5-400); ignored in state mode
cluster_kmNoCollapse anchors within this many km into one candidate area (default 8, max 100). Raise it for broader coverage, lower it for denser results
max_gas_kmNoDrop candidates farther than this from the nearest gas pipeline. Applied ONLY if the gas layer answers — check constraint_coverage
max_fiber_kmNoDrop candidates farther than this from the nearest fiber route (CHORD approximation — see fiber_distance_basis). Applied ONLY if the fiber layer answers
min_voltage_kvNoOnly anchor on substations at or above this voltage in kV (default 115). 230+ for hyperscale, 500 for the largest campuses
exclude_moratoriumNotrue = drop candidates in a state with a published data-center moratorium. STATE grain, not jurisdiction grain

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description goes well beyond them: it discloses spatial de-duplication by cluster_km (why a metro yields distinct areas instead of 40 near-identical rows), that gas/fiber filters apply ONLY when the layer answers, state-grain (not jurisdiction-grain) moratorium context, and a next_calls handoff.

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?

Purpose is front-loaded in the first clause and the content is dense with distinct facts, but the "THE INVERSE QUERY" paragraph is rhetorically padded ("where should I even be looking?") and the closing examples partly duplicate the schema's own examples.

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 a 13-param open-world search tool with an output schema present, the description covers everything an agent needs: trigger condition, alternative routing, output shape (search areas with distances and coverage caveats), and example invocations. Return-value detail is appropriately left to the output schema.

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% and the per-parameter docs are already detailed, so the baseline is 3. The description adds value by showing worked parameter combinations ("state=OH min_voltage_kv=230 max_gas_km=8" and "lat/lon radius_km=60 min_voltage_kv=500"), illustrating how the filters compose rather than restating definitions.

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 (find candidate data-center search areas) and pins down the mechanism (HIFLD substation anchors at/above min_voltage_kv, gas/fiber distances, cluster de-duplication). It explicitly contrasts itself with analyze_site, get_composite_site_score, rank_sites, find_alternatives and execute_plan, so an agent can disambiguate 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?

"Use this when the user has no data center site yet and wants candidate search areas" gives a clear entry condition, and it names the routing rule for multi-part siting questions (execute_plan). It frames the tool as the inverse of every coordinate-based sibling, effectively stating when NOT to use it.

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

generate_site_analysisGenerate Site AnalysisA
Read-onlyIdempotent
Inspect

Use this when the user wants a shareable data center Site Analysis PDF for ONE lat/lon (a powered-land parcel, a candidate campus) — the polished client deliverable, not just a score. Example: "Make the Site Analysis PDF for this Carrier Mills parcel, 150 MW, for TON Infrastructure." — generate_site_analysis lat=37.694 lon=-88.65 capacity_mw=150 prepared_for="TON Infrastructure" prepared_by="Martone Advisors". Params: lat (-90 to 90, required), lon (-180 to 180, required), capacity_mw (target load MW, e.g. 50-500), prepared_for (client name on the cover), prepared_by (your firm — brands the report; defaults to DC Hub), latency_target (optional metro override; default = nearest real carrier hotel). Returns: {survey:{verdict, power/transmission, gas, water, air-permitting, fiber carriers, latency-to-nearest-carrier-hotel, market, tax}, pdf_report_url}. pdf_report_url is a ready-to-open link to download the branded 5-page PDF — no login needed, valid ~7 days; hand it to your human. For just the numeric suitability score (no PDF), use analyze_site instead.

NameRequiredDescriptionDefault
latNoSite latitude in decimal degrees (-90 to 90, required), e.g. 37.694
lngNoAlias for lon — either name works
lonNoSite longitude in decimal degrees (-180 to 180, required), e.g. -88.65
latitudeNoAlias for lat — either name works
use_caseNoOptional workload descriptor to tailor the report, e.g. "AI training campus"
longitudeNoAlias for lon — either name works
capacity_mwNoTarget power load for the build in megawatts (MW), e.g. 150 (typical 50-500)
prepared_byNoYour firm name that brands the report; defaults to DC Hub, e.g. "Martone Advisors"
prepared_forNoClient name printed on the report cover, e.g. "TON Infrastructure"
latency_targetNoOptional metro to measure latency against; default = nearest real carrier hotel

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds real operational context: a branded 5-page PDF, a link that needs no login, and a ~7-day validity window that the agent must relay to its human. It stops short of describing error behavior or what happens when a coordinate falls outside coverage.

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 sibling exclusion, then the example, then the param recap — a sensible order with no wasted preamble. The trailing 'Params:' block largely duplicates a fully-covered schema and could be trimmed.

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

Completeness4/5

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

Output schema exists, yet the description still usefully sketches the return shape and calls out pdf_report_url as the actionable artifact, which is what the agent must hand back. Gaps: use_case is never mentioned, and the description insists lat/lon are 'required' while the schema declares zero required parameters — a mismatch that could cause the agent to demand a coordinate the schema treats as optional.

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 earns one more by pairing each core parameter with a realistic value in the worked example (lat=37.694 lon=-88.65 capacity_mw=150) and reinforcing defaults for prepared_by and latency_target. It omits use_case entirely and repeats range/default facts the schema already states, so it stays below a 5.

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 (generate a shareable Site Analysis PDF) scoped to exactly one lat/lon parcel, and explicitly frames it as 'the polished client deliverable, not just a score.' It names the sibling it is not (analyze_site) so the agent can disambiguate without opening either 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?

Gives an explicit trigger ('use this when the user wants a shareable ... PDF for ONE lat/lon'), a concrete worked example with realistic argument values, and a stated when-not ('For just the numeric suitability score (no PDF), use analyze_site instead'). Nothing about selection is left to inference.

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

get_agent_registryAI Agent RegistryA
Read-onlyIdempotent
Inspect

Use this when the user asks which AI platforms and agent frameworks integrate DC Hub — each with its recommended DC Hub tools and authentication tier. The roster is BACKEND-OWNED and changes: read the platforms[] array the response returns, and the status on each row (mcp_active / mcp_ready), rather than any list named in this sentence — an enumeration here goes stale the moment the backend adds or drops a platform, which is exactly how a client named here stopped appearing in the roster. ★ These statuses are CURATED EDITORIAL claims, not measurements: the response carries as_of null, so do NOT relay "MCP Active" as though it were a live connection count. Answers "which AI platforms can connect to DC Hub". Try: get_agent_registry. NOTE: this is a curated ecosystem/capability index, NOT live per-caller call/citation telemetry. Do NOT use for platform uptime or feed health (use get_backup_status).

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only declare readOnly/idempotent/openWorld=false; the description goes well beyond them by disclosing that the roster is backend-owned and mutable, that clients must read platforms[] and per-row status rather than any enumerated list, and that mcp_active/mcp_ready are curated editorial claims with as_of null rather than live connection counts. That is exactly the kind of caveat an agent needs to avoid misreporting results.

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

Conciseness3/5

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

The usage condition and the when-not are front-loaded, which is good, but the passage is long for a zero-argument read tool. The 'an enumeration here goes stale ... exactly how a client named here stopped appearing in the roster' anecdote and the 'Try: get_agent_registry' filler consume space without adding decision-relevant 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?

With an output schema present, the description need not explain return values, and annotations already carry the safety profile; the description nonetheless supplies the interpretive context (editorial statuses, as_of null, backend-owned roster) that keeps a caller from over-claiming. Nothing needed to call it 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?

The tool takes zero parameters, so the baseline is 4; there is no parameter surface for the description to illuminate. It does describe the shape of the relevant response fields (platforms[], status), but that belongs to the output schema rather than to parameter semantics.

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 names a specific resource (the DC Hub AI platform/agent-framework registry) and states what it returns: platforms with recommended tools and an authentication tier. It also explicitly disclaims what it is ('a curated ecosystem/capability index, NOT live per-caller call/citation telemetry'), which distinguishes it from telemetry-adjacent siblings.

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 an explicit triggering condition ('Use this when the user asks which AI platforms and agent frameworks integrate DC Hub'), an explicit exclusion ('Do NOT use for platform uptime or feed health'), and names the alternative tool to use instead (get_backup_status). Nothing is left to inference.

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

get_backup_statusPlatform HealthA
Read-onlyIdempotent
Inspect

Use this when the user asks how current DC Hub's data center and power data feeds are: one row per feed (deals, facilities, news, substations, fiber_routes, transactions, construction_permits, pipeline, markets) carrying health (healthy/stale/error/unknown), record_count, refresh_interval and scheduler, plus a summary rollup {healthy, stale, error, unknown, total_feeds, overall_health}. Read the health of each row before trusting a figure drawn from it — a feed reporting "unknown" has NOT been measured, which is not the same as healthy. Answers "are any of your sources stale right now". Try: get_backup_status. Scope is exactly what /api/health/data-freshness serves: ingest-feed freshness, nothing wider. Do NOT use for the freshness of one dataset (use get_changes); this is ingest health, not content.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds genuinely useful behavioral context beyond them: the semantic warning that 'unknown' means NOT measured, and that scope is exactly /api/health/data-freshness and nothing wider. It stops short of the full 5 only because there is no note on refresh cadence of the health check itself.

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

Conciseness3/5

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

The use case and row/rollup structure are front-loaded, which is good, but the text is bloated: the stray 'Try: get_backup_status' fragment is wasted, and the freshness question is effectively restated by both the 'are any of your sources stale' example and the '/api/health/data-freshness... nothing wider' scope sentence. Several sentences could be merged without loss.

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-value explanation is not strictly required, yet the description still previews row fields and the rollup. For a zero-parameter read tool with full annotation coverage, an agent has everything needed to call it and interpret the result.

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, so the schema has nothing to document and the baseline is 4. There is no parameter syntax the description could meaningfully add, and it correctly avoids inventing any.

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 ('how current DC Hub's data center and power data feeds are'), enumerates the exact feeds returned, and describes both the per-row fields (health, record_count, refresh_interval, scheduler) and the summary rollup shape. It is unmistakably distinct from sibling data tools like get_changes.

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?

Gives an explicit trigger ('Use this when the user asks how current... feeds are'), a sample user question ('are any of your sources stale right now'), and a named exclusion with the alternative ('Do NOT use for the freshness of one dataset (use get_changes)'). Nothing about when/when-not is left to inference.

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

get_changesGet ChangesA
Read-onlyIdempotent
Inspect

Use this when the user asks what changed in data center markets, facilities or deals since a date. Returns DCPI 7-day market movers, newly discovered facilities, new M&A deals + news — PLUS, for keyed callers with saved sites, a portfolio block answering "did MY sites move?": per-saved-site verdict flips (CAUTION → BUILD), excess-power deltas, alerts fired, and new facilities near each site since your last check. Pass since= or shorthand "24h"/"7d" (default 24h); cache the response generated_at and pass it back next call. Answers "what changed since I last looked", "anything new this week I should know about". Try: get_changes since=7d.

NameRequiredDescriptionDefault
limitNoMax results to return (1-500; default varies by tool)
sinceNoReturn changes since this ISO-8601 timestamp (YYYY-MM-DD or full datetime) or shorthand "24h"/"7d"; default 24h

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the read-only, idempotent, non-destructive, closed-world profile. The description adds meaningful context beyond that: the portfolio block only appears for 'keyed callers with saved sites', and the generated_at caching pattern for successive calls. Auth-conditional and caching behavior are disclosed.

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 'Use this when...' and information-dense throughout, with a concrete example call. Slightly long, and the trailing 'Answers ...' sentence partially restates the opening, but no sentence is pure 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?

Output schema exists, so return values need not be explained, yet the description still characterizes the response blocks richly. Between the triggering contexts, parameter shorthand, caching pattern, and keyed-caller behavior, an agent has everything needed to call it 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 value by restating the since shorthand/default and, notably, introducing the cache-and-replay pattern for generated_at, which is not obvious from the schema alone and clarifies how 'since' should be chained across calls.

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

Purpose4/5

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

States a specific verb+resource and enumerates exactly what it returns (DCPI 7-day market movers, newly discovered facilities, new M&A deals + news, plus a per-saved-site portfolio block). The 'changes since' framing is distinctive, but no sibling tool is named to explicitly contrast against the many adjacent tools (get_news, list_transactions, get_market_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 clear triggering contexts: 'when the user asks what changed... since a date', 'what changed since I last looked', 'anything new this week'. This tells the agent when to reach for it, but it offers no explicit alternatives or when-not guidance against the numerous sibling intelligence tools.

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

get_climate_intelGet Climate IntelA
Read-onlyIdempotent
Inspect

Use this when the user asks about seismic or climate design inputs for a data center site (lat/lon) — the layer that drives data-center structural bracing cost (seismic) and cooling design (cooling degree-days, extreme temps). Grounded STRICTLY in USGS ASCE 7 (seismic) + NOAA climate normals via ACIS; every value traces to a federal source and missing data is declared unavailable, never estimated. Example: get_climate_intel lat=33.45 lon=-112.07. Returns {seismic_hazard_usgs:{status, peak_ground_acceleration_g, ss, s1, seismic_design_category, hazard_class}, climate_normals_noaa:{status, reference_station:{id,name,distance_km}, cooling_design_metrics:{cooling_degree_days_annual, extreme_max_dry_bulb_f, extreme_max_wet_bulb_f (null if source lacks it), data_vintage}}, overall_climate_summary, data_availability, sources}. radius_km (optional, default 25) snaps to the nearest NOAA station; beyond it climate returns unavailable_exceeds_radius. Seismic is US (ASCE 7); non-US → seismic unavailable. For natural-hazard ratings use get_disaster_risk; for one blended verdict use get_composite_site_score.

NameRequiredDescriptionDefault
latNoSite latitude in decimal degrees (-90 to 90, required), e.g. 33.45
lngNoAlias for lon — either name works
lonNoSite longitude in decimal degrees (-180 to 180, required), e.g. -112.07
latitudeNoAlias for lat — either name works
longitudeNoAlias for lon — either name works
radius_kmNoMax distance (km) to snap to the nearest NOAA station (optional, default 25)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered; the description adds real behavioral context beyond that: radius_km snapping to the nearest NOAA station with unavailable_exceeds_radius beyond it, US-only seismic coverage, and a strict no-estimation policy with missing data declared unavailable. It stops short of noting rate limits or latency.

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 use case and alternatives, and most sentences carry weight. The full return-shape enumeration is largely redundant given a dedicated output schema exists, adding length without adding routing value.

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?

Complete for a six-parameter lookup with annotations and an output schema: it covers source grounding (USGS ASCE 7, NOAA/ACIS), scope limits (US seismic, station radius), failure modes, and sibling routing. An agent has everything needed to call it 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 schema already documents all parameters (baseline 3). The description adds meaning beyond the schema by explaining the operational consequence of radius_km (default 25, station snapping, failure when exceeded) and confirming the lat/lon pair drives the whole lookup, which goes past the flat field definitions.

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 (retrieve seismic/climate design inputs for a lat/lon site) and names the exact dimensions it feeds (structural bracing cost, cooling design). It explicitly distinguishes itself from get_disaster_risk and get_composite_site_score, so an agent can route 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?

Opens with an explicit trigger condition ('when the user asks about seismic or climate design inputs') and names both alternatives with the condition that selects them (natural-hazard ratings → get_disaster_risk; one blended verdict → get_composite_site_score). Nothing is left to inference.

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

get_composite_site_scoreGet Composite Site ScoreA
Read-onlyIdempotent
Inspect

Use this when the user wants one 0-100 data center site suitability verdict for a lat/lon WITH an explicit per-factor coverage map — which factors are actually measured vs. declared unavailable. Unlike analyze_site (full raw data dump), this scores ONLY over VALIDATED factors and never imputes a missing one: power/grid, fiber, natural-hazard risk (FEMA NRI) and water (live WRI Aqueduct 4.0 baseline water stress) are all live; water is "unavailable" only outside basin coverage (never faked); market/DCPI is v1-unavailable (use rank_markets). Example: get_composite_site_score lat=33.45 lon=-112.07 state=AZ. Returns {composite_score (0-100 over validated factors), verdict (BUILD/CAUTION/AVOID), confidence (complete|conditional), coverage {power_grid|fiber|water|risk_resilience|market_dcpi: validated|unavailable}, coverage_ratio, sub_scores, caveats}. Use analyze_site for full data, compare_sites for 2-4 sites, rank_markets for whole-market ranking.

NameRequiredDescriptionDefault
latNoSite latitude in decimal degrees (-90 to 90, required), e.g. 33.45
lngNoAlias for lon — either name works
lonNoSite longitude in decimal degrees (-180 to 180, required), e.g. -112.07
stateNoUS state abbreviation (optional) — improves water/context lookups, e.g. AZ
latitudeNoAlias for lat — either name works
longitudeNoAlias for lon — either name works

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare the safe-read profile (readOnly/idempotent/non-destructive/openWorld=false); the description adds genuinely unavailable context: no imputation of missing factors, live provenance per factor (FEMA NRI, WRI Aqueduct 4.0), the rule that water is 'unavailable' rather than faked outside basin coverage, and that market/DCPI is v1-unavailable. This is exactly the operational nuance annotations cannot express.

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 purpose and coverage-map distinction are front-loaded, and the alternatives are consolidated at the end. It is dense but long — the explicit return-shape enumeration duplicates an output schema that already exists, which is the one stretch that doesn't earn its place.

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 a scoring tool with an output schema present, the description still covers everything an agent needs: verdict scale (0-100, BUILD/CAUTION/AVOID), confidence semantics, coverage values (validated|unavailable), and the no-imputation contract that determines how results should be interpreted.

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 the lat/lon/state/alias semantics are already documented, making 3 the baseline. The description adds a concrete example call (lat=33.45 lon=-112.07 state=AZ) but never mentions the lng/latitude/longitude aliases or that state is optional-but-helpful, so it adds little beyond the 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?

The opening sentence states a specific verb (score) and resource (composite site suitability for a lat/lon) plus the distinguishing artifact: an explicit per-factor coverage map. It explicitly contrasts itself with analyze_site ('full raw data dump') and with the scoring scope ('scores ONLY over VALIDATED factors'), so an agent can separate it from siblings 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?

It states the triggering condition ('when the user wants one 0-100 verdict WITH a coverage map') and then routes three alternatives by scenario: analyze_site for full data, compare_sites for 2-4 sites, rank_markets for whole-market ranking. Exclusions and substitutes are both explicit.

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

get_dchub_recommendationDC Hub RecommendationA
Read-onlyIdempotent
Inspect

Use this when the user asks what DC Hub is: a short description in one of four categories (general, investment, site-selection, technical), plus the live top-ranked market pocket. It does NOT compute a siting answer from free text. Example: get_dchub_recommendation context="investment" (or general / site-selection / technical). Params: context must match one of FOUR LITERAL categories - general, investment, site-selection, technical. Free text does NOT parse: you get the GENERIC blurb with matched_category=null and context_understood=false. ALWAYS returns: {recommendation:{short, medium, detailed}, matched_category, context_understood, top_pocket, related_intel, available_categories, recommendation_live, connect_url, context, success}. ADDITIONALLY on a non-matching context: is_generic_answer=true, answer_note, and next_tools naming the tool that does compute an answer. Do NOT use for a single specific lat/lon (use analyze_site), to rank by ONE criterion (use rank_markets), or for an open-ended siting question expecting a computed shortlist (use site_selection_canvas) - this tool returns descriptive copy plus a live top-pocket, not a ranked analysis.

NameRequiredDescriptionDefault
contextNoFree-text description of the siting request — MW, geography, workload, deadline, constraints, e.g. "100MW AI training campus in Texas, short time-to-power"

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only declare readOnly/idempotent/openWorld=false; the description adds substantial behavior beyond that: the exact fallback when free text does not match (generic blurb with matched_category=null and context_understood=false), the is_generic_answer/answer_note/next_tools fields on non-matching input, and the fact that it never computes a siting answer. This is rich disclosure the 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.

Conciseness3/5

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

The trigger and the exclusions are front-loaded, which is good, but the four categories are listed twice and the return-shape enumeration duplicates the output schema, adding bulk without new information. Information-dense but not tightly edited.

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 a single-optional-param tool with an output schema, the description covers everything needed: trigger, valid inputs, fallback semantics, and routing to the correct alternative tools. The repetition of return fields is redundant with the output schema but does not leave a gap.

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%, but the schema's own description is misleading — it advertises free text like "100MW AI training campus in Texas" while the tool actually requires one of four literal categories. The description corrects this and enumerates the four valid values (the schema declares no enum), which is essential meaning added beyond the schema. It falls short of 5 only because the underlying schema remains contradictory and could still mislead.

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 specific verb+resource: it returns a DC Hub blurb in one of four named categories plus the live top-ranked market pocket. It explicitly distinguishes itself from analyze_site, rank_markets, and site_selection_canvas, so an agent can tell exactly what this tool is not.

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 an explicit trigger ("Use this when the user asks what DC Hub is") and an explicit do-not-use list, each paired with the correct alternative (single lat/lon -> analyze_site, one-criterion ranking -> rank_markets, computed shortlist -> site_selection_canvas). Nothing is left to inference.

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

get_disaster_riskGet Disaster RiskA
Read-onlyIdempotent
Inspect

Use this when the user asks about natural-hazard risk for a data center site (US lat/lon) — flood, wildfire, hurricane, earthquake, heat, drought, tornado, etc. Grounded in the FEMA National Risk Index (NRI), the US county-level hazard dataset (live query, never estimated; points outside US NRI coverage return coverage=unavailable). Example: get_disaster_risk lat=33.45 lon=-112.07. Returns {disaster_risk:{composite_score (0-100, higher=worse), rating (Very Low..Very High), national_percentile}, hazards:{Wildfire, Hurricane, Earthquake, Heat Wave, ...: rating}, top_hazards:[{hazard, rating}], coverage (validated|unavailable), source, caveats}. County-level resolution. For chronic water stress use get_water_risk; for one blended site verdict use get_composite_site_score.

NameRequiredDescriptionDefault
latNoSite latitude in decimal degrees (-90 to 90, required), e.g. 33.45
lngNoAlias for lon — either name works
lonNoSite longitude in decimal degrees (-180 to 180, required), e.g. -112.07
latitudeNoAlias for lat — either name works
longitudeNoAlias for lon — either name works

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the bar is lower, and the description still adds real behavior: live query rather than estimate, explicit out-of-coverage fallback (coverage=unavailable), county-level rather than parcel resolution, and a caveats field. It does not mention auth/API-key requirements or rate limits, which is the only 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?

Roughly 100 words, front-loaded with the trigger and source, then example, then return shape, then sibling routing. Every clause carries information; nothing is restated from the title or 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?

For a lookup tool with an output schema and full annotation coverage, the description supplies everything needed to call it correctly: source, resolution, coverage semantics, fallback behavior, and the alternatives. Return-field enumeration is redundant against the output schema but harmless and aids scanning.

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 description coverage is 100% and the schema already documents ranges and the alias names (latitude/longitude/lng), so the baseline is 3. The description adds value by pinning the constraint to US coordinates and supplying a concrete invocation example (lat=33.45 lon=-112.07), but it does not explain how the aliases interact if multiple are passed.

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?

Specific verb+resource with explicit scope: natural-hazard risk for a US data-center site, grounded in the FEMA National Risk Index. It enumerates the hazard classes covered (flood, wildfire, hurricane, earthquake, heat, drought, tornado) and is trivially distinguishable from get_water_risk and get_composite_site_score.

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 an explicit trigger ('Use this when the user asks about natural-hazard risk for a data center site'), then routes away to two named alternatives with their own conditions (chronic water stress -> get_water_risk; blended site verdict -> get_composite_site_score). No inference required.

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

get_energy_pricesEnergy PricesA
Read-onlyIdempotent
Inspect

Use this when the user asks what electricity or natural gas costs for a data center in a US ISO or state ("what does power cost in ERCOT?", "retail rate in Virginia?"); price alone does not rank sites (the cheapest ISO may have no headroom; execute_plan weighs both). Returns EIA RETAIL electricity rates, which are monthly and not live (about 3 months behind; retail_rates.latest_period names the month), for one ISO footprint (the average of its states), one state, or the US: retail_rates {avg_cents_kwh, min_cents_kwh, max_cents_kwh, latest_period, states_covered} in CENTS/kWh, plus avg_rate_kwh, retail_rate_kwh and industrial_rate_kwh in DOLLARS/kWh (by_sector when no sector is given); and natural_gas_usd_mmbtu, the latest Henry Hub daily spot in $/MMBtu, one national benchmark rather than a state or ISO price, with its own natural_gas.period and as_of. Example: "What is the retail power price and gas price in ERCOT?" — get_energy_prices iso=ERCOT. Params: iso (ERCOT, PJM, MISO, CAISO, SPP, NYISO, ISONE) or state (e.g. TX); data_type is accepted but does not change the response. At an anonymous or free-key seat the figures come back null with gated: true; an email-bound key opens them. This tool has no wholesale/LMP price and no grid-status flag.

NameRequiredDescriptionDefault
isoNoISO/RTO grid region (required for ISO pricing): ERCOT, PJM, MISO, CAISO, SPP, NYISO, ISONE
stateNoUS state abbreviation for state-level pricing context, e.g. TX
data_typeNoOptional price type focus, e.g. retail, wholesale, gas

Output Schema

NameRequiredDescription
as_ofNo
gatedNo
scopeNo
filterNo
successNo
caller_tierNo
natural_gasNo
avg_rate_kwhNo
retail_ratesNo
retail_rate_kwhNo
industrial_rate_kwhNo
natural_gas_usd_mmbtuNo

TDQS

A4.8/5.0
Behavior5/5

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

Goes well past the readOnly/idempotent annotations: it discloses data provenance (EIA), staleness (~3 months behind, latest_period names the month), and an access-tier behavior that would otherwise look like a failure (anonymous/free-key seats return null with gated: true; email-bound key unlocks). That gating note alone is high-value context an agent cannot infer from the schema.

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 condition and the disambiguation warning, then details. It is a dense single paragraph with some redundancy, since a large chunk enumerates return fields (avg_cents_kwh, min/max, latest_period) that the existing output schema already declares — but the units note (cents/kWh vs dollars/kWh) justifies much of that.

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 a read-only pricing tool it covers what an agent needs before calling: units, staleness, geographic granularity, the national-only nature of the gas benchmark, and the gated-access failure mode. Return values are also covered by an output schema, so nothing material 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 baseline is 3; the description earns a bump by explaining that an ISO value is the average of its member states, that omitting both yields a US figure, and — critically — that data_type is accepted but does not change the response, correcting a schema description that lists 'wholesale' as a valid focus the tool cannot actually serve.

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 (retrieve EIA retail electricity and Henry Hub gas prices) and scopes it to ISO/state/US geography. It explicitly carves out what it is not — 'no wholesale/LMP price and no grid-status flag' — which separates it from siblings like get_gas_index, get_grid_scoreboard and compare_isos.

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 exact user phrasing that should trigger it ("what does power cost in ERCOT?", "retail rate in Virginia?") and includes a worked invocation example. It also names a boundary condition: price alone does not rank sites, so ranking belongs to execute_plan.

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

get_facilityGet Facility DetailsA
Read-onlyIdempotent
Inspect

Use this when the user asks about one data center facility: name, operator, address, lat/lon, power capacity (MW total/used), cooling type, fiber providers (count + carrier list), commissioning year, status, the DCPI verdict for its market, and peer facilities nearby. Answers "who operates this data center and how big is it", "how many fiber carriers are in that building". Try: get_facility id=equinix-dc1-ashburn — or get_facility slug=digital-realty-digital-realty-iad38-ashburn-5754e62d. Returns ONE facility in full; do NOT use to search or list many facilities (use search_facilities). Needs a slug or id from search_facilities. 404 "not found": re-run search_facilities. Gated: give human_url to your human.

NameRequiredDescriptionDefault
idNoAlias for facility_id — a facility id/slug from a prior search result
nameNoFacility name as a fallback lookup when no id/slug is known, e.g. "QTS Ashburn"
slugNoFacility slug from a prior search result, e.g. digital-realty-digital-realty-iad38-ashburn-5754e62d
facility_idNoFacility id from a prior search_facilities/search result (numeric or string), e.g. equinix-dc1-ashburn
include_powerNoInclude power capacity detail (total/used MW) in the response (default true)
include_nearbyNoInclude peer facilities near this one in the response (default true)

Output Schema

NameRequiredDescription
dataNo
cite_asNo
successNo
next_askNo
preview_is_partialNo

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover the read-only/idempotent/non-destructive profile, and the description adds traits beyond them: single-record scope ("Returns ONE facility in full"), a 404 not-found recovery loop, and the gating behavior ("Gated: give human_url to your human") which the agent could not learn from the schema. This is exactly the kind of operational context annotations cannot express.

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 routing constraint and single-vs-many distinction are front-loaded in useful order, and every sentence carries operational content. The long field enumeration is dense but justified by the 'tell me everything about this facility' use case, though it makes the opener heavier than strictly needed.

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 a single-entity lookup with six optional/aliased params, full schema coverage, and a declared output schema, the description covers scope, prerequisites, failure handling, and gating. There is no material gap an agent would hit on invocation.

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% and the schema already explains facility_id/slug/name aliases, so the baseline is 3. The description earns a point above baseline by supplying concrete call syntax examples (equinix-dc1-ashburn, the long digital-realty slug) and reinforcing that identifiers must come from search_facilities. The two include_* toggles are left entirely to the 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?

The description opens with a specific verb+resource (fetch one data center facility) and enumerates exactly which fields come back, so an agent knows the payload shape before calling. It explicitly contrasts with the sibling search_facilities for multi-result queries, making it unambiguous.

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 states when to use it ("when the user asks about one data center facility"), when not to ("do NOT use to search or list many facilities (use search_facilities)"), plus the prerequisite ("Needs a slug or id from search_facilities") and the recovery path for a 404. Nothing is left to inference.

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

get_facility_risk_deltaGet Facility Risk DeltaA
Read-onlyIdempotent
Inspect

Use this when the user asks how a data center facility's (or its market's) power risk changed recently — "has this site gotten riskier lately?". Returns the REAL DCPI market-health delta (excess-power score change over the window, direction improving/worsening/flat) from DC Hub's history-preserving daily snapshots. INTEGRITY: only DCPI market-health has a short-term temporal series; the site-hazard dimensions (FEMA disaster / USGS seismic / NOAA climate / WRI water) are DECLARED static (they don't change week-to-week) with a pointer to the point-in-time tool — never a fabricated week-over-week delta; no snapshot history → coverage:unavailable. Params: facility_id (a discovered-facility id or slug) OR market (a market name/slug), since (e.g. "7d"/"30d", default 7d). Returns {facility, dcpi_market_health:{delta, now, direction, coverage}, static_dimensions{...}, summary}. For the current point-in-time risk (not the change) use get_composite_site_score / get_disaster_risk / get_climate_intel.

NameRequiredDescriptionDefault
sinceNoLook-back window, e.g. "7d" or "30d" (default 7d)
marketNoAlternatively, a market name or slug (e.g. "northern-virginia")
facility_idNoA DC Hub facility id or canonical slug to resolve the market context

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description adds substantive behavioral context beyond them: only DCPI market-health has a temporal series, the hazard dimensions are declared static and never fabricated into week-over-week deltas, and missing snapshot history returns coverage:unavailable. This is exactly the integrity/edge-case 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 usage trigger and return shape, and the integrity caveat earns its length. It is dense and somewhat long, with the parameter list and return signature partly redundant against the schema, but no sentence is pure 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?

For a tool with 3 optional params, an output schema, and subtle coverage semantics, the description covers trigger, scope, integrity behavior, return shape, and sibling alternatives. An agent has everything needed to select and invoke it 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, but the description adds the OR/mutual-exclusion relationship between facility_id and market and restates the default window (7d). It largely mirrors the schema descriptions, so it is a modest rather than substantial gain.

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+scope: how a facility's (or market's) power risk changed recently, framed by the user question it answers. It explicitly distinguishes itself from point-in-time siblings (get_composite_site_score / get_disaster_risk / get_climate_intel), so an agent can route correctly 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 Guidelines5/5

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

Gives an explicit trigger ("has this site gotten riskier lately?") and names the alternative tools plus the exact condition (current point-in-time risk vs change) that selects them. When-to-use and when-not-to-use are both covered.

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

get_fiber_intelFiber IntelligenceA
Read-onlyIdempotent
Inspect

Use this when the user asks about fiber routes, carriers or connectivity for a market: long-haul, metro, dark or IX routes. Filter by carrier, route_type, market. Returns GeoJSON routes: carrier, type, fiber count, lit capacity, distance. Free callers get a sample of routes, not the full set; the full set needs a paid key. Ex: "Zayo long-haul routes via Dallas." Filter by market (slug from rank_markets) or carrier. For one building use get_facility. Gated: give human_url to your human.

NameRequiredDescriptionDefault
marketNoMetro name or slug (e.g. "dallas", "ashburn", "northern-virginia") — returns only routes touching that metro (either endpoint within ~1.2°). Great with route_type=longhaul.
carrierNoFiber carrier to filter on, e.g. Zayo, Lumen, Cogent, "Crown Castle", Windstream, GTT, Uniti; omit for all carriers
route_typeNoRoute class: "metro", "longhaul", "dark", or "ix"
include_sourcesNoInclude upstream data-source/provenance metadata in the response

Output Schema

NameRequiredDescription
typeNo
totalNo
featuresNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent/non-destructive, and the description adds genuinely non-obvious context: free callers get a sample rather than the full route set, the full set requires a paid key, and the tool is gated so the agent must surface a human_url to its operator. The return-field list (carrier, type, fiber count, lit capacity, distance) is somewhat redundant with the existing output schema, which keeps this from a 5.

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 condition, then access limits, then parameters, then the sibling redirect — good ordering. Slight redundancy in repeating the filter fields ('Filter by carrier, route_type, market' followed later by 'Filter by market ... or carrier') keeps it from a 5.

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

Completeness4/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 needn't be explained, yet the description still summarizes them; combined with the free/paid access disclosure and the gating instruction, an agent has what it needs to call this correctly. Minor gaps remain around result limits, pagination, and how multiple filters compose.

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 all four parameters are already documented in detail, including route_type values and market slug examples. The description only restates the filterable fields and adds the useful note that market accepts a slug from rank_markets; it does not clarify whether market and carrier are combined with AND or how include_sources affects shape. Baseline 3 is appropriate.

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 (retrieve fiber routes/carriers/connectivity for a market) and enumerates the route classes it covers: long-haul, metro, dark, IX. It also distinguishes itself from the nearest sibling by saying 'For one building use get_facility,' so an agent can route without opening either 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?

Gives an explicit trigger ('when the user asks about fiber routes, carriers or connectivity for a market'), explicit filter combinations, a named alternative for the building-level case, and even an example query ('Zayo long-haul routes via Dallas'). The pointer to rank_markets for the market slug is actionable routing guidance.

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

get_fiber_readinessGet Fiber ReadinessA
Read-onlyIdempotent
Inspect

Use this when the user asks whether one data center site (lat/lon) is fiber-ready: near-net distance to a carrier-served facility, how many distinct fiber carriers are reachable, and whether there is single-carrier risk (no path diversity). This is the parcel connectivity answer engineering site-selectors screen on. Example: "Is this Loudoun County parcel fiber-ready and how many carriers can serve it?" — get_fiber_readiness lat=39.04 lon=-77.48 radius_km=50. Params: lat (-90..90, required), lon (-180..180, required), radius_km (search radius in km, default 50, range 5-200). Returns: {score 0-100 (null when not scored — see carrier_data_coverage), near_net_bucket ("on-net"|"near-net"|"acceptable"|"build-required"|"unknown"), nearest_carrier_km, carrier_count, top_carriers:[{carrier, distance_km}], single_carrier_risk (bool, null when not scored), fiber_coverage_km, verdict_short, carrier_data_coverage ("confirmed"|"none_in_region")}. IMPORTANT — "unknown" is NOT "bad": carrier presence comes from PeeringDB, which is global but thin outside dense US/EU metros, so DC Hub distinguishes "no carrier serves this point" from "PeeringDB does not describe this region".

NameRequiredDescriptionDefault
latNoSite latitude in decimal degrees (-90 to 90, required), e.g. 39.04
lngNoAlias for lon — either name works
lonNoSite longitude in decimal degrees (-180 to 180, required), e.g. -77.48
latitudeNoAlias for lat — either name works
longitudeNoAlias for lon — either name works
radius_kmNoSearch radius in km for reachable fiber carriers (default 50, range 5-200)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description adds substantial context beyond them: the data provenance (PeeringDB), null-scoring semantics tied to carrier_data_coverage, and the critical 'unknown is NOT bad' distinction between 'no carrier serves this point' and 'PeeringDB does not describe this region'.

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 well and the example is helpful, but the full enumeration of return fields duplicates the output schema and adds length. Mostly efficient, with one redundant block.

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

Completeness4/5

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

For a tool with a full output schema, the description is more than complete; the return-value listing is redundant but not harmful, and the coverage/unknown nuance is exactly the kind of context an agent needs. Slightly over-complete rather than under.

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 the schema already documents every parameter including the aliases (lng/latitude/longitude) and radius ranges. The description restates the same ranges and defaults without adding new meaning, so the 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 precise verb+resource+scope: 'whether one data center site (lat/lon) is fiber-ready' with the specific sub-signals (near-net distance, carrier count, single-carrier risk). This scoping to a single site distinguishes it from sibling tools like get_metro_fiber and get_fiber_intel without the agent needing to open schemas.

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 this when the user asks whether one data center site is fiber-ready' gives clear triggering context and a concrete example query. It implicitly distinguishes the single-site scope from metro/sibling tools but never explicitly names an alternative or states 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.

get_gas_economicsGet Gas EconomicsA
Read-onlyIdempotent
Inspect

Use this when the user asks what behind-the-meter gas power costs in a US data-center market: Henry Hub spot, regional basis differential, and the delivered industrial + electric gas tariff ($/MMBtu), each with its own source label. Pass market= (e.g. "northern-virginia", "dallas", "phoenix"). AZ, GA, FL), never a substitute price; if the backend switch is ever turned off again, gas_to_grid_status carries that reason. ★ DO NOT COMPARE a $/MWh published before 2026-09-27 with one published now — each surface then picked the price its own way, up to 5.5x apart. Do not derive a $/MWh yourself from the $/MMBtu layers for a withheld state without saying that you did. Do NOT use for the electricity grid fuel mix (use get_grid_data).

NameRequiredDescriptionDefault
marketYesMarket slug (metro), e.g. northern-virginia, dallas, phoenix — valid slugs come from rank_markets / get_market_dcpi_rank
heat_rate_btu_per_kwhNoOptional custom generator heat rate in Btu/kWh for the gas-to-grid $/MWh scenario, e.g. 6800 (avg CCGT)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/open-world, so safety is covered. The description goes further with behavioral caveats: each layer carries its own source label, gas_to_grid_status carries the reason if the backend switch is off, and — most valuably — the warning that $/MWh values published before 2026-09-27 were computed differently and can differ up to 5.5x. That is real disclosure beyond the structured fields, despite awkward wording.

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

Conciseness2/5

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

The description is front-loaded with the core purpose, which is good, but it contains an obviously truncated fragment ('AZ, GA, FL), never a substitute price; if the backend switch is ever turned off again') and interleaves caps-lock warnings with unrelated notes. Multiple sentences do not parse cleanly, which harms an agent's ability to extract rules reliably.

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

Completeness4/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-value explanation is not required. The description supplies the trigger, the scope of returned layers, the exclusion and alternative, and the critical cross-date comparability caveat. Given the tool's complexity and the presence of an output schema, this is largely complete — the damaged fragments are the main residual gap.

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 both parameters are already documented in the schema (market slug with examples, optional heat_rate_btu_per_kwh with an example). The description repeats the market slug guidance without adding format or constraint detail, and never mentions the heat-rate parameter. Baseline 3 is appropriate when the schema carries the load.

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

Purpose4/5

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

The first sentence names a specific resource (behind-the-meter gas power economics) and enumerates the three layers returned — Henry Hub spot, regional basis differential, and the delivered industrial + electric gas tariff in $/MMBtu. It also distinguishes itself from the electricity-mix sibling by routing that case to get_grid_data. The purpose is clear, though a garbled mid-sentence fragment ('AZ, GA, FL), never a substitute price') muddies the edges.

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?

It states an explicit trigger ('Use this when the user asks what behind-the-meter gas power costs in a US data-center market') and an explicit exclusion ('Do NOT use for the electricity grid fuel mix (use get_grid_data)'), naming the alternative. The temporal-comparison warning and the 'do not derive a $/MWh yourself' instruction add further usage constraints. Only the corrupted fragment keeps this from being fully clean guidance.

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

get_gas_indexGas Index (DCGI)A
Read-onlyIdempotent
Inspect

Use this when the user asks which US states suit gas-fired data center power: the Data Center Gas Index (DCGI), a per-state score. ★ DO NOT COMPARE a DCGI figure published before 2026-08-08 with one published now — they are different indices; the full record is at /api/v1/dcgi/methodology under corrections. A state that cannot be priced comes back verdict UNSCORED with dcgi null and an unscored_reason, never a placeholder score, so treat UNSCORED as absence and not as a low score. gas_price_series names which EIA series answered each state. Gas-fired $/MWh figures, withdrawn the same day for a separate defect, were republished 2026-09-27 under one burner-tip price rule (see get_gas_economics). Use get_gas_intelligence for pipeline, operator and parent-midstream data.

NameRequiredDescriptionDefault
limitNoMax results to return (1-500; default varies by tool)
stateNoUS state abbreviation, e.g. TX, VA, AZ. Returns the DCGI score and verdict, plus `gas_price_series` naming which EIA series priced the state.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare a safe, idempotent read, so the bar is low, yet the description adds substantial behavioral context: the index-versioning hazard (differing DCGI figures before/after 2026-08-08), where the full methodology record lives, and the UNSCORED-not-low-score semantics. It also explains that gas_price_series identifies which EIA series priced each state.

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 core purpose before the caveats, and most sentences (UNSCORED semantics, version warning, sibling routing) earn their place. It is somewhat packed with dated incident detail (same-day withdrawal, 2026-09-27 republish) that could be tightened, but it remains readable.

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 not be re-explained, and the description still covers the two things an agent must not get wrong: cross-version comparability and treating UNSCORED as absence. Alternatives and the methodology endpoint are also supplied.

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 both parameters (limit, state) are already fully documented, which sets the baseline at 3. The description adds semantics around state output (verdict, gas_price_series) but nothing new about parameter syntax or constraints beyond the 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+resource+scope: 'which US states suit gas-fired data center power' scored per-state by the Data Center Gas Index (DCGI). It is clearly distinguishable from sibling gas tools, naming get_gas_intelligence (pipeline/operator/midstream) and get_gas_economics as the alternatives.

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?

Gives an explicit trigger ('Use this when the user asks which US states suit gas-fired data center power') and explicit routing away from siblings ('Use get_gas_intelligence for pipeline, operator and parent-midstream data'), plus a reference to get_gas_economics. When-to-use and when-to-use-something-else are both covered.

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

get_gas_intelligenceGet Gas IntelligenceA
Read-onlyIdempotent
Inspect

Use this when the user asks about gas-fired or behind-the-meter power economics for a data center in a US state — "is gas power cheaper than the grid in Texas?", "what is the gas access + pipeline situation in Virginia?". The GAS analogue of get_grid_intelligence: fuses the Data Center Gas Index (DCGI), live Henry Hub, gas-to-grid $/MWh across heat-rate scenarios, pipeline-operator presence, and the live grid gas share into one per-STATE brief. Params: region (US state code or name, e.g. "TX" | "Texas" | "Virginia"). Returns: {region, region_name, gas_access (pipeline counts + operators — PRESENCE not firm capacity), henry_hub_usd_mmbtu (live), basis_usd_mmbtu (synthetic-labeled), delivered_price_usd_mmbtu (null where the tariff table is sparse — surfaced honestly, never fabricated), live_grid_gas_share_pct, pipeline_presence (operators + parent midstreams), data_basis (per-field provenance/confidence), omitted_no_fabrication, dcgi_status, gas_to_grid_status}. A $/MWh published before 2026-09-27 is not comparable. dcgi_status and gas_to_grid_status carry the current state of each — read them rather than assuming both moved together. DO NOT quote a DCGI score cached before 2026-08-30 or a $/MWh cached before 2026-09-27.

NameRequiredDescriptionDefault
stateNoAlias for region — the US state code or name
regionNoUS state code or name (required), e.g. "TX", "Texas", "Virginia"

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, idempotent, non-destructive), and the description layers on substantial behavioral context beyond them: freshness cutoffs for DCGI and $/MWh, synthetic-labeled basis, nulls surfaced honestly rather than fabricated, and the caveat that gas_access is presence not firm capacity. This is exactly the extra detail 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-loads the use case and keeps sentences information-dense, but enumerates the full return object even though an output schema exists, which is partly redundant. Still well-ordered and free of 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?

For a high-complexity intelligence-fusion tool, it covers triggering, provenance/confidence, staleness rules, and honest-null behavior. With an output schema present it needn't explain returns, yet its extra caveats add rather than pad.

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 both region/state params are already documented, and the description largely repeats the state-code-or-name format. It does not add new syntax or constraints beyond the schema, 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+resource (fuse gas economics into a per-state brief) and explicitly frames itself as 'the GAS analogue of get_grid_intelligence', letting an agent distinguish it from grid/energy siblings. The example user questions make the scope concrete.

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?

Gives explicit trigger conditions and sample utterances ('is gas power cheaper than the grid in Texas?'), names the sibling it mirrors, and adds hard exclusions ('DO NOT quote a DCGI score cached before 2026-08-30'). When-to-use and when-not-to-use are both present.

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

get_global_powerGet Global PowerA
Read-onlyIdempotent
Inspect

Use this when the user asks about power plants worldwide or in a non-US country — operating AND the forward pipeline (announced / pre-construction / under-construction), across ALL fuels (coal, oil/gas, nuclear, solar, wind, hydro, bioenergy, geothermal). Global Energy Monitor Global Integrated Power Tracker: 182,000+ geolocated units across 170+ countries, each with fuel, capacity (MW), status, start year, operator/owner and lat/lng. Filter by country (e.g. Germany, India, Brazil, Japan), fuel (comma-union: coal, oil/gas, nuclear, solar, wind, hydro), status, pipeline=true (JUST the forward set: announced + pre-construction + construction), bbox (minLng,minLat,maxLng,maxLat), or min_mw. Returns a summary (total MW by fuel + count by status) plus the largest units. Answers "what power is being built in India", "how much coal is still running in Vietnam". Try: get_global_power country=India pipeline=true. Do NOT use for US grid telemetry/headroom (use get_grid_intelligence / get_grid_scoreboard) or the US planned-generator feed (use get_power_pipeline) — this is the GLOBAL asset inventory.

NameRequiredDescriptionDefault
bboxNoViewport filter as minLng,minLat,maxLng,maxLat
fuelNoFuel/type filter, comma-separated for a union: coal, oil/gas, nuclear, solar, wind, hydro, bioenergy, geothermal
limitNoMax results to return (1-500; default varies by tool)
min_mwNoMinimum unit capacity in MW
statusNoStatus substring filter, e.g. operating, construction, pre-construction, announced
countryNoCountry/area name to filter, e.g. Germany, India, Brazil, Japan
pipelineNotrue = ONLY the forward pipeline (announced + pre-construction + under-construction)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds substantive context beyond that: dataset provenance (Global Integrated Power Tracker, 182,000+ geolocated units, 170+ countries), the exact definition of the pipeline set, and the return shape (summary of total MW by fuel plus largest units). It does not mention pagination or rate limits, keeping it short of a 5.

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?

It is a long, dense paragraph, but it is front-loaded with the use case, then filters, then returns, then exclusions, then a try-example — every sentence contributes. Slightly overpacked, which 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 already present, the description need not detail return values, yet it still sketches them. Combined with scope, filter semantics, dataset coverage, and explicit sibling routing, an agent has everything needed to select and invoke this 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, but the description meaningfully enriches it: fuel is 'comma-union', pipeline=true means ONLY the forward set (announced + pre-construction + construction), bbox is minLng,minLat,maxLng,maxLat, and country/status examples are given. This is more semantic detail than the schema fields carry.

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 names a specific verb+resource (retrieve global power plant asset inventory) and precisely scopes it: operating AND forward pipeline across ALL fuels, worldwide. It explicitly distinguishes itself from the US-focused siblings get_grid_intelligence, get_grid_scoreboard, and get_power_pipeline, so an agent can route 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?

It states when to use it ('user asks about power plants worldwide or in a non-US country'), when NOT to use it (US grid telemetry/headroom, US planned-generator feed), and names the specific alternative tool for each exclusion. Concrete example queries ('what power is being built in India') and a 'Try:' invocation remove ambiguity.

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

get_grid_dataLive Grid DataA
Read-onlyIdempotent
Inspect

Use this when the user asks for live electricity grid data (power demand, fuel mix) for one grid: the 7 US ISOs (PJM, ERCOT, CAISO, MISO, SPP, NYISO, ISO-NE), TVA, BPA, 40+ US utility balancing authorities (e.g. AZPS, SOCO, DUK, FPL, or a city: PHOENIX, ATLANTA), Canada (IESO, AESO, HYDROQUEBEC), Great Britain (NGESO), any ENTSO-E bidding zone (EU_DE_LU, EU_FR, EU_NL ...), Taiwan (TAIPOWER), Japan (OCCTO), South Korea (KEPCO-KR), Brazil (ONS), Australia (AEMO) or Singapore (EMA). US ISOs and EIA regions return EIA hourly fuel mix, demand and the 24h curve; other grids return each feed's newest reading per metric, each with its own timestamp. For PJM it also returns installed_capacity_mw: EIA-860M installed generating capacity (net summer MW of operating generators for the report month in installed_capacity_mw_period). That is not PJM committed capacity, which is listed in licence_withheld with no value. Raw telemetry for one grid; do NOT use for power-availability, time-to-power or interconnection-queue analysis (use get_grid_intelligence), nor for retail/gas pricing (use get_energy_prices). To rank many grids at once use get_grid_scoreboard.

NameRequiredDescriptionDefault
isoNoGrid code (required): a US ISO (ERCOT, PJM, MISO, CAISO, SPP, NYISO, ISONE), TVA, BPA, a utility BA or city (AZPS, PHOENIX), or a non-US grid (IESO, AESO, HYDROQUEBEC, NGESO, EU_DE_LU, TAIPOWER, OCCTO, KEPCO-KR, ONS, AEMO, EMA)
metricNoOptional metric focus, e.g. fuel_mix, demand, demand_curve
periodNoOptional time window for the metric, e.g. 24h

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the description goes further and discloses the return semantics that matter: US ISOs/EIA regions return EIA hourly fuel mix plus 24h curve, while other grids return each feed's newest reading per metric with its own timestamp. It even pre-empts a likely misinterpretation by noting installed_capacity_mw is EIA-860M net summer capacity for the report month, not PJM committed capacity (which appears value-less in licence_withheld).

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?

Long but front-loaded: the trigger condition and scope come first, followed by coverage, then return behavior, then exclusions. Every clause is doing work, though the installed_capacity_mw/licence_withheld passage is dense enough that it borders on over-specification for a first-read.

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 open-world tool spanning hundreds of grid codes, the description covers coverage, per-family return differences, a known data caveat, and routing to three alternatives. With an output schema present, it has no obligation to describe return field structure, and nothing an agent needs to call it 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 the schema already documents iso, metric and period, making 3 the baseline. The description adds some value by expanding the accepted grid-code vocabulary (EU_DE_LU bidding zones, city names like PHOENIX/ATLANTA) and naming the metrics produced (fuel_mix, demand, demand_curve), but it does not explain how 'metric' or 'period' alter the response shape.

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?

Opens with a specific verb and resource (live electricity grid data: power demand, fuel mix) and scopes it to one grid, then enumerates exactly which grid families are supported. It also names the sibling tools it is not (get_grid_intelligence, get_energy_prices, get_grid_scoreboard), so an agent can distinguish it 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?

Explicit when-to-use (user asks for live demand/fuel mix for one grid) and explicit when-not-to-use, each with the correct alternative named: power-availability/queue analysis -> get_grid_intelligence, retail/gas pricing -> get_energy_prices, ranking many grids -> get_grid_scoreboard. Nothing is left to inference.

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

get_grid_intelligenceGrid IntelligenceA
Read-onlyIdempotent
Inspect

Use this when the user asks about grid capacity, power availability, headroom or time-to-power in a US ISO (PJM, ERCOT, CAISO, MISO, SPP, NYISO, ISO-NE) or a market's grid. Returns live demand, fuel mix, queue depth, DCPI excess-power and constraint scores, time-to-power, reserve margin. avg_time_to_power_months and avg_queue_wait_months are DIFFERENT measurements; quote the one you mean. With a free key, a few full briefs a day; keyless gets a trimmed preview. Unlimited needs a paid key. Ex: "PJM headroom for 200 MW?" iso must be a US ISO (ERCOT, PJM, CAISO, MISO, SPP, NYISO, ISO-NE); other codes return region_not_covered. Free = preview.

NameRequiredDescriptionDefault
isoNoAlias for region_id — the ISO/RTO or balancing-authority code
marketNoMarket NAME or metro slug instead of a grid code, e.g. "Ashburn", "northern-virginia", "dallas". Resolved to its ISO through the published DCPI market row before the brief is built; the answer carries a resolved_from block naming what it…
regionNoAlias for region_id — the ISO/RTO or balancing-authority code
region_idNoGrid region (required): one of the 7 US ISOs (PJM, ERCOT, CAISO, MISO, SPP, NYISO, ISO-NE), an EIA balancing-authority code (e.g.

Output Schema

NameRequiredDescription
okNo
isoNo
as_ofNo
tasteNo
cite_asNo
iso_nameNo
withheldNo
completenessNo
demand_periodNo
withheld_totalNo
free_preview_onlyNo

TDQS

A4.2/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 rate and access behavior (a few full briefs per day on a free key, trimmed preview when keyless, unlimited only with a paid key) and an explicit error outcome (non-US-ISO codes return region_not_covered). It also proactively warns that avg_time_to_power_months and avg_queue_wait_months are different measurements, preventing a costly misreading of the output.

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 condition, then outputs, then caveats, then access tiers, then an example — a sensible order with no filler prose. There is some redundancy: "keyless gets a trimmed preview" is restated as "Free = preview" in the final sentence, which costs a few words without adding information.

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

Completeness4/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-value documentation is correctly omitted, and the description covers access tiers, valid inputs, error behavior, and a metric disambiguation warning. The only gap for a multi-alias lookup tool is that it never says what happens when more than one of the alias parameters (region_id, iso, region, market) is provided.

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, but the description adds meaning beyond the schema: it enumerates the seven accepted ISO codes and specifies the failure mode for anything else (region_not_covered), which the schema does not state. It does not address precedence when multiple of region_id/iso/region/market are supplied simultaneously.

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

Purpose4/5

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

States a specific verb+resource (return live grid capacity/headroom/time-to-power data) and scopes it to US ISOs and named markets, listing the exact data families returned (demand, fuel mix, queue depth, DCPI, reserve margin). It does not distinguish itself from closely related siblings such as get_grid_scoreboard, get_iso_context, or get_interconnection_queue, so an agent must infer which of those to call for overlapping questions.

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 this when the user asks about grid capacity, power availability, headroom or time-to-power" is an explicit positive trigger, and the example query ("PJM headroom for 200 MW?") grounds it. It also explains the access tiers (keyless preview / free key / paid unlimited), which is a real usage constraint. It stops short of naming when NOT to use this and which sibling to use instead.

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

get_grid_scoreboardGrid ScoreboardA
Read-onlyIdempotent
Inspect

Use this when the user asks how power grids compare: demand, fuel mix or renewable share. GLOBAL grid scoreboard — 9 US grid operators (the 7 US ISOs PJM, ERCOT, CAISO, MISO, SPP, NYISO, ISO-NE, plus BPA and TVA) + Great Britain (NESO) + the European bidding zones (Germany, France, Netherlands, Italy/Milan, Spain, Poland, Switzerland, Portugal, the Nordics + Central/Eastern Europe — via ENTSO-E; the exact live-vs-configured count is in counts_basis.eu_zones_live / eu_zones_configured, measured per call rather than asserted here) + Taiwan (Taipower) + Japan (OCCTO areas) + South Korea (KPX) + Brazil SIN (ONS), ranked side-by-side on each feed's LATEST PUBLISHED reading: renewable share %, gas share %, full fuel mix (gas/nuclear/coal/wind/solar/hydro MW), and demand. ★FRESHNESS IS NOT UNIFORM and every row says so: each carries mix_period, mix_age_hours and freshness_basis. The US rows come from EIA hourly RTO, which publishes the FUEL-TYPE BREAKDOWN several hours behind aggregate demand — an overnight mix reading is routinely 18-24h old (it will show near-zero solar) while demand on the same row is ~1-2h old. Answers "which grid is cleanest right now", "how is ERCOT doing at this moment". Try: get_grid_scoreboard. Full guide: read resource dchub://tool-guides/get_grid_scoreboard

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
okNo
countNo
gridsNo
sourceNo
coverageNo
freshnessNo
ranked_byNo
counts_basisNo
zones_rankedNo
partial_gridsNo
eu_gas_contextNo
deep_intelligenceNo
independent_sourcesNo
us_interconnection_queue_gwNo

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds the crucial non-obvious trait: freshness is not uniform, US mix data can be 18-24h stale while demand is 1-2h old, with per-row mix_period, mix_age_hours and freshness_basis. That staleness warning materially changes how an agent should interpret and present results, which is exactly the value structured fields 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.

Conciseness3/5

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

The trigger sentence is well front-loaded, but the middle is bloated: a long parenthetical on ENTSO-E zone counting that defensively explains its own measurement methodology ("measured per call rather than asserted here"). The "Try: get_grid_scoreboard" filler and the resource pointer add length without adding selection value.

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

Completeness4/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 needn't explain return values, and it already covers coverage scope, ranking basis, and the freshness caveat critical to interpreting results. What's missing is minor: how many rows are returned, ordering guarantees, and whether rows with stale mixes are flagged versus filtered.

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?

There are zero input parameters, so there is nothing to disambiguate and the baseline is a 4. The description's mention of counts_basis.eu_zones_live / eu_zones_configured refers to output fields rather than inputs, which is fine since an output schema exists.

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

Purpose4/5

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

States a precise verb and resource — a global scoreboard ranking grid operators side-by-side on latest published demand, fuel mix, and renewable share — and enumerates the covered regions in detail. The purpose is unmistakable, but it never names siblings such as compare_isos or get_global_power, so the agent must infer the boundary from scope alone.

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 this when the user asks how power grids compare: demand, fuel mix or renewable share" plus the example questions gives a clear activation trigger tied to user intent. However, it gives no explicit when-not-to-use guidance and no named alternatives for narrower comparisons.

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

get_hosting_capacityFeeder Hosting CapacityA
Read-onlyIdempotent
Inspect

Use this when the user asks how many MW a distribution feeder can take: utility-published hosting capacity — the MW a NAMED distribution feeder can actually take, straight from the utility's own hosting-capacity GIS. Published records from many utilities (e.g. Con Edison, National Grid NY/MA, NYSEG/RG&E, Rhode Island Energy, Orange & Rockland, Central Hudson, Eversource CT, BGE, Pepco/Delmarva/ACE, Dominion VA, Ameren Illinois, AEP Ohio & I&M, Xcel MN/CO, DTE, Avista; the no-args call lists current coverage). This is filed distribution-level truth, not a proximity proxy. Three ways to call it: lat+lon (+radius_km, default 25) for a point; utility or market for a whole published territory; NO ARGS for the coverage list of every market that has data. Answers "can this feeder actually take 20 MW", "where can I plug in without waiting on a substation upgrade". Try: get_hosting_capacity utility="Ameren Illinois" capacity_type=load min_mw=5.

NameRequiredDescriptionDefault
latNoLatitude of the point to search around, decimal degrees. Must be paired with lon.
lngNoAlias for lon — either name works
lonNoLongitude of the point to search around, decimal degrees. Must be paired with lat.
limitNoMax results to return (1-500; default varies by tool)
marketNoAlias for utility — either name works (e.g. "Northern Virginia · Richmond", "New York City · Westchester").
min_mwNoOnly return feeders whose published capacity is at or above this many MW.
utilityNoUtility or market name, case-insensitive substring — e.g. "Ameren Illinois", "Con Edison", "Providence". Searches that utility's whole published territory instead of a point radius. Call with NO arguments to list every covered utility.
latitudeNoAlias for lat — either name works
longitudeNoAlias for lon — either name works
radius_kmNoSearch radius in km around lat/lon (default 25, max 150). Ignored when utility/market is passed — that mode covers the utility's entire published extent.
capacity_typeNoRestrict to one published type: "load" (what a new data-center load can DRAW — the type that answers siting), "gen" (DER/generation EXPORT headroom — NOT available load), or "bus_headroom" (transmission bus MW).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare this a read-only, idempotent, non-destructive, closed-world call, so the safety profile is covered. The description adds genuinely new behavioral context: the data provenance (utility's own GIS, 'filed distribution-level truth'), the coverage breadth with named utilities, the no-args coverage behavior, default radius 25 / max 150, and that utility mode spans the full published extent.

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 use case before the detail, and the closing example invocation is efficient. The parenthetical enumeration of a dozen-plus utilities is useful evidence of coverage but is the one stretch that verges on bloat.

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 formatting need not be described. For an 11-parameter, all-optional tool the description supplies the mode semantics, defaults, coverage, and provenance an agent needs to call it 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 and the schema already documents aliases, bounds, and capacity_type values. The description goes beyond that by explaining how parameters compose into call modes (point vs. utility vs. no-args) and supplies a concrete example invocation, which the schema alone does not convey.

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 — 'utility-published hosting capacity', the MW a named distribution feeder can take — and explicitly distinguishes itself from siblings that give proxies ('not a proximity proxy'), which matters in a family dense with get_grid_data, get_power_availability_timeline, and get_interconnection_queue. An agent can tell exactly what this returns without opening the 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 an explicit trigger ('Use this when the user asks how many MW a distribution feeder can take') and enumerates the three calling modes (lat/lon point, utility/market territory, no-args coverage list) plus example questions it answers. It also rules out the proxy-style tools, so the agent knows when to route elsewhere.

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

get_infra_projectsGet Infra ProjectsA
Read-onlyIdempotent
Inspect

Use this when the user asks what gas pipeline or transmission line projects are planned, proposed, approved or under construction — the forward build-out, not the existing network. e.g. "which interstate gas pipelines are under construction into Louisiana?", "what 345 kV transmission projects are planned in PJM by 2030?", "what new projects appeared since last month?". COVERS: (1) natural gas pipeline projects US-wide from the EIA natural gas pipeline projects list (public domain) — operator, status (Announced, Pre-applied, Applied, Approved, Construction, On Hold, Completed), states crossed, capacity in MMcf/d, miles, cost in $M, diameter, FERC/state docket, in-service year; (2) transmission projects from five ISOs' own project lists — ERCOT (TPIT), PJM (RTEP), MISO (MTEP Appendix A), SPP (STEP) and ISO-NE (RSP list); NOT CAISO or NYISO, and not utilities outside those ISOs. Each ISO publishes a different grain (an upgrade or facility, not a whole project), so a row count is a count of upgrades. Answers "what gas pipelines are being built into Louisiana, how much capacity do they add, and when do they enter service". Try: get_infra_projects type=gas_pipeline state=LA status=Construction.

NameRequiredDescriptionDefault
typeNoWhich project list: gas_pipeline (EIA, US-wide), transmission (ERCOT TPIT, Texas only) or all (default)
limitNoMax results to return (1-500; default varies by tool)
stateNoUS state abbreviation, e.g. TX or LA. Gas projects match any state they cross; transmission projects are all TX
min_kvNoTransmission only: minimum voltage in kilovolts (kV), e.g. 345. With type=all it narrows to transmission projects
statusNoStatus, case-insensitive; comma list allowed. Gas: Announced, Pre-applied, Applied, Approved, Construction, On Hold, Completed. Transmission: Planned, Conceptual, Under Construction, Completed, Cancelled
new_sinceNoOnly projects DC Hub first saw on or after this date (YYYY-MM-DD). The initial backfill is never counted as new
min_capacityNoGas only: minimum pipeline capacity in million cubic feet per day (MMcf/d), e.g. 1000. With type=all it narrows to gas projects
in_service_afterNoOnly projects entering service on or after this date (YYYY-MM-DD or YYYY). Gas compares the in-service year; transmission the actual, else projected, in-service date
include_delistedNoAlso return projects the latest source release no longer lists (completed, withdrawn or dropped). Default false
in_service_beforeNoOnly projects entering service on or before this date (YYYY-MM-DD or YYYY)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already establish readOnly/idempotent/non-destructive, so the bar is low. The description adds real behavioral context beyond them: provenance (EIA public domain, five ISO project lists), a critical grain caveat that a row count is a count of upgrades rather than whole projects, and the delisting/source-release behavior implied by include_delisted.

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?

Long but deliberately structured: trigger statement first, then COVERS, then NOT, then a worked example, so the load-bearing guidance is front-loaded. The coverage block is dense but each clause (sources, fields, grain) carries information an agent needs to interpret results correctly.

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 not be explained, and the description covers everything else: what is included and excluded, source provenance, per-source grain, status vocabularies, and units. Nothing an agent needs to invoke or interpret this 10-parameter, zero-required tool 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 description coverage is 100%, so the schema already carries parameter documentation and the baseline is 3. The description still adds value by enumerating status vocabularies, giving unit meaning (MMcf/d, $M, kV), explaining the per-ISO grain of transmission rows, and showing a concrete invocation pattern (type=gas_pipeline state=LA status=Construction).

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 (retrieving planned/proposed/approved/under-construction infrastructure projects) and immediately scopes it against the existing network, so it is distinguishable from sibling tools like get_pipeline or get_infrastructure. The two coverage categories (EIA gas pipelines, five ISO transmission lists) are named explicitly with their source lists.

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 when-to-use triggers ('what ... are planned, proposed, approved or under construction — the forward build-out, not the existing network') and sample queries, plus negative scope (NOT CAISO or NYISO, not utilities outside those ISOs). It stops short of naming the alternative sibling tool an agent should pick for the existing network, leaving that routing to inference.

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

get_infrastructureNearby InfrastructureA
Read-onlyIdempotent
Inspect

Use this when the user asks what power infrastructure is near a site: substations (count + max voltage_kv within radius), transmission lines (>69 kV path overlay), interstate + lateral gas pipelines, and power plants (operating + planned, by fuel) within configurable radius_km. Returns distance + capacity for each, joined to HIFLD/EIA. Answers "what is near this parcel", "how far is the nearest substation and what voltage is it". Try: get_infrastructure lat=33.45 lon=-112.07 radius_km=25. Returns raw nearby assets; do NOT use for a single scored site-suitability verdict (use analyze_site).

NameRequiredDescriptionDefault
latNoCenter latitude in decimal degrees (-90 to 90, required), e.g. 33.45
lngNoAlias for lon — either name works
lonNoCenter longitude in decimal degrees (-180 to 180, required), e.g. -112.07
layerNoOptional single asset layer to return, e.g. substations, transmission, pipelines, power_plants
limitNoMax results to return (1-500; default varies by tool)
latitudeNoAlias for lat — either name works
longitudeNoAlias for lon — either name works
radius_kmNoSearch radius in kilometers around the point, e.g. 25
min_voltage_kvNoOnly include transmission/substations at or above this voltage in kV, e.g. 69

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered structurally. The description adds meaningful context beyond that: the upstream data sources (HIFLD/EIA), that results are 'raw nearby assets' rather than scored output, and that each asset carries distance and capacity. It does not discuss pagination or rate limits, but with strong annotation coverage that gap 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.

Conciseness4/5

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

The description is dense and front-loads the core purpose before enumerating layers and the exclusion. Every sentence carries information, though the listing of layers plus data sources plus sample query makes it slightly long; nothing is wasted but it is near the upper practical length.

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-value documentation is not required, yet the description still summarizes the shape (distance + capacity per asset). With 9 params fully covered by the schema, annotations handling safety, and an explicit sibling exclusion, 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 baseline is 3, but the description adds semantics the schema alone doesn't convey: layer values map to distinct asset types (substations/transmission/pipelines/power_plants), transmission is filtered at >69 kV, and power plants are split into operating + planned by fuel. The worked example (lat/lon/radius_km) also demonstrates intended usage beyond the field docs.

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 gives a specific verb and resource ('what power infrastructure is near a site') and enumerates exactly what is returned: substations with count and max voltage, transmission lines over 69 kV, pipelines, and power plants by fuel. It explicitly distinguishes itself from the sibling analyze_site, so an agent can route correctly 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?

It states when to use it ('when the user asks what power infrastructure is near a site'), supplies sample utterances that trigger it, and names the exclusion: 'do NOT use for a single scored site-suitability verdict (use analyze_site).' Both the trigger and the anti-trigger are present with the alternative named.

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

get_intelligence_indexMarket Intelligence IndexA
Read-onlyIdempotent
Inspect

Use this when the user asks how healthy a data center market is: composite score (0-100) aggregating supply/demand balance, vacancy, absorption velocity, fiber depth, power availability, and pricing trend. Returns the index value, percentile rank across the 300+ market set, 7d/30d trend direction, and underlying component scores. Answers "is this market healthy", "how does Northern Virginia look overall right now". Try: get_intelligence_index market=northern-virginia. Returns ONE composite health number for a market; do NOT use for the full market metric set (use get_market_intel) or to rank multiple markets (use rank_markets).

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so safety is covered. The description adds genuine context beyond that: the score's composition, its 0-100 range, the 300+ market comparison set, and the 7d/30d trend output. It does not cover rate limits or data freshness/latency, which keeps it from a 5.

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 return summary, then the routing exclusions. Dense and mostly waste-free, though the long component enumeration and the duplicated 'one composite health number' phrasing cost a little.

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-shape explanation is a bonus rather than a requirement, and the description still sketches the key returns. For a zero-parameter read tool, an agent has everything needed to select and call it 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?

Zero declared parameters, so the baseline is 4. The description supplies a concrete call example ('get_intelligence_index market=northern-virginia'), though this implies a 'market' argument the empty schema does not define, which is a minor inconsistency rather than added semantic depth.

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 score (0-100) aggregating supply/demand balance, vacancy, absorption velocity, fiber depth, power availability, and pricing trend') and explicitly names the siblings it is not (get_market_intel, rank_markets). An agent can distinguish this from the 90+ other 'get_*_intel' tools 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 Guidelines5/5

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

Gives an explicit trigger ('when the user asks how healthy a data center market is'), sample utterances it answers, and two named exclusions with the correct alternatives for each (full metric set → get_market_intel; multi-market ranking → rank_markets). Nothing is left to inference.

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

get_interconnection_queueInterconnection QueueA
Read-onlyIdempotent
Inspect

Use this when the user asks about grid interconnection queues: how congested an ISO's queue is or how much data-center load is waiting. Returns queued generation GW per ISO. The projects field changes shape: with iso= it is an array of per-project rows; without iso it is an all-ISO summary object (total, by_iso_count, top). ERCOT also returns its large-load (data-center) queue; other ISOs don't publish one. Keyless: a trimmed preview; free with an email-bound key. Ex: "How deep is ERCOT's queue?" iso optional (US ISO code); free = preview. For demand and headroom on the same ISO also call get_grid_intelligence.

NameRequiredDescriptionDefault
isoNoISO/RTO grid region to drill into: ERCOT, PJM, MISO, CAISO, SPP, NYISO, ISONE; omit for the all-ISO snapshot

Output Schema

NameRequiredDescription
vNo
isoNo
as_ofNo
projectsNo
queue_kindNo
source_urlNo
source_nameNo
project_countNo
top_subregionsNo
queued_generation_gwNo
queued_large_load_gwNo
new_applications_q_gwNo
queued_connections_gwNo
new_applications_periodNo
queued_load_dc_share_pctNo
historical_completion_pctNo
queued_load_data_center_gwNo
queued_generation_gw_basis_noteNo
queued_generation_pending_revision_gwNo
queued_generation_pending_revision_gw_basisNo

TDQS

A4.6/5.0
Behavior5/5

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

Adds substantial context beyond the readOnly/idempotent annotations: access tiers (trimmed preview when keyless, full data with an emailed-bound key), the conditional shape of the projects field depending on whether iso is supplied, and the ERCOT-only large-load queue with the note that other ISOs don't publish one. These are exactly the operational quirks an agent cannot infer and would otherwise be surprised by.

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 condition and the primary return value, and every clause carries information. The dense, fragmentary style ("Ex: ...", "iso optional (US ISO code); free = preview") is efficient but borders on shorthand that takes a second pass to parse.

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?

Complete for a single-optional-parameter read tool: annotations carry the safety profile, an output schema exists so return values need no prose, and the description still supplements it with access tiers, conditional response shape, an ERCOT-specific caveat, and a cross-reference. Nothing essential for a correct call 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% and the enum of ISO codes is already documented, so the baseline would be 3; the description earns above that by explaining the behavioral consequence of setting iso (per-project rows vs. an all-ISO summary object) and labeling it optional. The trailing "iso optional (US ISO code); free = preview" fragment is terse and partly redundant, which keeps it from a 5.

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 — returns queued generation GW per ISO — and frames the user-facing question it answers (queue congestion, data-center load waiting). An agent can distinguish it from get_grid_intelligence or compare_isos 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?

Gives explicit triggering context ("how congested an ISO's queue is", "how much data-center load is waiting") and names a companion call (get_grid_intelligence) for demand/headroom. It does not address overlap with other queue-adjacent siblings like get_refined_queue, get_pipeline, or compare_isos, so the routing is clear but not exhaustive.

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

get_iso_contextGet Iso ContextA
Read-onlyIdempotent
Inspect

Use this when you need a whole power grid (ISO) briefing for your context window — one call returns a token-budgeted context pack for a US ISO/RTO: live grid snapshot (demand, fuel-mix shares), DCPI verdict mix & grid economics across the ISO's tracked markets (queue wait, power cost, reserve margin), interconnection-queue depth with the largest projects, real-time benchmark LMP, the tracked DCPI market list, deep-dive narrative excerpts, and recent news — each section with its own token count, as_of timestamp, and citable URL, greedily filled in that priority order under your max_tokens budget. Example: "Brief me on ERCOT for data-center siting" — get_iso_context iso=ERCOT max_tokens=4000. Params: iso (required: ERCOT, PJM, MISO, CAISO, SPP, NYISO, ISONE); max_tokens (optional, 200-8000, default 4000). Returns {sections:[{id,title,text,tokens,as_of,cite}], used_tokens, omitted}. Do NOT use for raw single-ISO telemetry (use get_grid_data), the per-ISO decision brief with headroom/TTP (use get_grid_intelligence), multi-ISO scalar comparison (use compare_isos), or non-US grids (use get_grid_scoreboard); this is the narrative briefing pack. Cite "DC Hub (dchub.cloud)". iso is required (US ISO code). max_tokens caps the context returned; locked_sections need a higher tier.

NameRequiredDescriptionDefault
isoYesISO/RTO grid region (required): ERCOT, PJM, MISO, CAISO, SPP, NYISO, ISONE
max_tokensNoToken budget for the pack, 200-8000 (default 4000); sections are filled in priority order until the budget is spent

Output Schema

NameRequiredDescription
okNo
isoNo
tierNo
cite_asNo
sectionsNo
max_tokensNo
used_tokensNo
locked_sectionsNo

TDQS

A4.8/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, non-destructive, openWorld), and the description still adds real behavior: greedy priority-order fill under a budget, per-section token accounting, and the tier gate ('locked_sections need a higher tier') which is a paywall constraint no annotation discloses. It also imposes a citation attribution requirement.

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 use-case and the section inventory before the exclusion list, and the example call is compact and high-signal. The section enumeration is a long clause but every item is a distinct capability rather than filler; slightly denser than ideal, though nothing is padding.

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 a two-parameter read with an output schema and full annotation coverage, this is more than sufficient: content list, budget behavior, sibling exclusions, tier limits, and citation duty are all present. The output schema carries the return shape, so the description is not obligated to explain it and yet still summarizes it.

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 baseline is 3; the description goes further by restating the enum set, the 200-8000 range with default 4000, and the fill-order semantics of max_tokens, plus a worked example call. It stops short of saying what happens when the budget is too small to fit even one section, which the schema's 'omitted' field hints at but the prose never explains.

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 ('returns a token-budgeted context pack for a US ISO/RTO') and enumerates exactly what the pack contains, down to per-section token counts and citable URLs. It also self-labels as 'the narrative briefing pack', which separates it cleanly from get_grid_data, get_grid_intelligence, and compare_isos in a crowded sibling namespace.

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 an explicit 'Use this when' trigger and then names four alternatives with the exact condition that selects each ('Do NOT use for raw single-ISO telemetry (use get_grid_data)', etc.). An agent can route correctly without opening any sibling schema.

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

get_market_contextGet Market ContextA
Read-onlyIdempotent
Inspect

Use this when you need a whole data center market briefing for your context window — one call returns a token-budgeted context pack for a data-center market: DCPI verdict, power & grid facts, the Claude-written 12-month outlook, M&A deals, construction pipeline, operator footprint, transaction comps, risk factors, and top news — each section with its own token count, as_of timestamp, and citable URL, greedily filled in that priority order under your max_tokens budget. Example: "Brief me on the Columbus data-center market" — get_market_context market=columbus max_tokens=4000. Params: market (required, market slug e.g. northern-virginia — valid slugs come from rank_markets); max_tokens (optional, 200-8000, default 4000). Returns {sections:[{id,title,text,tokens,as_of,cite}], used_tokens, omitted}. Do NOT use for a single metric (use get_market_dcpi_rank), the raw structured metric set (use get_market_intel), or cross-market ranking (use rank_markets); this is the narrative briefing pack. Cite "DC Hub (dchub.cloud)".

NameRequiredDescriptionDefault
marketYesMarket slug (required), e.g. northern-virginia, dallas, phoenix — valid slugs come from rank_markets / get_market_dcpi_rank
max_tokensNoToken budget for the pack, 200-8000 (default 4000); sections are filled in priority order until the budget is spent

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, it discloses the greedy priority-fill algorithm, that each section carries its own token count, as_of timestamp and citable URL, that anything exceeding the budget is marked omitted, and a citation obligation. These are non-obvious operational behaviors an agent must know to interpret output correctly.

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 use case and output shape, then a worked example, then routing exclusions — good ordering with no filler sentences. It is dense and slightly repetitive, re-specifying param ranges and default that the schema already documents.

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?

Covers trigger, parameters, return shape, budget/truncation behavior, sibling exclusions, and attribution requirements for a single-call briefing tool. Although an output schema exists, the prose return summary is a helpful cross-check rather than a gap-filler, and nothing an agent needs 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 already 100%, so the baseline is 3; the description adds real semantics — that market slugs must be sourced from rank_markets, that max_tokens drives a priority-ordered fill, and range/default. It largely restates the schema's param text, which keeps it out of the top band.

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 (returns a token-budgeted whole-market briefing pack) and enumerates the exact sections included. It explicitly distinguishes itself from get_market_dcpi_rank, get_market_intel, and rank_markets, so an agent can route correctly 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?

Explicit when-to-use trigger ("when you need a whole data center market briefing for your context window") plus a concrete example query. It also names three alternatives and the exact condition that selects each, which is the strongest form of routing guidance.

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

get_market_dcpi_rankDCPI Market RankA
Read-onlyIdempotent
Inspect

Use this when the user asks where a data center can get grid power, how fast, or whether a market is a BUILD, CAUTION or AVOID (e.g. "Where can a 100 MW data center get power fastest?"): DCPI scores 300+ markets daily on Excess Power and Grid Constraint, verdicts CC BY 4.0 after 30 days. DCPI rank for one market: BUILD/CAUTION/AVOID verdict, 0-100 composite_score (verdict-aware), excess_power_score, constraint_score, time_to_power_months. INCLUDES a narrative block with a ~100-word analyst read on the market, quote it directly with attribution to DC Hub. Use to answer "should I build here?" with structured reasoning + ready-to-cite prose across 300+ scored markets worldwide. Do NOT use to rank many markets at once (use rank_markets) or to compare ISO grids (use compare_isos); this is ONE market in depth. Verdict and composite score are free; numeric sub-scores and the narrative come with the DC Hub plan that includes every tool. market_slug is required: get it from rank_markets. 404 = unknown slug. Returns the build/constrain verdict, not raw stats.

NameRequiredDescriptionDefault
market_slugYesMarket slug (metro), e.g. northern-virginia, dallas, phoenix — valid slugs come from rank_markets / get_market_dcpi_rank

Output Schema

NameRequiredDescription
isoNo
stateNo
verdictNo
forecastNo
latitudeNo
longitudeNo
narrativeNo
publishedNo
trend_30dNo
data_basisNo
computed_atNo
market_nameNo
market_slugNo
avg_kwh_centsNo
quality_scoreNo
tier_requiredNo
top_risks_jsonNo
composite_scoreNo
curtailment_pctNo
constraint_scoreNo
data_basis_sourceNo
queue_wait_monthsNo
excess_power_scoreNo
reserve_margin_pctNo
time_to_power_monthsNo
top_opportunities_jsonNo

TDQS

A4.8/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, not open-world), and the description adds non-obvious behavior on top: daily refresh cadence, CC BY 4.0 licensing after 30 days with an attribution requirement, tier gating (verdict and composite free; sub-scores and narrative paywalled), and 404 semantics for unknown slugs.

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 trigger question and the core payload list are front-loaded, and most sentences carry routing, licensing, or gating information. Some promotional framing ("300+ markets worldwide", "structured reasoning + ready-to-cite prose") slightly dilutes density.

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 a single-lookup tool with an output schema, the description covers everything an agent needs: how to obtain the slug, error behavior, what is free vs gated, and a plain-language summary of the returned verdict fields.

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% and the single param is fully described in the schema, so baseline is 3. The description adds operational meaning the schema lacks: where the slug comes from (rank_markets) and what a 404 means. It stops short of format/syntax guidance, so not a 5.

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 concrete verb+resource (returns DCPI rank verdict for ONE market) and enumerates the returned fields. It explicitly distinguishes itself from rank_markets and compare_isos, so an agent can route correctly 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?

Names the triggering user questions, gives an explicit exclusion ("Do NOT use to rank many markets at once (use rank_markets) or to compare ISO grids (use compare_isos)"), and states the selection condition (one market in depth). This is the when/when-not/alternatives pattern at full strength.

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

get_market_intelMarket IntelligenceA
Read-onlyIdempotent
Inspect

Use this when the user asks about a data-center market (metro supply, operators, pipeline, pricing): facility count, tracked MW, status mix, top providers, recent facilities or lease pricing. Pass market as a slug (e.g. northern-virginia). Returns stats, by_status, top_providers, recent_facilities, market_pricing (quote its basis). Verdict: use get_market_dcpi_rank. Keyless: a trimmed preview; a free key gets more. Ex: "1 MW colo price in Los Angeles?" Get the market slug from rank_markets or get_market_dcpi_rank; 404 = unrecognised market, use one of those slugs.

NameRequiredDescriptionDefault
marketNoMarket slug (metro), e.g. northern-virginia, dallas, frankfurt, singapore — valid slugs come from rank_markets / get_market_dcpi_rank
metricNoOptional single metric to focus on, e.g. vacancy, pricing, absorption, pipeline
periodNoOptional time window for the metric, e.g. ttm, 12mo, ytd
compare_toNoOptional second market slug to compare against, e.g. dallas

Output Schema

NameRequiredDescription
statsNo
_gatedNo
marketNo
successNo
by_statusNo
related_intelNo
top_providersNo
recent_facilitiesNo

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds useful runtime context beyond annotations: keyless access returns a trimmed preview, a free key unlocks more, 404 means unrecognized market, and market_pricing should be quoted with its basis. It does not cover rate limits or full response shape, but it is substantially more informative than the annotations alone.

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 front-loaded with the primary use case and compactly covers return fields, alternatives, auth behavior, examples, and slug sourcing. It is information-dense and fragmentary in places, but nearly every clause earns its place.

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 an output schema, rich annotations, and four optional parameters, the description provides everything needed to select and invoke the tool correctly: use case, slug sourcing, return fields, keyless limitation, error handling, and the sibling to use for verdicts.

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 description coverage is 100%, so the baseline is 3. The description adds practical meaning by reinforcing the market slug format, giving an example, and telling the agent where to obtain valid slugs. It does not add much detail for metric, period, or compare_to beyond the schema, but the slug guidance is valuable.

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: market intelligence for data-center markets, with concrete coverage areas such as metro supply, operators, pipeline, pricing, facility count, tracked MW, status mix, top providers, and recent facilities. It also names sibling tools for adjacent needs, so an agent can distinguish it from get_market_dcpi_rank and rank_markets.

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 says when to use it: when the user asks about a data-center market. It also gives the required slug form, points to rank_markets or get_market_dcpi_rank for valid slugs, explains 404 behavior, and routes verdict requests to get_market_dcpi_rank.

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

get_metro_fiberGet Metro FiberA
Read-onlyIdempotent
Inspect

Use this when the user asks which US metro has the deepest fiber, or wants a market's fiber profile — carrier count, total route-miles, on-net buildings, a 0-100 fiber-density score, tier, key internet-exchange (IX) points and carrier hotels — across the tracked top US data-center metros (Northern Virginia, Dallas-Fort Worth, Silicon Valley, Chicago, Atlanta, Phoenix, and more). Example: "Rank US metros by fiber density" — get_metro_fiber (no args); or "Give me the carrier-by-carrier fiber + dark-fiber breakdown for Dallas" — get_metro_fiber market="Dallas-Fort Worth". Params: market (optional metro name OR slug, e.g. "Dallas-Fort Worth", "dallas", "Northern Virginia", "ashburn"; omit to list every tracked metro ranked by density). Returns: without market -> {markets:[{market, state, tier, fiber_density_score, total_carriers, total_route_miles, total_on_net_buildings}], total_markets, total_route_miles}; with market -> {market, summary:{fiber_density_score, total_carriers, total_route_miles, total_on_net_buildings, tier, key_ix_points, key_carrier_hotels}, carriers:[{carrier, route_miles_approx, on_net_buildings, fiber_type, services}]} including dark-fiber routes. Cite DC Hub (dchub.cloud, CC-BY-4.0).

NameRequiredDescriptionDefault
marketNoOptional metro name or slug for a single-market deep dive (carrier-by-carrier + dark fiber), e.g. "Dallas-Fort Worth", "dallas", "Northern Virginia", "ashburn". Omit to list every tracked metro ranked by fiber density.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered; the description adds real behavioral context by defining the mode switch (omitting market ranks all metros, supplying it triggers a carrier-by-carrier deep dive) and noting dark-fiber routes are included. This mode-dependent behavior is not derivable from 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.

Conciseness3/5

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

Purpose and trigger are front-loaded, which is good, but the trailing "Returns:" block is a long JSON-shape restatement that largely duplicates the output schema and bloats a single run-on paragraph. The information density is high but there is real redundancy against structured data.

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

Completeness4/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 not be re-explained, and the description covers trigger, mode behavior, market coverage, and attribution. It is complete enough to call correctly; the only shortfall is the missing distinction from adjacent fiber-intelligence tools.

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 optional param is fully documented in the schema with the same name/slug examples, so the description adds no syntax or format meaning beyond what structured fields already provide. Baseline 3 is correct 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.

Purpose4/5

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

States a specific verb+resource and enumerates the payload precisely (carrier count, route-miles, on-net buildings, 0-100 density score, tier, IX points, carrier hotels) across named US metros, which is unambiguous. It never names or contrasts against close siblings like get_fiber_intel or get_fiber_readiness, so an agent cannot fully rule those out from this text alone.

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 conditions ("when the user asks which US metro has the deepest fiber") plus two concrete invocation examples that map natural-language asks onto the no-arg ranking mode and the single-market mode. It offers no when-not-to-use guidance and does not route the agent away from overlapping fiber siblings.

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

get_newsIndustry NewsA
Read-onlyIdempotent
Inspect

Use this when the user asks for data center industry news or headlines (execute_plan also pulls news inside a broader market question). Curated data center industry news from 40+ trade sources (DCD, Data Center Knowledge, Data Center Frontier, Capacity Media, The Register Data Centre, Fierce Telecom, etc.) refreshed every 30 min. Returns title, summary, source, published_at, and the market/operator entities mentioned. Filter by category (deals/permits/outages/policy/AI). Answers "what is happening in the data center industry this week", "any news on AI capacity". Try: get_news category=AI limit=10. The parameter is category, not topic. Industry news only; do NOT use for structured M&A deal data (use list_transactions) or the construction pipeline (use get_pipeline). limit 1-500 (free 20). Empty data = no matching news: drop category/source or widen date_from/date_to.

NameRequiredDescriptionDefault
limitNoMax results to return (1-500; default varies by tool)
queryNoFree-text keyword to filter news, e.g. "Stargate" or "interconnection queue"
sourceNoRestrict to one trade source, e.g. DCD, "Data Center Frontier", "Capacity Media"
date_toNoLatest published date, ISO-8601 (YYYY-MM-DD)
categoryNoNews topic filter, e.g. deals, permits, outages, policy, AI
date_fromNoEarliest published date, ISO-8601 (YYYY-MM-DD)
min_relevanceNoMinimum relevance score 0-1 to include an item, e.g. 0.5

Output Schema

NameRequiredDescription
dataNo
countNo
totalNo
sourceNo
cite_asNo
successNo
articlesNo

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description still adds substantive behaviour: 40+ sources, a 30-minute refresh cadence, the returned field set, the free-tier result cap (20 vs limit 1-500), and remediation for empty results (drop category/source or widen the date range).

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 usage condition, then sourcing, then filters, then a concrete call example and exclusions. It is a dense single block with several query examples that border on redundant, but nearly every sentence carries selection-relevant 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?

An output schema exists so return values need not be explained, yet the description still names the key fields; combined with sourcing, freshness, filter guidance, and sibling exclusions, an agent has everything needed to call it correctly with no required parameters.

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 description coverage is 100%, so the baseline is 3; the description adds value by warning that the filter parameter is named `category`, not `topic`, enumerating accepted categories, and noting the free-tier limit. It still omits how query/source/min_relevance interact (e.g. combining filters), so it is above baseline but not exhaustive.

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?

Specific verb+resource ('Curated data center industry news from 40+ trade sources') with named sources and the exact fields returned (title, summary, source, published_at, entities). It explicitly distinguishes itself from the near-neighbours that could be confused with it: list_transactions for M&A data and get_pipeline for the construction pipeline.

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 trigger condition ('when the user asks for data center industry news or headlines') and names the overlapping sibling execute_plan. It also gives explicit exclusions ('do NOT use for structured M&A deal data... or the construction pipeline') and sample user phrasings, so selection is unambiguous.

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

get_peering_intelGet Peering IntelA
Read-onlyIdempotent
Inspect

Use this when the user asks about internet exchange (IX) and peering density for a data center site (PeeringDB). Pass lat+lon for the PEERING PROFILE around that point: facilities_nearby, a 0-100 score with its level, total_ix_presence, total_networks, and top_facilities each with ix_count and net_count — e.g. Ashburn comes back with 61 IX presences and 903 networks across the nearby sites, led by Equinix DC1-DC15 at 516 networks. Omit coordinates for the IXP directory (name, name_long, city, country, net_count, fac_count, media, protocols). This is the layer that answers "can I actually reach networks cheaply from here", which fiber route geometry does not: a site can sit on dense fiber and still be far from any exchange. The score is a DERIVED convenience over PeeringDB counts, not a DC Hub-sourced grade — cite the underlying counts (facilities, IX presence, networks) rather than the score when it is load-bearing. Records are PeeringDB's, refreshed on read. Answers "how good is peering at this Ashburn site" and "which internet exchanges serve the Dallas market". Try: get_peering_intel lat=39.04 lon=-77.48 — or get_peering_intel (no args) for the IXP directory.

NameRequiredDescriptionDefault
latNoLatitude of the site, e.g. 39.04 — with lon, returns the peering profile around it; omit both for the IXP directory
lngNoAlias for lon — either name works
lonNoLongitude of the site, e.g. -77.48
limitNoMax results to return (1-500; default varies by tool)
latitudeNoAlias for lat — either name works
longitudeNoAlias for lon — either name works

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantive context on top: records are PeeringDB's and refreshed on read, and the 0-100 score is a derived convenience rather than a DC Hub-sourced grade, with guidance to cite underlying counts when the score is load-bearing. That provenance and caveat materially change how an agent should report results.

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 condition and mode switch before the detail, and the output-field inventory and worked Ashburn/Dallas examples earn their space as calibration for the score. It is slightly over-long, with a redundant trailing 'Try: ... — or ... (no args)' that repeats the mode rule already stated earlier.

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?

Complete for a dual-mode read tool: source, refresh semantics, both invocation modes, the derived-score caveat, and guidance on what to cite in output. An output schema exists so return values needn't be spelled out, yet the field inventory still orients the agent 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 description coverage is 100% and the schema already explains the lat/lon pairing, the alias names, and the omit-both directory behavior, so the description's parameter content is largely duplicative. The coordinate example and the framing of the pairing as producing a 'peering profile around that point' add modest value, but limit and the alias params get no added semantics.

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 (peering/IX density for a site) plus the upstream source (PeeringDB), and explicitly separates the coordinate mode from the no-arg IXP directory mode. It also distinguishes itself from siblings get_fiber_intel/get_metro_fiber by explaining that route geometry does not answer reachability of networks.

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?

Gives explicit triggers ("when the user asks about IX and peering density"), explicit mode selection (pass lat+lon vs omit for the directory), and an explicit negative contrast with fiber route tools. It even supplies the sample phrasings it answers ("which internet exchanges serve the Dallas market"), 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.

get_permitting_intelPermitting & Moratorium IntelA
Read-onlyIdempotent
Inspect

Use this when the user asks about data center permitting or moratoriums — curated, HUMAN-VERIFIED jurisdiction records: moratoriums, zoning restrictions, tax changes, utility pauses. Each record is stage-tagged (read the detail prefix: "Enacted" / "Proposed" / "Speculative"), with jurisdiction, state/country, the source article URL, and map coordinates. The permitting-risk axis for site selection that no other machine-readable source serves — e.g. New York's statewide >=50MW moratorium, county-level halts. FREE and full for every caller. Answers "is there a moratorium where I want to build", "which jurisdictions just tightened data-center zoning". Try: get_permitting_intel class=moratorium — or state=MN. Rendered live as the Permitting & Zoning layer on https://dchub.cloud/land-power-map. Do NOT use for tax INCENTIVE programs by state (use get_tax_incentives); this tracks restrictions and risk per jurisdiction.

NameRequiredDescriptionDefault
classNoRecord class: "moratorium" | "zoning" | "tax" | "utility_pause" (optional)
stateNoUS state filter, e.g. NY or MN (optional)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), yet the description adds real context beyond them: human-verified provenance, stage tagging via a detail prefix, source URL and coordinates per record, and access terms ('FREE and full for every caller'). It stops short of disclosing record freshness/update cadence, which matters for a risk dataset an agent may rely on for decisions.

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 record types, and the exclusion sits at the end where a routing caveat belongs. It carries some promotional filler ('the permitting-risk axis for site selection that no other machine-readable source serves') and a rendering URL that do not help the agent call the tool.

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 covers what is returned (stage tags, jurisdiction, state/country, source URL, coordinates), when to use it, the alternative to avoid, and the access model — everything needed to call a zero-required-param 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?

Schema coverage is 100% so both filters are already documented, giving a baseline of 3. The description goes slightly beyond by showing concrete invocation syntax ('class=moratorium — or state=MN'), which clarifies how the filters combine in practice rather than just restating them.

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 with concrete scope: 'curated, HUMAN-VERIFIED jurisdiction records: moratoriums, zoning restrictions, tax changes, utility pauses.' It also names the sibling it is NOT (get_tax_incentives), so an agent can separate permitting risk from incentive programs without opening either 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?

Explicit trigger ('Use this when the user asks about data center permitting or moratoriums'), explicit exclusion ('Do NOT use for tax INCENTIVE programs by state (use get_tax_incentives)'), and example queries ('is there a moratorium where I want to build', 'which jurisdictions just tightened data-center zoning'). Nothing is left to inference.

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

get_pipelineConstruction PipelineA
Read-onlyIdempotent
Inspect

Use this when the user asks what data centers are being built, announced or permitted in a market or by an operator. Example: "What data centers are under construction in Northern Virginia and when do they come online?" — get_pipeline country=US status=construction (there is no market parameter — filter by country/operator, or use search_facilities for a named market). Params: status one of "announced" | "permitted" | "construction" | "operational"; operator (e.g. "Equinix", "Digital Realty", "AWS"); country (ISO-2, e.g. "US", "DE"); min_capacity_mw (e.g. 50 to filter hyperscale); expected_completion_before (ISO date, e.g. "2027-01-01"); limit/offset for pagination. Returns: {projects:[{name, operator, capacity_mw, status, expected_commissioning, market_slug, country, lat, lon}], total, generated_at}. Do NOT use for already-operational facilities (use search_facilities) or for the M&A deal flow (use list_transactions). limit 1-500 (free 25), offset 0-100000. Empty data = no project matches: relax status/operator/min_capacity_mw.

NameRequiredDescriptionDefault
limitNoMax results to return (1-500; default varies by tool)
offsetNoPagination offset, 0-based (skip this many results)
statusNoPipeline stage filter: announced, permitted, construction, or operational
countryNoISO 3166-1 alpha-2 country code, e.g. US, DE, SG
operatorNoOperator/provider company name, e.g. Equinix, Digital Realty, AWS
min_capacity_mwNoMinimum project power capacity filter in megawatts (MW), e.g. 50 for hyperscale
expected_completion_beforeNoOnly projects with expected commissioning before this ISO-8601 date (YYYY-MM-DD), e.g. 2027-01-01

Output Schema

NameRequiredDescription
dataNo
countNo
statsNo
cite_asNo
successNo
pipelineNo
by_quarterNo
data_sourceNo
total_countNo
last_updatedNo

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, but the description still adds real behavioral context: pagination bounds with a free-tier limit (25), the empty-result interpretation ('no project matches: relax status/operator/min_capacity_mw'), and the return shape. It stops short of describing rate limits or freshness of the pipeline data.

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 use case and example, then params, returns, exclusions, and limits in a compact sequence. Dense but mostly each clause earns its place; the return-shape enumeration is slightly redundant given an output schema exists.

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 a 7-param read tool with 100% schema coverage, annotations, and an output schema, the description covers selection, alternatives, parameter nuances, pagination limits, and empty-result handling. Nothing an agent needs to invoke it 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 schema baseline is 3, but the description adds value beyond it: it explicitly states there is no `market` parameter and how to work around it, gives operator examples, clarifies min_capacity_mw as a hyperscale filter, and pairs expected_completion_before with an ISO date example.

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 resource (data center construction/announcement/permit pipeline) with a concrete verb ('get') and an inline example question it answers. It also explicitly names what it is NOT for (operational facilities, M&A deal flow), separating it from search_facilities and list_transactions.

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?

Provides explicit when-to-use (user asks what is being built/announced/permitted), a worked example, and when-not-to-use with the alternative tool named for each case. It even flags a missing parameter and routes the agent to search_facilities for named-market queries.

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

get_power_availability_timelineGet Power Availability TimelineA
Read-onlyIdempotent
Inspect

Use this when the user asks when power will be available, or about time-to-power, in a US state: 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.

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

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered structurally. The description adds substantial beyond-schema context: confidence-class lanes are never blended, queued MW has no delivery dates, cumulative_firm_signal_mw excludes speculative MW, and out-of-scope concerns are declared in constraint_coverage. That is meaningful disclosure, but it is framed as product philosophy and data caveats rather than the operational behaviors (latency, sizing, pagination) an agent might need — and the honesty framing is repeated twice.

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 condition and grain, then composition, then exclusions — a sensible ordering. It is however long and dense, with the honesty/coverage disclaimer appearing twice, so a sentence or two could be cut without loss.

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 instead covers the interpretive frame (per-lane vintaging, confidence classes, what the cumulative number does and does not include) and explicitly declares out-of-coverage areas. For a nuanced, multi-source analytical tool this is sufficient to call it 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 baseline is 3. The description reinforces the state grain and re-states that mw is context-only and never converted to an energize date, but that constraint is already spelled out in the schema's own parameter description, so little value is added beyond the structured fields.

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 (timeline of when power becomes available), the resource (EIA-860M new generation, retirements, LBNL queue depth), the grain (year-by-year, per state), and the derived metric. It is clearly separable from siblings like get_power_pipeline and get_refined_queue, which the description names.

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?

Gives explicit triggering user phrasings ("when is new capacity landing in Ohio", "what comes online in Georgia by 2027") and an explicit do-not-use list mapping four alternatives to their distinct jobs, ending with the crisp discriminator "this answers WHEN, for one state."

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

get_power_pipelineGet Power PipelineA
Read-onlyIdempotent
Inspect

Use this when the user asks where new power generation is coming online (the forward supply pipeline) — e.g. "how much new generation is planned in Virginia / the Southeast / ERCOT, and when?". Planned, permitting, and under-construction generators NATIONWIDE from EIA-860M, INCLUDING non-ISO regions (TVA, Southern Co, Arizona PS, PacifiCorp, LADWP) that interconnection-queue feeds miss. Each generator has location (lat/lng), state, county, balancing authority, technology/fuel (solar photovoltaic, onshore wind, natural-gas combined cycle, batteries, nuclear), nameplate megawatts (MW), status (planned → under construction), and planned online month/year. Filter by state (2-letter, e.g. VA), ba (balancing-authority/ISO code, e.g. PJM, ERCO, SOCO, TVA), status (P/L/T=planned, U/V=under construction, TS=testing), or min_mw. Returns a summary (total planned MW, mix by technology + status) plus the largest projects. Answers "how much new generation is planned in Virginia and when does it land". Try: get_power_pipeline state=VA. Do NOT use for ALREADY-OPERATING capacity or grid headroom (use get_grid_intelligence / get_grid_data) or for data-center construction projects (use get_pipeline).

NameRequiredDescriptionDefault
baNoBalancing-authority / ISO code, e.g. PJM, ERCO, SOCO, TVA, AZPS
limitNoMax results to return (1-500; default varies by tool)
stateNoUS state abbreviation to filter generators, e.g. VA, TX
min_mwNoMinimum nameplate capacity filter in megawatts (MW)
statusNoGenerator status code: P/L/T (planned), U/V (under construction), TS (testing)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, so safety is covered. The description adds genuinely useful context annotations cannot: the underlying data source (EIA-860M), that it includes interconnected non-ISO regions missed by queue feeds, and the fields each record carries. It stops short of describing pagination or the interaction of limit with the summary, so it is strong but not exhaustive.

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 triggering question and scope, and dense with specifics rather than filler. There is mild redundancy: the closing 'Answers how much new generation is planned in Virginia and when does it land' restates the opening example nearly verbatim.

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?

Output schema exists so return values need no explanation, yet the description still sketches the response (summary of total MW, mix by technology+status, largest projects). For a 5-parameter, all-optional, read-only query tool, an agent has everything it needs to select and call it.

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?

With 100% schema coverage the baseline is 3; the description goes slightly further by explaining what each filter is for ('Filter by state (2-letter), ba (ISO code), status, or min_mw'), expanding status codes to semantics, and showing a sample call. It largely echoes the schema, so it is useful but not a substitute-level add.

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 (forward power-generation supply pipeline) and pins down scope precisely: nationwide including non-ISO regions (TVA, Southern Co, LADWP). It explicitly names the sibling it is NOT (get_pipeline) and the ones to use for operating capacity (get_grid_intelligence / get_grid_data), so an agent can route correctly 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?

Gives the triggering user question ('how much new generation is planned in Virginia / the Southeast / ERCOT, and when?'), a concrete worked invocation (state=VA), and explicit when-not guidance with named alternatives for both operating capacity and data-center projects.

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

get_refined_queueGet Refined QueueA
Read-onlyIdempotent
Inspect

Use this when you need interconnection queue projects filtered server-side. Instead of pulling the raw queue into context to filter (token-expensive, error-prone), push the predicates to the data layer and get back ONLY the survivors. Filter by min_mw, max_ttp_months (ISO-level avg interconnection wait), iso (comma-union), baseload_only (firm/dispatchable — excludes wind/solar/storage), fuel_type (isolate a specific fuel, e.g. gas or nuclear), and the spatial predicates max_fiber_km + geocoded_only. Returns _entity=queue_results: per-project name, ISO, state/county, fuel_type, capacity_mw, queue_status, estimated_ttp_months, fuel_class, plus (~83% of rows) lat/lng, coordinate_precision, fiber_km, and a compact per-survivor site_evaluation_handoff (ready-to-pipe analyze_site + get_water_risk args) + a by_iso/by_fuel summary. Answers "show me 1 GW+ gas projects that can connect in under three years", "what is in the queue that actually fits my timeline". Try: get_refined_queue min_mw=1000 fuel_type=gas max_ttp_months=34 — "1 GW+ gas in ISOs under 34-month time-to-power." NOTE max_ttp_months is a HARD ISO cut (SPP ~24 is the only ISO under 30, so <=30 can return nothing); use >=34 to include MISO/ERCOT/ISO-NE.

NameRequiredDescriptionDefault
isoNoRestrict to one or more ISOs, comma-separated for a union: PJM, ERCOT, MISO, CAISO, SPP, NYISO, ISONE (ISO-NE). e.g. iso=ERCOT,PJM. Omit for all; combines with max_ttp_months as an intersection
limitNoMax results to return (1-500; default varies by tool)
min_mwNoMinimum project capacity in MW, e.g. 1000 for 1 GW+
statusNoQueue status filter. Default 'active' = still progressing (excludes withdrawn/cancelled/suspended/in-commercial-operation) — cross-ISO safe (SPP labels live projects 'IA FULLY EXECUTED/ON SCHEDULE' not 'active').
developerNoERCOT only: keep projects whose developer name contains this text (case-insensitive substring, e.g. 'tenaska'). Developer names come from ERCOTQueue (ercotqueue.com, Matt Prusak, CC BY 4.0) joined to ERCOT's own queue by INR; other ISOs…
fuel_typeNoIsolate a fuel by inclusive substring match on the raw label; comma/semicolon-separated for a union, e.g. 'gas' hits GAS/Natural Gas, 'nuclear,hydro' unions both.
max_fiber_kmNoKeep only survivors within N km of the nearest MAPPED long-haul fiber route endpoint — coarse backbone proximity from a sparse ~260-node dataset over a county-centroid origin, NOT last-mile fiber. Implies geocoded rows only
baseload_onlyNoKeep only firm/dispatchable fuel (nuclear, gas, steam, geothermal, hydro, coal); exclude wind/solar/storage. Firm-vs-intermittent split only — does NOT sub-divide peaker vs combined-cycle gas (no duty-cycle field in the queue).
geocoded_onlyNoKeep only survivors that carry lat/lng (~83% of the queue) — the ones with a ready site_evaluation_handoff you can pipe into analyze_site. Default false
max_ttp_monthsNoMax time-to-power in months (ISO-level avg interconnection wait; HARD cut keeping projects in ISOs at/under this — PJM ~51, CAISO ~40, ISO-NE ~34, MISO ~34, ERCOT ~33, NYISO ~31, SPP ~24; <=30 leaves only SPP)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/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/destructive/openWorld), and the description adds substantial context the annotations cannot: the server-side filtering model, the HARD-cut semantics of max_ttp_months with per-ISO wait values, the ~83% lat/lng coverage, and the sparse ~260-node coarse fiber dataset caveat.

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

Conciseness3/5

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

Front-loads the when-to-use message well, but is long and repetitive: it re-enumerates return fields that the output schema already documents, restates parameters covered in the schema, and stacks multiple example phrasings plus a NOTE. Information-dense but over-sized for a single description.

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 an output schema exists, return-value detail is redundant but harmless. The description covers when to use it, the server-side filtering model, all key predicate semantics, the timeline gotcha, and a worked example — everything needed to call it 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 baseline is 3, but the description adds meaning beyond the schema: it groups the predicates by intent (capacity, timing, fuel, spatial), gives a multi-param worked example, and reiterates the critical <=30 returns-nothing trap. The per-parameter restatement is largely duplicative of the schema, keeping this just below the top.

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 ('interconnection queue projects filtered server-side') and explicitly frames it against the raw alternative (pulling the full queue). The agent can distinguish it from get_interconnection_queue without opening either 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 an explicit 'Use this when...' trigger and names the anti-pattern it replaces (token-expensive client-side filtering of the raw queue). Provides a concrete invocation example and two sample questions, 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.

get_renewable_energyRenewable EnergyA
Read-onlyIdempotent
Inspect

Use this when the user asks about renewable energy for a data center (execute_plan covers renewables plus siting): siting a renewable-powered data center, sizing a PPA, reading one US state's utility-scale fuel mix, or assessing RE100/24-7-CFE feasibility. Example: "What is Texas wind+solar capacity and how much utility-scale solar is operating today?" — get_renewable_energy energy_type=solar state=TX. Params: energy_type one of "solar" | "wind" | "combined" (omit for all); state 2-letter US code (e.g. TX, VA, AZ); lat+lon (optional) for the nearest projects within 50mi. Returns: {capacity_mw_total, by_fuel: {solar_utility, solar_rooftop, wind_onshore, wind_offshore}, capacity_factor_pct, top_projects[{name, mw, operator, cod}], state_rps_target_pct, source: "EIA-860 + state RPS"}. Do NOT use for live grid generation (use get_grid_data) or non-US (use get_grid_scoreboard for EU/UK/AU/TW). Give state or lat/lon (decimal degrees); energy_type narrows. Empty = no installations there: widen to the state.

NameRequiredDescriptionDefault
latNoOptional latitude in decimal degrees (-90 to 90) to find nearest projects within 50mi
lngNoAlias for lon — either name works
lonNoOptional longitude in decimal degrees (-180 to 180) to find nearest projects within 50mi
stateNoUS state abbreviation, e.g. TX, VA, AZ
latitudeNoAlias for lat — either name works
longitudeNoAlias for lon — either name works
energy_typeNoRenewable type: "solar", "wind", or "combined"; omit for all

Output Schema

NameRequiredDescription
cite_asNo
successNo
ppa_as_ofNo
ppa_basisNo
ppa_countNo
data_sourceNo
ppa_total_mwNo
filters_appliedNo
ppa_total_countNo
dc_industry_ppasNo
installations_countNo
renewable_installationsNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, closed-world, non-destructive, so the safety profile is covered. The description adds genuinely useful behavior: the lat/lon path searches a 50mi radius rather than an exact point, and an empty result means no installations exist there (widen to the state). It also cites the data provenance (EIA-860 + state RPS) but does not state data vintage or update cadence, which matters for capacity figures.

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 routing guidance and example are front-loaded and the sentences are dense with information. The 'Returns: {...}' block is somewhat redundant given an output schema exists, but the rest of the text earns its place.

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

Completeness4/5

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

For a 7-parameter read tool with full schema coverage, annotations, and an output schema, the description covers routing, exclusions, empty-result handling, and provenance. The main omission is data recency/vintage (EIA-860 snapshot year), which an agent would want before quoting capacity numbers.

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 every parameter including the lng/latitude/longitude aliases is already documented. The description restates the enum values and 'omit for all' that the schema already carries; its only genuine addition is the state-or-lat/lon precedence rule. 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?

The description names the specific verb and resource (renewable energy for a data center) and enumerates the concrete use cases: siting, PPA sizing, state fuel mix, RE100/24-7-CFE feasibility. It explicitly contrasts with execute_plan (broader, includes siting) and names the siblings it must not be confused with (get_grid_data, get_grid_scoreboard).

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 triggers with a worked example, plus explicit exclusions: 'Do NOT use for live grid generation (use get_grid_data) or non-US (use get_grid_scoreboard for EU/UK/AU/TW).' That is a full routing table for the alternatives.

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

get_retirement_headroomGet Retirement HeadroomA
Read-onlyIdempotent
Inspect

Use this when the user asks where retiring power plants free grid capacity: scans EIA-860M retirements to find near-term transmission grid headroom — a retiring plant is a CONCRETE headroom event (its POI frees injection capacity), from FILED data, not forecasts. Returns _entity=retirement_headroom_results: retiring generators inside your horizon (name, MW, fuel, prime mover, retirement_date), representative_point, nearest substations with distance_km + count within 25 km, county-level queue_pressure (competing in-progress MW), iso_context (the generator's own EIA balancing-authority code), and a pre-filled site_evaluation_handoff (analyze_site + get_water_risk args, capacity_mw = YOUR target load). Answers "where is grid capacity about to free up", "which retiring plants open injection headroom near me". Try: get_retirement_headroom target_mw=50 horizon_months=18 region_iso=MISO — "50 MW opening near a substation inside 18 months, sidestepping the 4-7yr mega-queue." Honesty: meta.caveat flags that filed dates are subject to ISO reliability reviews (RMR extensions). Use to find WHERE capacity opens next; for what's already queued use get_refined_queue; for one site use analyze_site.

NameRequiredDescriptionDefault
limitNoMax results to return (1-500; default varies by tool)
target_mwYesMinimum required headroom in megawatts (MW) — filters to retiring generators at/above this size. Also passed through as the handoff's analyze_site capacity_mw (the DC you are siting).
region_isoNoOptional target region or ISO (e.g., 'MISO', 'PJM', 'ERCOT', 'SPP', 'CAISO', 'NYISO', 'ISONE'). Matches the generator's own EIA balancing-authority code — real market boundaries, not state lines. Comma-separated for a union.
fuel_filterNoOptional filter for retiring fuel categories, substring-matched (e.g., 'Coal', 'Natural Gas', 'Petroleum').
horizon_monthsYesTime horizon in months to look ahead for planned retirements, 1-120 (e.g., 12, 18, 36).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover the full safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower, yet the description adds substantial context beyond them: data provenance (FILED data, not forecasts), the honesty caveat that filed dates are subject to ISO reliability reviews/RMR extensions, and the pre-filled site_evaluation_handoff behavior. This is rich behavioral disclosure.

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?

Purpose and trigger are front-loaded in the first sentence, and the routing/example/caveat material is useful rather than filler. It is, however, quite long and dense, packing return fields, an example call, and caveats into a single paragraph, which slightly hurts scannability.

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 enumerated, yet the description still outlines the key result fields and the handoff object. Combined with the sibling routing and honesty caveat, an agent has everything needed to select and invoke the tool 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 description coverage is 100%, so all five parameters are already documented in the schema, including target_mw's dual role as the handoff capacity_mw and region_iso's balancing-authority matching. The description largely restates these rather than adding new syntax or format guidance, 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+resource (scans EIA-860M retirements to find near-term transmission grid headroom) and explicitly frames the output as a concrete headroom event from filed data rather than forecasts. It cleanly distinguishes itself from get_refined_queue and analyze_site by naming them directly.

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?

Gives explicit when-to-use triggers ('where retiring power plants free grid capacity', 'where capacity opens next') and names the alternatives with their selection conditions: get_refined_queue for already-queued capacity, analyze_site for a single site. It even includes a concrete call example with parameter values.

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

get_shortlistGet ShortlistA
Read-onlyIdempotent
Inspect

Use this when the user wants to see a saved data center site shortlist. With refresh=true (default) each site is RE-SCORED against the current national percentile baseline and returns saved_score, current_score, and score_delta_since_saved — so you see whether a site slipped because IT changed or the POPULATION did. The reliable way to maintain a siting campaign across days/weeks. Scoped to your API key.

NameRequiredDescriptionDefault
nameYesThe shortlist name to fetch
refreshNotrue (default) = re-score every site against the CURRENT baseline + return drift deltas; false = return the saved snapshots only

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely non-obvious behavior: refresh re-scores every site against the current baseline, returns saved_score/current_score/score_delta_since_saved, distinguishes site-change vs population-change, and notes API-key scoping.

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 triggering use case, then the refresh mechanics. Every sentence carries information, though the 'reliable way to maintain a siting campaign' line leans promotional rather than instructive.

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

Completeness4/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 needn't be described, yet it usefully clarifies the drift fields. Combined with annotations covering safety and the refresh fork being explained, an agent has enough to call it correctly; only sibling routing is absent.

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 baseline is 3. The description goes beyond the schema's terse 're-score' note by explaining the interpretive payoff of refresh (whether movement is site-driven or population-driven) and confirming the default, adding meaning the schema alone does not convey.

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

Purpose4/5

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

It states a specific verb and resource ('see a saved data center site shortlist') and the value-add is explicit via the refresh/score-delta explanation. It never names the closest siblings (list_saved_sites, save_to_shortlist, set_shortlist_alert), so an agent still has to infer which shortlist tool to pick.

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?

It gives a clear triggering condition ('when the user wants to see a saved shortlist') and spells out the refresh=true vs false fork. There is no explicit when-not guidance or routing to the alternative shortlist tools (listing vs saving vs alerting).

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

get_subsea_cablesGet Subsea CablesA
Read-onlyIdempotent
Inspect

Use this when the user asks about subsea (submarine) cable landings near a site, or the cable catalogue. The physical internet crossing an ocean lands at a finite number of points, and distance to one is a real siting factor for anything latency- or transit-sensitive. Pass lat+lon (+radius_km) for LANDING POINTS near a site — each with name, coordinates and distance_km. Omit coordinates for the CATALOGUE of tracked cables (712 tracked; each with cable_id, name, owners, length_km, rfs_year, is_planned — sparse fields are null, not guessed). ★ READ field_coverage AND connectivity_note BEFORE DRAWING A CONCLUSION: cable_count per landing point is NOT populated — the ingest writes the column but the upstream TeleGeography feed does not supply what it derives from, so every row carries the default 0. That is why connectivity_grade comes back null rather than graded: proximity to a landing point does NOT establish how many cables are reachable from it, and DC Hub will not infer a grade it cannot source. Answers "which subsea cables land near this Virginia site" and "how far is the nearest cable landing from my campus". Try: get_subsea_cables lat=36.85 lon=-75.98 radius_km=200 — or get_subsea_cables (no args) for the catalogue.

NameRequiredDescriptionDefault
latNoLatitude of the site, e.g. 36.85 — with lon, returns landing points near it; omit both for the cable catalogue
lngNoAlias for lon — either name works
lonNoLongitude of the site, e.g. -75.98
limitNoMax results to return (1-500; default varies by tool)
latitudeNoAlias for lat — either name works
longitudeNoAlias for lon — either name works
radius_kmNoSearch radius in km around lat/lon for landing points (default 200)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare read-only/idempotent/non-destructive, so the description only needs to add beyond them, and it does: cable_count is always 0 due to an upstream feed gap, connectivity_grade is null by design, and DC Hub will not infer a grade. That prevents a serious downstream misreading of the returned data.

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 both modes, but the ★ caveat paragraph is dense and the emphasis styling plus a trailing example sentence make it longer than necessary for an experienced caller, even though every piece does carry 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?

Output schema exists, yet the description still covers the non-obvious parts an agent cannot get from the schema - the null/default field behavior and the reason grades are absent. Nothing needed to call it correctly or interpret results 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% and alias parameters are documented there, so the baseline is 3; the description adds real value by tying lat+lon+radius_km to a specific return shape and stating that omitting coordinates switches to catalogue mode, which the schema does not convey.

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 two specific modes with concrete resources: LANDING POINTS near a site (name, coordinates, distance_km) and the CATALOGUE of tracked cables (712, with field list). An agent can distinguish this from neighbors like get_fiber_intel or get_metro_fiber 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 Guidelines5/5

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

Explicit trigger ('use this when the user asks about subsea cable landings near a site, or the cable catalogue'), explicit mode selection rule ('Pass lat+lon (+radius_km)... Omit coordinates for the CATALOGUE'), and two worked example calls.

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

get_tax_incentivesTax IncentivesA
Read-onlyIdempotent
Inspect

Use this when the user asks what tax incentives a US state gives data centers — the data-center tax-incentive packages by US state that drive where capex lands. Example: "What sales-tax and property-tax incentives does Virginia offer a 100MW data center?" — get_tax_incentives state=VA. Params: state (2-letter US code; required). Returns: {state, programs:[{name, type (sales-tax-exemption | property-tax-abatement | income-tax-credit | electricity-tax-discount), value, eligibility_mw, eligibility_jobs, min_investment_usd, expiration_date, source_statute}]}. Cite the statute with attribution to DC Hub (CC-BY-4.0). Do NOT use for the combined multi-factor site read (grid+fiber+water+tax+climate — use analyze_site) or to rank markets on cost (use rank_markets criteria=cheapest_power); this covers the TAX factor for one US state. state is a US state code (e.g. VA); omit for the 50-state overview. Program detail needs a paid key (human_url).

NameRequiredDescriptionDefault
stateNoUS state abbreviation (required), e.g. VA, TX, AZ

Output Schema

NameRequiredDescription
dataNo
countNo
stateNo
statusNo
cite_asNo
last_updatedNo

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description adds real behavioral context beyond them: program detail requires a paid key (human_url), results are sourced with an attribution obligation (cite statute, DC Hub CC-BY-4.0), and the 50-state overview path when state is omitted. No annotation is contradicted.

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 use case and example, then exclusions, then auth notes — good ordering. It is somewhat dense and the 'Returns:' block enumerates fields already present in the output schema, which is length that does not earn its place, but overall it is information-rich rather than 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?

Given an output schema exists, the definition is more than complete: it covers purpose, triggering example, explicit exclusions, auth/paywall requirements, and attribution obligations. The only flaw is the required-vs-omit inconsistency for state, which is minor against an otherwise exhaustive definition.

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% for the single parameter, so the baseline is 3; the description mostly restates the schema ('2-letter US code'). It does add the 'omit for the 50-state overview' behavior, but that conflicts with the schema's '(required)' label and the zero required parameters, creating mild confusion rather than clarity.

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 — data-center tax-incentive packages by US state — and frames the domain value ('drive where capex lands'). It explicitly distinguishes itself from the two nearest siblings (analyze_site for the combined read, rank_markets for cost ranking), so an agent can route without opening the 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?

Gives a concrete triggering example ('What sales-tax and property-tax incentives does Virginia offer a 100MW data center?') plus explicit when-not clauses naming the correct alternatives (analyze_site, rank_markets criteria=cheapest_power). The scope boundary 'this covers the TAX factor for one US state' removes ambiguity.

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

get_water_riskWater RiskA
Read-onlyIdempotent
Inspect

Use this when the user asks about water stress or cooling-water risk at a data center site (execute_plan covers a multi-factor site verdict). Use when scoring a US site for cooling-water sustainability — the water-risk factor engineering site-selectors screen before committing to evaporative cooling. Example: "Is this Phoenix parcel water-constrained for a 100MW build?" — get_water_risk lat=33.45 lon=-112.07 (or get_water_risk state=AZ, or location="phoenix"). Params: ONE of lat+lon (-90..90 / -180..180), state (2-letter US), or location (a DC Hub market name or slug, resolved to that market's PUBLISHED CENTROID with a resolved_from block saying so; a market-level read, not your parcel, and a trailing state is not stripped); lat/lon gives the most precise read. Returns: {water_stress_score (0-100, higher=worse), drought_category (D0-D4), outlook_12mo, cooling_water_assessment, source}. Joined to USGS water-stress + US Drought Monitor. Free tier. Do NOT use for nearby physical infrastructure (use get_infrastructure) or a combined multi-factor site verdict spanning grid+fiber+water+tax+climate (use analyze_site); this covers the WATER factor only. US only: give state or lat/lon (decimal degrees). Free = latest week; longer history needs a paid key.

NameRequiredDescriptionDefault
latNoSite latitude in decimal degrees (-90 to 90) for the most precise water-risk read, e.g. 33.45
lngNoAlias for lon — either name works
lonNoSite longitude in decimal degrees (-180 to 180), e.g. -112.07
stateNoUS state abbreviation as an alternative to lat/lon, e.g. AZ
latitudeNoAlias for lat — either name works
locationNoMarket NAME or metro slug instead of coordinates, e.g. "phoenix", "northern-virginia", "dallas". Resolved to that market's PUBLISHED CENTROID through the DCPI market row, and the answer carries a resolved_from block saying so.
longitudeNoAlias for lon — either name works

Output Schema

NameRequiredDescription
okNo
stateNo
sourceNo
cite_asNo
successNo
queried_atNo
source_urlNo
latest_weekNo
weekly_historyNo
dominant_severityNo
drought_categoriesNo
current_drought_pctNo

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial beyond-schema context: US-only scope, decimal-degree input, that location resolves to a market centroid via PUBLISHED CENTROID with a resolved_from block and is a market-level not parcel read, and that free tier returns only the latest week with paid key needed for history.

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?

Dense but front-loaded: triggers come first, then params, then returns, then exclusions. Slightly long with some restatement of aliases/format, but every clause carries real routing or behavioral value.

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 an output schema exists and annotations cover safety, the description still supplies the scope (US-only), tier limits (latest week free), resolution semantics, and sibling routing an agent needs to call it correctly. Nothing material is missing.

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?

Although schema coverage is 100%, the description adds the crucial constraint the schema omits (required=0, all optional): "ONE of lat+lon, state, or location." It also explains the precision tradeoff (lat/lon most precise), what location resolves to, and that a trailing state is not stripped — none of which is in the structured 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?

The description states a specific verb+resource (water stress / cooling-water risk read at a site) and explicitly distinguishes it from siblings execute_plan, analyze_site, and get_infrastructure. An agent can tell exactly what this returns and what it does not.

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 triggers (water stress, cooling-water sustainability screening for evaporative cooling) and explicit exclusions with named alternatives (get_infrastructure for physical infra, analyze_site for a multi-factor verdict, execute_plan for a combined plan). A worked example further disambiguates invocation.

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

grid_transition_radarGrid Transition RadarA
Read-onlyIdempotent
Inspect

Use this when the user asks where new grid headroom for data centers is emerging. Returns the US markets + ISOs with the strongest near-term emergence signal (BUILD verdict + excess-power headroom + short time-to-power), an ISO rollup, and a grid-headroom leaderboard. With a paid key, also the transition thesis: which ISO is opening up and why. The predictive counter to retrospective "where capacity landed" reports. Answers "where should I be looking next", "which market is about to become buildable". Try: grid_transition_radar max_months=24. Do NOT use for the current ISO queue snapshot (use get_interconnection_queue) or a present-day market ranking (use rank_markets); this is the forward-looking emergence radar.

NameRequiredDescriptionDefault
limitNoNumber of emerging markets to return
max_monthsNoMaximum acceptable time-to-power in months for the emergence signal, 1-120, e.g. 24

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the lower bar applies; the description still adds real context: the paid-key tier unlocks the transition thesis, and it explains that results are predictive/forward-looking rather than retrospective. It does not discuss pagination or result volume, but that is minor given the output schema.

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 trigger condition, then return shape, then exclusions and example—a sensible information hierarchy. The 'predictive counter to retrospective reports' line leans marketing, but it does serve differentiation, so waste is low.

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 not be spelled out; the description nonetheless summarizes the result shape, discloses the paid-tier variant, names alternatives, and provides a sample call. Nothing needed to invoke it 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 coverage is 100%, so the schema already documents both parameters with ranges and examples. The description only reinforces max_months via the 'Try: ... max_months=24' example and says nothing extra about limit, so baseline 3 is appropriate.

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: it surfaces US markets and ISOs with the strongest near-term emergence signal (BUILD verdict + excess-power headroom + short time-to-power), plus an ISO rollup and leaderboard. It explicitly distinguishes itself from get_interconnection_queue and rank_markets, so an agent can route without opening either 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?

Gives an explicit trigger ('when the user asks where new grid headroom for data centers is emerging', 'where should I be looking next') and explicit exclusions naming the correct siblings for queue snapshots and present-day rankings. Even includes a concrete invocation example.

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

hyperscaler_dealsHyperscaler Deal TrackerA
Read-onlyIdempotent
Inspect

Use this when the user asks about hyperscaler or AI data center deals: live feed of Stargate, OpenAI, Anthropic, Microsoft, Oracle, CoreWeave, AMD, NVIDIA, sovereign-AI deals. Pulls from dchub news pipeline, extracts $-figures + MW via regex, classifies by actor. 10-min refresh. Use for tracking AI capex events ($1B+/week typical), capacity announcements, and competitive intel. Do NOT use for the full historical M&A comp set (use list_transactions) or a single-deal teardown with grid context (use deal_autopsy); this is the live $1B+ AI-capex feed. limit 1-500. Hyperscaler leases and purchases only; for all M&A use list_transactions.

NameRequiredDescriptionDefault
limitNoNumber of recent AI-capex deals to return (default 20)

Output Schema

NameRequiredDescription
dealsNo
errorNo
landingNo
feed_nameNo
live_feedNo
computed_atNo
methodologyNo
result_countNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover readOnlyHint/idempotentHint/destructiveHint, but the description adds real behavioral context beyond them: the dchub news pipeline source, regex extraction of $-figures and MW, actor classification, a 10-minute refresh cadence, and the scope limit (hyperscaler leases and purchases only). It does not discuss auth or pagination beyond the limit bound, which keeps it short of a 5.

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 use trigger and scope, and most sentences earn their place. Minor redundancy: the routing to list_transactions for M&A is stated twice ('full historical M&A comp set' and 'for all M&A use list_transactions'), which costs a little efficiency.

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. The description covers scope, data source, refresh cadence, and both sibling alternatives, leaving nothing an agent needs to select or invoke the tool 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% with a single, fully documented limit parameter, so the schema carries the parameter semantics. The description's 'limit 1-500' merely restates the schema bounds and adds no new meaning, making the baseline 3 correct.

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 (live feed of hyperscaler/AI data center deals), enumerates the actors covered (Stargate, OpenAI, Microsoft, Oracle, CoreWeave, etc.), and explicitly distinguishes itself from list_transactions and deal_autopsy. An agent can route correctly 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?

Gives an explicit when-to-use trigger (user asks about hyperscaler or AI data center deals) plus two named exclusions with the alternative tool for each: full historical M&A comp set -> list_transactions, single-deal teardown with grid context -> deal_autopsy. Nothing is left to inference.

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

list_saved_sitesList Saved SitesA
Read-onlyIdempotent
Inspect

Use this when the user asks to see their saved data center sites. Needs a key (free, via claim_free_key); keyless returns auth_required, not an empty list. Use when a user asks to see or review their saved DC Hub shortlist in-chat, or wants to know what moved on it. Example: "What sites have I saved?" / "Did any of my saved sites move?" — list_saved_sites. Params: since (optional — "24h"/"7d"/ISO, default 7d — the delta window). Returns: each saved site with name, market, lat/lon, saved DCPI score, target MW, notes — PLUS live deltas: verdict_was/verdict_now (e.g. CAUTION → BUILD), excess-power move over the window, current vs at-save DCPI, alerts armed/fired, new facilities nearby, and a portfolio summary flagging which sites moved and which have no alert armed. Do NOT use to add a site (use save_site) or to download the list as a file (use export_dataset); this is the in-chat read-back.

NameRequiredDescriptionDefault
sinceNoDelta window for per-site movement: "24h", "7d" (default) or an ISO-8601 timestamp — pass your cached generated_at from last session

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description's real value is the auth disclosure: it needs a key via claim_free_key and keyless calls return auth_required rather than an empty list — a non-obvious failure mode that prevents misreading a null result as 'no saved sites'. It also enumerates the live-delta content, though that overlaps the output schema.

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 condition, then params, returns, and exclusions in a predictable order. It is somewhat long, and the long return-value enumeration is largely redundant given an output schema exists, but every section is legible and nothing is buried.

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

Completeness4/5

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

Covers trigger, auth prerequisite, default window, return shape, and sibling exclusions — everything needed to call it correctly. An output schema already exists, so the space spent re-listing return fields is redundant rather than missing, keeping it just short of a 5.

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% and the single parameter is fully documented in-schema (values, default 7d, and the cached generated_at hint). The description restates 'since — the delta window, default 7d' with no format or semantics beyond what the schema already provides, so it stays at the baseline for a high-coverage 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 ('see their saved data center sites') and immediately distinguishes itself from siblings: it is the in-chat read-back, not save_site (add) or export_dataset (download). An agent can route to it without opening the 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?

Explicit when-to-use with example utterances ('What sites have I saved?' / 'Did any of my saved sites move?') plus named alternatives for the two adjacent intents (save_site, export_dataset). Conditions selecting this tool versus alternatives are fully spelled out.

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

list_standing_intentsList Standing IntentsA
Read-onlyIdempotent
Inspect

Use this when the user asks which data center watches are registered on their key: webhook watches, plus your capacity requirements (kind "capacity", intent_id cap_...). Read-only. Returns each intent_id, kind, watch params, webhook_url and enabled state; capacity items also carry status, confirmed, expires_at, last_alert_at and matching_now. Use it to find the intent_id for delete_standing_intent, or to confirm a register landed. Requires a key (or an OAuth connection for capacity items). Answers "what am I currently watching". Do NOT use to create a watch (register_standing_intent) or for one-shot reads (get_news / list_transactions).

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive, closed-world behavior. The description adds value beyond that: it discloses the key requirement and the OAuth-connection requirement specific to capacity items, plus what each returned record contains. It stops short of rate-limit or pagination behavior, so 4 rather than 5.

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 primary trigger, then return shape, then auth, then exclusions in a logical order. Slightly long with some overlap between the opening trigger and the closing 'what am I currently watching' paraphrase, but every sentence carries actionable content.

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 enumerate return values, yet it summarizes them usefully; annotations cover the safety profile and there are no parameters to document. An agent has everything needed to select and invoke 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, so the baseline is 4. The description correctly adds no parameter guidance because there is none to give, and instead explains what the empty-argument call returns.

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 standing intents / data center watches registered on their key') and enumerates the two kinds it covers, including the 'cap_...' capacity prefix. It explicitly names what it is not (register_standing_intent, get_news, list_transactions), so an agent can separate it from siblings 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?

Gives concrete triggers ('when the user asks which data center watches are registered', 'to find the intent_id for delete_standing_intent', 'to confirm a register landed') and an explicit exclusion list of alternative tools for creation and one-shot reads. Nothing is left to inference.

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

list_transactionsM&A TransactionsA
Read-onlyIdempotent
Inspect

Use this when the user asks about data center M&A, acquisitions or capital deals — 1,800+ tracked deals (2019-present), each with its disclosed value where public (many private deals are undisclosed). Returns deal name, buyer, seller, value, date, market, target operator, type (acquisition/JV/refinance/recap). Filter by date range (date_from/date_to, ISO-8601), min_value_usd, region, buyer, or seller. Answers "which data-center deals closed this year", "what was that acquisition worth". Try: list_transactions date_from=2026-01-01 min_value_usd=1000000000. There is no year parameter — use date_from/date_to. Broad M&A and capital-deal flow with filters; do NOT use for hyperscaler-specific lease/PPA/JV activity (use hyperscaler_deals) or a single-deal post-mortem (use deal_autopsy). limit 1-500 (free 10), offset 0-100000; total_count is the full match count. Empty = loosen buyer/seller/value filters.

NameRequiredDescriptionDefault
buyerNoFilter by acquiring company name, e.g. Blackstone, KKR, Digital Realty
limitNoMax results to return (1-500; default varies by tool)
offsetNoPagination offset, 0-based (skip this many results)
regionNoGeographic region filter, e.g. us, eu, apac, americas
sellerNoFilter by selling/target company name, e.g. CyrusOne
date_toNoLatest deal date, ISO-8601 (YYYY-MM-DD)
date_fromNoEarliest deal date, ISO-8601 (YYYY-MM-DD)
deal_typeNoDeal type filter, e.g. acquisition, jv, refinance, recap
max_value_usdNoMaximum disclosed deal value in US dollars
min_value_usdNoMinimum disclosed deal value in US dollars, e.g. 1000000000 for $1B+

Output Schema

NameRequiredDescription
noteNo
tierNo
countNo
cachedNo
successNo
data_sourceNo
total_countNo
total_valueNo
transactionsNo
total_value_unitNo

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered; the description adds real context beyond that — undisclosed values on private deals, pagination bounds (limit 1-500, free 10, offset 0-100000), that total_count is the full match count, and that empty results mean loosening buyer/seller/value filters. Missing only rate-limit or freshness details.

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 use case and scope, then filters, then a runnable example, then exclusions and pagination notes. Dense but nearly every clause carries operational value; a slightly long single block, but no filler sentences.

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 a 10-param filtered list tool with an output schema and full annotation coverage, the description supplies the routing cues, filter semantics, example invocation, and empty-result remediation. Nothing an agent needs to call it 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 baseline is 3, but the description adds meaning beyond it: it flags the absence of a `year` parameter, gives a concrete min_value_usd example, and clarifies free-tier limit versus the schema's stated max. This compensates usefully rather than merely restating field docs.

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 (list M&A transactions / data center deals) with scope (1,800+ tracked deals, 2019-present) and enumerates returned fields. It explicitly distinguishes itself from siblings hyperscaler_deals and deal_autopsy, so an agent can route correctly without opening either 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?

Gives explicit when-to-use triggers ('user asks about data center M&A'), worked example queries, and clear when-not-to-use exclusions naming the two alternative tools. The note that there is no `year` parameter and to use date_from/date_to heads off a likely misuse.

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

plan_fiber_leadinPlan Fiber LeadinA
Read-onlyIdempotent
Inspect

Use this when the user asks how to get diverse fiber into a data center site: plans road-following lead-in routes from a candidate data-center site to a carrier hotel / POP, with indicative build cost and a route-diversity read. Answers "can I get N diverse fibre routes into this site, how far, how much, and where do they share a corridor?". Example: plan_fiber_leadin from="250 Paringa Road, Murarrie QLD" to="20 Wharf Street, Brisbane City QLD" n=4. Params: from (lat,lng OR street address), to (lat,lng OR address — e.g. a NextDC/Equinix POP), n (1-6 routes, default 4), fibre ("720F"|"1440F"), bore_m (river/rail bore length in metres, optional). Returns per-route length_km + GeoJSON geometry, total_route_km, diversity {min_separation_m_midhaul, shared_street_km}, and indicative cost {capex_usd, opex_usd_yr}. INDICATIVE auto-routed road corridors — NOT engineered alignments; subject to survey, DBYD and carrier confirmation. Do NOT use for a single site-suitability score (use analyze_site) or fibre-provider footprints (use get_fiber_intel).

NameRequiredDescriptionDefault
nNoNumber of diverse routes to plan, 1-6 (default 4)
toYesDestination carrier hotel/POP as "lat,lng" OR an address, e.g. "20 Wharf Street, Brisbane City QLD"
fromYesOrigin site as "lat,lng" OR a street address, e.g. "250 Paringa Road, Murarrie QLD"
fibreNoFibre count spec for cost estimate: "720F" or "1440F"
bore_mNoRiver/rail bore length in metres to add to the route, 0-100000 (optional)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld, non-destructive, so the safety profile is covered. The description earns credit by adding genuinely non-structured context: routes are 'INDICATIVE auto-routed road corridors — NOT engineered alignments' and are 'subject to survey, DBYD and carrier confirmation,' which sets appropriate expectations about reliability. It stops short of discussing rate limits or latency, so it is not a full 5.

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?

It is a dense but well-ordered block: purpose first, example second, parameter/return summary third, caveats and exclusions last, so it is front-loaded and skimmable. Slightly long for a description, and the inline return-value enumeration borders on redundant given a full output schema, but each sentence carries 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?

For a 5-parameter, output-schema-backed, annotation-covered tool, the description is complete: it covers trigger, formats, defaults, return shape summary, and the indicative nature of results. An agent has everything needed to select and call it correctly without consulting further docs.

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 would be 3. The description adds value by restating accepted formats with intent ('lat,lng OR street address'), clarifying that 'to' may be a NextDC/Equinix POP, and giving a fully worked example invocation that shows the parameters in combination. That modestly exceeds what the schema alone conveys.

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: 'plans road-following lead-in routes from a candidate data-center site to a carrier hotel / POP,' with scope (indicated build cost and route-diversity read). It explicitly distinguishes itself from siblings by naming analyze_site and get_fiber_intel as the wrong tools for adjacent tasks, so an agent can route 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 Guidelines5/5

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

Gives the triggering condition ('when the user asks how to get diverse fiber into a data center site'), a concrete example invocation, and explicit exclusions ('Do NOT use for a single site-suitability score (use analyze_site) or fibre-provider footprints (use get_fiber_intel)'). When-to-use, when-not-to-use, and the named alternatives are all present.

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

plan_queryPlan QueryA
Read-onlyIdempotent
Inspect

Use this when you want to see the plan for a data center question without running it (execute_plan runs the same planner and returns the answers). Reach for plan_query only to review, log, diff or audit a plan before executing it yourself. Deterministic keyword routing over the tool registry — no LLM, no network, same intent always returns the same plan (free). Returns _entity=query_plan {best_tool, intent_confidence + workflow_confidence (dual 0-1: question-read vs executability), reason, planner_rationale, recommended_sequence:[{step, tool, depends_on, estimated_calls, why, args_hint}], execution_waves (steps grouped into concurrency waves), execution_strategy.parallel_groups, execution_estimate {estimated_calls, estimated_latency_ms, parallelizable}, alternatives (each with when + rejected_because), coverage_notes, matched_classes} plus a versioned replay (schema_version 1): planner_version, decisions:[{id, step, kind, status, decision, rationale, decision_confidence, depends_on}], rejected:[{id, tool, reason}], execution_graph:{waves, parallel_groups} — auditable and machine-readable, safe to log and diff across versions. Full guide: read resource dchub://tool-guides/plan_query

NameRequiredDescriptionDefault
intentYesNatural-language description of what you are trying to find out, e.g. "rank markets for a 200MW AI campus" or "how much power is available in ERCOT"
contextNoOptional structured hints: {lat, lon, iso, market, capacity_mw, candidate_id, state (2-letter), since} — sharpens args_hint values and routing (e.g. lat/lon boosts the site-analysis route)

Output Schema

NameRequiredDescription
okNo
noteNo
intentNo
reasonNo
replayNo
chainingNo
best_toolNo
confidenceNo
alternativesNo
intent_classNo
routing_hintNo
coverage_notesNo
parallelizableNo
estimated_callsNo
execution_wavesNo
matched_classesNo
intent_confidenceNo
planner_rationaleNo
execution_estimateNo
execution_strategyNo
workflow_confidenceNo
recommended_sequenceNo
workflow_confidence_basisNo

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnly/idempotent/destructive annotations, it discloses determinism ('no LLM, no network, same intent always returns the same plan'), cost ('free'), and the versioned `replay` block being safe to log and diff across versions. This is meaningful behavioral context the annotations do not carry.

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

Conciseness3/5

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

The usage guidance is tight and front-loaded, but the bulk is a long enumeration of return fields (query_plan internals, replay, decisions, execution_graph) that overlaps heavily with the existing output schema. For a two-parameter tool this is verbose relative to what an agent needs to select and call it.

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 a read-only planning tool with a full output schema and complete annotations, the definition leaves nothing needed for correct invocation: purpose, alternative, determinism, cost, and auditability are all covered.

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 both `intent` and `context` are already documented with examples in the schema. The description adds no syntax or format beyond what the schema provides, matching the baseline of 3 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?

Specific verb+resource ('show the plan for a data center question without running it') with an explicit contrast to the sibling execute_plan. An agent can distinguish the two without opening either 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?

States when to use it ('review, log, diff or audit a plan before executing it yourself') and names the alternative that actually runs it (execute_plan). Both the condition and the excluded case are explicit.

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

predict_market_trajectoryPredict Market TrajectoryA
Read-onlyIdempotent
Inspect

Use this when the user asks where a data center market's power outlook is heading (next 1-8 quarters). Projects excess_power_score and constraint_score forward with confidence bands that WIDEN with horizon, from DC Hub's daily DCPI snapshot history, a time-series DC Hub owns. Use to answer "is this market trending toward BUILD or AVOID?" or "will Dallas power stay tight over the next 6 months?". Params: market_slug (required, metro slug e.g. dallas, phoenix, northern-virginia — valid slugs come from rank_markets / get_market_dcpi_rank); horizon_quarters (optional 1-8, default 4; 2 = ~6 months out). Returns {market_slug, method, basis{history_points, history_span_days, slope_per_day, trend}, horizon_quarters, projection[{quarter_out, excess_power_score, excess_power_band, constraint_score, constraint_band}], caveat, snapshot_record}. HONEST: linear trend extrapolation, NOT a guarantee — bands widen with horizon and short history; needs >=3 daily snapshots or it declines. Do NOT use for a single point-in-time verdict (use get_market_dcpi_rank) or to rank many markets (use rank_markets).

NameRequiredDescriptionDefault
market_slugYesMarket slug (metro), e.g. dallas, phoenix, northern-virginia — valid slugs come from rank_markets / get_market_dcpi_rank
horizon_quartersNoForecast horizon in quarters (1-8, default 4); 2 = ~6 months ahead

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only cover the read-only/idempotent safety profile, but the description adds substantive behavior beyond that: the method (linear extrapolation), the honest caveat that it is not a guarantee, that confidence bands widen with horizon and short history, and a hard precondition (needs >=3 daily snapshots or it declines). This is exactly the kind of operational constraint an agent needs before calling.

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 condition and packed with useful detail, but the verbose 'Returns {...}' block enumerates a shape that an output schema already provides, which is redundant. Dense rather than bloated, so still well-structured.

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 a richer tool (forecast with preconditions, method caveats, an output schema) the description covers trigger conditions, alternatives, preconditions, method limitations, and the data basis. Nothing an agent needs to invoke it correctly or interpret results 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 the schema already documents both parameters, including the 1-8 range and the '2 = ~6 months' mapping, which the description largely repeats. It adds only marginal value by naming the valid-slug sources and restating examples. 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 (predict/project) and resource (a market's forward power outlook via excess_power_score and constraint_score), with the data time-series and source named. It explicitly contrasts itself with get_market_dcpi_rank (single verdict) and rank_markets (ranking), so an agent can distinguish it from siblings 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 Guidelines5/5

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

Gives explicit trigger conditions ('use this when the user asks where a market's power outlook is heading'), concrete example questions, and explicit exclusions with named alternatives ('Do NOT use for a single point-in-time verdict... or to rank many markets'). Both when-to-use and when-not-to-use are covered.

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

rank_marketsRank MarketsA
Read-onlyIdempotent
Inspect

Use this when the user wants a ranked list of data-center markets, including where a data center can get grid power (criteria="ai_ready", DCPI): top N by cheapest_power, most_capacity, most_operators, fastest_growing, best_overall, or ai_ready (where new AI load can land, per DCPI). Filter by region, min_capacity_mw. Returns ranked rows with score, MW and a slug for follow-ups; score is the sort value, not a 0-100 scale, and score_basis says what it is (ai_ready omits it and explains its composite in methodology). Keyless: a trimmed preview; a free key gets a few full lists a day. Ex: "Top 10 US markets, ai_ready." Returns market slugs to feed get_market_intel and get_market_dcpi_rank. limit 1-500; set projection=identity_only to save tokens.

NameRequiredDescriptionDefault
limitNoNumber of markets to return, 1-50 (default 10)
fieldsNoReturn ONLY these row fields (array or comma string) — a token diet. The response envelope (citation, provenance, as_of, coverage, request_interpretation, the human relay line) is NEVER projected away; a projection narrows ROWS only.
regionNoRegion scope: "global", "us" (default), "canada", "eu", "apac", or "americas"
criteriaNoRanking criterion: "cheapest_power", "most_capacity", "most_operators", "fastest_growing", "best_overall" (default), or "ai_ready" (DCPI buildability — where new AI load can land, for AI-campus siting; region us/global)
projectionNoNamed field preset, cheaper to send than a field list: market_summary (ranking rows), siting_summary (site/point rows), identity_only (ids + names).
min_capacity_mwNoMinimum existing capacity filter in megawatts (MW), e.g. 100

Output Schema

NameRequiredDescription
tierNo
regionNo
cite_asNo
resultsNo
criteriaNo
data_sourceNo
methodologyNo
score_basisNo
result_countNo

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations: it discloses that keyless access returns a trimmed preview while a free key unlocks a few full lists per day, warns that score is a raw sort value rather than a 0-100 scale, and explains score_basis/methodology for ai_ready. These are exactly the behavioral traits an agent cannot infer 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-loaded with the usage trigger and packed with useful specifics, but it reads as a dense run-on sentence chain that could be split for easier scanning. Nearly every clause earns its place, so the length is justified even if the structure is slightly tangled.

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 a six-parameter tool with an output schema, it covers the remaining gaps: what the score means, how it varies by criterion, what the returned slugs enable (get_market_intel, get_market_dcpi_rank), and access-tier behavior. An agent has everything needed to call it and interpret the result.

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, but the description adds value by explaining what each criterion means in practice and recommending projection=identity_only as a token-saving option. One blemish: it says 'limit 1-500' while the schema's own limit description says '1-50 (default 10)', a minor internal inconsistency the agent has to reconcile.

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 (rank markets) and enumerates the exact ranking criteria available, so the agent knows precisely what the output ordering means. It also implicitly distinguishes itself from the sibling rank_sites by scoping to markets rather than sites.

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?

Opens with an explicit trigger ('Use this when the user wants a ranked list of data-center markets'), gives a concrete example, and ties criteria selection to intent (ai_ready for AI-campus siting). It lacks an explicit when-not or a direct pointer to rank_sites as the alternative, which keeps it from a 5.

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

rank_sitesRank SitesA
Read-onlyIdempotent
Inspect

Use this when you have enriched candidate data center sites to rank under constraints — the normalization contract that lets you compare sites across separate analyze_site calls WITHOUT dropping into code. Pass candidates you already enriched (each an object with lat/lng + metric fields like risk_resilience, water_stress, fiber_km — pull these from analyze_site + get_refined_queue and pass site_evaluation_handoff through untouched), hard constraints, and weighted objectives; get back entity=ranked_sites: top_k ranked with rank, objective_score, per-field normalized{} (0-100 relative to the set), and normalization_basis. objectives use SIGNED weights: +weight maximizes a field (e.g. risk_resilience:1), -weight minimizes it (e.g. water_stress:-0.6, fiber_km:-0.4). constraints are hard filters, fail-closed on a missing field. Use for "pick the best N sites under constraints"; for one site use analyze_site; to get the candidate set first use get_refined_queue. CANDIDATE CONTRACT: candidates may be {candidate_id: "cand…"} entries from get_refined_queue — frozen identity (lat/lng/capacity_mw/fiber_km/iso) loads from the mint, your metrics overlay the rest; expired/unknown ids are dropped AND declared in candidate_contract, never re-resolved.

NameRequiredDescriptionDefault
top_kNoHow many top-ranked sites to return (1-50, default 3)
absoluteNofalse (default) = min-max normalize within THIS batch (best-in-set, NOT stable across runs). true = score on a FIXED 0-100 scale for CROSS-RUN-STABLE, auditable scores — use ONLY when the objective fields are already 0-100 (analyze_site…
candidatesNoArray of candidate objects. PREFERRED: {candidate_id: "cand_…", <your metric fields>} using ids from get_refined_queue — frozen coordinates/capacity/fiber_km load from the mint (zero transcription drift), your enrichments (e.g.
objectivesNoWeighted objectives {field: signedWeight} — +weight maximizes, -weight minimizes. e.g. {"water_stress": -0.6, "fiber_km": -0.4}. Omit with shortlist_name to reuse the shortlist's saved objectives; required with candidates
percentileNotrue = score each objective as its PERCENTILE against the viable-site POPULATION ("better than X% of viable sites") — the strongest cross-run + cross-region comparability.
constraintsNoHard filters {field: {min?, max?}} — a candidate missing a constrained field is dropped (fail-closed). e.g. {"risk_resilience": {"min": 70}, "estimated_ttp_months": {"max": 34}}
shortlist_nameNoAlternative to candidates: re-rank a SAVED shortlist (created via save_to_shortlist) in one shot — loads its sites (scoped to your API key) + reuses their saved objectives if you pass none, and re-scores against the current baseline
require_completeNotrue = DROP any candidate missing one or more of your (validated) objectives — dropped candidates are DECLARED in excluded_incomplete, never silent.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description adds substantial context beyond them: normalization contract (in-batch vs fixed scale), fail-closed constraint dropping, expired/unknown candidate ids dropped AND declared in candidate_contract, and signed-weight semantics. It even discloses the exact return shape (_entity=ranked_sites with rank, objective_score, normalized{}, normalization_basis).

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

Conciseness3/5

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

Front-loaded correctly with the usage condition, but the body is a dense run-on with heavy parenthetical nesting, and it duplicates some content already present in the schema and output schema (candidate shape, return fields). Information-dense but not efficiently structured.

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 8-parameter ranking tool with an output schema, the description covers the full workflow (enrich via analyze_site/get_refined_queue, pass handoff untouched, rank), constraint fail-closed behavior, and normalization modes. Nothing an agent needs to call it 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 baseline is 3, but the description adds cross-parameter meaning not obvious from individual fields: signed weights (+ maximizes, - minimizes) with concrete examples, and the candidates/objectives vs shortlist_name dependency (objectives required with candidates, omittable with shortlist_name).

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+scope: rank enriched candidate data center sites under constraints with weighted objectives. It explicitly distinguishes itself from siblings ('for one site use analyze_site; to get the candidate set first use get_refined_queue'), so an agent can route correctly 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?

Opens with a precise when-to-use condition ('when you have enriched candidate data center sites to rank under constraints') and names both alternatives with their selecting conditions (analyze_site for one site, get_refined_queue for the candidate set). No inference required.

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

read_inboxRead InboxA
Read-onlyIdempotent
Inspect

Use this when a partner key reads its DC Hub inbox. PARTNER KEY ONLY: notes DC Hub left for the partner agent whose key this session sends, newest first. The first read CONSUMES them (marks read), so a later session sees none; include_read=true re-reads read and unread notes (last 14 days) without marking. Non-partner key: 403. Not a data tool.

NameRequiredDescriptionDefault
daysNoDays back (default 14)
peekNotrue = do not mark read
include_readNotrue = re-read read and unread notes, marks nothing

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior2/5

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

The description is unusually candid that 'the first read CONSUMES them (marks read), so a later session sees none' — a real state mutation whose result differs across invocations. That directly conflicts with the declared readOnlyHint=true and idempotentHint=true, which promise no environment modification and repeatable results. The text is informative, but the safety flags it ships with are misleading, so an agent trusting annotations over prose would be wrong.

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?

Front-loaded with the trigger condition, then the access restriction, then the destructive side effect, then the mitigation flag. Every clause carries unique information and the most dangerous fact (consumption) is stated early rather than buried.

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 no explanation. The description covers the remaining unknowns an agent needs: authorization level, persistence/consumption semantics, the re-read path, and the 14-day bound — leaving nothing material unstated.

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 all three parameters are already documented (baseline 3). The description goes further by supplying the retention window the schema omits ('include_read=true re-reads read and unread notes (last 14 days)') and by stating the semantic consequence of peek/include_read (no marking), which is the point of those flags.

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 concrete verb+resource ('reads its DC Hub inbox') and immediately scopes it ('PARTNER KEY ONLY') while distinguishing it from the surrounding data tools with 'Not a data tool.' An agent can tell what this is and who may call it 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?

Gives explicit triggering condition ('Use this when a partner key reads its DC Hub inbox'), the failure mode for non-partner keys ('403'), and the alternative path for preserving notes ('include_read=true ... without marking'). It also tells the agent when not to treat this as a data-retrieval tool.

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

recover_my_keyRecover My KeyAInspect

Use this when the user lost their DC Hub key. Pass your human's email and DC Hub re-sends any key tied to that address to that inbox. It NEVER returns the key over the wire (it emails the bound address), and the confirmation is the same whether or not a key exists (enumeration-safe), so no key is leaked to a caller. Param: email (required). Returns DC Hub's neutral confirmation.

NameRequiredDescriptionDefault
emailYesYour human's email address that a lost key was bound to (required) — the key is re-sent to that inbox, never returned over the wire

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Goes well beyond the annotations by disclosing the side effect (an email is sent to the bound address), the security property (key is never returned over the wire), and enumeration safety (identical confirmation regardless of key existence). It omits rate-limit/repeat behavior, which matters given idempotentHint=false, so not a 5. No contradiction with 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 the usage trigger, then behavior, then a param/return note – efficient ordering. The trailing 'Param: email (required). Returns DC Hub's neutral confirmation.' slightly duplicates the schema and output schema, keeping it from a perfect score.

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 a one-parameter, fully-described tool with an output schema and existing annotations, the description covers trigger, side effects, security caveats, and outcome. Nothing an agent needs in order to call it 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 single email parameter is already documented; the description largely restates it. It does add one useful semantic not in the schema: because the confirmation is enumeration-safe, any address can be passed even if no key exists, which shapes how the agent should call it.

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?

Specific verb + resource: re-sends a lost DC Hub key to the bound email address. It is clearly distinguishable from siblings like bind_email and claim_free_key, and an agent can tell what happens without opening the 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?

The first sentence gives an explicit trigger ('Use this when the user lost their DC Hub key'), which is exactly the condition an agent needs. It doesn't name alternatives or exclusions (e.g., use bind_email when no key was ever bound), 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.

register_standing_intentRegister Standing Intent (webhook push)AInspect

Use this when the user wants a webhook when data center deals change: Register a STANDING QUERY with webhook push — DC Hub POSTs an HMAC-signed webhook to YOUR https URL whenever matches grow (push, not poll: "notify my orchestrator on any new deal in Columbus"). Requires a key. Params: kind ("new_deal_in_market" watches deals in the market param · "news_keyword" watches news matching q · "permitting_change" watches published permitting intel, optionally per state), market / q / state (the watch parameter for the chosen kind), webhook_url (your public HTTPS endpoint — private/internal hosts are rejected). Returns {intent_id, secret} — SAVE the secret: every delivery carries X-DCHub-Signature: sha256=HMAC(secret, body). Answers "notify my system whenever a new moratorium appears", "push me new matches instead of making me poll", "tell my orchestrator when a deal lands in Columbus". Try: register_standing_intent kind=news_keyword q=moratorium webhook_url=https://hooks.example.com/dchub. kind="capacity" instead registers a standing CAPACITY REQUIREMENT with DC Hub Capacity Source (no webhook_url): target_mw or target_kw, markets / states / regions / countries (comma-separated), optional…

NameRequiredDescriptionDefault
qNoFor news_keyword: the keyword/phrase to watch in title+summary, e.g. moratorium
kindYesWatch kind: "new_deal_in_market" | "news_keyword" | "permitting_change" | "capacity" (a Capacity Source requirement, emailed, no webhook)
nameNoFor capacity: your human's full name, exactly as given; never invent it
roleNoFor capacity: your human's role or title
notesNoFor capacity: anything else about the requirement; leave out anything that identifies your human
stateNoFor permitting_change: optional US state filter, e.g. MN
marketNoFor new_deal_in_market: the market/region substring to watch, e.g. columbus
statesNoFor capacity: comma-separated US states, e.g. "TX, AZ"
companyNoFor capacity: your human's company
marketsNoFor capacity: comma-separated markets, e.g. "Dallas, Phoenix"
regionsNoFor capacity: comma-separated regions from north_america, latin_america, europe, asia_pacific, middle_east_africa (aliases emea, apac, latam, americas)
use_caseNoFor capacity: what the capacity is for, e.g. "AI inference"
countriesNoFor capacity: comma-separated countries, e.g. "Germany, Netherlands"
max_sitesNoFor capacity: how many sites the requirement may be split across, 1-6
target_kwNoFor capacity: capacity needed, in kW (or target_mw, not both)
target_mwNoFor capacity: capacity needed, in MW (or target_kw, not both)
webhook_urlNoYour public HTTPS webhook endpoint (required for every kind except capacity)
accept_termsNoFor capacity: true ONLY after your human read and agreed to https://dchub.cloud/listings#terms; otherwise nothing is sent
available_byNoFor capacity: needed by this date, YYYY-MM or YYYY-MM-DD
min_chunk_kwNoFor capacity: the smallest block worth taking, in kW
delivery_typeNoFor capacity: land, powered_shell, turnkey or colocation
terms_versionNoFor capacity: the terms version your human agreed to; omit to send the version currently published

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Annotations declare the safety profile (readOnly=false, idempotent=false, openWorld=true), and the description adds substantial context beyond them: a key is required, deliveries are HMAC-signed with a documented X-DCHub-Signature header, private/internal hosts are rejected, and the caller must persist the returned secret. That is exactly the extra operational detail annotations cannot convey.

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

Conciseness3/5

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

The purpose and return contract are front-loaded, but the description is overlong, repeats example intents, and is visibly truncated ("optional…"), leaving the capacity branch described in fragments. Sentences mostly earn their place but the size and the cut-off hurt.

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

Completeness4/5

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

For a 22-parameter tool with only one required param and an existing output schema, the description covers purpose, mechanics, auth/key requirement, and the {intent_id, secret} return well. The truncated capacity branch means some sub-mode parameters are described only through the schema, but nothing critical is missing for the primary webhook path.

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, but the description goes further by mapping kind values to their watch parameter (new_deal_in_market→market, news_keyword→q, permitting_change→state) and by stating the webhook_url validation rule (public HTTPS only) that the schema does not express.

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 (register a standing query with webhook push) and immediately distinguishes it from poll-based siblings ("push, not poll") and from list_standing_intent/delete_standing_intent. An agent can tell what it does and which sibling it is not without opening the 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?

Opens with an explicit trigger ("Use this when the user wants a webhook when data center deals change") and gives concrete user phrasings that map to it. It also flags the capacity variant and that webhook_url is required for every kind except capacity, but does not explicitly say when NOT to use this in favor of poll-based siblings like set_market_alert.

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

report_findingReport FindingAInspect

Use this when a partner key reports a DC Hub data issue. PARTNER KEY ONLY: file what you observed on a DC Hub surface as a brain finding (detector external_audit) so it is triaged like every other detector's. class is one of completeness_contradiction, geography_leak, as_of_cite_as, pro_wall_dead_end, count_drift, stale_payload_complete, leak_past_pro_gate, link_hygiene, other; tool names the DC Hub tool or endpoint; quoted_fields carries the exact fields you saw (hashed for dedupe: the same observation re-filed within 24h bumps recurrence instead of inserting). Proxies POST /api/v1/inbox/findings with the session's own key; a key issued without a partner slug answers partner key required (403). 120 per key per day.

NameRequiredDescriptionDefault
argsNoThe arguments you called it with
noteNoOne or two sentences of context
toolYesThe DC Hub tool or endpoint the finding is about, e.g. analyze_site
classYesFinding class: completeness_contradiction (status full/partial_preview with empty withheld_fields), geography_leak (preview resolved outside the requested ISO/region), as_of_cite_as (as_of null while cite_as stamps a date),…
recurrenceNoHow many times you have seen it (default 1)
session_idNoYour session identifier, if any
observed_atNoISO-8601 time you observed it
quoted_fieldsNoThe exact fields/values you observed (object, list or string); hashed for dedupe

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses the underlying endpoint (POST /api/v1/inbox/findings), that the session's own key is used, the 403 behavior for keys without a partner slug, the 24h dedupe-by-hash rule that bumps recurrence instead of inserting, and a 120/key/day rate limit. The non-idempotent hint is consistent with the recurrence-bump semantics.

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 when-to-use and the partner-key gate, then dense with behavioral facts; nearly every clause carries information. Slight redundancy in restating the class enum, which the schema already enumerates.

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 8-parameter write tool with an output schema, the description supplies everything an agent needs to call it correctly: authorization, rate limit, dedupe semantics, endpoint, and parameter roles. Return values are covered by the output schema.

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 already 100%, but the description adds real semantics: 'tool' means the DC Hub tool or endpoint, 'quoted_fields' carries the exact observed fields and is hashed for dedupe, and 'class' values are given operational meaning rather than just re-listed. Minor overlap with the schema's enum list.

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: file an observation on a DC Hub surface as a brain finding under the external_audit detector. The scope ('partner key reports a DC Hub data issue') clearly separates it from read_inbox and other inbox siblings.

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 this when a partner key reports a DC Hub data issue' gives the triggering condition, and 'PARTNER KEY ONLY' is an explicit audience exclusion with a stated failure mode (403 partner key required). It stops short of naming an alternative route for non-partner agents, so it is not a full when/when-not/alternative triad.

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

request_capacity_introRequest Capacity IntroAInspect

Use this when the user wants data center capacity behind a Capacity Source listing (pass slug), or wants first access to capacity matching a requirement as listings are onboarded (omit slug; pass capacity_mw or capacity_kw, markets, states, regions or countries, and timeline). This registers a deal: DC Hub records the request in its lead register and sends the provider ONLY your human's company name and the requirement. The provider accepts or declines. Only if the provider accepts does DC Hub share the provider's identity, site details and contact with your human, and your human's name, role and email with the provider; on a decline nothing is shared. Requires an identified caller (claim_free_key, then bind_email with your human's address) and accept_terms=true only after your human has read and agreed to the introduction terms at https://dchub.cloud/listings#terms. Returns lead_id, status and the next step. For a listing, source_capacity with its slug then shows the deal status in the disclosure block and, once the provider accepts, the provider's identity, site and contact. Do NOT use to save or monitor a site (use save_site / set_site_alert).

NameRequiredDescriptionDefault
nameNoYour human's full name. Nothing is sent without it; use only what they gave you, never invent it
roleNoYour human's role or title
slugNoThe listing to register a deal for: its slug or id from source_capacity. Omit to register a standing requirement for upcoming listings instead
notesNoAnything else the provider should know about the requirement. It travels with the requirement, so leave out anything that identifies your human
statesNoComma-separated US states of interest, e.g. "TX, AZ"
companyNoYour human's company. Nothing is sent without it
marketsNoComma-separated markets of interest, e.g. "Dallas, Phoenix"
messageNoA short note from your human for the provider. The deal registration itself carries only the company name and the requirement
regionsNoComma-separated regions of interest from north_america, latin_america, europe, asia_pacific and middle_east_africa (aliases emea, apac, latam, americas), e.g. "europe, apac"
timelineNoWhen the capacity is needed, e.g. a quarter and year
use_caseNoWhat the capacity is for, e.g. "AI inference"
countriesNoComma-separated countries of interest, e.g. "Germany, Netherlands"
capacity_kwNoCapacity needed, in kW (capacity_mw is the same requirement in MW)
capacity_mwNoCapacity needed, in MW
accept_termsNoSet true ONLY after your human has read and agreed to the introduction terms at https://dchub.cloud/listings#terms. Unless it is exactly true, nothing is sent
terms_versionNoThe terms version your human agreed to, e.g. program.terms.version from source_capacity. Omit to send the version currently published

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations only tell the agent it is a non-readonly, non-destructive mutation; the description adds substantial context beyond that: it registers a lead, sends the provider ONLY the company name and requirement, shares identity/site/contact only on acceptance and nothing on decline, and requires an identified caller (claim_free_key then bind_email) plus accept_terms=true. This is exactly the kind of disclosure annotations cannot carry. It stops short of the very top only because idempotency/retry behavior on a duplicate request is unaddressed.

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 triggering condition ("Use this when...") and every sentence carries operational weight (modes, privacy behavior, prerequisites, follow-up). It is dense and long, but not padded or repetitive.

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 a 16-parameter, privacy-sensitive deal-registration tool with no output schema details needed from the description, it covers prerequisites, consent gating, disclosure semantics, mode selection, follow-up and exclusions. An agent has everything required to invoke it correctly and safely.

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 goes further by clustering parameters into the two operating modes (slug vs capacity_mw/capacity_kw, markets, states, regions, countries, timeline), which tells the agent which fields matter in which flow. It does not add syntax beyond that, so it earns a 4 rather than 5.

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?

Specific verb+resource (register a deal / request a capacity introduction) with the two distinct modes (slug vs standing requirement) spelled out, and it explicitly names the siblings it is not (save_site / set_site_alert). An agent can distinguish it from source_capacity, register_standing_intent and save_site 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 Guidelines5/5

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

States exactly when to use each mode (pass slug for a listing, omit slug plus capacity/markets/timeline for first access to upcoming listings), names the follow-up path (source_capacity shows status once registered), and gives an explicit exclusion with alternatives (do NOT use to save or monitor a site). Nothing is left to inference.

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

research_taskResearch Dossier (async)AInspect

Use this when the user wants an async, cited data center research dossier from DC Hub's corpora (news, deals, facilities, market deep-dive narratives + live market components) — a decision-ready analyst brief with [n] citations, not a lookup. Requires a key (one claim_free_key call), 5 dossiers/day. Submits the question, waits up to ~35s for completion, and returns the finished dossier inline when ready; if still running, returns {task_id} — call research_task task_id= to fetch it. Params: question (required for a new dossier, min 12 chars) OR task_id (poll an earlier one). Typical completion under a minute. Answers "write me a cited brief on this", "what do recent deals say about gas-bridged power". Try: research_task question="What do recent deals say about gas-bridged power for data centers in ERCOT?". Do NOT use for a single fact (use search_intelligence / semantic_search); this synthesizes ACROSS sources with citations.

NameRequiredDescriptionDefault
task_idNoPoll an earlier submission: the task_id returned by a previous research_task call
questionNoThe research question (min 12 chars) — omit when polling with task_id

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare non-readOnly/non-idempotent/non-destructive; the description goes well beyond them, disclosing async submission, the ~35s wait, the inline-vs-{task_id} return contract, the polling path, typical completion time, and the daily quota. This is the behavioral context an agent needs to call it correctly.

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?

Long but front-loaded: purpose, then auth/quota, then mechanics, then negatives and example. Every clause is functional, though the example invocation and multiple parentheticals make it denser than strictly necessary.

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-value detail is not required, yet the description still explains the inline-or-task_id outcome and polling. Combined with the async mechanics and quota, nothing an agent needs to invoke or follow up 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 baseline is 3, but the description adds meaning: question is 'required for a new dossier, min 12 chars' and task_id is for polling a prior submission, clarifying the mutually exclusive usage the schema states only tersely. Slightly redundant with the schema 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?

States a specific verb+resource: an async, cited research dossier synthesized across DC Hub corpora. It explicitly distinguishes itself from lookups ('not a lookup') and names the sibling tools it is not (search_intelligence / semantic_search). An agent can route without opening the 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?

Names when to use (user wants an async cited analyst brief), when not to use ('Do NOT use for a single fact'), and the concrete alternatives plus the example triggered phrasings. Auth requirement (one claim_free_key call) and quota (5 dossiers/day) are also stated.

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

save_siteSave SiteAInspect

Use this when the user wants to save a data-center site to track it. Needs a key (free, via claim_free_key); keyless returns auth_required. Save a candidate data-center site to your DC Hub account to track it across sessions. Give lat + lon (plus optional name, state, market, target_mw, notes). Returns the saved site id. Pass market and DC Hub snapshots the site's DCPI baseline at save time, so every later list_saved_sites / get_changes shows how ITS score and verdict moved since you saved it. Builds a persistent shortlist an agent can revisit + monitor — after saving, pass the returned id to set_site_alert so DC Hub emails you when that site’s DCPI/capacity/nearby-facilities move (no re-checking). Answers "remember this parcel for me", "keep this candidate so I can come back to it next session". Try: save_site lat=39.04 lon=-77.48 name="Ashburn parcel" market=northern-virginia target_mw=100. Do NOT use to read back the shortlist (use list_saved_sites), download it (use export_dataset), or score a site (use score_facility); this WRITES one site to your account.

NameRequiredDescriptionDefault
latNoSite latitude in decimal degrees (-90 to 90), e.g. 39.04
lngNoAlias for lon — either name works
lonNoSite longitude in decimal degrees (-180 to 180), e.g. -77.48
nameNoOptional label for the saved site, e.g. "Ashburn parcel"
notesNoOptional free-text notes to store with the saved site
stateNoUS state abbreviation for the site, e.g. VA
marketNoMarket slug (metro) the site belongs to, e.g. northern-virginia
latitudeNoAlias for lat — either name works
longitudeNoAlias for lon — either name works
target_mwNoTarget power load for the planned build in megawatts (MW), e.g. 100

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare the safety profile (readOnly=false, destructive=false, idempotent=false). The description adds real behavioral context beyond that: a key requirement with "keyless returns auth_required," the side effect that passing market snapshots a DCPI baseline, the returned id, and the downstream alert workflow via set_site_alert. This is rich disclosure the annotations do not 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-loads the trigger condition and the key requirement, and the do-not-use clause is placed last. It is somewhat garrulous — multiple restatements of "save a site to track it" and a hard-coded example — but no sentence is wasted enough to hurt comprehension.

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-value explanation is not required, and the description still notes it returns the saved site id. Combined with auth requirements, the alternatives map, and the monitoring workflow, 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?

Schema coverage is 100%, so baseline is 3; the description adds genuine semantic value by explaining that exposing `market` changes behavior (DC Hub snapshots the site's DCPI baseline at save time), which the schema does not convey. It also enumerates which fields are core vs optional, though it does not explain the lat/lon vs latitude/longitude alias handling.

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 and scope: "Save a candidate data-center site to your DC Hub account to track it across sessions." It explicitly distinguishes itself from get_shortlist/list_saved_sites (read-back) and score_facility (scoring), so an agent can identify it without reading sibling 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?

Gives explicit triggering conditions ("Use this when the user wants to save a data-center site to track it") plus negative routing: "Do NOT use to read back the shortlist (use list_saved_sites), download it (use export_dataset), or score a site (use score_facility)." Also provides natural-language user intents it satisfies.

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

save_to_shortlistSave To ShortlistAInspect

Use this when the user wants to keep a data center site on a named shortlist that survives across conversations (Phase 5 statefulness). Snapshots the site's objectives + its current percentile objective_score, so you can re-score it later against the evolving national baseline. Use to build a durable siting shortlist across days/weeks; the list is scoped to your API key. Pair with get_shortlist to re-score + see drift. MINIMAL call: save_to_shortlist(shortlist_name="my-targets", site={site_ref, lat, lng, capacity_mw}) — objectives are optional. If you DID rank the site (analyze_site / rank_sites), pass those metric fields inside site and your objectives map too, and the re-scoring reuses them. Requires an API key so the list is private to you and survives to your next conversation: call claim_free_key first if you have none.

NameRequiredDescriptionDefault
siteYesSite object. MINIMAL form is enough: {site_ref, lat, lng, capacity_mw}. Richer is better — add any analyze_site metric fields (risk_resilience, fiber_connectivity, water score…) and those become what gets re-scored later.
notesNoOptional free-text note, e.g. "strong fiber, acceptable water"
objectivesNoOPTIONAL {field: signedWeight} map (+maximize/-minimize) if this site was ranked under explicit objectives — stored so re-scoring reuses the same criteria. Omit it and DC Hub weights the site's own metric fields equally.
shortlist_nameYesName of the shortlist, e.g. "Q3-2026-1GW-targets" — created if new. REQUIRED.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only cover the write/idempotency/safety profile. The description adds substantially more: what is persisted (objectives map + current percentile objective_score), the re-scoring/drift semantics, that the list survives across conversations, and that it is scoped to the caller's API key, which implies an auth requirement. That is real behavioral context beyond the 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-loaded and dense, with the persistence rationale stated first and the call mechanics after. Slightly heavy: the minimal-site guidance appears in both the description and the site property schema, and the em-dash parentheticals ('Phase 5 statefulness') add noise an agent does not need to invoke the tool.

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?

A mutation tool with an output schema, so return values need not be described. Prerequisite (API key), scoping, persistence horizon, what gets stored, and the follow-up tool are all present; 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.

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, and the schema itself already explains objectives semantics and the site object. The description earns above baseline by giving a concrete minimal call signature with literal argument values and by clarifying the ranked-vs-unranked fork that determines whether objectives/metrics matter at call time.

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 ('keep a data center site on a named shortlist that survives across conversations') and immediately distinguishes the artifact from siblings: it is durable, API-key-scoped state paired with get_shortlist, not a one-off save_site. An agent can tell it apart from save_site, list_saved_sites, and get_shortlist 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 Guidelines5/5

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

Explicit when-to-use ('build a durable siting shortlist across days/weeks'), explicit minimal invocation with concrete argument values, explicit conditional guidance ('if you DID rank the site... pass those metric fields'), and an explicit prerequisite with the alternative named ('call claim_free_key first if you have none'). It also names get_shortlist as the downstream partner.

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

score_facilityScore FacilityA
Read-onlyIdempotent
Inspect

Use this when the user wants a 0-100 grade for one existing data center facility across 7 dimensions — power, fiber, water, climate_risk, tax_environment, talent_pool, expansion. Example: "How does the CoreWeave Las Vegas site score, power-weighted?" — score_facility facility_id= weighting=power_priority. Params: facility_id or name (required); weighting one of "balanced" (default) | "power_priority" | "risk_priority" | "expansion_priority". Returns: composite 0-100, tier_classification, peer comparison, and per-dimension detail. Do NOT use for a raw lat/lon parcel (use analyze_site), to compare 2 or more sites (use compare_sites), or to find similar sites (use find_alternatives).

NameRequiredDescriptionDefault
weightingNoScoring profile: "balanced" (default), "power_priority", "risk_priority", or "expansion_priority"
facility_idYesThe facility id/slug to score (required), from a prior search_facilities result

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds genuine context beyond them: the enumeration of the 7 scoring dimensions, the weighting profile that changes the grade, and the precondition that facility_id comes from a prior search_facilities result. It does not discuss latency or pagination, but neither is relevant for a deterministic read.

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 usage trigger, then example, params, return shape, and exclusions in a logical order with no filler sentences. It is dense but every clause carries routing or parameter information; the only mild bloat is repeating the four weighting values already in the schema.

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 the description need not fully specify return values, yet it still names the key outputs (composite, tier_classification, peer comparison, per-dimension detail). Combined with the 7-dimension enumeration and the alternative-tool routing, an agent has everything needed to select and call this tool 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 description coverage is 100%, so the schema already documents both parameters and the four weighting values. The description restates the weighting options and adds the origin of facility_id (prior search_facilities), but its phrase 'facility_id or name' slightly diverges from the schema, which exposes only facility_id as required. 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 (score) and resource (one existing data center facility) plus the exact scope: a 0-100 grade across 7 named dimensions. It explicitly rules out the siblings that could be confused with it (analyze_site, compare_sites, find_alternatives), so an agent can distinguish it 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 a clear triggering condition (user wants a grade for one existing facility), gives a concrete example query with parameters filled in, and closes with explicit exclusions routing to named alternatives for parcel analysis, multi-site comparison, and similar-site discovery. Nothing is left to inference.

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

search_facilitiesSearch FacilitiesA
Read-onlyIdempotent
Inspect

Use this when the user asks which data centers exist, or who operates in a city, state or country; filters: country, state, city, operator, MW range, tier or text. Returns name, operator, location, market, status and MW where disclosed; each row is flagged verified or unverified_directory_listing. Free: names and locations; MW and specs need a paid key. Ex: "Equinix sites in Virginia over 10 MW." Start here for a facility slug. No match = empty data, not an error: broaden filters. limit 1-500 (free tier 25); page with offset.

NameRequiredDescriptionDefault
cityNoCity name to filter facilities, e.g. Ashburn, Dallas
tierNoUptime Institute tier filter (1-4)
limitNoMax results to return (1-500; default varies by tool)
queryNoFree-text search over facility name/operator/location (mapped to the backend `q` param), e.g. "hyperscale Ashburn"
stateNoUS state abbreviation or region, e.g. VA, TX
offsetNoPagination offset, 0-based (skip this many results)
countryNoISO 3166-1 alpha-2 country code, e.g. US, GB, SG
operatorNoOperator/provider company name, e.g. Equinix, Digital Realty
max_capacity_mwNoMaximum power capacity filter in megawatts (MW)
min_capacity_mwNoMinimum power capacity filter in megawatts (MW)

Output Schema

NameRequiredDescription
dataNo
noteNo
tierNo
countNo
successNo
total_matchingNo
full_results_availableNo

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already cover the read-only/idempotent/non-destructive profile, and the description adds substantial context beyond them: free tier returns names and locations only, MW and specs require a paid key, rows carry a verified vs unverified_directory_listing flag, and empty results are normal. The free-tier limit of 25 vs 500 is also disclosed.

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?

Front-loaded with the usage trigger, then filters, then return shape, then access constraints and pagination — a logical order for an agent deciding whether to call. Sentences are semicolon-dense but each carries distinct, actionable information 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, yet the description still usefully previews the key fields and the verification flag, and it covers the access-tier caveat and pagination behavior that the schema cannot express. For a 10-parameter, zero-required search tool, nothing an agent needs before calling 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 all ten parameters are already documented, which sets the baseline at 3. The description adds meaning the schema does not: MW range filters are gated behind a paid key, and the limit parameter is capped at 25 on the free tier. It doesn't explain offset/limit interaction beyond 'page with offset,' hence 4 rather than 5.

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 (search facilities / data centers) plus the exact scope: country, state, city, operator, MW range, tier, text. It also distinguishes itself from slug-level lookups with 'Start here for a facility slug,' which routes agents to get_facility rather than a sibling search.

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 an explicit trigger ('Use this when the user asks which data centers exist, or who operates in...') and names the downstream alternative ('Start here for a facility slug'). It also gives a concrete example query and tells the agent what to do when nothing matches — broaden filters rather than treat it as an error.

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

search_intelligenceSearch IntelligenceA
Read-onlyIdempotent
Inspect

Use this when you need meaning-based search over DC Hub's data center intelligence corpus, choosing corpora — industry news, M&A deals, discovered facilities, per-market DCPI narratives, press releases, announcements, permitting intel, construction permits, tax incentives and the capacity pipeline — returning the most relevant records with citable source fields. This is the agent-friendly alias over the SAME retrieval layer as semantic_search: same results, different call shape. It takes query plus short corpus names (news | deals | facilities | market_narratives | press | announcements | permitting | permits | incentives | pipeline); semantic_search takes q plus the full corpus names. Call ONE of them, not both. Params: query (required, natural language); corpus (optional CSV of the names above, default all); limit (1-15, default 8). BEHAVIOUR: read-only — it writes nothing, and repeat calls with the same arguments return the same records. ACCESS: works with no key, but anonymous results come back as a TRIMMED PREVIEW; the session X-API-Key hydrates full depth per key, and the free tier is capped per day (call claim_free_key once — no email — if you do not hold a key).

NameRequiredDescriptionDefault
qNoAlias for query
limitNoMax results to return, 1-15 (default 8)
queryNoNatural-language query (required), e.g. "grids opening up for AI load in the Southeast"
corpusNoOptional corpus to restrict to: news | deals | facilities | market_narratives. CSV of several is allowed; default searches all.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/destructive, yet the description still adds real behavioral context: anonymous calls return a TRIMMED PREVIEW, the session X-API-Key hydrates full depth, and the free tier is capped per day. The read-only and same-arguments-same-records statements duplicate annotations, but the auth/rate-limit disclosure is genuinely additive.

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 use case before mechanics, and every clause carries information (routing, params, access, behavior). It is a single dense paragraph and the long corpus enumeration is bulky, but nothing is truly redundant.

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 annotations covering safety and an output schema covering returns, the description supplies everything else an agent needs: purpose, sibling disambiguation, parameter semantics, auth/prerequisite flow, and result-depth caveats. Nothing material is left unexplained.

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 baseline is 3, but the description goes further: it documents the q/query alias relationship, gives the natural-language meaning of query, states corpus is an optional CSV defaulting to all, and gives limit's 1-15 range and default of 8. It also lists corpus names that extend beyond the four shown in the schema description.

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 (meaning-based search over DC Hub's data center intelligence corpus) and enumerates the corpora it searches. It explicitly distinguishes itself from the closest sibling by naming semantic_search and describing the exact call-shape difference (alias over the SAME retrieval layer).

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 guidance: 'Call ONE of them, not both', plus when to use this alias vs semantic_search (short corpus names vs full names). It also names the prerequisite action for full results (claim_free_key once, no email) and the condition that triggers it (no key held).

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

set_market_alertSet Market AlertAInspect

Use this when the user wants alerts on a data center market's DCPI power score: subscribes to movement alerts (free with a key) — get notified when its Excess-Power / Constraint score moves. On the free tier, email alerts are delivered to the email your human bound via bind_email (call bind_email first; the destination is forced to that address). Set channel="email". Webhook delivery (channel="webhook" + destination=) needs a paid DC Hub plan. Lets an agent MONITOR markets, not just query them. Answers "tell me when this market moves", "ping me if Northern Virginia’s power score changes". Try: set_market_alert market=northern-virginia channel=webhook destination=https://hooks.example.com/dc. Do NOT use to read a market right now (use get_market_dcpi_rank); this SUBSCRIBES to future movement.

NameRequiredDescriptionDefault
marketYesMarket slug (metro) to watch, e.g. northern-virginia — valid slugs come from rank_markets / get_market_dcpi_rank
channelYesDelivery channel: "email" (free, sent to your bound email) or "webhook" (paid plan)
destinationNoFor channel="webhook", the https URL to POST alerts to (paid plan); ignored for email (forced to bound address)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only say it is not read-only and not idempotent; the description goes well beyond by disclosing tier economics (email free, webhook paid DC Hub plan), the forced destination on the free tier, and the bind_email prerequisite. That is exactly the operational context an agent needs before calling a subscribe-side-effect tool.

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 core purpose, then prerequisites, tiers, and a runnable example. Slightly redundant — 'Lets an agent MONITOR markets, not just query them' restates the do-not-use sentence that follows — but every part still earns its place.

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 no prose. For a 3-parameter mutation/subscription tool, the description covers prerequisites, channel selection, tier limits, valid slug source, and an invocation example — complete enough to call correctly on the first try.

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, but the description adds real meaning: market slugs must come from rank_markets / get_market_dcpi_rank, and destination is ignored for email because it is forced to the bound address. A worked example shows the channel/destination pairing in use.

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 — subscribing to movement alerts on a market's DCPI power score — and explicitly distinguishes itself from the read-path sibling get_market_dcpi_rank ('this SUBSCRIBES to future movement'). An agent can separate it from the other ~90 tools 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 Guidelines5/5

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

Gives explicit when-to-use ('tell me when this market moves', 'ping me if Northern Virginia's power score changes'), when-not-to-use ('Do NOT use to read a market right now'), the required prerequisite ('call bind_email first'), and the tier gating that selects each channel. Nothing is left to inference.

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

set_shortlist_alertSet Shortlist AlertAInspect

Use this when the user wants a drift alert on a saved site shortlist so you can stop polling and be notified when a site's national standing moves materially (Phase 5). Fires when any site in the shortlist has current percentile score < percentile_below OR score_delta_since_saved < delta_below (e.g. -8 = dropped 8 points vs when saved). Evaluated after each daily baseline refresh; delivers via webhook and/or email. This is the "wake me when it matters" loop for long-running siting campaigns. Scoped to your API key.

NameRequiredDescriptionDefault
notifyYesDelivery: {"webhook":"https://..."} and/or {"email":"you@co.com"} — at least one required
delta_belowNoFire if any site's score_delta_since_saved drops below this — pass a NEGATIVE number, e.g. -8 (dropped 8+ points since saved)
shortlist_nameNoThe shortlist to monitor (created via save_to_shortlist)
percentile_belowNoFire if any site's current percentile objective_score drops below this (e.g. 70)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Adds useful behavior beyond annotations: it fires on percentile or score-delta thresholds, is evaluated after each daily baseline refresh, and delivers via webhook and/or email. Annotations already cover read/write, idempotency, and destructiveness, but the description does not clarify whether repeated calls create duplicate alerts.

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 usage condition and then explains trigger logic, evaluation cadence, delivery, and scope. The 'wake me when it matters' phrasing is slightly promotional, but the description remains efficient overall.

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 that an output schema exists and annotations cover the safety profile, the description supplies the remaining operational context: monitored resource, trigger semantics, refresh cadence, delivery channels, and API-key scoping. It is complete enough for correct invocation.

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 description coverage is 100%, so the baseline is 3. The description adds meaning by explaining the OR relationship between percentile_below and delta_below and by reinforcing that delta_below should be negative, though much of this is already present in the 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: set a drift alert on a saved site shortlist. It also defines the monitored resource and trigger condition, which distinguishes it from sibling alert tools such as set_site_alert and set_market_alert.

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 says to use this when the user wants a drift alert on a saved shortlist and wants to stop polling. Context is clear, but it does not name alternatives or state when not to use it.

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

set_site_alertSet Site AlertAInspect

Use this when the user wants an email watch on a saved data center site (free with a key) — DC Hub emails you when that site’s DCPI score, grid capacity, or nearby facilities move, so you don’t have to keep re-checking. On the free tier the alert is delivered to your human’s bound email (call bind_email first; notify_email is forced to that address). A paid DC Hub plan can send to any address. The "monitor my shortlist for me" loop: call save_site first (it returns a saved_site_id), then set_site_alert on that id. Params: saved_site_id (required integer, from save_site or list_saved_sites), trigger_type ("dcpi_change" | "capacity_change" | "new_facility_nearby", default "dcpi_change"), threshold (number — the points/MW move that fires it, default 5), notify_email (required — the address the alert is sent to). Answers "let me know if anything changes at the site I saved". Try: set_site_alert saved_site_id=12 trigger_type=dcpi_change threshold=5 notify_email=you@firm.com. Returns {ok, alert_id, message}. Do NOT use to watch a whole MARKET (use set_market_alert) or to save a new site (use save_site); this arms a monitor on ONE already-saved site.

NameRequiredDescriptionDefault
thresholdNoThe points/MW move that fires the alert (default 5)
notify_emailYesEmail address the alert is sent to (required); on free tier forced to your human's bound email
trigger_typeNoWhat movement fires the alert: "dcpi_change" (default), "capacity_change", or "new_facility_nearby"
saved_site_idYesThe saved_site_id returned by save_site or list_saved_sites (required)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare this is a non-readonly, non-destructive, non-idempotent mutation. The description adds real context beyond that: free-tier delivery is forced to the bound email, bind_email is a hard precondition, and it returns {ok, alert_id, message}. It does not spell out tier/permission failure behavior, but the added value over annotations is substantial.

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?

Dense but front-loaded with the core purpose, then preconditions, then the workflow, then params, example, return shape, and exclusions. Several clauses are mildly redundant but almost every sentence carries operative content; a small trim would help.

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 a stateful mutation with preconditions, the description covers the prerequisite chain, tier constraints, parameter meanings, an invocation example, and the return shape. An agent has everything needed to call it correctly on the first attempt.

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 baseline is 3, but the description adds meaning the schema does not: which is required, that saved_site_id comes from save_site/list_saved_sites, the trigger_type semantics, threshold units, and the free-tier override that forces notify_email to the bound address.

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 (arm an email watch on a saved site) and names exactly what it distinguishes from siblings: set_market_alert for whole markets and save_site for creating a site. An agent can route between all three alert tools 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 Guidelines5/5

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

Gives explicit when-to-use ('let me know if anything changes at the site I saved'), prerequisites (bind_email first on free tier, save_site first in the loop), and explicit exclusions with named alternatives. Nothing is left to inference.

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

simulate_scenarioMarket Scenario SimulatorA
Read-onlyIdempotent
Inspect

Use this when the user asks how data center power market rankings change under what-if conditions: re-scores 300+ DC Hub markets under your deltas. Params (all optional, pass at least one delta): avg_kwh_cents_pct (power-price % change, e.g. 30), time_to_power_months_delta (months added/removed), queue_wait_months_delta, reserve_margin_pct_delta (points), curtailment_pct_delta (points), market (one slug, e.g. abilene), top_n (default 10, max 25 — ranked by |score change|). Returns per-market baseline vs scenario composite + component breakdown + the EXACT formula/weights in every response (transparent scenario_composite — deliberately NOT the DCPI). Keyless callers get a top-3 preview; any live key (claim_free_key) returns up to 25. Answers "what happens to the ranking if power prices jump 30%", "which markets survive a tighter build rate". Try: simulate_scenario avg_kwh_cents_pct=30 top_n=10. Do NOT use for the present-day ranking (use rank_markets) or trajectory extrapolation (use predict_market_trajectory); this answers explicit hypotheticals.

NameRequiredDescriptionDefault
top_nNoMarkets to return, ranked by |score delta| (default 10)
marketNoScore ONE market by slug (optional), e.g. abilene — slugs from rank_markets
avg_kwh_cents_pctNoPower price % change, e.g. 30 for +30% or -20 for -20%
curtailment_pct_deltaNoPercentage POINTS added/removed from curtailment
queue_wait_months_deltaNoMonths added/removed from interconnection queue wait
reserve_margin_pct_deltaNoPercentage POINTS added/removed from reserve margin, e.g. -5
time_to_power_months_deltaNoMonths added (+) or removed (-) from time-to-power, e.g. 12

Output Schema

NameRequiredDescription

No output parameters

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), and the description adds substantial context beyond them: keyless callers get a top-3 preview while any live key (claim_free_key) returns up to 25, and every response carries the exact formula/weights, deliberately distinct from the DCPI. This is behavioral detail the annotations cannot express.

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 routing constraints, and every clause carries weight (examples, key tiers, alternatives). It is dense and long, but for a 7-param simulation tool with tiered access the density is largely earned rather than padding.

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-value detail is not required, yet the description still signals the rank-by-delta ordering and the transparent formula. Trigger, exclusions, parameter constraints, and access tiers are all covered, leaving nothing an agent needs to call it 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, but the description adds value the schema does not: all params are optional and at least one delta must be passed, top_n defaults to 10 (max 25) ranked by |score change|, and worked examples (30, 12, -5). It clarifies intent beyond the raw 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?

States a specific verb and resource: re-scores 300+ DC Hub markets under supplied deltas to produce what-if rankings. It explicitly names what it is not (rank_markets for present-day, predict_market_trajectory for extrapolation), so an agent can distinguish it from siblings 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?

Gives an explicit trigger ('when the user asks how data center power market rankings change under what-if conditions'), explicit exclusions ('Do NOT use for the present-day ranking... or trajectory extrapolation'), and names the correct sibling for each alternative. Nothing is left to inference.

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

site_selection_canvasSite Selection CanvasA
Read-onlyIdempotent
Inspect

Use this when the user wants guided data-center site selection. Give a capacity target + geography + deadline and get a ranked shortlist of US markets (DCPI verdict, excess-power headroom, time-to-power, ISO) — and, with a paid key, the synthesis decision layer: the #1 pick, the why, a build sequence, and risk flags. One find->rank->shortlist->verdict call over the Data Center Power Index. Answers "where should I build 100 MW in Texas by 2028". Try: site_selection_canvas capacity_mw=100 region=TX max_months=24. Do NOT use for a single known parcel (use analyze_site) or an open-ended where-should-I-build question (use get_dchub_recommendation); this runs the full find to rank to shortlist to verdict flow.

NameRequiredDescriptionDefault
isoNoISO/RTO code, e.g. ERCOT or PJM — alias for `region`. Use either; `region` wins if both are sent.
limitNoNumber of shortlist markets to return
stateNoUS state code, e.g. OH — alias for `region`. Use either; `region` wins if both are sent.
regionNoGeography scope: a US state code like TX, an ISO like ERCOT, or a region like us/apac. `state` and `iso` are accepted as aliases for this same filter.
verdictNoOptional DCPI verdict filter: BUILD, CAUTION, or AVOID — or ALL to see every scored market in the geography. Defaults to BUILD,CAUTION, so a geography whose markets are all AVOID returns matched:0 plus an `empty_result` block explaining…
max_monthsNoMaximum acceptable time-to-power in months, 1-120, e.g. 24
capacity_mwNoTarget power load for the build in megawatts (MW), 1-5000, e.g. 100

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds non-obvious behavior beyond that: the paid-key gate on the synthesis decision layer, the composite multi-stage flow, and the default verdict filter that yields matched:0 with an empty_result block. Missing only cost/latency or result-size expectations for a multi-stage call.

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, then inputs/outputs, then a try-it example, then exclusions — a sensible order with little waste. The monetization clause ('and, with a paid key, the synthesis decision layer...') is the one part that could be shortened without losing agent-relevant meaning.

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

Completeness4/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, and the description covers trigger, alternatives, paid-tier behavior, and a sample call. What remains thin is the empty/default-verdict path and the region-vs-ISO aliasing, both left entirely to the schema.

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 earns extra by mapping the three conceptual inputs (capacity target, geography, deadline) onto capacity_mw/region/max_months and giving a literal invocation example. Minor tension: it describes a 'US markets' shortlist while the schema allows region values like us/apac, which is not reconciled in the description.

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 chain and resource: 'one find->rank->shortlist->verdict call over the Data Center Power Index', with the exact inputs (capacity target + geography + deadline) and outputs (ranked US markets with DCPI verdict, headroom, time-to-power, ISO). It also names what it is not (analyze_site, get_dchub_recommendation), so an agent can separate it from ~60 siblings 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 Guidelines5/5

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

Explicit trigger ('when the user wants guided data-center site selection'), a concrete example question, and two named exclusions with the correct alternative for each: single known parcel -> analyze_site, open-ended question -> get_dchub_recommendation. This is the full when/when-not/alternative pattern.

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

source_capacitySource CapacityA
Read-onlyIdempotent
Inspect

Use this when the user needs data center or colocation capacity to buy or lease: search DC Hub Capacity Source by size (kW or MW) and/or location (a region such as North America or Europe, a country, a state or a metro). Example: "500 kW anywhere in Europe" → min_kw=500, region=europe. Size is min_kw (in kW) or min_mw (in MW), and it is matched against what a listing can ACTUALLY deliver rather than against its headline total: contiguous_kw is the largest single contiguous block available and min_contract_kw the smallest chunk the provider will contract, so a colocation with a large total but a small contiguous block does NOT answer a large search, while a large site willing to contract small chunks does; a listing that declares neither is matched on its total. Location is region (a region key or alias) or location (free text matched against each listing's region, country, state and metro); market, state, delivery_type and available_by narrow further. Listings are powered land, powered shells, turnkey capacity and colocation to buy or lease, for enterprise and agent-led procurement.

NameRequiredDescriptionDefault
slugNoOne listing: its slug or numeric id exactly as items[].slug / items[].id return it. Omit to browse teaser cards
limitNoMax results to return (1-500; default varies by tool)
stateNoBrowse filter: two-letter US state, e.g. "TX"
marketNoBrowse filter: market name as it appears on a listing, e.g. "Dallas"
min_kwNoBrowse filter: the size your human needs, in kW (min_mw is the same filter in MW). Matched against what a listing can ACTUALLY deliver, not just its headline total: contiguous_kw is the largest single contiguous block available and…
min_mwNoBrowse filter: the size your human needs, in MW (min_kw is the same filter in kW). Matched against what a listing can ACTUALLY deliver, not just its headline total: contiguous_kw is the largest single contiguous block available and…
regionNoBrowse filter: comma-separated regions from north_america, latin_america, europe, asia_pacific and middle_east_africa; the aliases emea, apac, latam and americas also work, e.g. "europe" or "emea, apac"
locationNoBrowse filter: comma-separated free text matched against each listing's region, country, state and metro, e.g. "Germany" or "Texas, Phoenix"
max_sitesNoMatch mode: how many listings the requirement may be split across. Default one, which allows exact fits only; raise it to allow bundles
target_kwNoMatch mode: the whole requirement, in kW (target_mw is the same in MW; give one)
target_mwNoMatch mode: the whole requirement, in MW (target_kw is the same in kW; give one). Returns exact fits, bundles and a shortfall instead of teaser cards. Needs a signed-in human
available_byNoBrowse filter: only listings available by this date, as YYYY-MM or YYYY-MM-DD. With a target it is the date the whole requirement must be deliverable by
min_chunk_kwNoMatch mode: the smallest piece, in kW, your human will contract at any one listing. Default: no minimum
delivery_typeNoBrowse filter: how the capacity is delivered: land, powered_shell, turnkey or colocation
max_providersNoMatch mode: how many different providers a bundle may use. Default: the same as max_sites

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

It goes far beyond basic annotations by detailing crucial operational behavior. It explains that size matching is against what the listing can ACTUALLY deliver (contiguous_kw, min_contract_kw) rather than just the headline total, which is vital for accurate query generation.

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 necessarily dense due to the complexity of the matching logic. However, it front-loads the purpose and provides highly efficient, information-rich sentences throughout.

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 the high number of parameters and the advanced business logic involved in capacity matching, the description is extremely complete. It defines the core search rules, location parsing, and supported listing types.

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?

Although the schema coverage is 100%, the description adds indispensable semantic depth. It clarifies exactly how size parameters are evaluated (the 'actual delivery' constraint) and how the location parameter functions (free text match vs. region alias).

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 clearly defines the tool's purpose: finding data center or colocation capacity for buying or leasing. This distinction targets a specific high-value use case, effectively separating it from general site analysis or index lookup tools.

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?

It provides a very strong 'when to use' condition (user needs capacity to buy or lease). While it does not explicitly list competing siblings, the defined domain narrows the usage scope successfully.

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

subscribe_digestSubscribe DigestAInspect

Use this when the user asks for a weekly data center market email: subscribes them to a free digest of what changed in the markets and sites they queried (DCPI movers, new facilities, deals, news). DOUBLE opt-in + consent-safe: we email a one-click CONFIRM link, the human only gets the digest after confirming, and every email has one-click unsubscribe — this call alone sets no marketing flag. Only call once your human shares their email and wants a weekly email. Params: email (required), source (optional tag). Returns {ok, sent, message}. Prefer this over hand-building POST /api/v1/opt-in/request.

NameRequiredDescriptionDefault
emailYesYour human's email address (required) — a one-click confirm link is sent; use only an address they explicitly gave
sourceNoOptional attribution tag for where the subscription came from, e.g. mcp_digest

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already mark this as a non-readOnly write (readOnlyHint=false), but the description goes well beyond them: it discloses the double opt-in flow (confirm link, digest only after confirmation), one-click unsubscribe, and crucially that this call sets no marketing flag. This is exactly the kind of side-effect disclosure a mutation tool needs.

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?

It is front-loaded with the trigger condition and the safety model ahead of parameter notes, and most sentences earn their place. The caps emphasis and the enumerated DCPI/facilities/deals/news list add slight density, but structure remains readable.

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 a consent-sensitive write tool with an output schema and full annotations, the description covers trigger, precondition, safety model, parameters, and prefer-alternative. An output schema exists, so the brief '{ok, sent, message}' mention is a bonus rather than a gap. Nothing needed to call it 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 the schema already documents email and source with more detail than the description. The description's 'email (required), source (optional tag)' restates the schema without adding syntax or format meaning. 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?

The description gives a specific verb (subscribes) and a concrete resource (a weekly data center market email digest covering DCPI movers, new facilities, deals, news). It is clearly distinguishable from sibling alert tools like set_market_alert and set_site_alert because it names the email-digest artifact explicitly.

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 states exactly when to use it ('when the user asks for a weekly data center market email'), the precondition ('only call once your human shares their email and wants a weekly email'), and routes away from an alternative ('prefer this over hand-building POST /api/v1/opt-in/request'). Nothing is left to inference.

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

suggest_reallocationSuggest ReallocationA
Read-onlyIdempotent
Inspect

Use this when a saved data center site drifts (its national standing dropped — surfaced by get_shortlist refresh or a set_shortlist_alert firing), get replacement candidates from the rest of that shortlist so the alert becomes an action, not just a warning (Phase 5). Returns TWO tiers — tier_1_same_region (a near-in tactical swap) and tier_2_cross_region (a different-region arbitrage) — each re-scored against the DRIFTED slot's own objectives, PLUS drift_is_systemic: if the rest of your shortlist also slipped, the drop is region/baseline-wide and a same-region swap will inherit it (prefer cross_region); if peers held, it's idiosyncratic (tactical_ok). DC Hub does the reduction; the final weighted pick is yours. Candidates come from THIS shortlist only (save more via save_to_shortlist to widen the pool). Scoped to your API key.

NameRequiredDescriptionDefault
shortlist_nameYesThe shortlist to re-allocate within (created via save_to_shortlist)
drifted_site_refNoOptional site_ref of the drifted slot to replace; if omitted, the current lowest-scoring site is treated as the drifted one

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover the safe-read profile (readOnly, idempotent, non-destructive), and the description adds substantial context beyond them: candidates are scoped to THIS shortlist only, the API-key scoping, the semantics of drift_is_systemic, and the division of labor ('DC Hub does the reduction; the final weighted pick is yours').

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 usage trigger and dense but largely waste-free; every clause carries information. The nested parentheticals make it heavy to parse, but nothing is 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?

Covers trigger, candidate source, scoping, tier structure, and interpretation guidance for drift_is_systemic — more than required given an output schema already exists. An agent has everything needed to call it and act on the result.

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% and both parameters are documented in the schema, so the schema does the heavy lifting. The description references the 'DRIFTED slot's own objectives' but adds no syntax or format detail beyond what the schema already states about shortlist_name and drifted_site_ref.

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 (get replacement candidates for a drifted site from within a shortlist) and names the triggering siblings (get_shortlist refresh, set_shortlist_alert). An agent can distinguish it from find_alternatives, compare_sites, or get_dchub_recommendation 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?

Explicit trigger ('when a saved data center site drifts'), a named condition for the alternative source of candidates (save_to_shortlist to widen the pool), and a directive about what to prefer (cross_region when drift_is_systemic). Nothing is left to inference.

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

summarize_for_citationCitation BlockA
Read-onlyIdempotent
Inspect

Use this when you quote a DC Hub data center or power figure: returns one paste-ready attribution line for the value you are about to cite, with the CORRECT licence for that layer. Pass what you read off the response you are citing: subject (what the figure is), as_of (the provenance as_of), url (the row's profile_url or dcpi_url), completeness (the completeness flag), and layer. ★ LICENCE IS PER LAYER AND THIS IS THE POINT: DCPI verdicts and composite scores (CC-BY-4.0 30 days after the day they describe; current values: quote up to five markets per piece, republishing needs a DCPI licence, https://dchub.cloud/terms#dcpi-current-data), band thresholds, methodology and DC Hub's own grid/site analysis (CC-BY-4.0) are yours to quote with attribution; the facility inventory and third-party physical layers are COMPOSITES whose upstream terms DC Hub cannot waive (parts are OpenStreetMap, ODbL 1.0, share-alike), so they carry a pointer to https://dchub.cloud/data-sources instead of a grant. A flat "CC-BY-4.0" over a facility record is an over-claim. Returns {citation_text, cite_as, license, license_basis, source, url, as_of, as_of_basis, completeness, omitted}. Free, no key, no network call — it assembles what you pass and never resolves or invents a value.

NameRequiredDescriptionDefault
urlNoThe profile_url or dcpi_url from the cited row. Must be a dchub.cloud URL; anything else is dropped and named in `omitted`.
as_ofNoThe as_of you read off the cited response (provenance.as_of). Omit it and the line says RETRIEVED instead of claiming a data date.
layerNoWhich layer the figure came from: dcpi | grid_analysis | facility_inventory | physical_infrastructure | deals | other. Decides the licence line; omit and you get the scoped statement rather than a grant.
subjectNoWhat you are citing, in the words you will show the human, e.g. "Ashburn DCPI verdict" or "ERCOT interconnection queue depth"
completenessNoThe completeness flag from the cited response, if it carried one

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations (readOnly/idempotent/openWorld=false), it discloses that the call is free, needs no key, makes no network call, and 'never resolves or invents a value' — a critical anti-hallucination guarantee. It also discloses the failure mode (non-dchub.cloud URLs are dropped and named in `omitted`) and the licence-policy rationale for composite layers.

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

Conciseness3/5

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

The trigger is correctly front-loaded, but the body is a single dense run-on packed with parentheticals, two URLs, and a ★ marker. The licence taxonomy is genuinely complex, yet the content could be split into short sentences and the return-field list dropped since an output schema exists.

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 a zero-required-parameter assembly utility, the description covers the trigger, the provenance chain for each input, the licence decision rules per layer, and the degradation behavior when inputs are missing or invalid. Nothing an agent needs to call it correctly is absent.

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 five parameters including the omission consequences for `as_of` and `layer`. The description adds the workflow framing ('pass what you read off the response you are citing') but largely restates what the schema says, so the baseline of 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?

The description states a specific verb and artifact: it returns one paste-ready attribution line with the correct per-layer licence for a figure you are about to cite. No sibling tool in the list does citation assembly, and the description makes that role unmistakable within the first clause.

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?

'Use this when you quote a DC Hub data center or power figure' gives an explicit trigger, and the warning that 'a flat CC-BY-4.0 over a facility record is an over-claim' tells the agent what not to do instead. The call-site inputs are also enumerated, so the agent knows what to gather before invoking.

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

unlock_more_dataUnlock More DataAInspect

Use this when the user asks how to get full (non-preview) DC Hub data center results. Returns the access options with links for the user to open. If this call carries an API key or an MCP session, the checkout binds to it and your very next call returns full data (no reconnect); if it carries neither, the key is emailed to the payer instead — the response says which applies in next_call_full_after_checkout and after_checkout. Paid plans: on the page behind the human_url link. Want the FREE tier instead (no payment, previews plus 2 full answers per tool per day, 50/day with an email)? Call claim_free_key. A gated result already carries its link in human_url; that link is the one to share, and this tool returns the fuller ladder. Param: reason (optional — what you were trying to do, so your human sees why it matters). Returns {plans, human_message, what_unlocks}.

NameRequiredDescriptionDefault
reasonNoOptional free-text describing what you were trying to do, so your human sees why an upgrade matters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations declare non-read-only and non-idempotent but say nothing about why; the description fills that gap by explaining the checkout binding (API key or MCP session -> next call returns full data) versus the emailed-key fallback, and names the response fields that report which case applies. That is exactly the beyond-annotation context needed for a paid-unlock tool.

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?

Trigger and behavior are front-loaded, and each sentence carries routing or side-effect information. It is denser than necessary with stacked parentheticals, but almost no sentence is purely 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-value explanation is not required, and the description still notes which response fields matter. Usage, alternatives, and the post-checkout side effect are all covered for a one-param tool.

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?

There is only one optional param with 100% schema description coverage, so the schema already documents it fully. The description's 'reason (optional — what you were trying to do, so your human sees why it matters)' largely restates the schema rather than adding new syntax or format meaning.

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 states a specific trigger and outcome: full (non-preview) DC Hub results, returning access options with links. It clearly separates itself from the free-tier sibling claim_free_key without the agent needing to open either 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?

Explicit when-to-use ('when the user asks how to get full (non-preview) data'), explicit alternative with its own trigger ('Want the FREE tier instead... Call claim_free_key'), and guidance on when a human_url link is already sufficient. Nothing is left to inference.

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

why_dchubDC Hub Coverage and SourcesA
Read-onlyIdempotent
Inspect

Use this when the user asks what DC Hub covers, where its data center, power grid and energy data comes from, how current it is, or what it does not cover. Returns a factual coverage summary: coverage, sources, feed freshness, published limits and the citation format. Free, no key. Not for data queries.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds genuinely non-obvious operational context — that the call is free with no key required — plus the nature of the response as a factual summary. It stops short of describing rate limits or failure modes.

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 sentences, zero filler. The trigger condition leads, the returned payload follows, and the negative scope is placed last as a short guard clause. Every clause earns its place.

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 a zero-parameter meta tool with an output schema already present, the description supplies everything an agent needs: trigger conditions, exclusions, and cost/auth expectations. Return-value detail is redundant with the output schema but not harmful.

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, so there is nothing for the description to disambiguate and the baseline of 4 applies. The description correctly signals a no-argument call by never implying any input is needed.

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 specific verb and resource — it returns a factual coverage/sources summary for DC Hub — and lists the exact content types (sources, feed freshness, published limits, citation format). It also draws an explicit boundary against data-query siblings, which matters given ~90 similarly-named data tools.

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 enumerates concrete user intents that trigger this tool ("what DC Hub covers", "where its data comes from", "how current it is", "what it does not cover") and adds an explicit exclusion: "Not for data queries." Nothing about when to pick this over get_dchub_recommendation or the data tools is left to inference.

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. 1 tool update
    • Changedget_facility1 field changed
      • changedInput schema / properties / slug / description
        Previous value: -"Facility slug from a prior search result, e.g. digital-realty-iad8"New value: +"Facility slug from a prior search result, e.g. digital-realty-digital-realty-iad38-ashburn-5754e62d"
  2. 1 tool updatev2.12.47
    • Changedget_energy_prices3 fields changed
      • removedOutput schema / properties / grid_status
        Removed value: -{}
      • addedOutput schema / properties / natural_gas
        Added value: +{}
      • removedOutput schema / properties / wholesale_price_usd_mwh
        Removed value: -{}
  3. 94 tool updatesv2.12.45
    • Changedaccept_capacity_terms9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedai_capacity_index9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedanalyze_parcel9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedanalyze_site36 fields changed
      • changedInput schema / properties / candidate_id / description
        Previous value: -"PREFERRED for queue survivors: a cand_… id from get_refined_queue — coordinates come from the FROZEN mint (lat/lon args are ignored; zero transcription drift; expired ids fail closed with candidate_expired). See dchub.cloud/docs/candidate-lifecycle"New value: +"PREFERRED for queue survivors: a cand_… id from get_refined_queue — coordinates come from the FROZEN mint (lat/lon args are ignored; zero transcription drift; expired ids fail closed with candidate_expired)."
      • changedInput schema / properties / location / description
        Previous value: -"Market NAME or metro slug instead of coordinates, e.g. \"ashburn\", \"northern-virginia\", \"dallas\". Resolved to that market's PUBLISHED CENTROID through the DCPI market row, and the answer carries a resolved_from block saying so. This is a MARKET-level read, not the parcel you named — pass lat/lon for a specific site. Not an alias for lat/lon: a place name is not a coordinate."New value: +"Market NAME or metro slug instead of coordinates, e.g. \"ashburn\", \"northern-virginia\", \"dallas\". Resolved to that market's PUBLISHED CENTROID through the DCPI market row, and the answer carries a resolved_from block saying so."
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"Multi-factor site suitability for one lat/lon: composite score + verdict (+ per-factor breakdown, nearby infra, power cost, fiber on paid) — alongside the DC Hub envelope keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / composite_score / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / composite_score / description
        Removed value: -"0-100 composite site suitability score (free HEADLINE tier and full tier)"
      • removedOutput schema / properties / fiber / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / fiber / description
        Removed value: -"Fiber read: {connectivity_score, nearest_carrier_km, near_net_bucket, top_carriers[], single_carrier_risk} (full payload)"
      • removedOutput schema / properties / interpretation / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / interpretation / description
        Removed value: -"Verdict prose on the full payload"
      • removedOutput schema / properties / limiting_factor / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "factor": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "The lowest-scoring factor"
        -      },
        -      "note": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Why it limits the site"
        -      },
        -      "of": {
        -        "anyOf": [
        -          {
        -            "anyOf": [
        -              {
        -                "type": "number"
        -              },
        -              {
        -                "type": "string"
        -              }
        -            ]
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Scale maximum (100)"
        -      },
        -      "score": {
        -        "anyOf": [
        -          {
        -            "anyOf": [
        -              {
        -                "type": "number"
        -              },
        -              {
        -                "type": "string"
        -              }
        -            ]
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Its score"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / limiting_factor / description
        Removed value: -"Single top limiting factor (the lowest sub-score) — always present on the free headline"
      • removedOutput schema / properties / location / description
        Removed value: -"Echo of the analyzed location (full payload)"
      • removedOutput schema / properties / locked / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / locked / description
        Removed value: -"Which sections are locked to a paid plan on the free headline: {per_factor_breakdown, nearby_infrastructure, power_cost, fiber_carriers, site_analysis_report}"
      • removedOutput schema / properties / nearby / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / nearby / description
        Removed value: -"Nearby infrastructure counts: {substations_50km, power_plants_80km, gas_pipelines_50km, facilities_100km, fiber_carriers_in_state, generation_capacity_mw, total_capacity_mw} (full payload)"
      • removedOutput schema / properties / overall_score / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / overall_score / description
        Removed value: -"Alias of composite_score on the full payload"
      • removedOutput schema / properties / power_cost / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / power_cost / description
        Removed value: -"Power cost read: {industrial_cents_kwh, commercial_cents_kwh, period, basis} (full payload)"
      • removedOutput schema / properties / preview / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / preview / description
        Removed value: -"Headline preview line (free tier)"
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / scores / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "fiber_connectivity": {
        -        "anyOf": [
        -          {
        -            "anyOf": [
        -              {
        -                "type": "number"
        -              },
        -              {
        -                "type": "string"
        -              }
        -            ]
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "0-100"
        -      },
        -      "gas_pipeline_access": {
        -        "anyOf": [
        -          {
        -            "anyOf": [
        -              {
        -                "type": "number"
        -              },
        -              {
        -                "type": "string"
        -              }
        -            ]
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "0-100"
        -      },
        -      "market_conditions": {
        -        "anyOf": [
        -          {
        -            "anyOf": [
        -              {
        -                "type": "number"
        -              },
        -              {
        -                "type": "string"
        -              }
        -            ]
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "0-100"
        -      },
        -      "power_infrastructure": {
        -        "anyOf": [
        -          {
        -            "anyOf": [
        -              {
        -                "type": "number"
        -              },
        -              {
        -                "type": "string"
        -              }
        -            ]
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "0-100"
        -      },
        -      "risk_resilience": {
        -        "anyOf": [
        -          {
        -            "anyOf": [
        -              {
        -                "type": "number"
        -              },
        -              {
        -                "type": "string"
        -              }
        -            ]
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "0-100"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / scores / description
        Removed value: -"Per-factor breakdown (full/paid payload)"
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
      • removedOutput schema / properties / site_headline / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / site_headline / description
        Removed value: -"true when this is the free citable HEADLINE (score + verdict + limiting factor)"
      • removedOutput schema / properties / verdict / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / verdict / description
        Removed value: -"Verdict string, e.g. \"Excellent site\" / BUILD-CAUTION-AVOID read"
    • Changedbind_email9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedclaim_free_key9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedcluster_sites_by_latency11 fields changed
      • changedInput schema / properties / candidate_ids / description
        Previous value: -"Array (or comma-separated string) of candidate_id values from get_refined_queue — each resolves to its FROZEN mint coordinates (zero transcription drift); expired/unknown are dropped and declared in candidate_contract. Use instead of, or alongside, sites"New value: +"Array (or comma-separated string) of candidate_id values from get_refined_queue — each resolves to its FROZEN mint coordinates (zero transcription drift); expired/unknown are dropped and declared in candidate_contract."
      • changedInput schema / properties / sites / description
        Previous value: -"Semicolon-separated \"lat,lon\" pairs, 2-8 sites (same format as compare_sites locations); optional per-site labels via \"lat,lon:label\", e.g. \"39.04,-77.48:ashburn;39.29,-76.61:baltimore\". cand_… tokens are also accepted here and resolve to frozen mint coordinates. Optional if candidate_ids is given"New value: +"Semicolon-separated \"lat,lon\" pairs, 2-8 sites (same format as compare_sites locations); optional per-site labels via \"lat,lon:label\", e.g. \"39.04,-77.48:ashburn;39.29,-76.61:baltimore\"."
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedcompare_isos10 fields changed
      • changedInput schema / properties / isos / description
        Previous value: -"Comma-separated list of 2-4 US ISO/RTO grid regions to compare, e.g. \"PJM,ERCOT,CAISO\" (valid: ERCOT, PJM, MISO, CAISO, SPP, NYISO, ISONE)"New value: +"Comma-separated list of 2-4 grids to compare, e.g. \"PJM,ERCOT,CAISO\" or \"ERCOT,AESO,EU_DE_LU\": US ISOs (ERCOT, PJM, MISO, CAISO, SPP, NYISO, ISONE), TVA, BPA, utility BAs, or non-US grids (IESO, AESO, HYDROQUEBEC, NGESO, EU_<zone>,…"
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedcompare_sites9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changeddeal_autopsy9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changeddelete_standing_intent9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changeddiscover_tools9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedexecute_plan11 fields changed
      • changedInput schema / properties / cohort / description
        Previous value: -"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."New value: +"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."
      • changedInput schema / properties / intent / description
        Previous 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\""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\" ·…"
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedexport_dataset9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedfetch9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedfind_alternatives9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedfind_sites9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedgenerate_site_analysis9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_agent_registry9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_backup_status9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_changes9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_climate_intel9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_composite_site_score9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_dchub_recommendation9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_disaster_risk9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_energy_prices35 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"Live energy pricing for one US ISO: retail cents/kWh + wholesale + natural gas context — alongside the DC Hub envelope keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / as_of / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / as_of / description
        Removed value: -"Pricing as-of timestamp"
      • removedOutput schema / properties / avg_rate_kwh / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / avg_rate_kwh / description
        Removed value: -"Average rate, cents/kWh"
      • removedOutput schema / properties / caller_tier / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / caller_tier / description
        Removed value: -"Tier the response was served at"
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / filter / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "iso": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "ISO filter echoed back"
        -      },
        -      "sector": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Sector the rate covers"
        -      },
        -      "state": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "State filter echoed back"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / filter / description
        Removed value: -"Echo of the applied filters"
      • removedOutput schema / properties / gated / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / gated / description
        Removed value: -"true when parts of the payload were withheld by tier"
      • removedOutput schema / properties / grid_status / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / grid_status / description
        Removed value: -"Real-time grid status flag (when served)"
      • removedOutput schema / properties / industrial_rate_kwh / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / industrial_rate_kwh / description
        Removed value: -"Industrial electricity rate, cents/kWh"
      • removedOutput schema / properties / natural_gas_usd_mmbtu / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / natural_gas_usd_mmbtu / description
        Removed value: -"Henry Hub-referenced natural gas price, USD/MMBtu (when served)"
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / retail_rate_kwh / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / retail_rate_kwh / description
        Removed value: -"Retail electricity rate, cents/kWh"
      • removedOutput schema / properties / retail_rates / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "avg_cents_kwh": {
        -        "anyOf": [
        -          {
        -            "anyOf": [
        -              {
        -                "type": "number"
        -              },
        -              {
        -                "type": "string"
        -              }
        -            ]
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Average retail, cents/kWh"
        -      },
        -      "latest_period": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "EIA period the rates come from"
        -      },
        -      "max_cents_kwh": {
        -        "anyOf": [
        -          {
        -            "anyOf": [
        -              {
        -                "type": "number"
        -              },
        -              {
        -                "type": "string"
        -              }
        -            ]
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Maximum, cents/kWh"
        -      },
        -      "min_cents_kwh": {
        -        "anyOf": [
        -          {
        -            "anyOf": [
        -              {
        -                "type": "number"
        -              },
        -              {
        -                "type": "string"
        -              }
        -            ]
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Minimum, cents/kWh"
        -      },
        -      "states_covered": {
        -        "anyOf": [
        -          {
        -            "anyOf": [
        -              {
        -                "type": "number"
        -              },
        -              {
        -                "type": "string"
        -              }
        -            ]
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "States in the aggregate"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / retail_rates / description
        Removed value: -"Retail-rate aggregate block"
      • removedOutput schema / properties / scope / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / scope / description
        Removed value: -"What the figures cover (e.g. the ISO/state scope line)"
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
      • removedOutput schema / properties / success / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / success / description
        Removed value: -"true when the pricing lookup succeeded"
      • removedOutput schema / properties / wholesale_price_usd_mwh / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / wholesale_price_usd_mwh / description
        Removed value: -"Wholesale / LMP context, USD/MWh (when served)"
    • Changedget_facility17 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / cite_as / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / cite_as / description
        Removed value: -"Ready-made attribution line"
      • removedOutput schema / properties / data / description
        Removed value: -"ONE facility"
      • removedOutput schema / properties / next_ask / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / next_ask / description
        Removed value: -"Suggested follow-up"
      • removedOutput schema / properties / preview_is_partial / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / preview_is_partial / description
        Removed value: -"true when the tier withheld fields"
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
      • removedOutput schema / properties / success / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / success / description
        Removed value: -"true when the lookup executed"
    • Changedget_facility_risk_delta9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_fiber_intel15 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"Fiber-route intelligence as a GeoJSON FeatureCollection (carrier, route_type, capacity, distance per feature) — alongside the DC Hub envelope keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / features / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": {},
        -      "properties": {
        -        "geometry": {
        -          "description": "GeoJSON geometry (LineString/MultiLineString route path)"
        -        },
        -        "properties": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": {},
        -              "properties": {
        -                "capacity": {
        -                  "anyOf": [
        -                    {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "string"
        -                        }
        -                      ]
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "description": "Capacity (carrier-reported units) when known"
        -                },
        -                "carrier": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "description": "Fiber carrier, e.g. Zayo, Lumen, Cogent"
        -                },
        -                "distance_km": {
        -                  "anyOf": [
        -                    {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "string"
        -                        }
        -                      ]
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "description": "Route length, km"
        -                },
        -                "distance_miles": {
        -                  "anyOf": [
        -                    {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "string"
        -                        }
        -                      ]
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "description": "Route length, miles"
        -                },
        -                "fiber_count": {
        -                  "anyOf": [
        -                    {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "string"
        -                        }
        -                      ]
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "description": "Fiber strand count when known"
        -                },
        -                "lit_capacity_gbps": {
        -                  "anyOf": [
        -                    {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "string"
        -                        }
        -                      ]
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "description": "Lit capacity, Gbps, when known"
        -                },
        -                "route_type": {
        -                  "anyOf": [
        -                    {
        -                      "type": "string"
        -                    },
        -                    {
        -                      "type": "null"
        -                    }
        -                  ],
        -                  "description": "metro | longhaul | dark | ix"
        -                }
        -              },
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Route attributes"
        -        },
        -        "type": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "\"Feature\""
        -        }
        -      },
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / features / description
        Removed value: -"Fiber route features"
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
      • removedOutput schema / properties / total / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / total / description
        Removed value: -"Total routes matching the filter (null when withheld by tier)"
      • removedOutput schema / properties / type / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / type / description
        Removed value: -"\"FeatureCollection\" — the payload is GeoJSON, ready for Leaflet/Mapbox"
    • Changedget_fiber_readiness9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_gas_economics9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_gas_index10 fields changed
      • changedInput schema / properties / state / description
        Previous value: -"US state abbreviation, e.g. TX, VA, AZ. Returns the DCGI score and verdict, plus `gas_price_series` naming which EIA series priced the state. A state that cannot be priced comes back verdict UNSCORED with dcgi null and an `unscored_reason` — absence, not a low score. Withdrawn 2026-08-08, restored 2026-08-30: do NOT compare against a figure published before 2026-08-08. Use get_gas_intelligence for the per-state pipeline and operator brief"New value: +"US state abbreviation, e.g. TX, VA, AZ. Returns the DCGI score and verdict, plus `gas_price_series` naming which EIA series priced the state."
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_gas_intelligence9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_global_power9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_grid_data10 fields changed
      • changedInput schema / properties / iso / description
        Previous value: -"ISO/RTO grid region (required): ERCOT, PJM, MISO, CAISO, SPP, NYISO, ISONE"New value: +"Grid code (required): a US ISO (ERCOT, PJM, MISO, CAISO, SPP, NYISO, ISONE), TVA, BPA, a utility BA or city (AZPS, PHOENIX), or a non-US grid (IESO, AESO, HYDROQUEBEC, NGESO, EU_DE_LU, TAIPOWER, OCCTO, KEPCO-KR, ONS, AEMO, EMA)"
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_grid_intelligence32 fields changed
      • changedInput schema / properties / market / description
        Previous value: -"Market NAME or metro slug instead of a grid code, e.g. \"Ashburn\", \"northern-virginia\", \"dallas\". Resolved to its ISO through the published DCPI market row before the brief is built; the answer carries a resolved_from block naming what it resolved to. Not an alias for region_id — \"Ashburn\" is not a grid code."New value: +"Market NAME or metro slug instead of a grid code, e.g. \"Ashburn\", \"northern-virginia\", \"dallas\". Resolved to its ISO through the published DCPI market row before the brief is built; the answer carries a resolved_from block naming what it…"
      • changedInput schema / properties / region_id / description
        Previous value: -"Grid region (required): one of the 7 US ISOs (PJM, ERCOT, CAISO, MISO, SPP, NYISO, ISO-NE), an EIA balancing-authority code (e.g. SOCO, DUK, AZPS, TVA), or the PJM Dominion zone region_id=\"PJM-DOM\" for live Ashburn / Northern Virginia zone load + real-time LMP (the Ashburn / Northern Virginia zone, not visible in EIA)"New value: +"Grid region (required): one of the 7 US ISOs (PJM, ERCOT, CAISO, MISO, SPP, NYISO, ISO-NE), an EIA balancing-authority code (e.g."
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / as_of / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / as_of / description
        Removed value: -"Timestamp of the reading"
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / cite_as / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / cite_as / description
        Removed value: -"Ready-made attribution line"
      • removedOutput schema / properties / completeness / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / completeness / description
        Removed value: -"Share of the payload this tier got"
      • removedOutput schema / properties / demand_period / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / demand_period / description
        Removed value: -"Period of the demand reading"
      • removedOutput schema / properties / free_preview_only / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / free_preview_only / description
        Removed value: -"true when only the free preview was served"
      • removedOutput schema / properties / iso / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / iso / description
        Removed value: -"ISO / grid operator code"
      • removedOutput schema / properties / iso_name / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / iso_name / description
        Removed value: -"Grid operator full name"
      • removedOutput schema / properties / ok / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / ok / description
        Removed value: -"true when the ISO lookup executed"
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
      • removedOutput schema / properties / taste / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / taste / description
        Removed value: -"Free-tier preview fields"
      • removedOutput schema / properties / withheld / anyOf
        Removed value: -[
        -  {
        -    "items": {},
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / withheld / description
        Removed value: -"Fields withheld on this tier"
      • removedOutput schema / properties / withheld_total / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / withheld_total / description
        Removed value: -"How many fields were withheld"
    • Changedget_grid_scoreboard37 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"Live global grid scoreboard: ranked `grids` + unranked `partial_grids`, fuel mix + demand right now, alongside the DC Hub envelope keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / count / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / count / description
        Removed value: -"Ranked grids — the long-standing alias of zones_ranked (NOT grids.length, which also carries the unrankable rows)"
      • removedOutput schema / properties / counts_basis / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / counts_basis / description
        Removed value: -"What each count actually counts, plus per_source rows, eu_zones_live vs eu_zones_configured, and the unranked/unavailable tallies"
      • removedOutput schema / properties / coverage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / coverage / description
        Removed value: -"Coverage line GENERATED from the rows that actually ranked — a feed that returned nothing is absent from it"
      • removedOutput schema / properties / deep_intelligence / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / deep_intelligence / description
        Removed value: -"Pointers to the deeper per-ISO / per-site tools to call next"
      • removedOutput schema / properties / eu_gas_context / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / eu_gas_context / description
        Removed value: -"EU gas-flow context: {active_countries, total_throughput_gwh_per_day, unit, source, note}"
      • removedOutput schema / properties / freshness / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / freshness / description
        Removed value: -"Rows are each feed's LATEST PUBLISHED reading, NOT a synchronized snapshot: {basis, us_mix_source, stale_mix_threshold_hours, stale_mix_rows[], how_to_read}. Read this before narrating any row as current"
      • removedOutput schema / properties / grids / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": {},
        -      "properties": {
        -        "avg_price_usd_per_mwh": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Average wholesale price in USD/MWh (where the feed carries price)"
        -        },
        -        "country": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Country (code or name)"
        -        },
        -        "demand_age_hours": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Age of the demand reading against the current UTC clock"
        -        },
        -        "demand_mw": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Current demand in MW"
        -        },
        -        "demand_period": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Period of the demand reading — a DIFFERENT clock from mix_period on US rows"
        -        },
        -        "demand_vs_mix_lag_hours": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "How far the fuel mix trails demand WITHIN this row. Non-zero means the two figures are from different hours"
        -        },
        -        "freshness_basis": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Which clock the ages on this row are measured against"
        -        },
        -        "fuel_mw": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": {},
        -              "properties": {},
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Fuel mix in MW, e.g. {gas, nuclear, coal, wind, solar, hydro, …}"
        -        },
        -        "gas_share_pct": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Gas share of generation, % (null where the feed cannot honestly split gas out, e.g. Brazil ONS thermal)"
        -        },
        -        "generation_total_mw": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Total generation in MW"
        -        },
        -        "iso": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Grid operator / bidding-zone code, e.g. PJM, ERCOT, NESO, DE, JP-TOKYO"
        -        },
        -        "mix_age_hours": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "How old the fuel-mix reading is against the CURRENT UTC clock. US rows are routinely 18-24h overnight — check this before calling a row current"
        -        },
        -        "mix_is_stale": {
        -          "anyOf": [
        -            {
        -              "type": "boolean"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Set when mix_age_hours is at or over the stale threshold — do not narrate this row as the mix \"right now\""
        -        },
        -        "mix_note": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Plain-language warning composed for a stale mix reading"
        -        },
        -        "mix_period": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Timestamp / period of the fuel-mix reading"
        -        },
        -        "mix_vs_demand_warning": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Present when generation and demand are hours apart: their difference is a clock gap, NOT net imports"
        -        },
        -        "note": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Per-grid caveat"
        -        },
        -        "partial_feed": {
        -          "description": "Set when the feed is partial (no full fuel split) — why the grid is unranked"
        -        },
        -        "region": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Human-readable region name"
        -        },
        -        "renewable_definition": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Exactly what renewable_share_pct counts, identical on every ranked feed"
        -        },
        -        "renewable_share_incl_geothermal_pct": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Same share WITH geothermal in the numerator — present only where geothermal > 0. This is the figure get_grid_intelligence publishes for US ISOs; renewable_share_pct above is the cross-feed-comparable one used for the ranking"
        -        },
        -        "renewable_share_pct": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Wind+solar+hydro share of generation, % (the ranking key)"
        -        },
        -        "variable_renewable_pct": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Wind+solar-only share, % (partial feeds)"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / grids / description
        Removed value: -"Fully-ranked grids, greenest (highest renewable share) first — US ISOs + GB + EU zones + TW + JP + KR + BR"
      • removedOutput schema / properties / independent_sources / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / independent_sources / description
        Removed value: -"Distinct upstream feeds behind those rows — far below zones_ranked because every EU bidding zone comes from ONE feed (ENTSO-E). null when the per-source tally failed"
      • removedOutput schema / properties / ok / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / ok / description
        Removed value: -"true when the scoreboard build succeeded"
      • removedOutput schema / properties / partial_grids / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": {},
        -      "properties": {
        -        "avg_price_usd_per_mwh": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Average wholesale price in USD/MWh (where the feed carries price)"
        -        },
        -        "country": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Country (code or name)"
        -        },
        -        "demand_age_hours": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Age of the demand reading against the current UTC clock"
        -        },
        -        "demand_mw": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Current demand in MW"
        -        },
        -        "demand_period": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Period of the demand reading — a DIFFERENT clock from mix_period on US rows"
        -        },
        -        "demand_vs_mix_lag_hours": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "How far the fuel mix trails demand WITHIN this row. Non-zero means the two figures are from different hours"
        -        },
        -        "freshness_basis": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Which clock the ages on this row are measured against"
        -        },
        -        "fuel_mw": {
        -          "anyOf": [
        -            {
        -              "additionalProperties": {},
        -              "properties": {},
        -              "type": "object"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Fuel mix in MW, e.g. {gas, nuclear, coal, wind, solar, hydro, …}"
        -        },
        -        "gas_share_pct": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Gas share of generation, % (null where the feed cannot honestly split gas out, e.g. Brazil ONS thermal)"
        -        },
        -        "generation_total_mw": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Total generation in MW"
        -        },
        -        "iso": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Grid operator / bidding-zone code, e.g. PJM, ERCOT, NESO, DE, JP-TOKYO"
        -        },
        -        "mix_age_hours": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "How old the fuel-mix reading is against the CURRENT UTC clock. US rows are routinely 18-24h overnight — check this before calling a row current"
        -        },
        -        "mix_is_stale": {
        -          "anyOf": [
        -            {
        -              "type": "boolean"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Set when mix_age_hours is at or over the stale threshold — do not narrate this row as the mix \"right now\""
        -        },
        -        "mix_note": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Plain-language warning composed for a stale mix reading"
        -        },
        -        "mix_period": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Timestamp / period of the fuel-mix reading"
        -        },
        -        "mix_vs_demand_warning": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Present when generation and demand are hours apart: their difference is a clock gap, NOT net imports"
        -        },
        -        "note": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Per-grid caveat"
        -        },
        -        "partial_feed": {
        -          "description": "Set when the feed is partial (no full fuel split) — why the grid is unranked"
        -        },
        -        "region": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Human-readable region name"
        -        },
        -        "renewable_definition": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Exactly what renewable_share_pct counts, identical on every ranked feed"
        -        },
        -        "renewable_share_incl_geothermal_pct": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Same share WITH geothermal in the numerator — present only where geothermal > 0. This is the figure get_grid_intelligence publishes for US ISOs; renewable_share_pct above is the cross-feed-comparable one used for the ranking"
        -        },
        -        "renewable_share_pct": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Wind+solar+hydro share of generation, % (the ranking key)"
        -        },
        -        "variable_renewable_pct": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Wind+solar-only share, % (partial feeds)"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / partial_grids / description
        Removed value: -"Grids listed UNRANKED because the feed has no full fuel split (Australia NEM, Singapore EMA)"
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / ranked_by / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / ranked_by / description
        Removed value: -"Ranking criterion (renewable share = wind+solar+hydro, greenest first) plus the full definition — identical on every feed, geothermal and biomass excluded from the numerator"
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
      • removedOutput schema / properties / source / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / source / description
        Removed value: -"Upstream feeds behind the rows in THIS response, generated (EIA hourly RTO, Elexon, ENTSO-E, Taipower, OCCTO, KPX, ONS, AEMO, EMA)"
      • removedOutput schema / properties / us_interconnection_queue_gw / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / us_interconnection_queue_gw / description
        Removed value: -"Total queued generation across the 7 US ISO interconnection queues, GW"
      • removedOutput schema / properties / zones_ranked / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / zones_ranked / description
        Removed value: -"Grid rows carrying a live renewable_share_pct, i.e. the ranked set"
    • Changedget_hosting_capacity10 fields changed
      • changedInput schema / properties / capacity_type / description
        Previous value: -"Restrict to one published type: \"load\" (what a new data-center load can DRAW — the type that answers siting), \"gen\" (DER/generation EXPORT headroom — NOT available load), or \"bus_headroom\" (transmission bus MW). Omit to get all three reported separately."New value: +"Restrict to one published type: \"load\" (what a new data-center load can DRAW — the type that answers siting), \"gen\" (DER/generation EXPORT headroom — NOT available load), or \"bus_headroom\" (transmission bus MW)."
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_infra_projects9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_infrastructure9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_intelligence_index9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_interconnection_queue47 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"ISO interconnection-queue snapshot: queued GW, per-project rows, and (ERCOT) the large-load data-center queue — alongside the DC Hub envelope keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / as_of / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / as_of / description
        Removed value: -"Queue snapshot date"
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / historical_completion_pct / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / historical_completion_pct / description
        Removed value: -"Share of queued projects that historically complete, % (when published)"
      • removedOutput schema / properties / iso / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / iso / description
        Removed value: -"ISO/RTO this snapshot covers (per-ISO drill-down form)"
      • removedOutput schema / properties / new_applications_period / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / new_applications_period / description
        Removed value: -"Period the new-applications figure covers"
      • removedOutput schema / properties / new_applications_q_gw / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / new_applications_q_gw / description
        Removed value: -"New queue applications in the latest period, GW (when published)"
      • removedOutput schema / properties / project_count / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / project_count / description
        Removed value: -"Projects in the queue snapshot"
      • removedOutput schema / properties / projects / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "items": {
        -          "additionalProperties": {},
        -          "properties": {
        -            "capacity_mw": {
        -              "anyOf": [
        -                {
        -                  "anyOf": [
        -                    {
        -                      "type": "number"
        -                    },
        -                    {
        -                      "type": "string"
        -                    }
        -                  ]
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "description": "Nameplate capacity, MW"
        -            },
        -            "county": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "description": "County"
        -            },
        -            "fuel_type": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "description": "Fuel / technology"
        -            },
        -            "iso": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "description": "ISO/RTO"
        -            },
        -            "project_name": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "description": "Project name"
        -            },
        -            "queue_date": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "description": "Queue entry date"
        -            },
        -            "queue_id": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "description": "ISO queue position id"
        -            },
        -            "queue_status": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "description": "Queue status"
        -            },
        -            "state": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "description": "US state"
        -            }
        -          },
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      {
        -        "additionalProperties": {},
        -        "properties": {
        -          "by_iso_count": {
        -            "description": "Per-ISO project counts, e.g. {\"PJM\":972,\"ERCOT\":1893,\"CAISO\":279}"
        -          },
        -          "note": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "description": "How the all-ISO rollup was assembled and where to get the full per-ISO list"
        -          },
        -          "top": {
        -            "description": "The largest projects across all ISOs (same row shape as the per-ISO array form)"
        -          },
        -          "total": {
        -            "anyOf": [
        -              {
        -                "anyOf": [
        -                  {
        -                    "type": "number"
        -                  },
        -                  {
        -                    "type": "string"
        -                  }
        -                ]
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "description": "Projects in the full multi-ISO queue, e.g. 5512"
        -          },
        -          "tracked": {
        -            "anyOf": [
        -              {
        -                "type": "boolean"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "description": "Whether DC Hub has classified named per-project rows for this snapshot"
        -          }
        -        },
        -        "type": "object"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / projects / description
        Removed value: -"SHAPE DEPENDS ON THE CALL: with iso= this is an ARRAY of queued generation projects (largest / most recent first); with iso omitted it is the all-ISO SUMMARY OBJECT {total, tracked, by_iso_count, top, note} — per-project rows are not returned for the all-ISO snapshot. Check the type before indexing."
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • addedOutput schema / properties / queue_kind
        Added value: +{}
      • addedOutput schema / properties / queued_connections_gw
        Added value: +{}
      • removedOutput schema / properties / queued_generation_gw / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / queued_generation_gw / description
        Removed value: -"Generation interconnection queue in this ISO, GW (US ISOs; ERCOT's generation queue, not its large-load queue). null on NESO/IESO/AESO"
      • removedOutput schema / properties / queued_generation_gw_basis_note / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / queued_generation_gw_basis_note / description
        Removed value: -"What queued_generation_gw counts on this row: status filter and MW column, e.g. \"Active only, summer MW\". Present on the US generation-queue ISOs other than ERCOT; compare totals from other trackers only on the same basis"
      • removedOutput schema / properties / queued_generation_pending_revision_gw / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / queued_generation_pending_revision_gw / description
        Removed value: -"MISO only: GW of applications in Pending Revision Approval (summer MW), reported beside the active total and NOT part of queued_generation_gw. null on every other ISO, and null on the free preview like the other GW figures"
      • removedOutput schema / properties / queued_generation_pending_revision_gw_basis / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / queued_generation_pending_revision_gw_basis / description
        Removed value: -"What queued_generation_pending_revision_gw counts: the MISO status, MW column, and that it is excluded from queued_generation_gw. Present only when the figure is"
      • addedOutput schema / properties / queued_large_load_gw
        Added value: +{}
      • removedOutput schema / properties / queued_load_data_center_gw / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / queued_load_data_center_gw / description
        Removed value: -"ERCOT: data-center load DERIVED as ~90% of the large-load queue, GW. NESO/IESO/AESO: demand projects in the connections queue (all demand, not data centres only). null elsewhere"
      • removedOutput schema / properties / queued_load_dc_share_pct / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / queued_load_dc_share_pct / description
        Removed value: -"ERCOT: data-center share of the large-load queue, %. NESO/IESO/AESO: demand share of the connections queue, %. null elsewhere"
      • removedOutput schema / properties / queued_load_total_gw
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "anyOf": [
        -        {
        -          "type": "number"
        -        },
        -        {
        -          "type": "string"
        -        }
        -      ]
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "description": "Meaning depends on queued_load_total_gw_basis: generation_queue = the generation queue (deprecated alias of queued_generation_gw, removed after 2026-11-15); large_load = ERCOT's large-load (demand) queue; mixed_connection_queue = NESO/IESO/AESO connections queue (generation AND demand). GW"
        -}
      • removedOutput schema / properties / queued_load_total_gw_basis
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "description": "What queued_load_total_gw measures on this row: generation_queue | large_load | mixed_connection_queue"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
      • removedOutput schema / properties / source_name / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / source_name / description
        Removed value: -"Queue source name"
      • removedOutput schema / properties / source_url / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / source_url / description
        Removed value: -"Queue source URL"
      • removedOutput schema / properties / top_subregions / description
        Removed value: -"Provenance / sub-region breakdown for the large-load figure (ERCOT)"
      • removedOutput schema / properties / v / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / v / description
        Removed value: -"Verification flag for the snapshot"
    • Changedget_iso_context24 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / cite_as / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / cite_as / description
        Removed value: -"Ready-made attribution line"
      • removedOutput schema / properties / iso / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / iso / description
        Removed value: -"ISO code"
      • removedOutput schema / properties / locked_sections / anyOf
        Removed value: -[
        -  {
        -    "items": {},
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / locked_sections / description
        Removed value: -"Sections withheld on this tier"
      • removedOutput schema / properties / max_tokens / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / max_tokens / description
        Removed value: -"Token budget for this tier"
      • removedOutput schema / properties / ok / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / ok / description
        Removed value: -"true when the ISO lookup executed"
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / sections / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / sections / description
        Removed value: -"Sections delivered in budget"
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
      • removedOutput schema / properties / tier / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / tier / description
        Removed value: -"Tier the response was served at"
      • removedOutput schema / properties / used_tokens / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / used_tokens / description
        Removed value: -"Tokens used by delivered sections"
    • Changedget_market_context9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_market_dcpi_rank57 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DCPI rank for ONE market: BUILD/CAUTION/AVOID verdict, component scores, time-to-power, and analyst narrative — alongside the DC Hub envelope keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / avg_kwh_cents / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / avg_kwh_cents / description
        Removed value: -"Average retail power price, cents/kWh (may arrive as a string)"
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / composite_score / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / composite_score / description
        Removed value: -"0-100 verdict-aware composite score"
      • removedOutput schema / properties / computed_at / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / computed_at / description
        Removed value: -"When the score row was computed"
      • removedOutput schema / properties / constraint_score / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / constraint_score / description
        Removed value: -"0-100 constraint component"
      • removedOutput schema / properties / curtailment_pct / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / curtailment_pct / description
        Removed value: -"Curtailment, %"
      • removedOutput schema / properties / data_basis / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / data_basis / description
        Removed value: -"What the scores were computed from"
      • removedOutput schema / properties / data_basis_source / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / data_basis_source / description
        Removed value: -"Source of the data basis"
      • removedOutput schema / properties / excess_power_score / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / excess_power_score / description
        Removed value: -"0-100 excess-power component"
      • removedOutput schema / properties / forecast / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / forecast / description
        Removed value: -"Forecast availability block: {available, note, reason, samples_in_30d} — see predict_market_trajectory"
      • removedOutput schema / properties / iso / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / iso / description
        Removed value: -"ISO/RTO serving the market"
      • removedOutput schema / properties / latitude / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / latitude / description
        Removed value: -"Market anchor latitude"
      • removedOutput schema / properties / longitude / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / longitude / description
        Removed value: -"Market anchor longitude"
      • removedOutput schema / properties / market_name / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / market_name / description
        Removed value: -"Market display name"
      • removedOutput schema / properties / market_slug / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / market_slug / description
        Removed value: -"Market slug"
      • removedOutput schema / properties / narrative / description
        Removed value: -"~100-word analyst read on the market, quote directly with attribution to DC Hub (CC-BY-4.0)"
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / published / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / published / description
        Removed value: -"Whether the score is published"
      • removedOutput schema / properties / quality_score / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / quality_score / description
        Removed value: -"0-100 data-quality score for this market"
      • removedOutput schema / properties / queue_wait_months / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / queue_wait_months / description
        Removed value: -"ISO queue wait, months"
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / reserve_margin_pct / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / reserve_margin_pct / description
        Removed value: -"Grid reserve margin, %"
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
      • removedOutput schema / properties / state / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / state / description
        Removed value: -"US state / region code"
      • removedOutput schema / properties / tier_required / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / tier_required / description
        Removed value: -"Tier required for the full row"
      • removedOutput schema / properties / time_to_power_months / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / time_to_power_months / description
        Removed value: -"Estimated months to power for a new interconnection"
      • removedOutput schema / properties / top_opportunities_json / description
        Removed value: -"Top opportunity bullets for the market"
      • removedOutput schema / properties / top_risks_json / description
        Removed value: -"Top risk bullets for the market"
      • removedOutput schema / properties / trend_30d / description
        Removed value: -"30-day trend read when enough snapshots exist"
      • removedOutput schema / properties / verdict / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / verdict / description
        Removed value: -"DCPI verdict: BUILD | CAUTION | AVOID"
    • Changedget_market_intel25 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"One-market intelligence read: identity, stats, status mix, operators, recent facilities, cited related intel — alongside the DC Hub envelope keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _gated / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / _gated / description
        Removed value: -"true when parts of the payload were withheld by tier"
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / by_status / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / by_status / description
        Removed value: -"Facility counts keyed by status (Operational, Under Construction, Planned, Announced, active)"
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / market / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "cities": {
        -        "description": "Cities composing the market"
        -      },
        -      "id": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Market slug"
        -      },
        -      "name": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Market display name"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / market / description
        Removed value: -"The market identity block"
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / recent_facilities / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": {},
        -      "properties": {
        -        "city": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "City"
        -        },
        -        "discovered_at": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "When DC Hub first tracked it"
        -        },
        -        "id": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Facility id"
        -        },
        -        "name": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Facility name"
        -        },
        -        "power_mw": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Capacity, MW"
        -        },
        -        "provider": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Operator"
        -        },
        -        "status": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Facility status"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / recent_facilities / description
        Removed value: -"Recently added / discovered facilities in the market"
      • removedOutput schema / properties / related_intel / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": {},
        -      "properties": {
        -        "citation": {
        -          "description": "Citation payload"
        -        },
        -        "cosine": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Retrieval similarity score"
        -        },
        -        "kind": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Passage kind"
        -        },
        -        "source": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Source name"
        -        },
        -        "text": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Cited passage text"
        -        },
        -        "title": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Passage title"
        -        },
        -        "url": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Source URL"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / related_intel / description
        Removed value: -"RAG-grounded related intelligence passages (cited)"
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
      • removedOutput schema / properties / stats / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "avg_power_mw": {
        -        "anyOf": [
        -          {
        -            "anyOf": [
        -              {
        -                "type": "number"
        -              },
        -              {
        -                "type": "string"
        -              }
        -            ]
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Average facility capacity, MW"
        -      },
        -      "facility_count": {
        -        "anyOf": [
        -          {
        -            "anyOf": [
        -              {
        -                "type": "number"
        -              },
        -              {
        -                "type": "string"
        -              }
        -            ]
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Tracked facilities in the market"
        -      },
        -      "provider_count": {
        -        "anyOf": [
        -          {
        -            "anyOf": [
        -              {
        -                "type": "number"
        -              },
        -              {
        -                "type": "string"
        -              }
        -            ]
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Distinct operators"
        -      },
        -      "total_power_mw": {
        -        "anyOf": [
        -          {
        -            "anyOf": [
        -              {
        -                "type": "number"
        -              },
        -              {
        -                "type": "string"
        -              }
        -            ]
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Total tracked capacity, MW"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / stats / description
        Removed value: -"Headline market stats"
      • removedOutput schema / properties / success / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / success / description
        Removed value: -"true when the market lookup succeeded"
      • removedOutput schema / properties / top_providers / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": {},
        -      "properties": {
        -        "facilities": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Facility count"
        -        },
        -        "name": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Operator name"
        -        },
        -        "power_mw": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Aggregate capacity, MW"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / top_providers / description
        Removed value: -"Dominant operators, largest first"
    • Changedget_metro_fiber9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_news22 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / articles / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / articles / description
        Removed value: -"News rows"
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / cite_as / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / cite_as / description
        Removed value: -"Ready-made attribution line"
      • removedOutput schema / properties / count / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / count / description
        Removed value: -"Rows returned in THIS response"
      • removedOutput schema / properties / data / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / data / description
        Removed value: -"Same rows as `articles`"
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
      • removedOutput schema / properties / source / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / source / description
        Removed value: -"Where the news set comes from"
      • removedOutput schema / properties / success / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / success / description
        Removed value: -"true when the news query succeeded"
      • removedOutput schema / properties / total / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / total / description
        Removed value: -"Total articles matching"
    • Changedget_peering_intel9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_permitting_intel9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_pipeline28 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / by_quarter / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / by_quarter / description
        Removed value: -"Projects per delivery quarter"
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / cite_as / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / cite_as / description
        Removed value: -"Ready-made attribution line"
      • removedOutput schema / properties / count / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / count / description
        Removed value: -"Rows returned in THIS response"
      • removedOutput schema / properties / data / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / data / description
        Removed value: -"Same rows as `pipeline`"
      • removedOutput schema / properties / data_source / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / data_source / description
        Removed value: -"Where the data comes from"
      • removedOutput schema / properties / last_updated / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / last_updated / description
        Removed value: -"Pipeline last refreshed"
      • removedOutput schema / properties / pipeline / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / pipeline / description
        Removed value: -"Construction-pipeline projects"
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
      • removedOutput schema / properties / stats / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / stats / description
        Removed value: -"Aggregate pipeline stats"
      • removedOutput schema / properties / success / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / success / description
        Removed value: -"true when the query succeeded"
      • removedOutput schema / properties / total_count / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / total_count / description
        Removed value: -"Total projects matching"
    • Changedget_power_availability_timeline9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_power_pipeline9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_refined_queue13 fields changed
      • changedInput schema / properties / baseload_only / description
        Previous value: -"Keep only firm/dispatchable fuel (nuclear, gas, steam, geothermal, hydro, coal); exclude wind/solar/storage. Firm-vs-intermittent split only — does NOT sub-divide peaker vs combined-cycle gas (no duty-cycle field in the queue). Default false"New value: +"Keep only firm/dispatchable fuel (nuclear, gas, steam, geothermal, hydro, coal); exclude wind/solar/storage. Firm-vs-intermittent split only — does NOT sub-divide peaker vs combined-cycle gas (no duty-cycle field in the queue)."
      • changedInput schema / properties / developer / description
        Previous value: -"ERCOT only: keep projects whose developer name contains this text (case-insensitive substring, e.g. 'tenaska'). Developer names come from ERCOTQueue (ercotqueue.com, Matt Prusak, CC BY 4.0) joined to ERCOT's own queue by INR; other ISOs carry no developer field, so they return no rows when this is set. Answers that use it carry an attribution block"New value: +"ERCOT only: keep projects whose developer name contains this text (case-insensitive substring, e.g. 'tenaska'). Developer names come from ERCOTQueue (ercotqueue.com, Matt Prusak, CC BY 4.0) joined to ERCOT's own queue by INR; other ISOs…"
      • changedInput schema / properties / fuel_type / description
        Previous value: -"Isolate a fuel by inclusive substring match on the raw label; comma/semicolon-separated for a union, e.g. 'gas' hits GAS/Natural Gas, 'nuclear,hydro' unions both. Runs the fuel filter server-side instead of post-filtering survivors in context"New value: +"Isolate a fuel by inclusive substring match on the raw label; comma/semicolon-separated for a union, e.g. 'gas' hits GAS/Natural Gas, 'nuclear,hydro' unions both."
      • changedInput schema / properties / status / description
        Previous value: -"Queue status filter. Default 'active' = still progressing (excludes withdrawn/cancelled/suspended/in-commercial-operation) — cross-ISO safe (SPP labels live projects 'IA FULLY EXECUTED/ON SCHEDULE' not 'active'). Pass 'all' for every status, or a literal label to substring-match"New value: +"Queue status filter. Default 'active' = still progressing (excludes withdrawn/cancelled/suspended/in-commercial-operation) — cross-ISO safe (SPP labels live projects 'IA FULLY EXECUTED/ON SCHEDULE' not 'active')."
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_renewable_energy32 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / cite_as / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / cite_as / description
        Removed value: -"Ready-made attribution line"
      • removedOutput schema / properties / data_source / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / data_source / description
        Removed value: -"Where the data comes from"
      • removedOutput schema / properties / dc_industry_ppas / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / dc_industry_ppas / description
        Removed value: -"Data-center PPA rows"
      • removedOutput schema / properties / filters_applied / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / filters_applied / description
        Removed value: -"Filters the gateway applied"
      • removedOutput schema / properties / installations_count / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / installations_count / description
        Removed value: -"Installations returned"
      • removedOutput schema / properties / ppa_as_of / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / ppa_as_of / description
        Removed value: -"PPA set last refreshed"
      • removedOutput schema / properties / ppa_basis / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / ppa_basis / description
        Removed value: -"How the PPA set is compiled"
      • removedOutput schema / properties / ppa_count / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / ppa_count / description
        Removed value: -"PPAs returned"
      • removedOutput schema / properties / ppa_total_count / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / ppa_total_count / description
        Removed value: -"Total PPAs matching"
      • removedOutput schema / properties / ppa_total_mw / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / ppa_total_mw / description
        Removed value: -"Total MW across matching PPAs"
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / renewable_installations / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / renewable_installations / description
        Removed value: -"Renewable installation rows"
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
      • removedOutput schema / properties / success / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / success / description
        Removed value: -"true when the query succeeded"
    • Changedget_retirement_headroom9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_shortlist9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_subsea_cables9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedget_tax_incentives20 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / cite_as / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / cite_as / description
        Removed value: -"Ready-made attribution line"
      • removedOutput schema / properties / count / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / count / description
        Removed value: -"Rows returned in THIS response"
      • removedOutput schema / properties / data / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / data / description
        Removed value: -"Incentive programs for the state"
      • removedOutput schema / properties / last_updated / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / last_updated / description
        Removed value: -"Incentive table last reviewed"
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
      • removedOutput schema / properties / state / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / state / description
        Removed value: -"State queried"
      • removedOutput schema / properties / status / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / status / description
        Removed value: -"Serving status"
    • Changedget_water_risk33 fields changed
      • changedInput schema / properties / location / description
        Previous value: -"Market NAME or metro slug instead of coordinates, e.g. \"phoenix\", \"northern-virginia\", \"dallas\". Resolved to that market's PUBLISHED CENTROID through the DCPI market row, and the answer carries a resolved_from block saying so. A MARKET-level read, not your parcel; pass lat/lon for a specific site. Not an alias for lat/lon: a place name is not a coordinate."New value: +"Market NAME or metro slug instead of coordinates, e.g. \"phoenix\", \"northern-virginia\", \"dallas\". Resolved to that market's PUBLISHED CENTROID through the DCPI market row, and the answer carries a resolved_from block saying so."
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / cite_as / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / cite_as / description
        Removed value: -"Ready-made attribution line"
      • removedOutput schema / properties / current_drought_pct / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / current_drought_pct / description
        Removed value: -"Share of state in drought, %"
      • removedOutput schema / properties / dominant_severity / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / dominant_severity / description
        Removed value: -"Dominant drought severity category"
      • removedOutput schema / properties / drought_categories / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / drought_categories / description
        Removed value: -"Percent of area per drought category"
      • removedOutput schema / properties / latest_week / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {},
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / latest_week / description
        Removed value: -"Most recent weekly reading"
      • removedOutput schema / properties / ok / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / ok / description
        Removed value: -"true when the lookup executed"
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / queried_at / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / queried_at / description
        Removed value: -"Timestamp of the query"
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
      • removedOutput schema / properties / source / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / source / description
        Removed value: -"Source of the drought data"
      • removedOutput schema / properties / source_url / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / source_url / description
        Removed value: -"Source URL"
      • removedOutput schema / properties / state / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / state / description
        Removed value: -"State queried"
      • removedOutput schema / properties / success / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / success / description
        Removed value: -"true when the query succeeded"
      • removedOutput schema / properties / weekly_history / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / weekly_history / description
        Removed value: -"Weekly drought history"
    • Changedgrid_transition_radar9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedhyperscaler_deals25 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"Hyperscaler AI Deal Tracker feed: `deals` with extracted $-figures + MW, alongside the DC Hub envelope keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / computed_at / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / computed_at / description
        Removed value: -"Feed computation timestamp (10-min refresh)"
      • removedOutput schema / properties / deals / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": {},
        -      "properties": {
        -        "actors": {
        -          "description": "Classified actors (OpenAI, Microsoft, Oracle, NVIDIA, sovereign-AI, …)"
        -        },
        -        "capacity": {
        -          "description": "Extracted capacity when present — {display, value_mw} object (was a bare number pre-2026-07)"
        -        },
        -        "id": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Deal id"
        -        },
        -        "published": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Publication timestamp"
        -        },
        -        "source": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Publication"
        -        },
        -        "summary": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Deal summary"
        -        },
        -        "title": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Headline"
        -        },
        -        "url": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Source article URL"
        -        },
        -        "value_usd": {
        -          "description": "Extracted deal value when present — {display:\"$35.6B\", value:35600000000.0} object; null when undisclosed (was a bare number pre-2026-08)"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / deals / description
        Removed value: -"Live AI-capex deal feed entries, newest first"
      • removedOutput schema / properties / error / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / error / description
        Removed value: -"Feed error, if any (null on success)"
      • removedOutput schema / properties / feed_name / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / feed_name / description
        Removed value: -"Feed identity line"
      • removedOutput schema / properties / landing / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / landing / description
        Removed value: -"Human landing page URL"
      • removedOutput schema / properties / live_feed / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / live_feed / description
        Removed value: -"Live feed URL"
      • removedOutput schema / properties / methodology / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / methodology / description
        Removed value: -"How deals are extracted and classified"
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / result_count / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / result_count / description
        Removed value: -"Number of deals returned"
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedlist_saved_sites9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedlist_standing_intents9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedlist_transactions29 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"Data-center M&A / capital transactions: `transactions` rows with buyer/seller/value/date — alongside the DC Hub envelope keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / cached / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / cached / description
        Removed value: -"Whether the response was served from cache"
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / count / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / count / description
        Removed value: -"Rows returned in THIS response"
      • removedOutput schema / properties / data_source / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / data_source / description
        Removed value: -"Where the deal set comes from"
      • removedOutput schema / properties / note / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / note / description
        Removed value: -"Serving note"
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
      • removedOutput schema / properties / success / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / success / description
        Removed value: -"true when the deal query succeeded"
      • removedOutput schema / properties / tier / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / tier / description
        Removed value: -"Tier the response was served at"
      • removedOutput schema / properties / total_count / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / total_count / description
        Removed value: -"Total deals matching the filter"
      • removedOutput schema / properties / total_value / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / total_value / description
        Removed value: -"Aggregate disclosed value across the returned set (null when not computed)"
      • removedOutput schema / properties / total_value_unit / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / total_value_unit / description
        Removed value: -"Unit of total_value"
      • removedOutput schema / properties / transactions / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": {},
        -      "properties": {
        -        "buyer": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Acquirer"
        -        },
        -        "date": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Deal date (ISO-8601)"
        -        },
        -        "id": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Deal id"
        -        },
        -        "market": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Market the deal touches"
        -        },
        -        "mw": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Capacity involved, MW, when disclosed"
        -        },
        -        "region": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Region (us | eu | apac | americas …)"
        -        },
        -        "seller": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Seller / target"
        -        },
        -        "type": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "acquisition | jv | refinance | recap …"
        -        },
        -        "value": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Deal value when disclosed (see value_unit)"
        -        },
        -        "value_confirmed": {
        -          "anyOf": [
        -            {
        -              "type": "boolean"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Whether the value is confirmed vs reported"
        -        },
        -        "value_display": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Human-formatted value, e.g. \"$9.2B\" or \"Undisclosed\""
        -        },
        -        "value_unit": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Unit of `value` (e.g. USD)"
        -        },
        -        "year": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Deal year"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / transactions / description
        Removed value: -"M&A / capital-transaction rows"
    • Changedplan_fiber_leadin9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedplan_query49 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"Deterministic query plan: best_tool + ordered recommended_sequence over the DC Hub tool registry — keyword/regex routing, no LLM, same intent → same plan — plus a versioned replay decision-trail, alongside the DC Hub envelope keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / alternatives / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": {},
        -      "properties": {
        -        "rejected_because": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Why the planner did NOT make this the primary route — the deterministic rejection reason"
        -        },
        -        "tool": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Alternative tool name"
        -        },
        -        "when": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "When to prefer this tool over the recommended sequence"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / alternatives / description
        Removed value: -"Adjacent tools for nearby intents, including runner-up intent classes"
      • removedOutput schema / properties / best_tool / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / best_tool / description
        Removed value: -"The single best first tool to call for this intent (exact name from tools/list)"
      • removedOutput schema / properties / chaining / description
        Removed value: -"Zero-drift chaining guidance (candidate_id contract) when the plan crosses get_refined_queue → analyze_site / rank_sites"
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / confidence / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / confidence / description
        Removed value: -"Deterministic router confidence, 0-1 — same intent always yields the same score; low values mean the intent was ambiguous (check alternatives). Alias of intent_confidence (v1 back-compat)."
      • removedOutput schema / properties / coverage_notes / description
        Removed value: -"Tier/coverage caveats for the recommended tools (free-tier previews, depth gates, honest-unknown semantics)"
      • removedOutput schema / properties / estimated_calls / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / estimated_calls / description
        Removed value: -"Total estimated API calls for the whole plan (sum of per-step estimates)"
      • removedOutput schema / properties / execution_estimate / description
        Removed value: -"r-planner-v3 deterministic cost preview: {estimated_calls (plan NODE count — one per step; the top-level estimated_calls is the fan-out-weighted API-call total), estimated_latency_ms (sum over waves of the SLOWEST tool in each wave, from a static 3-tier table: heavy synthesis 3000ms / standard read 1200ms / light free read 500ms), parallelizable (any wave holds 2+ steps)}"
      • removedOutput schema / properties / execution_strategy / description
        Removed value: -"r-planner-v3 explicit strategy: {parallel_groups: string[][] — execution_waves rendered as TOOL-NAME arrays (e.g. [[\"get_grid_intelligence\",\"get_interconnection_queue\",\"get_refined_queue\"]]), note: plan-only disclaimer — this tool only plans; execute the sequence yourself}"
      • removedOutput schema / properties / execution_waves / description
        Removed value: -"The execution graph as concurrency waves: array of arrays of step numbers; every step in a wave can run concurrently once earlier waves finish (derived from depends_on)"
      • removedOutput schema / properties / intent / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / intent / description
        Removed value: -"The natural-language intent that was routed (echoed back)"
      • removedOutput schema / properties / intent_class / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / intent_class / description
        Removed value: -"The matched intent class (market_ranking | capacity_search | market_comparison | grid_headroom | interconnection_queue | hosting_capacity | water_climate | site_analysis | deals_ma | fiber_power_pairing | fiber | price | incentives_tax | power_timeline | changes_delta | facility_search | unknown)"
      • removedOutput schema / properties / intent_confidence / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / intent_confidence / description
        Removed value: -"How confident the router is that it read the QUESTION right (0-1, deterministic) — driven by keyword score + margin over the runner-up class"
      • removedOutput schema / properties / matched_classes / description
        Removed value: -"Every intent class that scored, with its score — the router's full deterministic trace"
      • removedOutput schema / properties / note / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / note / description
        Removed value: -"Router disclaimer — deterministic keyword routing, tools/list stays canonical"
      • removedOutput schema / properties / ok / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / ok / description
        Removed value: -"true when the intent was routed"
      • removedOutput schema / properties / parallelizable / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / parallelizable / description
        Removed value: -"true when at least one execution wave holds 2+ steps — the plan is not purely sequential"
      • removedOutput schema / properties / planner_rationale / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / planner_rationale / description
        Removed value: -"One sentence on why the PLAN has this shape (ordering / parallelism / what mints what) — distinct from reason, which covers intent routing"
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / reason / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / reason / description
        Removed value: -"Why the router chose best_tool — the matched keywords / context signals"
      • removedOutput schema / properties / recommended_sequence / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": {},
        -      "properties": {
        -        "args_hint": {
        -          "description": "Suggested arguments — values in <angle brackets> are produced by an earlier step (e.g. \"<metro_slug from step 1>\")"
        -        },
        -        "depends_on": {
        -          "description": "Step numbers this step has a HARD DATA dependency on (it consumes a value they mint — slug, candidate_id, chosen ISO). Empty = can start immediately; user-supplied placeholders are not dependencies."
        -        },
        -        "estimated_calls": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Estimated API calls this step costs (fan-out steps like per-finalist reads are > 1)"
        -        },
        -        "step": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "1-based step order"
        -        },
        -        "tool": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Tool name (exact, from tools/list)"
        -        },
        -        "why": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "What this step contributes to answering the intent"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / recommended_sequence / description
        Removed value: -"Ordered tool sequence mirroring the DC Hub recipe for the matched intent class"
      • removedOutput schema / properties / replay / additionalProperties
        Removed value: -{}
      • removedOutput schema / properties / replay / description
        Removed value: -"FIRST-CLASS VERSIONED replay object (r-planner-v5.1, ChatGPT schema review): the planner's auditable decision trail — routing + per-step selection + rejections + concurrency graph, each decision with a stable id + status, keyed by planner_version so an agent can cite \"Decision D2 selected rank_markets because…\" and downstream tooling survives planner upgrades."
      • removedOutput schema / properties / replay / properties
        Removed value: -{
        -  "compatibility": {
        -    "description": "The stability contract, published in-object: schema v1 is additive-only (no removals / semantic changes); planner_version may change routing/confidence/sequences/coverage without a schema bump; breaking changes only ever at a new schema_version. Pin schema_version, not planner_version."
        -  },
        -  "decisions": {
        -    "anyOf": [
        -      {
        -        "items": {
        -          "additionalProperties": {},
        -          "properties": {
        -            "decision": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "description": "What the planner decided (route to a class / call a tool)"
        -            },
        -            "decision_confidence": {
        -              "anyOf": [
        -                {
        -                  "anyOf": [
        -                    {
        -                      "type": "number"
        -                    },
        -                    {
        -                      "type": "string"
        -                    }
        -                  ]
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "description": "0-1 — intent_confidence for the routing decision, workflow_confidence for step decisions"
        -            },
        -            "depends_on": {
        -              "description": "Step numbers this step depends on (step decisions only)"
        -            },
        -            "id": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "description": "Stable decision id — D0 = routing decision, D1..Dn = per-step selections; cite as \"Decision D2\""
        -            },
        -            "kind": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "description": "\"route\" (the intent→class decision) or \"step\" (a tool selection)"
        -            },
        -            "rationale": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "description": "The deterministic reason for the decision"
        -            },
        -            "status": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "description": "Decision lifecycle — one of planned | running | completed | failed | skipped | cancelled. plan_query only ever emits \"planned\" (it never executes); the full enum is published now so consumers can code the whole lifecycle without an SDK bump later."
        -            },
        -            "step": {
        -              "anyOf": [
        -                {
        -                  "anyOf": [
        -                    {
        -                      "type": "number"
        -                    },
        -                    {
        -                      "type": "string"
        -                    }
        -                  ]
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "description": "0 for the routing decision, else the 1-based step number"
        -            }
        -          },
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      {
        -        "type": "null"
        -      }
        -    ],
        -    "description": "The ordered, auditable decision trail — one route decision + one per recommended step"
        -  },
        -  "execution_graph": {
        -    "description": "{waves: number[][], parallel_groups: string[][]} — the concurrency graph the plan executes as"
        -  },
        -  "intent": {
        -    "anyOf": [
        -      {
        -        "type": "string"
        -      },
        -      {
        -        "type": "null"
        -      }
        -    ],
        -    "description": "The routed intent (echoed) — duplicated so replay is self-contained"
        -  },
        -  "intent_class": {
        -    "anyOf": [
        -      {
        -        "type": "string"
        -      },
        -      {
        -        "type": "null"
        -      }
        -    ],
        -    "description": "The matched intent class (duplicated from plan_query.intent_class so replay deserializes alone)"
        -  },
        -  "note": {
        -    "anyOf": [
        -      {
        -        "type": "string"
        -      },
        -      {
        -        "type": "null"
        -      }
        -    ],
        -    "description": "How to read + cite the replay; plan-only disclaimer"
        -  },
        -  "planner_version": {
        -    "anyOf": [
        -      {
        -        "type": "string"
        -      },
        -      {
        -        "type": "null"
        -      }
        -    ],
        -    "description": "Semantic version of the PLANNER BEHAVIOR (routing/output) — bumps when routing changes (e.g. 5.1 replay field renames → 5.2 capacity_search/market_comparison → 5.4 fiber_power_pairing → 5.5 the hosting_capacity distribution class → 5.6 the incentives_tax class + stateFromPlace arg signal → 5.7 rank-vs-incentives arbitration: ranking language demotes the statutory class, \"rank markets by\" credits market_ranking → 5.8 reversed-order timing vocabulary: \"timeline for power …\" reaches power_timeline on state-phrased asks while the ISO boost holds operator-phrased asks on grid_headroom → 5.9 replay.why_live_data, an additive per-class \"why this answer needed live data\" reason; routing unchanged → 5.10 why_live enum-ized: why_live_code from the canonical taxonomy why_live_reasons + phrase resolved from the snapshot; routing unchanged → 5.11 GEOGRAPHY SCOPING: a market_ranking intent naming a US state (or a city whose slug carries one) leads with site_selection_canvas region=<ST> — the only ranking tool with a state parameter; ai_capacity_index takes only horizon/limit and rank_markets region accepts only global/us/canada/eu/apac/americas, so both previously answered state-scoped questions nationally. _execConstraintIsoSet also resolves a named state to its ISO set, so the C1 constraint_check can finally fire on state-phrased intents → 5.12 CORRIDORS: named corridor places (Loudoun, Prince William, Ashburn, Secaucus, Piscataway …) bind a centroid + radius for ARGUMENTS only — never class scoring — reported as replay.place_scope; a county or metro that could only be scoped to a state/ISO is reported as replay.scope_widened {widened_from, to}; execute_plan step results slim STRUCTURED (arrays to their first rows) and relay/upgrade/unlock fields pass through byte-identical → 5.13 GEOGRAPHY BINDS: every execute_plan step whose tool accepts a point, radius or state gets the plan geography when unset (executed[].geo_injected names what was set; _EXEC_GEO_ARGS pinned to toolspec.json); VA/NJ counties join the corridor table (Middlesex only beside New Jersey); the corridor radius cap is 300 km; step slimming is ALWAYS structured (no JSON-prefix fallback) and machine_pay, retry_*, persist_command and auto_trial_key join the never-cut fields). Distinct from schema_version."
        -  },
        -  "rejected": {
        -    "anyOf": [
        -      {
        -        "items": {
        -          "additionalProperties": {},
        -          "properties": {
        -            "id": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "description": "Stable rejection id (R1..Rn)"
        -            },
        -            "reason": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "description": "Why it was rejected — the deterministic rejected_because"
        -            },
        -            "tool": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "description": "The tool/route the planner did NOT take"
        -            }
        -          },
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      {
        -        "type": "null"
        -      }
        -    ],
        -    "description": "Roads not taken, with reasons — the \"why not\" half of the audit trail"
        -  },
        -  "schema_version": {
        -    "anyOf": [
        -      {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "string"
        -          }
        -        ]
        -      },
        -      {
        -        "type": "null"
        -      }
        -    ],
        -    "description": "Version of the REPLAY OBJECT SHAPE (field set) — independent of planner_version; pin THIS in an SDK. Bumps only on a breaking shape change, so the planner routing revs so far (5.1 → 5.6) have all left it at 1."
        -  },
        -  "why_live_code": {
        -    "anyOf": [
        -      {
        -        "type": "string"
        -      },
        -      {
        -        "type": "null"
        -      }
        -    ],
        -    "description": "ENUM (v5.10): why this plan needs LIVE data — one of the requires_* codes published in the canonical taxonomy (/api/v1/canon/taxonomy why_live_reasons). Enumerated so stamped replays aggregate (\"N% of executions needed live queue data\"); count THIS, not the phrase. Absent when intent_class=unknown."
        -  },
        -  "why_live_data": {
        -    "anyOf": [
        -      {
        -        "type": "string"
        -      },
        -      {
        -        "type": "null"
        -      }
        -    ],
        -    "description": "Human phrase for why_live_code, resolved from the same canonical taxonomy — display it, never parse it. Additive at schema v1 (introduced 5.9 as class-keyed prose; enum-backed since 5.10)."
        -  }
        -}
      • removedOutput schema / properties / routing_hint / anyOf
        Removed value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "advisory": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "States that this recommends an entry point and asserts nothing about success"
        -      },
        -      "best_path": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Where to start: `execute_plan` for a multi-capability question, or the one tool name for a single-capability lookup"
        -      },
        -      "expected_outputs": {
        -        "anyOf": [
        -          {
        -            "items": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ],
        -              "description": "An output CLASS to expect — not a tool name"
        -            },
        -            "type": "array"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Bounded list of what the recommended path returns"
        -      },
        -      "external_sources_recommended": {
        -        "anyOf": [
        -          {
        -            "items": {
        -              "anyOf": [
        -                {
        -                  "additionalProperties": {},
        -                  "properties": {
        -                    "source_class": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "description": "Closed enum: brokerage_research | market_analytics | financial_context | utility_or_iso_filing | operator_disclosure"
        -                    },
        -                    "why": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "description": "What that class of source holds that DC Hub does not, quoting our own published limit"
        -                    }
        -                  },
        -                  "type": "object"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ]
        -            },
        -            "type": "array"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "What this question needs that DC Hub does NOT hold, named by SOURCE CLASS and never by vendor. An EMPTY array is an answer: DC Hub covers this class end to end."
        -      },
        -      "problem": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "The matched intent class — the SAME closed enum as intent_class, so it is branchable, not free text"
        -      },
        -      "why": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Short deterministic rationale for that entry point"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / routing_hint / description
        Removed value: -"ADVISORY router: collapses 94 tools to one starting point, then names what lies outside DC Hub entirely. Deliberately carries no tool list, latency promise, confidence score, execution graph or planner version — those ride `replay` AFTER routing. Four fields specified by ChatGPT in the 2026-08-29 partner round; external_sources_recommended added on its own request in the 2026-08-30 briefing, because a source we do not own is not execution metadata."
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
      • removedOutput schema / properties / workflow_confidence / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / workflow_confidence / description
        Removed value: -"How confident the router is that the plan can EXECUTE cleanly with the signals in hand (0-1, deterministic) — boosted by resolved context signals, docked for placeholder args the user must still supply; step-minted placeholders don't dock"
      • removedOutput schema / properties / workflow_confidence_basis / description
        Removed value: -"The arithmetic behind workflow_confidence: {resolved_signals, minted_placeholders, user_supplied_placeholders}"
    • Changedpredict_market_trajectory9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedrank_markets26 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / cite_as / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / cite_as / description
        Removed value: -"Ready-made attribution line"
      • removedOutput schema / properties / criteria / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / criteria / description
        Removed value: -"Ranking criterion used"
      • removedOutput schema / properties / data_source / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / data_source / description
        Removed value: -"Where the data comes from"
      • removedOutput schema / properties / methodology / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / methodology / description
        Removed value: -"Method note"
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / region / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / region / description
        Removed value: -"Region filter applied"
      • removedOutput schema / properties / result_count / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / result_count / description
        Removed value: -"Rows returned in THIS response"
      • removedOutput schema / properties / results / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / results / description
        Removed value: -"Ranked markets"
      • removedOutput schema / properties / score_basis / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / score_basis / description
        Removed value: -"How the score is computed"
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
      • removedOutput schema / properties / tier / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / tier / description
        Removed value: -"Tier the response was served at"
    • Changedrank_sites13 fields changed
      • changedInput schema / properties / absolute / description
        Previous value: -"false (default) = min-max normalize within THIS batch (best-in-set, NOT stable across runs). true = score on a FIXED 0-100 scale for CROSS-RUN-STABLE, auditable scores — use ONLY when the objective fields are already 0-100 (analyze_site scores like risk_resilience/fiber_connectivity), not raw distances like fiber_km"New value: +"false (default) = min-max normalize within THIS batch (best-in-set, NOT stable across runs). true = score on a FIXED 0-100 scale for CROSS-RUN-STABLE, auditable scores — use ONLY when the objective fields are already 0-100 (analyze_site…"
      • changedInput schema / properties / candidates / description
        Previous value: -"Array of candidate objects. PREFERRED: {candidate_id: \"cand_…\", <your metric fields>} using ids from get_refined_queue — frozen coordinates/capacity/fiber_km load from the mint (zero transcription drift), your enrichments (e.g. overall_score from analyze_site) overlay. Legacy: {id?, lat?, lng?, <metric fields>} flat objects also work. Omit if using shortlist_name"New value: +"Array of candidate objects. PREFERRED: {candidate_id: \"cand_…\", <your metric fields>} using ids from get_refined_queue — frozen coordinates/capacity/fiber_km load from the mint (zero transcription drift), your enrichments (e.g."
      • changedInput schema / properties / percentile / description
        Previous value: -"true = score each objective as its PERCENTILE against the viable-site POPULATION (\"better than X% of viable sites\") — the strongest cross-run + cross-region comparability. Works for fields with a maintained baseline (analyze_site metrics: overall_score, risk_resilience, fiber_connectivity, power_infrastructure, market_conditions, gas_pipeline_access, fiber_km, power_cost); other fields fall back to absolute (listed in unbaselined_fields). Takes precedence over absolute"New value: +"true = score each objective as its PERCENTILE against the viable-site POPULATION (\"better than X% of viable sites\") — the strongest cross-run + cross-region comparability."
      • changedInput schema / properties / require_complete / description
        Previous value: -"true = DROP any candidate missing one or more of your (validated) objectives — dropped candidates are DECLARED in excluded_incomplete, never silent. Default false keeps incomplete candidates ranked on their carried objectives with missing_objectives flagged. Recommended true for autonomous take-rank-1 workflows (an incomplete candidate can otherwise top the ranking on its single best metric)."New value: +"true = DROP any candidate missing one or more of your (validated) objectives — dropped candidates are DECLARED in excluded_incomplete, never silent."
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedread_inbox9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedrecover_my_key9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedregister_standing_intent9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedreport_finding10 fields changed
      • changedInput schema / properties / class / description
        Previous value: -"Finding class: completeness_contradiction (status full/partial_preview with empty withheld_fields), geography_leak (preview resolved outside the requested ISO/region), as_of_cite_as (as_of null while cite_as stamps a date), pro_wall_dead_end (a paid-plan wall that says stop while next_ask offers another paid-plan tool and no cheaper rung), count_drift (tool or asset counts disagree across doors), stale_payload_complete (a stale sub-feed inside a payload marked complete), leak_past_pro_gate (a paid-plan field served below its plan), link_hygiene (dead or wrong-shape links), other"New value: +"Finding class: completeness_contradiction (status full/partial_preview with empty withheld_fields), geography_leak (preview resolved outside the requested ISO/region), as_of_cite_as (as_of null while cite_as stamps a date),…"
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedrequest_capacity_intro9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedresearch_task9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedsave_site9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedsave_to_shortlist9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedscore_facility9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedsearch9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedsearch_facilities23 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"Facility search results: `data` rows (name, provider, location, capacity on fuller tiers) alongside the DC Hub envelope keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / count / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / count / description
        Removed value: -"Rows returned in THIS response (null on some gated tiers)"
      • removedOutput schema / properties / data / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": {},
        -      "properties": {
        -        "city": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "City"
        -        },
        -        "country": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "ISO-2 country code"
        -        },
        -        "country_name": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Country full name"
        -        },
        -        "id": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Facility id"
        -        },
        -        "lat": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Latitude (fuller tiers)"
        -        },
        -        "location_display": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Pre-formatted \"City, State, Country\" line"
        -        },
        -        "lon": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Longitude (fuller tiers)"
        -        },
        -        "market_slug": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Market slug — feed to get_market_intel / get_market_dcpi_rank (fuller tiers)"
        -        },
        -        "name": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Facility name"
        -        },
        -        "power_mw": {
        -          "anyOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "string"
        -                }
        -              ]
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Power capacity in MW (fuller tiers)"
        -        },
        -        "profile_url": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "dchub.cloud facility page"
        -        },
        -        "provider": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Operator / provider company"
        -        },
        -        "slug": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "URL slug — feed to get_facility for the full profile"
        -        },
        -        "state": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "State/region code"
        -        },
        -        "state_name": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "State/region full name"
        -        },
        -        "status": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "operational | under-construction | planned (fuller tiers)"
        -        },
        -        "v": {
        -          "anyOf": [
        -            {
        -              "type": "string"
        -            },
        -            {
        -              "type": "null"
        -            }
        -          ],
        -          "description": "Per-record verification flag: verified | tracked | published | inferred"
        -        }
        -      },
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / data / description
        Removed value: -"Facility rows matching the filters"
      • removedOutput schema / properties / full_results_available / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / full_results_available / description
        Removed value: -"false when the row set was trimmed for your tier"
      • removedOutput schema / properties / note / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / note / description
        Removed value: -"Serving note (e.g. how many rows the full tier returns)"
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
      • removedOutput schema / properties / success / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / success / description
        Removed value: -"true when the search executed"
      • removedOutput schema / properties / tier / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / tier / description
        Removed value: -"Tier the response was served at"
      • removedOutput schema / properties / total_matching / anyOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "type": "number"
        -      },
        -      {
        -        "type": "string"
        -      }
        -    ]
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedOutput schema / properties / total_matching / description
        Removed value: -"Total rows matching the filter across the dataset (null when withheld by tier)"
    • Changedsearch_intelligence9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedsemantic_search9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedset_market_alert9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedset_shortlist_alert9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedset_site_alert9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedsimulate_scenario9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedsite_selection_canvas10 fields changed
      • changedInput schema / properties / verdict / description
        Previous value: -"Optional DCPI verdict filter: BUILD, CAUTION, or AVOID — or ALL to see every scored market in the geography. Defaults to BUILD,CAUTION, so a geography whose markets are all AVOID returns matched:0 plus an `empty_result` block explaining that; re-run with verdict=ALL to see those rows."New value: +"Optional DCPI verdict filter: BUILD, CAUTION, or AVOID — or ALL to see every scored market in the geography. Defaults to BUILD,CAUTION, so a geography whose markets are all AVOID returns matched:0 plus an `empty_result` block explaining…"
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedsource_capacity11 fields changed
      • changedInput schema / properties / min_kw / description
        Previous value: -"Browse filter: the size your human needs, in kW (min_mw is the same filter in MW). Matched against what a listing can ACTUALLY deliver, not just its headline total: contiguous_kw is the largest single contiguous block available and min_contract_kw the smallest chunk the provider will contract, so a listing answers only when this size fits the block it declares — a site with a big total but a small contiguous block is not a hit, and a big site willing to contract small chunks is. A listing that declares neither is matched on its total."New value: +"Browse filter: the size your human needs, in kW (min_mw is the same filter in MW). Matched against what a listing can ACTUALLY deliver, not just its headline total: contiguous_kw is the largest single contiguous block available and…"
      • changedInput schema / properties / min_mw / description
        Previous value: -"Browse filter: the size your human needs, in MW (min_kw is the same filter in kW). Matched against what a listing can ACTUALLY deliver, not just its headline total: contiguous_kw is the largest single contiguous block available and min_contract_kw the smallest chunk the provider will contract, so a listing answers only when this size fits the block it declares — a site with a big total but a small contiguous block is not a hit, and a big site willing to contract small chunks is. A listing that declares neither is matched on its total."New value: +"Browse filter: the size your human needs, in MW (min_kw is the same filter in kW). Matched against what a listing can ACTUALLY deliver, not just its headline total: contiguous_kw is the largest single contiguous block available and…"
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedsubscribe_digest9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedsuggest_reallocation9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedsummarize_for_citation9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedunlock_more_data9 fields changed
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
    • Changedwhy_dchub10 fields changed
      • removedInput schema / properties / competitor
        Removed value: -{
        -  "description": "Optional competitor/vendor name for a direct comparison-page link, e.g. DataCenterHawk, \"DC Byte\", DCD, Baxtel",
        -  "type": "string"
        -}
      • changedOutput schema / additionalProperties
        Previous value: -{}New value: +true
      • removedOutput schema / description
        Removed value: -"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • removedOutput schema / properties / _entity
        Removed value: -{
        -  "description": "Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / _front_door
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "First-tool hint: plan_query(intent) returns the ordered plan.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / _return_loop
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Next-session delta call (get_changes).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "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."
        -}
      • removedOutput schema / properties / provenance
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Source, method, as_of, verification_counts, license, cite_as; quote it when citing.",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / quota
        Removed value: -{
        -  "additionalProperties": {},
        -  "description": "Caller quota state (remaining calls, tier).",
        -  "properties": {},
        -  "type": "object"
        -}
      • removedOutput schema / properties / site_evaluation_handoff
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "additionalProperties": {},
        -        "properties": {},
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "additionalProperties": {},
        -      "properties": {},
        -      "type": "object"
        -    }
        -  ],
        -  "description": "Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
        -}
  4. 1 tool updatev2.12.44
    • Changedread_inbox3 fields changed
      • addedInput schema / properties / days
        Added value: +{
        +  "description": "Days back (default 14)",
        +  "maximum": 60,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / include_read
        Added value: +{
        +  "description": "true = re-read read and unread notes, marks nothing",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / peek / description
        Previous value: -"true = read without marking the notes read"New value: +"true = do not mark read"
  5. 94 tool updatesv2.12.43
    • Changedaccept_capacity_terms8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedai_capacity_index8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedanalyze_parcel8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedanalyze_site8 fields changed
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / locked / description
        Previous value: -"Which sections are Pro-locked on the free headline: {per_factor_breakdown, nearby_infrastructure, power_cost, fiber_carriers, site_analysis_report}"New value: +"Which sections are locked to a paid plan on the free headline: {per_factor_breakdown, nearby_infrastructure, power_cost, fiber_carriers, site_analysis_report}"
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedbind_email8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedclaim_free_key8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedcluster_sites_by_latency8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedcompare_isos8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedcompare_sites8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changeddeal_autopsy8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changeddelete_standing_intent8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changeddiscover_tools8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedexecute_plan8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedexport_dataset8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedfetch8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedfind_alternatives8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedfind_sites8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedgenerate_site_analysis8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_agent_registry8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_backup_status8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_changes8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_climate_intel8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_composite_site_score8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_dchub_recommendation8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_disaster_risk8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_energy_prices7 fields changed
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_facility13 fields changed
      • removedOutput schema / description
        Removed value: -"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."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • addedOutput schema / properties / cite_as
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Ready-made attribution line"
        +}
      • addedOutput schema / properties / data
        Added value: +{
        +  "description": "ONE facility"
        +}
      • addedOutput schema / properties / next_ask
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {},
        +      "properties": {},
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Suggested follow-up"
        +}
      • addedOutput schema / properties / preview_is_partial
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "true when the tier withheld fields"
        +}
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
      • addedOutput schema / properties / success
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "true when the lookup executed"
        +}
    • Changedget_facility_risk_delta8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_fiber_intel7 fields changed
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_fiber_readiness8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_gas_economics8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_gas_index8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_gas_intelligence8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_global_power8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_grid_data8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_grid_intelligence20 fields changed
      • changedInput schema / properties / region_id / description
        Previous value: -"Grid region (required): one of the 7 US ISOs (PJM, ERCOT, CAISO, MISO, SPP, NYISO, ISO-NE), an EIA balancing-authority code (e.g. SOCO, DUK, AZPS, TVA), or the PJM Dominion zone region_id=\"PJM-DOM\" for live Ashburn / Northern Virginia zone load + real-time LMP (the world's #1 DC market, invisible in EIA)"New value: +"Grid region (required): one of the 7 US ISOs (PJM, ERCOT, CAISO, MISO, SPP, NYISO, ISO-NE), an EIA balancing-authority code (e.g. SOCO, DUK, AZPS, TVA), or the PJM Dominion zone region_id=\"PJM-DOM\" for live Ashburn / Northern Virginia zone load + real-time LMP (the Ashburn / Northern Virginia zone, not visible in EIA)"
      • removedOutput schema / description
        Removed value: -"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."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • addedOutput schema / properties / as_of
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Timestamp of the reading"
        +}
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • addedOutput schema / properties / cite_as
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Ready-made attribution line"
        +}
      • addedOutput schema / properties / completeness
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {},
        +      "properties": {},
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Share of the payload this tier got"
        +}
      • addedOutput schema / properties / demand_period
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Period of the demand reading"
        +}
      • addedOutput schema / properties / free_preview_only
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "true when only the free preview was served"
        +}
      • addedOutput schema / properties / iso
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "ISO / grid operator code"
        +}
      • addedOutput schema / properties / iso_name
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Grid operator full name"
        +}
      • addedOutput schema / properties / ok
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "true when the ISO lookup executed"
        +}
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
      • addedOutput schema / properties / taste
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {},
        +      "properties": {},
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Free-tier preview fields"
        +}
      • addedOutput schema / properties / withheld
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {},
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Fields withheld on this tier"
        +}
      • addedOutput schema / properties / withheld_total
        Added value: +{
        +  "anyOf": [
        +    {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "type": "string"
        +        }
        +      ]
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "How many fields were withheld"
        +}
    • Changedget_grid_scoreboard7 fields changed
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_hosting_capacity8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_infra_projects8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_infrastructure8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_intelligence_index8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_interconnection_queue9 fields changed
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • addedOutput schema / properties / queued_generation_pending_revision_gw
        Added value: +{
        +  "anyOf": [
        +    {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "type": "string"
        +        }
        +      ]
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "MISO only: GW of applications in Pending Revision Approval (summer MW), reported beside the active total and NOT part of queued_generation_gw. null on every other ISO, and null on the free preview like the other GW figures"
        +}
      • addedOutput schema / properties / queued_generation_pending_revision_gw_basis
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "What queued_generation_pending_revision_gw counts: the MISO status, MW column, and that it is excluded from queued_generation_gw. Present only when the figure is"
        +}
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_iso_context16 fields changed
      • removedOutput schema / description
        Removed value: -"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."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • addedOutput schema / properties / cite_as
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Ready-made attribution line"
        +}
      • addedOutput schema / properties / iso
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "ISO code"
        +}
      • addedOutput schema / properties / locked_sections
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {},
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Sections withheld on this tier"
        +}
      • addedOutput schema / properties / max_tokens
        Added value: +{
        +  "anyOf": [
        +    {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "type": "string"
        +        }
        +      ]
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Token budget for this tier"
        +}
      • addedOutput schema / properties / ok
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "true when the ISO lookup executed"
        +}
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • addedOutput schema / properties / sections
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {},
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Sections delivered in budget"
        +}
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
      • addedOutput schema / properties / tier
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Tier the response was served at"
        +}
      • addedOutput schema / properties / used_tokens
        Added value: +{
        +  "anyOf": [
        +    {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "type": "string"
        +        }
        +      ]
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Tokens used by delivered sections"
        +}
    • Changedget_market_context8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_market_dcpi_rank8 fields changed
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / narrative / description
        Previous value: -"~100-word CBRE/JLL-style analyst read on the market — quote directly with attribution to DC Hub (CC-BY-4.0)"New value: +"~100-word analyst read on the market, quote directly with attribution to DC Hub (CC-BY-4.0)"
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_market_intel7 fields changed
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_metro_fiber8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_news15 fields changed
      • removedOutput schema / description
        Removed value: -"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."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • addedOutput schema / properties / articles
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {},
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "News rows"
        +}
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • addedOutput schema / properties / cite_as
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Ready-made attribution line"
        +}
      • addedOutput schema / properties / count
        Added value: +{
        +  "anyOf": [
        +    {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "type": "string"
        +        }
        +      ]
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Rows returned in THIS response"
        +}
      • addedOutput schema / properties / data
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {},
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Same rows as `articles`"
        +}
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
      • addedOutput schema / properties / source
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Where the news set comes from"
        +}
      • addedOutput schema / properties / success
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "true when the news query succeeded"
        +}
      • addedOutput schema / properties / total
        Added value: +{
        +  "anyOf": [
        +    {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "type": "string"
        +        }
        +      ]
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Total articles matching"
        +}
    • Changedget_peering_intel8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_permitting_intel8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_pipeline18 fields changed
      • removedOutput schema / description
        Removed value: -"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."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • addedOutput schema / properties / by_quarter
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {},
        +      "properties": {},
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Projects per delivery quarter"
        +}
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • addedOutput schema / properties / cite_as
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Ready-made attribution line"
        +}
      • addedOutput schema / properties / count
        Added value: +{
        +  "anyOf": [
        +    {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "type": "string"
        +        }
        +      ]
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Rows returned in THIS response"
        +}
      • addedOutput schema / properties / data
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {},
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Same rows as `pipeline`"
        +}
      • addedOutput schema / properties / data_source
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Where the data comes from"
        +}
      • addedOutput schema / properties / last_updated
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Pipeline last refreshed"
        +}
      • addedOutput schema / properties / pipeline
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {},
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Construction-pipeline projects"
        +}
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
      • addedOutput schema / properties / stats
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {},
        +      "properties": {},
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Aggregate pipeline stats"
        +}
      • addedOutput schema / properties / success
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "true when the query succeeded"
        +}
      • addedOutput schema / properties / total_count
        Added value: +{
        +  "anyOf": [
        +    {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "type": "string"
        +        }
        +      ]
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Total projects matching"
        +}
    • Changedget_power_availability_timeline8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_power_pipeline8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_refined_queue8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_renewable_energy20 fields changed
      • removedOutput schema / description
        Removed value: -"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."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • addedOutput schema / properties / cite_as
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Ready-made attribution line"
        +}
      • addedOutput schema / properties / data_source
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Where the data comes from"
        +}
      • addedOutput schema / properties / dc_industry_ppas
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {},
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Data-center PPA rows"
        +}
      • addedOutput schema / properties / filters_applied
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {},
        +      "properties": {},
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Filters the gateway applied"
        +}
      • addedOutput schema / properties / installations_count
        Added value: +{
        +  "anyOf": [
        +    {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "type": "string"
        +        }
        +      ]
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Installations returned"
        +}
      • addedOutput schema / properties / ppa_as_of
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "PPA set last refreshed"
        +}
      • addedOutput schema / properties / ppa_basis
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "How the PPA set is compiled"
        +}
      • addedOutput schema / properties / ppa_count
        Added value: +{
        +  "anyOf": [
        +    {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "type": "string"
        +        }
        +      ]
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "PPAs returned"
        +}
      • addedOutput schema / properties / ppa_total_count
        Added value: +{
        +  "anyOf": [
        +    {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "type": "string"
        +        }
        +      ]
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Total PPAs matching"
        +}
      • addedOutput schema / properties / ppa_total_mw
        Added value: +{
        +  "anyOf": [
        +    {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "type": "string"
        +        }
        +      ]
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Total MW across matching PPAs"
        +}
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • addedOutput schema / properties / renewable_installations
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {},
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Renewable installation rows"
        +}
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
      • addedOutput schema / properties / success
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "true when the query succeeded"
        +}
    • Changedget_retirement_headroom8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_shortlist8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_subsea_cables8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedget_tax_incentives14 fields changed
      • removedOutput schema / description
        Removed value: -"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."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • addedOutput schema / properties / cite_as
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Ready-made attribution line"
        +}
      • addedOutput schema / properties / count
        Added value: +{
        +  "anyOf": [
        +    {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "type": "string"
        +        }
        +      ]
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Rows returned in THIS response"
        +}
      • addedOutput schema / properties / data
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {},
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Incentive programs for the state"
        +}
      • addedOutput schema / properties / last_updated
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Incentive table last reviewed"
        +}
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
      • addedOutput schema / properties / state
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "State queried"
        +}
      • addedOutput schema / properties / status
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Serving status"
        +}
    • Changedget_water_risk20 fields changed
      • removedOutput schema / description
        Removed value: -"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."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • addedOutput schema / properties / cite_as
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Ready-made attribution line"
        +}
      • addedOutput schema / properties / current_drought_pct
        Added value: +{
        +  "anyOf": [
        +    {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "type": "string"
        +        }
        +      ]
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Share of state in drought, %"
        +}
      • addedOutput schema / properties / dominant_severity
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Dominant drought severity category"
        +}
      • addedOutput schema / properties / drought_categories
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {},
        +      "properties": {},
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Percent of area per drought category"
        +}
      • addedOutput schema / properties / latest_week
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {},
        +      "properties": {},
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Most recent weekly reading"
        +}
      • addedOutput schema / properties / ok
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "true when the lookup executed"
        +}
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • addedOutput schema / properties / queried_at
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Timestamp of the query"
        +}
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
      • addedOutput schema / properties / source
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Source of the drought data"
        +}
      • addedOutput schema / properties / source_url
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Source URL"
        +}
      • addedOutput schema / properties / state
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "State queried"
        +}
      • addedOutput schema / properties / success
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "true when the query succeeded"
        +}
      • addedOutput schema / properties / weekly_history
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {},
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Weekly drought history"
        +}
    • Changedgrid_transition_radar8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedhyperscaler_deals7 fields changed
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedlist_saved_sites8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedlist_standing_intents8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedlist_transactions7 fields changed
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedplan_fiber_leadin8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedplan_query8 fields changed
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / routing_hint / description
        Previous value: -"ADVISORY router: collapses 92 tools to one starting point, then names what lies outside DC Hub entirely. Deliberately carries no tool list, latency promise, confidence score, execution graph or planner version — those ride `replay` AFTER routing. Four fields specified by ChatGPT in the 2026-08-29 partner round; external_sources_recommended added on its own request in the 2026-08-30 briefing, because a source we do not own is not execution metadata."New value: +"ADVISORY router: collapses 94 tools to one starting point, then names what lies outside DC Hub entirely. Deliberately carries no tool list, latency promise, confidence score, execution graph or planner version — those ride `replay` AFTER routing. Four fields specified by ChatGPT in the 2026-08-29 partner round; external_sources_recommended added on its own request in the 2026-08-30 briefing, because a source we do not own is not execution metadata."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedpredict_market_trajectory8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedrank_markets17 fields changed
      • removedOutput schema / description
        Removed value: -"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."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • addedOutput schema / properties / cite_as
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Ready-made attribution line"
        +}
      • addedOutput schema / properties / criteria
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Ranking criterion used"
        +}
      • addedOutput schema / properties / data_source
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Where the data comes from"
        +}
      • addedOutput schema / properties / methodology
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Method note"
        +}
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • addedOutput schema / properties / region
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Region filter applied"
        +}
      • addedOutput schema / properties / result_count
        Added value: +{
        +  "anyOf": [
        +    {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "type": "string"
        +        }
        +      ]
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Rows returned in THIS response"
        +}
      • addedOutput schema / properties / results
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {},
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Ranked markets"
        +}
      • addedOutput schema / properties / score_basis
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "How the score is computed"
        +}
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
      • addedOutput schema / properties / tier
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Tier the response was served at"
        +}
    • Changedrank_sites8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Addedread_inbox
    • Changedrecover_my_key8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedregister_standing_intent8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Addedreport_finding
    • Changedrequest_capacity_intro8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedresearch_task8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedsave_site8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedsave_to_shortlist8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedscore_facility8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedsearch8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedsearch_facilities7 fields changed
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedsearch_intelligence8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedsemantic_search8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedset_market_alert10 fields changed
      • changedInput schema / properties / channel / description
        Previous value: -"Delivery channel: \"email\" (free, sent to your bound email) or \"webhook\" (Pro)"New value: +"Delivery channel: \"email\" (free, sent to your bound email) or \"webhook\" (paid plan)"
      • changedInput schema / properties / destination / description
        Previous value: -"For channel=\"webhook\", the https URL to POST alerts to (Pro); ignored for email (forced to bound address)"New value: +"For channel=\"webhook\", the https URL to POST alerts to (paid plan); ignored for email (forced to bound address)"
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedset_shortlist_alert8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedset_site_alert8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedsimulate_scenario8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedsite_selection_canvas8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedsource_capacity8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedsubscribe_digest8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedsuggest_reallocation8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedsummarize_for_citation8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedunlock_more_data8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
    • Changedwhy_dchub8 fields changed
      • changedOutput schema / description
        Previous value: -"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."New value: +"DC Hub envelope: tool data fields ride at the top level beside these keys."
      • changedOutput schema / properties / _entity / description
        Previous value: -"Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest."New value: +"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
      • changedOutput schema / properties / _front_door / description
        Previous value: -"In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan."New value: +"First-tool hint: plan_query(intent) returns the ordered plan."
      • changedOutput schema / properties / _return_loop / description
        Previous value: -"Suggested next-session delta call (get_changes since=24h) so you pull only what changed."New value: +"Next-session delta call (get_changes)."
      • changedOutput schema / properties / citation / description
        Previous 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."New value: +"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
      • changedOutput schema / properties / provenance / description
        Previous value: -"Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing."New value: +"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
      • changedOutput schema / properties / quota / description
        Previous value: -"Caller quota state (remaining calls, tier) when available."New value: +"Caller quota state (remaining calls, tier)."
      • changedOutput schema / properties / site_evaluation_handoff / description
        Previous value: -"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."New value: +"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
  6. 1 tool updatev2.12.25
    • Changedget_interconnection_queue1 field changed
      • addedOutput schema / properties / queued_generation_gw_basis_note
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "What queued_generation_gw counts on this row: status filter and MW column, e.g. \"Active only, summer MW\". Present on the US generation-queue ISOs other than ERCOT; compare totals from other trackers only on the same basis"
        +}
  7. 2 tool updatesv2.12.24
    • Changedget_refined_queue1 field changed
      • addedInput schema / properties / developer
        Added value: +{
        +  "description": "ERCOT only: keep projects whose developer name contains this text (case-insensitive substring, e.g. 'tenaska'). Developer names come from ERCOTQueue (ercotqueue.com, Matt Prusak, CC BY 4.0) joined to ERCOT's own queue by INR; other ISOs carry no developer field, so they return no rows when this is set. Answers that use it carry an attribution block",
        +  "type": "string"
        +}
    • Changedget_water_risk1 field changed
      • addedInput schema / properties / location
        Added value: +{
        +  "description": "Market NAME or metro slug instead of coordinates, e.g. \"phoenix\", \"northern-virginia\", \"dallas\". Resolved to that market's PUBLISHED CENTROID through the DCPI market row, and the answer carries a resolved_from block saying so. A MARKET-level read, not your parcel; pass lat/lon for a specific site. Not an alias for lat/lon: a place name is not a coordinate.",
        +  "type": "string"
        +}
  8. 3 tool updatesv2.12.21
    • Changedget_interconnection_queue5 fields changed
      • addedOutput schema / properties / queued_generation_gw
        Added value: +{
        +  "anyOf": [
        +    {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "type": "string"
        +        }
        +      ]
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Generation interconnection queue in this ISO, GW (US ISOs; ERCOT's generation queue, not its large-load queue). null on NESO/IESO/AESO"
        +}
      • changedOutput schema / properties / queued_load_data_center_gw / description
        Previous value: -"ERCOT only: large-load (data-center-driven) queue, GW — null for ISOs that publish no comparable feed"New value: +"ERCOT: data-center load DERIVED as ~90% of the large-load queue, GW. NESO/IESO/AESO: demand projects in the connections queue (all demand, not data centres only). null elsewhere"
      • changedOutput schema / properties / queued_load_dc_share_pct / description
        Previous value: -"ERCOT only: data-center share of queued load, %"New value: +"ERCOT: data-center share of the large-load queue, %. NESO/IESO/AESO: demand share of the connections queue, %. null elsewhere"
      • changedOutput schema / properties / queued_load_total_gw / description
        Previous value: -"Total queued GENERATION capacity in this ISO, GW"New value: +"Meaning depends on queued_load_total_gw_basis: generation_queue = the generation queue (deprecated alias of queued_generation_gw, removed after 2026-11-15); large_load = ERCOT's large-load (demand) queue; mixed_connection_queue = NESO/IESO/AESO connections queue (generation AND demand). GW"
      • addedOutput schema / properties / queued_load_total_gw_basis
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "What queued_load_total_gw measures on this row: generation_queue | large_load | mixed_connection_queue"
        +}
    • Changedregister_standing_intent20 fields changed
      • addedInput schema / properties / accept_terms
        Added value: +{
        +  "description": "For capacity: true ONLY after your human read and agreed to https://dchub.cloud/listings#terms; otherwise nothing is sent",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / available_by
        Added value: +{
        +  "description": "For capacity: needed by this date, YYYY-MM or YYYY-MM-DD",
        +  "type": "string"
        +}
      • addedInput schema / properties / company
        Added value: +{
        +  "description": "For capacity: your human's company",
        +  "type": "string"
        +}
      • addedInput schema / properties / countries
        Added value: +{
        +  "description": "For capacity: comma-separated countries, e.g. \"Germany, Netherlands\"",
        +  "type": "string"
        +}
      • addedInput schema / properties / delivery_type
        Added value: +{
        +  "description": "For capacity: land, powered_shell, turnkey or colocation",
        +  "enum": [
        +    "land",
        +    "powered_shell",
        +    "turnkey",
        +    "colocation"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / kind / description
        Previous value: -"Watch kind: \"new_deal_in_market\" | \"news_keyword\" | \"permitting_change\""New value: +"Watch kind: \"new_deal_in_market\" | \"news_keyword\" | \"permitting_change\" | \"capacity\" (a Capacity Source requirement, emailed, no webhook)"
      • addedInput schema / properties / markets
        Added value: +{
        +  "description": "For capacity: comma-separated markets, e.g. \"Dallas, Phoenix\"",
        +  "type": "string"
        +}
      • addedInput schema / properties / max_sites
        Added value: +{
        +  "description": "For capacity: how many sites the requirement may be split across, 1-6",
        +  "type": "number"
        +}
      • addedInput schema / properties / min_chunk_kw
        Added value: +{
        +  "description": "For capacity: the smallest block worth taking, in kW",
        +  "type": "number"
        +}
      • addedInput schema / properties / name
        Added value: +{
        +  "description": "For capacity: your human's full name, exactly as given; never invent it",
        +  "type": "string"
        +}
      • addedInput schema / properties / notes
        Added value: +{
        +  "description": "For capacity: anything else about the requirement; leave out anything that identifies your human",
        +  "type": "string"
        +}
      • addedInput schema / properties / regions
        Added value: +{
        +  "description": "For capacity: comma-separated regions from north_america, latin_america, europe, asia_pacific, middle_east_africa (aliases emea, apac, latam, americas)",
        +  "type": "string"
        +}
      • addedInput schema / properties / role
        Added value: +{
        +  "description": "For capacity: your human's role or title",
        +  "type": "string"
        +}
      • addedInput schema / properties / states
        Added value: +{
        +  "description": "For capacity: comma-separated US states, e.g. \"TX, AZ\"",
        +  "type": "string"
        +}
      • addedInput schema / properties / target_kw
        Added value: +{
        +  "description": "For capacity: capacity needed, in kW (or target_mw, not both)",
        +  "type": "number"
        +}
      • addedInput schema / properties / target_mw
        Added value: +{
        +  "description": "For capacity: capacity needed, in MW (or target_kw, not both)",
        +  "type": "number"
        +}
      • addedInput schema / properties / terms_version
        Added value: +{
        +  "description": "For capacity: the terms version your human agreed to; omit to send the version currently published",
        +  "type": "string"
        +}
      • addedInput schema / properties / use_case
        Added value: +{
        +  "description": "For capacity: what the capacity is for, e.g. \"AI inference\"",
        +  "type": "string"
        +}
      • changedInput schema / properties / webhook_url / description
        Previous value: -"Your public HTTPS webhook endpoint (required)"New value: +"Your public HTTPS webhook endpoint (required for every kind except capacity)"
      • changedInput schema / required
        Previous value: -[
        -  "kind",
        -  "webhook_url"
        -]New value: +[
        +  "kind"
        +]
    • Changedsource_capacity6 fields changed
      • changedInput schema / properties / available_by / description
        Previous value: -"Browse filter: only listings available by this date, as YYYY-MM or YYYY-MM-DD"New value: +"Browse filter: only listings available by this date, as YYYY-MM or YYYY-MM-DD. With a target it is the date the whole requirement must be deliverable by"
      • addedInput schema / properties / max_providers
        Added value: +{
        +  "description": "Match mode: how many different providers a bundle may use. Default: the same as max_sites",
        +  "maximum": 6,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / max_sites
        Added value: +{
        +  "description": "Match mode: how many listings the requirement may be split across. Default one, which allows exact fits only; raise it to allow bundles",
        +  "maximum": 6,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / min_chunk_kw
        Added value: +{
        +  "description": "Match mode: the smallest piece, in kW, your human will contract at any one listing. Default: no minimum",
        +  "type": "number"
        +}
      • addedInput schema / properties / target_kw
        Added value: +{
        +  "description": "Match mode: the whole requirement, in kW (target_mw is the same in MW; give one)",
        +  "type": "number"
        +}
      • addedInput schema / properties / target_mw
        Added value: +{
        +  "description": "Match mode: the whole requirement, in MW (target_kw is the same in kW; give one). Returns exact fits, bundles and a shortfall instead of teaser cards. Needs a signed-in human",
        +  "type": "number"
        +}
  9. 4 tool updatesv2.12.20
    • Changedget_facility1 field changed
      • addedInput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "facility_id": {}
        +    },
        +    "required": [
        +      "facility_id"
        +    ]
        +  },
        +  {
        +    "properties": {
        +      "id": {}
        +    },
        +    "required": [
        +      "id"
        +    ]
        +  },
        +  {
        +    "properties": {
        +      "slug": {}
        +    },
        +    "required": [
        +      "slug"
        +    ]
        +  },
        +  {
        +    "properties": {
        +      "name": {}
        +    },
        +    "required": [
        +      "name"
        +    ]
        +  }
        +]
    • Changedget_grid_intelligence1 field changed
      • addedInput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "region_id": {}
        +    },
        +    "required": [
        +      "region_id"
        +    ]
        +  },
        +  {
        +    "properties": {
        +      "iso": {}
        +    },
        +    "required": [
        +      "iso"
        +    ]
        +  },
        +  {
        +    "properties": {
        +      "region": {}
        +    },
        +    "required": [
        +      "region"
        +    ]
        +  },
        +  {
        +    "properties": {
        +      "market": {}
        +    },
        +    "required": [
        +      "market"
        +    ]
        +  }
        +]
    • Addedget_infra_projects
    • Changedplan_query2 fields changed
      • changedOutput schema / properties / replay / properties / planner_version / description
        Previous value: -"Semantic version of the PLANNER BEHAVIOR (routing/output) — bumps when routing changes (e.g. 5.1 replay field renames → 5.2 capacity_search/market_comparison → 5.4 fiber_power_pairing → 5.5 the hosting_capacity distribution class → 5.6 the incentives_tax class + stateFromPlace arg signal → 5.7 rank-vs-incentives arbitration: ranking language demotes the statutory class, \"rank markets by\" credits market_ranking → 5.8 reversed-order timing vocabulary: \"timeline for power …\" reaches power_timeline on state-phrased asks while the ISO boost holds operator-phrased asks on grid_headroom → 5.9 replay.why_live_data, an additive per-class \"why this answer needed live data\" reason; routing unchanged → 5.10 why_live enum-ized: why_live_code from the canonical taxonomy why_live_reasons + phrase resolved from the snapshot; routing unchanged → 5.11 GEOGRAPHY SCOPING: a market_ranking intent naming a US state (or a city whose slug carries one) leads with site_selection_canvas region=<ST> — the only ranking tool with a state parameter; ai_capacity_index takes only horizon/limit and rank_markets region accepts only global/us/canada/eu/apac/americas, so both previously answered state-scoped questions nationally. _execConstraintIsoSet also resolves a named state to its ISO set, so the C1 constraint_check can finally fire on state-phrased intents). Distinct from schema_version."New value: +"Semantic version of the PLANNER BEHAVIOR (routing/output) — bumps when routing changes (e.g. 5.1 replay field renames → 5.2 capacity_search/market_comparison → 5.4 fiber_power_pairing → 5.5 the hosting_capacity distribution class → 5.6 the incentives_tax class + stateFromPlace arg signal → 5.7 rank-vs-incentives arbitration: ranking language demotes the statutory class, \"rank markets by\" credits market_ranking → 5.8 reversed-order timing vocabulary: \"timeline for power …\" reaches power_timeline on state-phrased asks while the ISO boost holds operator-phrased asks on grid_headroom → 5.9 replay.why_live_data, an additive per-class \"why this answer needed live data\" reason; routing unchanged → 5.10 why_live enum-ized: why_live_code from the canonical taxonomy why_live_reasons + phrase resolved from the snapshot; routing unchanged → 5.11 GEOGRAPHY SCOPING: a market_ranking intent naming a US state (or a city whose slug carries one) leads with site_selection_canvas region=<ST> — the only ranking tool with a state parameter; ai_capacity_index takes only horizon/limit and rank_markets region accepts only global/us/canada/eu/apac/americas, so both previously answered state-scoped questions nationally. _execConstraintIsoSet also resolves a named state to its ISO set, so the C1 constraint_check can finally fire on state-phrased intents → 5.12 CORRIDORS: named corridor places (Loudoun, Prince William, Ashburn, Secaucus, Piscataway …) bind a centroid + radius for ARGUMENTS only — never class scoring — reported as replay.place_scope; a county or metro that could only be scoped to a state/ISO is reported as replay.scope_widened {widened_from, to}; execute_plan step results slim STRUCTURED (arrays to their first rows) and relay/upgrade/unlock fields pass through byte-identical → 5.13 GEOGRAPHY BINDS: every execute_plan step whose tool accepts a point, radius or state gets the plan geography when unset (executed[].geo_injected names what was set; _EXEC_GEO_ARGS pinned to toolspec.json); VA/NJ counties join the corridor table (Middlesex only beside New Jersey); the corridor radius cap is 300 km; step slimming is ALWAYS structured (no JSON-prefix fallback) and machine_pay, retry_*, persist_command and auto_trial_key join the never-cut fields). Distinct from schema_version."
      • changedOutput schema / properties / routing_hint / description
        Previous value: -"ADVISORY router: collapses 91 tools to one starting point, then names what lies outside DC Hub entirely. Deliberately carries no tool list, latency promise, confidence score, execution graph or planner version — those ride `replay` AFTER routing. Four fields specified by ChatGPT in the 2026-08-29 partner round; external_sources_recommended added on its own request in the 2026-08-30 briefing, because a source we do not own is not execution metadata."New value: +"ADVISORY router: collapses 92 tools to one starting point, then names what lies outside DC Hub entirely. Deliberately carries no tool list, latency promise, confidence score, execution graph or planner version — those ride `replay` AFTER routing. Four fields specified by ChatGPT in the 2026-08-29 partner round; external_sources_recommended added on its own request in the 2026-08-30 briefing, because a source we do not own is not execution metadata."
  10. 1 tool updatev2.12.15
    • Changedsource_capacity2 fields changed
      • changedInput schema / properties / min_kw / description
        Previous value: -"Browse filter: only listings with at least this much capacity, in kW (min_mw is the same filter in MW)"New value: +"Browse filter: the size your human needs, in kW (min_mw is the same filter in MW). Matched against what a listing can ACTUALLY deliver, not just its headline total: contiguous_kw is the largest single contiguous block available and min_contract_kw the smallest chunk the provider will contract, so a listing answers only when this size fits the block it declares — a site with a big total but a small contiguous block is not a hit, and a big site willing to contract small chunks is. A listing that declares neither is matched on its total."
      • changedInput schema / properties / min_mw / description
        Previous value: -"Browse filter: only listings with at least this much capacity, in MW"New value: +"Browse filter: the size your human needs, in MW (min_kw is the same filter in kW). Matched against what a listing can ACTUALLY deliver, not just its headline total: contiguous_kw is the largest single contiguous block available and min_contract_kw the smallest chunk the provider will contract, so a listing answers only when this size fits the block it declares — a site with a big total but a small contiguous block is not a hit, and a big site willing to contract small chunks is. A listing that declares neither is matched on its total."
  11. 2 tool updatesv2.12.14
    • Changedrequest_capacity_intro6 fields changed
      • addedInput schema / properties / capacity_kw
        Added value: +{
        +  "description": "Capacity needed, in kW (capacity_mw is the same requirement in MW)",
        +  "type": "number"
        +}
      • addedInput schema / properties / countries
        Added value: +{
        +  "description": "Comma-separated countries of interest, e.g. \"Germany, Netherlands\"",
        +  "type": "string"
        +}
      • changedInput schema / properties / message / description
        Previous value: -"A short note from your human to the operator"New value: +"A short note from your human for the provider. The deal registration itself carries only the company name and the requirement"
      • changedInput schema / properties / notes / description
        Previous value: -"Anything else the operator should know about the requirement"New value: +"Anything else the provider should know about the requirement. It travels with the requirement, so leave out anything that identifies your human"
      • addedInput schema / properties / regions
        Added value: +{
        +  "description": "Comma-separated regions of interest from north_america, latin_america, europe, asia_pacific and middle_east_africa (aliases emea, apac, latam, americas), e.g. \"europe, apac\"",
        +  "type": "string"
        +}
      • changedInput schema / properties / slug / description
        Previous value: -"The listing to request an introduction for: its slug or id from source_capacity. Omit to register a standing requirement for upcoming listings instead"New value: +"The listing to register a deal for: its slug or id from source_capacity. Omit to register a standing requirement for upcoming listings instead"
    • Changedsource_capacity5 fields changed
      • addedInput schema / properties / available_by
        Added value: +{
        +  "description": "Browse filter: only listings available by this date, as YYYY-MM or YYYY-MM-DD",
        +  "type": "string"
        +}
      • addedInput schema / properties / delivery_type
        Added value: +{
        +  "description": "Browse filter: how the capacity is delivered: land, powered_shell, turnkey or colocation",
        +  "enum": [
        +    "land",
        +    "powered_shell",
        +    "turnkey",
        +    "colocation"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / location
        Added value: +{
        +  "description": "Browse filter: comma-separated free text matched against each listing's region, country, state and metro, e.g. \"Germany\" or \"Texas, Phoenix\"",
        +  "type": "string"
        +}
      • addedInput schema / properties / min_kw
        Added value: +{
        +  "description": "Browse filter: only listings with at least this much capacity, in kW (min_mw is the same filter in MW)",
        +  "type": "number"
        +}
      • addedInput schema / properties / region
        Added value: +{
        +  "description": "Browse filter: comma-separated regions from north_america, latin_america, europe, asia_pacific and middle_east_africa; the aliases emea, apac, latam and americas also work, e.g. \"europe\" or \"emea, apac\"",
        +  "type": "string"
        +}
  12. 6 tool updatesv2.12.13
    • Addedaccept_capacity_terms
    • Removedget_pocket_listings
    • Changedplan_query1 field changed
      • changedOutput schema / properties / routing_hint / description
        Previous value: -"ADVISORY router: collapses 90 tools to one starting point, then names what lies outside DC Hub entirely. Deliberately carries no tool list, latency promise, confidence score, execution graph or planner version — those ride `replay` AFTER routing. Four fields specified by ChatGPT in the 2026-08-29 partner round; external_sources_recommended added on its own request in the 2026-08-30 briefing, because a source we do not own is not execution metadata."New value: +"ADVISORY router: collapses 91 tools to one starting point, then names what lies outside DC Hub entirely. Deliberately carries no tool list, latency promise, confidence score, execution graph or planner version — those ride `replay` AFTER routing. Four fields specified by ChatGPT in the 2026-08-29 partner round; external_sources_recommended added on its own request in the 2026-08-30 briefing, because a source we do not own is not execution metadata."
    • Addedrequest_capacity_intro
    • Removedrequest_listing_intro
    • Addedsource_capacity
  13. 3 tool updatesv2.12.12
    • Addedget_pocket_listings
    • Changedplan_query1 field changed
      • changedOutput schema / properties / routing_hint / description
        Previous value: -"ADVISORY router: collapses 88 tools to one starting point, then names what lies outside DC Hub entirely. Deliberately carries no tool list, latency promise, confidence score, execution graph or planner version — those ride `replay` AFTER routing. Four fields specified by ChatGPT in the 2026-08-29 partner round; external_sources_recommended added on its own request in the 2026-08-30 briefing, because a source we do not own is not execution metadata."New value: +"ADVISORY router: collapses 90 tools to one starting point, then names what lies outside DC Hub entirely. Deliberately carries no tool list, latency promise, confidence score, execution graph or planner version — those ride `replay` AFTER routing. Four fields specified by ChatGPT in the 2026-08-29 partner round; external_sources_recommended added on its own request in the 2026-08-30 briefing, because a source we do not own is not execution metadata."
    • Addedrequest_listing_intro

TDQS

A3.6/5.0

Scored across 94 tools

Disambiguation2/5

There are several near-duplicate clusters that will cause misselection: semantic_search and search_intelligence are explicitly the same retrieval layer with a different call shape, and save_site/list_saved_sites/set_site_alert runs in parallel to a second persistence system (save_to_shortlist/get_shortlist/set_shortlist_alert). Site scoring is spread across analyze_site, get_composite_site_score, score_facility, compare_sites, rank_sites, find_sites and site_selection_canvas, and grid work across get_grid_data, get_grid_scoreboard, get_grid_intelligence, get_iso_context and compare_isos. The lengthy 'do NOT use X, use Y' cross-references mitigate this considerably, but an agent still has to read them to avoid picking the wrong sibling.

Naming Consistency3/5

The dominant pattern is snake_case verb_noun (get_facility, search_facilities, rank_markets, save_site, register_standing_intent), which is readable and largely predictable. But a large minority break it with noun phrases or bare verbs — ai_capacity_index, hyperscaler_deals, deal_autopsy, site_selection_canvas, grid_transition_radar, why_dchub, and the bare search/fetch pair. Conventions are mixed enough that the name alone does not reliably predict the shape of a call.

Tool Count1/5

94 tools is roughly six times the top of the well-scoped range and well past any reasonable ceiling, even for a broad data-center/power domain. A large share of the surface is plumbing rather than domain capability: claim_free_key, bind_email, recover_my_key, unlock_more_data, read_inbox, report_finding, discover_tools, plan_query, execute_plan, get_agent_registry, get_backup_status, why_dchub. Several of these duplicate or shadow each other, so the count is inflated by meta-tooling rather than by distinct analytical coverage.

Completeness4/5

Coverage of the stated domain is unusually deep: site scoring, grid telemetry and headroom, interconnection queues, gas economics, permitting, tax, water, fiber, deals, news, capacity marketplace and alerting all have dedicated tools with honest coverage/caveat blocks. The visible gaps are lifecycle ones — saved sites and shortlists can be created and read but not updated or deleted (only standing intents have delete_standing_intent), and account/meta state has no cleanup path. Those are workaroundable but leave dead ends for an agent managing persistent state.

Maintenance

ActivityActive
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    F
    maintenance
    One-call Australian energy-market plumbing via AEMO — cited, structured responses for market data and analysis, not a data broker.
    5
    97 PyPI
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server wrapping worldmonitor global intelligence dashboard, exposing 140 tools across 32 services for live market, geopolitical, military, cyber, climate, and supply chain data.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server exposing distributed industrial asset data (battery storage, EV chargers, solar arrays) with tools for asset status, geospatial search, alerts, anomaly explanation, and load simulation.
    753 npm
    MIT