Skip to main content
Glama
azmartone67

DC Hub: Data Center, Power Grid & Energy Intelligence

Register Standing Intent (webhook push)

register_standing_intent

Register a standing query to get HMAC-signed webhook pushes when data center deals, news keywords, or permitting changes match your criteria instead of polling.

Instructions

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…

Input Schema

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

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changedv2.12.45
    • 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."
      -}
  2. Changed8 schema fields changedv2.12.43
    • 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."
  3. Changed20 schema fields changedv2.12.21
    • 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"
      +]
  4. Addedv2.12.10

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.

Deploy Server

Other Tools