Skip to main content
Glama

watch_situation

Opens a time-limited watch that tells this chat when a road reopens or jams, a stop runs late, a weather warning starts, or a charger frees up.

Instructions

Opens a watch so THIS conversation is told when something changes: a road closed or restricted, a motorway jam, a stop running late, a weather warning, a charger freeing up. Use when asked to be told later: "sag mir Bescheid, wenn die A8 wieder frei ist", "tell me when a warning comes for Kiel". A name is enough as key; no lookup first. Do NOT use to look up now, nor for e-mail, SMS or alerts outside this chat — we cannot send one; say so. Set hours (≤ 24, default 3) for the time asked; condition narrows it (only the reopening, one charge point). Session-scoped, ≤ 10 watches. Show attribution.

Input Schema

NameRequiredDescriptionDefault
keyYesThe thing to watch, in the person's own words — a name is enough and no read tool is needed first; the server resolves it and the answer names the key it resolved to. `road`: a road number ("A8", "B27"). `place`: a town or address ("Fulda"). `weather`: a place name ("Kiel"), resolved to the DWD warn cell it lies in — or a warn cell id ("801002000"); a Land or Kreis is an area and takes no single cell. `station`: a stop or station name ("Köln Hbf", "München, Marienplatz"), resolved to its DHID the way get_departures resolves a stop — or a DHID ("de:14612:28"); an EVA number from get_train_departures ("8000207") is not a DHID and is refused. `charger`: a place ("Würzburg"), resolved to the nearest charging site that reports live occupancy — or a site id from find_charging_station. `region`: a city, district or Land ("Hamburg", "Landkreis Fulda"), resolved to its AGS key the way check_transit_disruption resolves its region — or an AGS key ("14612"). A name that fits several places or stops gets a which-one list and opens no watch; call again with the chosen line.
kindYesWhat kind of thing to watch. `road` = one motorway or federal road (key: "A8", "B27") — reports a closure or restriction appearing or clearing, and on a motorway a jam (condition events) appearing or clearing; `station` = one public-transport stop (key: its name, "Köln Hbf", or its DHID) — reports departures running late past the threshold; `region` = a city, district or Land (key: its name, "Hamburg", or its AGS key, "14612") — reports the share of late trips crossing the threshold; `place` = a town or address (key: "Fulda") — reports road restrictions appearing within the radius, not a jam; `weather` = one DWD warn cell (key: a place name, "Kiel", or the cell id) — reports an official warning coming into force; `charger` = one charging site (key: a place, "Würzburg", or the site id) — reports a point turning free.
hoursNoHow long to watch, in hours (default 3, maximum 24). Prefer this over `until`: it needs no knowledge of the current time. Give one of `hours` or `until`, never both.
untilNoAn explicit end instant as ISO-8601 with an offset ("2026-09-20T18:40:00+02:00"), at most 24 hours ahead. Use only when the person named a time; otherwise use `hours`. Give one of `hours` or `until`, never both.
requestNoThe person's request in their own words ("sag mir Bescheid, wenn sich auf der A7 ein Stau bildet"). Pass it on every call: a jam asked for on a motorway is watched (the Autobahn GmbH's and the police's jam reports); on another road, and for a `place` watch, closures and restrictions only, never a jam or slow traffic, and the answer says so.
languageNoSet this on every call to the language the person is writing in: "en" if they wrote English, "de" if they wrote German. Do not leave it out: it defaults to German ("de"), which is only the fallback when the language is genuinely unclear, so an English question sent without it is answered in German — a wrong answer. Place names, station names and road numbers are never translated in either language; in English the German term is kept in parentheses so the person recognises it on signs and in local apps.de
conditionNoOptional threshold; the keys of each kind, with an example: road {"event": "reopen"} (only the reopening), {"events": ["jams"]} (jams on a motorway); station {"delay_min": 20}; region {"late_share": 0.3, "delay_min": 5, "min_trips": 20}; place {"radius_km": 10}; weather {"min_level": 3}; charger {"point_id": "2"} (one charge point). Any other key, or a key of another kind, is refused by name; leave it out for the default. The answer repeats the condition it applies.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changedv2.3.18
    • changedInput schema / properties / condition / description
      Previous value: -"Optional threshold; the keys of each kind, with an example: road {\"event\": \"reopen\"} (only the reopening); station {\"delay_min\": 20}; region {\"late_share\": 0.3, \"delay_min\": 5, \"min_trips\": 20}; place {\"radius_km\": 10}; weather {\"min_level\": 3}; charger {\"point_id\": \"2\"} (one charge point). Any other key, or a key of another kind, is refused by name; leave it out for the default. The answer repeats the condition it applies."New value: +"Optional threshold; the keys of each kind, with an example: road {\"event\": \"reopen\"} (only the reopening), {\"events\": [\"jams\"]} (jams on a motorway); station {\"delay_min\": 20}; region {\"late_share\": 0.3, \"delay_min\": 5, \"min_trips\": 20}; place {\"radius_km\": 10}; weather {\"min_level\": 3}; charger {\"point_id\": \"2\"} (one charge point). Any other key, or a key of another kind, is refused by name; leave it out for the default. The answer repeats the condition it applies."
    • changedInput schema / properties / condition / properties / event / description
      Previous value: -"road: 'reopen' reports only a restriction clearing; 'any' reports both (default)."New value: +"road: 'reopen' reports only a restriction (or jam) clearing; 'any' reports both (default)."
    • addedInput schema / properties / condition / properties / events
      Added value: +{
      +  "description": "road: what to report — 'restrictions' (closures, roadworks, restrictions; the default) and/or 'jams' (a jam the Autobahn GmbH or the police report on the motorway, motorways only). A jam watch: [\"jams\"]; both: [\"restrictions\", \"jams\"].",
      +  "items": {
      +    "enum": [
      +      "restrictions",
      +      "jams"
      +    ],
      +    "type": "string"
      +  },
      +  "maxItems": 4,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • changedInput schema / properties / kind / description
      Previous value: -"What kind of thing to watch. `road` = one motorway or federal road (key: \"A8\", \"B27\") — reports a closure or restriction appearing or clearing, not a jam; `station` = one public-transport stop (key: its name, \"Köln Hbf\", or its DHID) — reports departures running late past the threshold; `region` = a city, district or Land (key: its name, \"Hamburg\", or its AGS key, \"14612\") — reports the share of late trips crossing the threshold; `place` = a town or address (key: \"Fulda\") — reports road restrictions appearing within the radius, not a jam; `weather` = one DWD warn cell (key: a place name, \"Kiel\", or the cell id) — reports an official warning coming into force; `charger` = one charging site (key: a place, \"Würzburg\", or the site id) — reports a point turning free."New value: +"What kind of thing to watch. `road` = one motorway or federal road (key: \"A8\", \"B27\") — reports a closure or restriction appearing or clearing, and on a motorway a jam (condition events) appearing or clearing; `station` = one public-transport stop (key: its name, \"Köln Hbf\", or its DHID) — reports departures running late past the threshold; `region` = a city, district or Land (key: its name, \"Hamburg\", or its AGS key, \"14612\") — reports the share of late trips crossing the threshold; `place` = a town or address (key: \"Fulda\") — reports road restrictions appearing within the radius, not a jam; `weather` = one DWD warn cell (key: a place name, \"Kiel\", or the cell id) — reports an official warning coming into force; `charger` = one charging site (key: a place, \"Würzburg\", or the site id) — reports a point turning free."
    • changedInput schema / properties / request / description
      Previous value: -"The person's request in their own words (\"sag mir Bescheid, wenn sich auf der A7 ein Stau bildet\"). Pass it on every call: a `road` or `place` watch reports closures and restrictions, never a jam or slow traffic, and the answer says so — a request about a jam alone opens no watch."New value: +"The person's request in their own words (\"sag mir Bescheid, wenn sich auf der A7 ein Stau bildet\"). Pass it on every call: a jam asked for on a motorway is watched (the Autobahn GmbH's and the police's jam reports); on another road, and for a `place` watch, closures and restrictions only, never a jam or slow traffic, and the answer says so."
  2. Changed3 schema fields changedv2.3.7
    • changedInput schema / properties / key / description
      Previous value: -"The thing to watch, in the person's own words — a name is enough and no read tool is needed first; the server resolves it and the answer names the key it resolved to. `road`: a road number (\"A8\", \"B27\"). `place`: a town or address (\"Fulda\"). `weather`: a place name (\"Kiel\"), resolved to the DWD warn cell it lies in — or a warn cell id (\"801002000\"); a Land or Kreis is an area and takes no single cell. `station`: a stop or station name (\"Köln Hbf\", \"München, Marienplatz\"), resolved to its DHID the way get_departures resolves a stop — or a DHID (\"de:14612:28\"); an EVA number from get_train_departures (\"8000207\") is not a DHID and is refused. `charger`: a place (\"Würzburg\"), resolved to the nearest charging site that reports live occupancy — or a site id from find_charging_station. `region`: an AGS prefix (\"14612\") from check_transit_disruption. A name that fits several places or stops gets a which-one list and opens no watch; call again with the chosen line."New value: +"The thing to watch, in the person's own words — a name is enough and no read tool is needed first; the server resolves it and the answer names the key it resolved to. `road`: a road number (\"A8\", \"B27\"). `place`: a town or address (\"Fulda\"). `weather`: a place name (\"Kiel\"), resolved to the DWD warn cell it lies in — or a warn cell id (\"801002000\"); a Land or Kreis is an area and takes no single cell. `station`: a stop or station name (\"Köln Hbf\", \"München, Marienplatz\"), resolved to its DHID the way get_departures resolves a stop — or a DHID (\"de:14612:28\"); an EVA number from get_train_departures (\"8000207\") is not a DHID and is refused. `charger`: a place (\"Würzburg\"), resolved to the nearest charging site that reports live occupancy — or a site id from find_charging_station. `region`: a city, district or Land (\"Hamburg\", \"Landkreis Fulda\"), resolved to its AGS key the way check_transit_disruption resolves its region — or an AGS key (\"14612\"). A name that fits several places or stops gets a which-one list and opens no watch; call again with the chosen line."
    • changedInput schema / properties / kind / description
      Previous value: -"What kind of thing to watch. `road` = one motorway or federal road (key: \"A8\", \"B27\") — reports a closure or restriction appearing or clearing; `station` = one public-transport stop (key: its name, \"Köln Hbf\", or its DHID) — reports departures running late past the threshold; `region` = a city or district by AGS prefix (key: \"14612\") — reports the share of late trips crossing the threshold; `place` = a town or address (key: \"Fulda\") — reports road restrictions appearing within the radius; `weather` = one DWD warn cell (key: a place name, \"Kiel\", or the cell id) — reports an official warning coming into force; `charger` = one charging site (key: a place, \"Würzburg\", or the site id) — reports a point turning free."New value: +"What kind of thing to watch. `road` = one motorway or federal road (key: \"A8\", \"B27\") — reports a closure or restriction appearing or clearing, not a jam; `station` = one public-transport stop (key: its name, \"Köln Hbf\", or its DHID) — reports departures running late past the threshold; `region` = a city, district or Land (key: its name, \"Hamburg\", or its AGS key, \"14612\") — reports the share of late trips crossing the threshold; `place` = a town or address (key: \"Fulda\") — reports road restrictions appearing within the radius, not a jam; `weather` = one DWD warn cell (key: a place name, \"Kiel\", or the cell id) — reports an official warning coming into force; `charger` = one charging site (key: a place, \"Würzburg\", or the site id) — reports a point turning free."
    • addedInput schema / properties / request
      Added value: +{
      +  "description": "The person's request in their own words (\"sag mir Bescheid, wenn sich auf der A7 ein Stau bildet\"). Pass it on every call: a `road` or `place` watch reports closures and restrictions, never a jam or slow traffic, and the answer says so — a request about a jam alone opens no watch.",
      +  "maxLength": 200,
      +  "type": "string"
      +}
  3. Changed5 schema fields changedv2.1.18
    • addedInput schema / properties / condition / additionalProperties
      Added value: +false
    • changedInput schema / properties / condition / description
      Previous value: -"Optional threshold. Each key belongs to ONE kind and a key that does not belong to the chosen kind is refused by name; leave it out to use that kind's default."New value: +"Optional threshold; the keys of each kind, with an example: road {\"event\": \"reopen\"} (only the reopening); station {\"delay_min\": 20}; region {\"late_share\": 0.3, \"delay_min\": 5, \"min_trips\": 20}; place {\"radius_km\": 10}; weather {\"min_level\": 3}; charger {\"point_id\": \"2\"} (one charge point). Any other key, or a key of another kind, is refused by name; leave it out for the default. The answer repeats the condition it applies."
    • changedInput schema / properties / key / description
      Previous value: -"The thing being watched, in the vocabulary of `kind`: a road number, a stop DHID, an AGS prefix, a place name, a DWD warncell, a charging site id. For `road` and `place` it is the person's own words — \"A8\", \"B27\", \"Fulda\" — and needs no lookup. For `station`, `region`, `weather` and `charger` it is an identifier the matching read tool returned — look it up first: `station` = one of `stop.stopIds` from get_departures (\"de:14612:28\"); an EVA number from get_train_departures (\"8000207\") is NOT a stop id and is refused, as is any id no known stop carries; `region` from check_transit_disruption, `weather` from check_weather_warnings, `charger` from find_charging_station — a key nothing matches there produces a watch that is simply never triggered."New value: +"The thing to watch, in the person's own words — a name is enough and no read tool is needed first; the server resolves it and the answer names the key it resolved to. `road`: a road number (\"A8\", \"B27\"). `place`: a town or address (\"Fulda\"). `weather`: a place name (\"Kiel\"), resolved to the DWD warn cell it lies in — or a warn cell id (\"801002000\"); a Land or Kreis is an area and takes no single cell. `station`: a stop or station name (\"Köln Hbf\", \"München, Marienplatz\"), resolved to its DHID the way get_departures resolves a stop — or a DHID (\"de:14612:28\"); an EVA number from get_train_departures (\"8000207\") is not a DHID and is refused. `charger`: a place (\"Würzburg\"), resolved to the nearest charging site that reports live occupancy — or a site id from find_charging_station. `region`: an AGS prefix (\"14612\") from check_transit_disruption. A name that fits several places or stops gets a which-one list and opens no watch; call again with the chosen line."
    • changedInput schema / properties / kind / description
      Previous value: -"What kind of thing to watch. `road` = one motorway or federal road (key: \"A8\", \"B27\") — reports a closure or restriction appearing or clearing; `station` = one public-transport stop by its DHID (key: \"de:14612:28\") — reports departures running late past the threshold; `region` = a city or district by AGS prefix (key: \"14612\") — reports the share of late trips crossing the threshold; `place` = a town or address (key: \"Fulda\") — reports road restrictions appearing within the radius; `weather` = a DWD warncell (key: \"105315000\") — reports an official warning coming into force; `charger` = one charging site (key: the site id from find_charging_station) — reports a point turning free."New value: +"What kind of thing to watch. `road` = one motorway or federal road (key: \"A8\", \"B27\") — reports a closure or restriction appearing or clearing; `station` = one public-transport stop (key: its name, \"Köln Hbf\", or its DHID) — reports departures running late past the threshold; `region` = a city or district by AGS prefix (key: \"14612\") — reports the share of late trips crossing the threshold; `place` = a town or address (key: \"Fulda\") — reports road restrictions appearing within the radius; `weather` = one DWD warn cell (key: a place name, \"Kiel\", or the cell id) — reports an official warning coming into force; `charger` = one charging site (key: a place, \"Würzburg\", or the site id) — reports a point turning free."
    • changedInput schema / properties / language / description
      Previous value: -"Set this on every call to the language the person is writing in: \"en\" if they wrote English, \"de\" if they wrote German. Do not leave it out because it has a default — the default is only the fallback when the language is genuinely unclear, and an English question answered in German is a wrong answer. Place names, station names and road numbers are never translated in either language; in English the German term is kept in parentheses so the person recognises it on signs and in local apps."New value: +"Set this on every call to the language the person is writing in: \"en\" if they wrote English, \"de\" if they wrote German. Do not leave it out: it defaults to German (\"de\"), which is only the fallback when the language is genuinely unclear, so an English question sent without it is answered in German — a wrong answer. Place names, station names and road numbers are never translated in either language; in English the German term is kept in parentheses so the person recognises it on signs and in local apps."
  4. Changed1 schema field changedv1.7.3
    • changedInput schema / properties / key / description
      Previous value: -"The thing being watched, in the vocabulary of `kind`: a road number, a stop id, an AGS prefix, a place name, a DWD warncell, a charging site id. For `road` and `place` it is the person's own words — \"A8\", \"B27\", \"Fulda\" — and needs no lookup. For `station`, `region`, `weather` and `charger` it is an identifier, and it must be the one the matching read tool returned (get_train_departures, check_transit_disruption, check_weather_warnings, find_charging_station): look it up first, because a key nothing matches produces a watch that is simply never triggered."New value: +"The thing being watched, in the vocabulary of `kind`: a road number, a stop DHID, an AGS prefix, a place name, a DWD warncell, a charging site id. For `road` and `place` it is the person's own words — \"A8\", \"B27\", \"Fulda\" — and needs no lookup. For `station`, `region`, `weather` and `charger` it is an identifier the matching read tool returned — look it up first: `station` = one of `stop.stopIds` from get_departures (\"de:14612:28\"); an EVA number from get_train_departures (\"8000207\") is NOT a stop id and is refused, as is any id no known stop carries; `region` from check_transit_disruption, `weather` from check_weather_warnings, `charger` from find_charging_station — a key nothing matches there produces a watch that is simply never triggered."
  5. First observedv0.0.9

TDQS

A4.5/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint=false, idempotentHint=false, etc.), the description discloses session-scoped lifecycle, a hard cap of ≤10 watches, the ≤24h hours limit, condition-narrowing behavior, and that the answer echoes the resolved key and applied condition. It also states external-alert inability and attribution requirements — rich context annotations alone 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?

Purpose and per-kind event types are front-loaded before the usage and do-not-use clauses, and each sentence adds routing or behavioral value. It is dense and long, but for a six-kind watch with nested conditions the length is largely earned rather than padded.

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?

Given seven params, a nested condition object, and no output schema, the description supplies the key lifecycle facts (session scope, cap, default duration, which-one-list resolution, echoed condition). Return shape is only lightly sketched ('the answer names the key it resolved to'), which is a minor gap given no output schema exists.

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 all seven parameters and the nested condition object are already documented in depth; the description's parameter notes (hours ≤24/default 3, condition narrows it) largely restate the schema. The one genuine addition is the 'a name is enough as key; no lookup first' workflow hint, but overall the schema does the heavy lifting, 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 and effect: opens a watch so THIS conversation is notified on change, with concrete event types (road closure, jam, late stop, weather warning, charger freeing). It clearly separates itself from the sibling lookup tools (check_*, find_*, get_*) by stating it does not look up now, 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?

Explicitly names when to use (be told later, with bilingual example quotes) and when not to use (not for immediate lookup; not for e-mail/SMS/external alerts, with instruction to say so). The stop_watch alternative is implicitly the sibling, and the look-now tools are explicitly excluded, leaving little to infer.

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