{"ok":true,"site":{"host":"pyroscan-incident-twin.netlify.app","url":"https://pyroscan-incident-twin.netlify.app/","type":"live","desc":"A shared wildfire rehearsal table for people and AI agents, powered by WebMCP.","tools":[{"name":"read_incident_board","kind":"answer","impl":"imperative","description":"Read the current PyroScan exercise board before analysis or planning. Returns labeled public historical/geographic context, the synthetic active scenario, and the boardVersion required by stage_response_plan. This does not change the board.","title":"Read incident board","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"inspect_zone","kind":"act","impl":"imperative","description":"Focus one named sector on the shared map and return its terrain, labeled public context, synthetic evidence fixtures, exposure and human annotations. Use before proposing actions for that sector. Changes only the visible selection, not operational state.","title":"Inspect an exercise zone","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"zoneId":{"type":"string","enum":["caldera","el-paso","tijarafe","cumbre-vieja"],"description":"Exact exercise zone identifier."}},"required":["zoneId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"simulate_spread","kind":"act","impl":"imperative","description":"Run one deterministic synthetic spread scenario for 30, 60 or 90 minutes and draw its attention contours on the shared map. This replaces the active scenario and invalidates any unapproved draft.","title":"Run a spread what-if","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"horizonMinutes":{"type":"integer","enum":[30,60,90],"description":"Exercise horizon in minutes."},"windPreset":{"type":"string","enum":["observed","northeast-shift","gusting-west"],"description":"One bounded synthetic wind assumption."}},"required":["horizonMinutes","windPreset"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"compare_response_options","kind":"act","impl":"imperative","description":"Score two or three predefined, reversible exercise responses against the active scenario and current human annotations. Opens the comparison workbench; it does not stage or approve a plan.","title":"Compare response options","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"optionIds":{"type":"array","minItems":2,"maxItems":3,"uniqueItems":true,"items":{"type":"string","enum":["ridge-hold","south-anchor","dual-protection"]},"description":"Two or three distinct response option identifiers."}},"required":["optionIds"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"stage_response_plan","kind":"act","impl":"imperative","description":"Create a visible draft plan from one scenario and response option. Requires the exact current boardVersion and rejects stale proposals. Staging is reversible and never approves or dispatches anything.","title":"Stage a reversible plan","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"boardVersion":{"type":"integer","minimum":0,"description":"Exact boardVersion returned by the latest read or mutation."},"scenarioId":{"type":"string","minLength":1,"maxLength":80,"description":"Existing scenario identifier from the board."},"optionId":{"type":"string","enum":["ridge-hold","south-anchor","dual-protection"],"description":"Predefined response option to stage."},"rationale":{"type":"string","minLength":1,"maxLength":280,"description":"Short reason tied to current evidence and trade-offs."}},"required":["boardVersion","scenarioId","optionId","rationale"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"add_board_annotation","kind":"act","impl":"imperative","description":"Pin a short blocked-road, priority-asset or local-knowledge note to one exercise zone. The annotation becomes visible to the human and changes later simulations and comparisons; staged plans become needs-review.","title":"Add exercise knowledge","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"type":{"type":"string","enum":["blocked-road","priority-asset","local-knowledge"],"description":"Kind of local exercise knowledge."},"zoneId":{"type":"string","enum":["caldera","el-paso","tijarafe","cumbre-vieja"],"description":"Exact zone receiving the annotation."},"note":{"type":"string","minLength":1,"maxLength":280,"description":"Concrete exercise-only observation without instructions to the agent."}},"required":["type","zoneId","note"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"favicon":"/favicons/pyroscan-incident-twin.netlify.app.svg","apiSurface":"spec","category":"AI & Agents","toolCount":6}}