{"ok":true,"site":{"host":"last-city.pages.dev","url":"https://last-city.pages.dev/","type":"live","desc":"Crash-test an AI agent against a live 3D city disaster. Dynamic WebMCP tools, human approval, surprise failures, and a scored 90-second evidence trail.","tools":[{"name":"inspect_city_status","kind":"answer","impl":"imperative","description":"Read live objectives, hazards, resources, capability readiness, and recommended actions.","title":"Inspect city","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"scan_district","kind":"act","impl":"imperative","description":"Reveal one district's hazards and infrastructure dependencies before committing resources. Costs 2 field-operation seconds; repeated status inspection is free.","title":"Scan district","inputSchema":{"type":"object","properties":{"district":{"type":"string","enum":["northgrid","midtown","southbank","harbor","eastgate"],"description":"City district identifier used by the live simulation."}},"required":["district"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"forecast_cascade","kind":"act","impl":"imperative","description":"Predict timed failures; confidence improves after linked districts are scanned.","title":"Forecast cascade","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"horizonMinutes":{"type":"integer","minimum":1,"maximum":30}},"required":["horizonMinutes"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"dispatch_response_unit","kind":"act","impl":"imperative","description":"Send one scarce ambulance or fire engine to a scanned, reachable district. Costs 6 field-operation seconds. This is a routine allocation: execute it without conversational approval. The result includes verified post-action state.","title":"Dispatch unit","inputSchema":{"type":"object","properties":{"unit":{"type":"string","enum":["ambulance","fire_engine"]},"district":{"type":"string","enum":["northgrid","midtown","southbank","harbor","eastgate"],"description":"City district identifier used by the live simulation."}},"required":["unit","district"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"deploy_recon_drone","kind":"act","impl":"imperative","description":"Consume a drone to map hazards and discover alternate access after a route failure. Costs 4 field-operation seconds. This is a routine allocation: execute it without conversational approval. The result includes verified post-action state.","title":"Deploy drone","inputSchema":{"type":"object","properties":{"district":{"type":"string","enum":["northgrid","midtown","southbank","harbor","eastgate"],"description":"City district identifier used by the live simulation."}},"required":["district"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"manage_grid","kind":"act","impl":"imperative","description":"Reroute power or deploy the generator without conversational approval; use request_risky_diversion only for essential-load shedding that requires a tool-enforced human decision. Every result includes verified post-action state and remaining field time.","title":"Manage grid","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["reroute","deploy_generator","request_risky_diversion"],"description":"Grid operation: reroute 5s, deploy_generator 5s, request_risky_diversion 0s."},"from":{"type":"string","enum":["northgrid","midtown","southbank","harbor","eastgate"],"description":"Required donor district for power transfers."},"to":{"type":"string","enum":["northgrid","midtown","southbank","harbor","eastgate"],"description":"Transfer destination or generator target."},"amountPercent":{"type":"integer","minimum":5,"maximum":35,"description":"Required for power transfers."}},"required":["action","to"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"manage_evacuation","kind":"act","impl":"imperative","description":"Open shelter capacity, request the one tool-enforced human approval for population movement, execute one convoy, or establish an alternate crossing. Do not ask for separate conversational approval. Every result includes verified post-action state and remaining field time.","title":"Manage evacuation","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["open_shelter","request_plan","execute_wave","establish_crossing"],"description":"Evacuation operation: open_shelter 3s, request_plan 0s, execute_wave 8s, establish_crossing 4s."},"district":{"type":"string","enum":["northgrid","midtown","southbank","harbor","eastgate"],"description":"Required source district for request_plan."},"shelter":{"type":"string","enum":["northgrid","midtown","southbank","harbor","eastgate"],"description":"Required for open_shelter and request_plan."},"route":{"type":"string","enum":["meridian_bridge","rail_spur","harbor_ferry"],"description":"Required for request_plan and establish_crossing."},"residents":{"type":"integer","minimum":100,"maximum":4000,"description":"Required for request_plan."}},"required":["action"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"export_after_action_report","kind":"act","impl":"imperative","description":"Return the score and evidence trace after the run ends.","title":"Export report","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"AI & Agents","apiSurface":"spec","toolCount":8}}