Skip to main content
Glama

Set Market Alert

set_market_alert

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". One call: pass email (an address your human typed here) with channel="email" and DC Hub binds it to this key first (minting a free key if this session has none), then arms the watch; no separate claim_free_key or bind_email. Alerts send when the market’s verdict flips or its scores move past the threshold, so a quiet market sends nothing. 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.

Input Schema

NameRequiredDescriptionDefault
emailNoOptional, channel="email" only: your human's email, typed by them here. Binds it to the key (a free key is minted if this session has none) and arms the watch in one call
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

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / email
      Added value: +{
      +  "description": "Optional, channel=\"email\" only: your human's email, typed by them here. Binds it to the key (a free key is minted if this session has none) and arms the watch in one call",
      +  "type": "string"
      +}
  2. Changed7 schema fields changed
    • removedOutput schema / properties / _entity
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / _front_door
      Removed value: -{
      -  "type": "object"
      -}
    • removedOutput schema / properties / _return_loop
      Removed value: -{
      -  "type": "object"
      -}
    • removedOutput schema / properties / citation
      Removed value: -{}
    • removedOutput schema / properties / provenance
      Removed value: -{
      -  "type": "object"
      -}
    • removedOutput schema / properties / quota
      Removed value: -{
      -  "type": "object"
      -}
    • removedOutput schema / properties / site_evaluation_handoff
      Removed value: -{}
  3. Changed19 schema 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 / description
      Removed value: -"Payload class (facility|market|iso_grid|queue_results|deal|report|response); branch on it."
    • removedOutput schema / properties / _front_door / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / _front_door / description
      Removed value: -"First-tool hint: plan_query(intent) returns the ordered plan."
    • removedOutput schema / properties / _front_door / properties
      Removed value: -{}
    • removedOutput schema / properties / _return_loop / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / _return_loop / description
      Removed value: -"Next-session delta call (get_changes)."
    • removedOutput schema / properties / _return_loop / properties
      Removed value: -{}
    • removedOutput schema / properties / citation / anyOf
      Removed value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {},
      -    "type": "object"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedOutput schema / properties / citation / description
      Removed value: -"How to attribute DC Hub: {source, url, license, cite_as, retrieved_at}, or the attribution line as a string."
    • removedOutput schema / properties / provenance / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / provenance / description
      Removed value: -"Source, method, as_of, verification_counts, license, cite_as; quote it when citing."
    • removedOutput schema / properties / provenance / properties
      Removed value: -{}
    • removedOutput schema / properties / quota / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / quota / description
      Removed value: -"Caller quota state (remaining calls, tier)."
    • removedOutput schema / properties / quota / properties
      Removed value: -{}
    • removedOutput schema / properties / site_evaluation_handoff / anyOf
      Removed value: -[
      -  {
      -    "items": {
      -      "additionalProperties": {},
      -      "properties": {},
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "additionalProperties": {},
      -    "properties": {},
      -    "type": "object"
      -  }
      -]
    • removedOutput schema / properties / site_evaluation_handoff / description
      Removed value: -"Follow-up calls [{tool, parameters, why}] when the payload carries coordinates."
  4. Changed2 schema 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)"
  5. Added
  6. Removed
  7. Changed1 schema field changed
    • addedInput schema / required
      Added value: +[
      +  "market",
      +  "channel"
      +]
  8. Changed2 schema fields changed
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • removedOutput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
  9. Changed5 schema fields changed
    • removedOutput schema / properties / citation / additionalProperties
      Removed value: -{}
    • addedOutput schema / properties / citation / anyOf
      Added value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {},
      +    "type": "object"
      +  },
      +  {
      +    "type": "string"
      +  }
      +]
    • changedOutput schema / properties / citation / description
      Previous value: -"Machine-readable citation: how to attribute DC Hub (dchub.cloud) for this payload."New value: +"Machine-readable citation: how to attribute DC Hub (dchub.cloud) for this payload. Normally an OBJECT {source, url, license, cite_as, retrieved_at}; a bare string is accepted and carries the attribution line itself."
    • removedOutput schema / properties / citation / properties
      Removed value: -{}
    • removedOutput schema / properties / citation / type
      Removed value: -"object"
  10. Changed1 schema field changed
    • addedOutput schema / properties / _front_door
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "In-band front-door hint (first workflow-entry tool of a session): call plan_query(intent) first for the ordered multi-step plan.",
      +  "properties": {},
      +  "type": "object"
      +}
  11. Changed5 schema fields changed
    • removedOutput schema / properties / site_evaluation_handoff / additionalProperties
      Removed value: -{}
    • addedOutput schema / properties / site_evaluation_handoff / anyOf
      Added value: +[
      +  {
      +    "items": {
      +      "additionalProperties": {},
      +      "properties": {},
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "additionalProperties": {},
      +    "properties": {},
      +    "type": "object"
      +  }
      +]
    • changedOutput schema / properties / site_evaluation_handoff / description
      Previous value: -"Pre-built follow-up call (analyze_site / get_water_risk args) when the payload carries coordinates."New value: +"Pre-built follow-up calls (analyze_site / get_water_risk args) when the payload carries coordinates — an array of {tool, parameters, why} entries."
    • removedOutput schema / properties / site_evaluation_handoff / properties
      Removed value: -{}
    • removedOutput schema / properties / site_evaluation_handoff / type
      Removed value: -"object"
  12. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": {},
      +  "description": "DC Hub envelope: structuredContent mirrors the JSON payload in content[0].text — tool-specific data fields ride at the top level alongside these envelope keys.",
      +  "properties": {
      +    "_entity": {
      +      "description": "Payload class discriminator (e.g. facility|market|iso_grid|queue_results|deal|report|response) — branch on this before parsing the rest.",
      +      "type": "string"
      +    },
      +    "_return_loop": {
      +      "additionalProperties": {},
      +      "description": "Suggested next-session delta call (get_changes since=24h) so you pull only what changed.",
      +      "properties": {},
      +      "type": "object"
      +    },
      +    "citation": {
      +      "additionalProperties": {},
      +      "description": "Machine-readable citation: how to attribute DC Hub (dchub.cloud) for this payload.",
      +      "properties": {},
      +      "type": "object"
      +    },
      +    "provenance": {
      +      "additionalProperties": {},
      +      "description": "Collection-level provenance block: {source, method, as_of, verification_counts, cite_url_template, license, cite_as}. Quote the verification level when citing.",
      +      "properties": {},
      +      "type": "object"
      +    },
      +    "quota": {
      +      "additionalProperties": {},
      +      "description": "Caller quota state (remaining calls, tier) when available.",
      +      "properties": {},
      +      "type": "object"
      +    },
      +    "site_evaluation_handoff": {
      +      "additionalProperties": {},
      +      "description": "Pre-built follow-up call (analyze_site / get_water_risk args) when the payload carries coordinates.",
      +      "properties": {},
      +      "type": "object"
      +    }
      +  },
      +  "type": "object"
      +}
  13. Changed3 schema fields changed
    • addedInput schema / properties / channel / description
      Added value: +"Delivery channel: \"email\" (free, sent to your bound email) or \"webhook\" (Pro)"
    • addedInput schema / properties / destination / description
      Added value: +"For channel=\"webhook\", the https URL to POST alerts to (Pro); ignored for email (forced to bound address)"
    • addedInput schema / properties / market / description
      Added value: +"Market slug (metro) to watch, e.g. northern-virginia — valid slugs come from rank_markets / get_market_dcpi_rank"
  14. Added

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare a non-read-only mutation, and the description adds substantial context beyond them: free-tier email is forced to the bound address, email is bound/minted in one call, webhook requires a paid plan, and alerts only fire on verdict flips/threshold crossings. It does not address idempotency (annotation says idempotentHint=false) — e.g. whether re-calling duplicates a watch — which is the one remaining 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?

Front-loads the core purpose and includes the routing guidance, but the email/channel binding logic is explained twice (the parenthetical about bind_email and the later 'pass email... binds it... no separate claim_free_key', both restating the schema). It is denser than needed for a 4-parameter 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?

With annotations, full schema coverage, and an output schema, the description supplies everything an agent needs: free vs paid paths, the one-call email shortcut, when alerts actually fire, and the sibling to use for reads. Nothing required 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 all four parameters. The description reinforces email binding/minting and the destination-forced-to-bound-address rule, which adds some meaning beyond the schema, but largely restates what is already there. 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 (subscribes/arms alerts) and resource (a market's DCPI Excess-Power/Constraint score), and explicitly contrasts with the sibling get_market_dcpi_rank, so the agent can separate monitor-vs-read 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 explicit when-to-use ('tell me when this market moves'), when-not-to-use ('Do NOT use to read a market right now — use get_market_dcpi_rank'), free-vs-paid conditions, and a worked example with parameters. Alternatives and exclusions are named outright.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.