add_hurricane_swath_layer | Add Hurricane Swath Layer | Fetch a hurricane wind or precipitation swath as a map layer dict ready to render on an already-open hurricane map. Swath products exist for the 'official' and 'ai_enhanced' tracks only. Called on-demand from the interactive_map_app iframe when a swath entry in the layer menu is activated; also callable directly. |
add_hurricane_track_layer | Add Hurricane Track Layer | Fetch one hurricane forecast-track ensemble ('official'=Athenium Official, 'ai_enhanced'=AI Enhanced, 'model_means'=per-system model means; legacy numeric codes accepted) as map layer dicts ready to render on an already-open hurricane map. Called on-demand from the interactive_map_app iframe when a track entry in the layer menu is activated; also callable directly. |
add_spc_layer | Add SPC Reports Layer | Fetch SPC ground-truth storm reports for one date + peril and return a map layer dict ready to render. Called on-demand from the interactive_map_app iframe when the user toggles 'Add SPC reports'. |
add_tor_survey_layer | Add NWS Tornado Survey Layer | Fetch NWS post-storm tornado damage survey geometry (damage polygons, tracks, and points) for one date and return map layer dicts ready to render. Called on-demand from the interactive_map_app iframe when the user toggles 'Add NWS Tornado Survey' on a TORNADIC_STORM map. |
data_dictionary | Data Dictionary | What weather data exists for a topic, and which tool serves it. Free, no credits. |
geocode_address | Geocode Address / POI Search | Geocode an address/place name to coordinates, or search points of interest. App-initiated backend for the interactive_map_app search box; also usable directly. `place_type` filters result classes (e.g. 'address,locality,region' for addresses, 'poi' for points of interest); `poi_category` (e.g. 'health_services') searches a POI category instead of free text. Optional proximity biases results toward the current view; `limit` caps results (1-10). |
interactive_map_app | Weather & Hazard Map | Render an INTERACTIVE map (MCP App iframe): severe-weather contours, hurricane tracks, or custom GeoJSON, with pan/zoom, hover popups, legends, POI search, and time sliders. |
load_map_geojson | Load Map GeoJSON | Resolve one weather map's GeoJSON layers server-side and return them to the app UI only. App-initiated companion to `interactive_map_app`: the open call returns params + a geometry-free summary (model-visible); this call delivers the full FeatureCollection geometry to the iframe over the tool bridge so it never enters the model's context. Accepts the same params as `interactive_map_app`. |
set_map_display | Set Map Display | Change what an ALREADY-OPEN interactive map displays without re-opening it: toggle layers from the map's `display.layers` manifest on or off, move the camera, and drive the time slider. Do NOT call this immediately after interactive_map_app to configure the initial view — layer/camera/time seeds belong in that tool's `display_defaults` and `time_defaults` parameters. Use this tool only to change a map that is already open, in response to a new instruction or user interaction. Pass the `session` from the interactive_map_app result (it identifies ONE map). Only `available:true` manifest ids are legal; layers the user toggled themselves (owner:'user' / user_touched:true) are skipped unless `override_user:true` — set that only when the user explicitly asked; the same arbitration guards a user-owned camera (they panned/zoomed) and time state (they scrubbed). `camera` pans/zooms: {"bbox": [w,s,e,n]} or {"center": [lon,lat], "zoom": n} (+ optional animate_ms). `time` drives the slider: any of bin, mode ('hour'|'cumulative'), show_all, playing, speed_ms. Combine for a zoomed animation: camera={"bbox": ...}, time={"playing": true, "mode": "cumulative", "speed_ms": 250}. Call with no changes to read the current display state. For a different date/peril/storm, re-run interactive_map_app instead. Display sessions are ephemeral UI state (recreatable, server-side TTL), not durable user data. |
snapshot_map_display | Snapshot Map to Shareable Link | Freeze the current state of an open interactive map as a standalone, shareable quicklook web page (stable URL, no login). Layer data is re-materialized server-side and pinned as cloud artifacts — the page never calls live APIs. Reproduces the visible layers, camera, and time-slider position; the page keeps its own working time slider, hover/click tooltips, POI search, and a GeoJSON download. Pass the `session` from the interactive_map_app result. Called from the iframe's Share button; also callable directly. |
sync_map_display | Sync Map Display (app-internal) | APP-INTERNAL: records a user's gesture from the map UI into the display session — layer toggles, pan/zoom (camera), and time-slider interactions — stamping owner:'user' so the agent knows what the user set manually. Never call this tool — to change the map programmatically, use set_map_display instead. Display sessions are ephemeral UI state (recreatable, server-side TTL), not durable user data. |