{"ok":true,"site":{"host":"agent-flight-sim-production.up.railway.app","url":"https://agent-flight-sim-production.up.railway.app/","type":"live","desc":"A real-time WebMCP flight simulator that tests whether an agent can adapt to an emergency and land safely.","tools":[{"name":"read_pilot_manual","kind":"answer","impl":"imperative","description":"Read this before programming a flight. It publishes the aircraft-specific takeoff, approach, flare, touchdown, rollout, and pre-armed go-around limits needed to choose exact commands. It contains no sealed scenario information.","title":"Read pilot operating manual before flight","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"start_flight","kind":"act","impl":"imperative","description":"Select agent mode for a fresh flight and receive the full mission brief and current state. The selected mode stays locked until the run is reset. The brief publishes route checkpoints and exact crossing targets; it does not prescribe controls. The environment privately selects a reproducible scenario, and no future condition is disclosed before its flight event. Submit the ordered exact command program before takeoff.","title":"Start flight","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"program_flight_plan","kind":"act","impl":"imperative","description":"Author the flight as 2-16 ordered exact commands. Each command persists until the next trigger. Choose one lateral mode, one vertical mode, one energy mode, plus exact gear and flaps. The first trigger must be immediate. Use active_waypoint commands to fly each published checkpoint. The simulator tracks your declared setpoints at 60 Hz; it never chooses pitch, speed, configuration, flare, or rollout. Landing programs need a distance-triggered exact-pitch flare and an aircraft_phase landing_roll command. Put exact missed-approach commands in go_around.commands to pre-arm an immediate response to an unsafe approach. Replacing commands preserves route progress. Read read_pilot_manual for the aircraft-specific limits.","title":"Program flight plan","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"plan":{"type":"string","enum":["continue_kmdw","return_kstl"]},"commands":{"type":"array","minItems":2,"maxItems":16,"items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"when":{"type":"object","properties":{"type":{"type":"string","enum":["immediate","airspeed_at_least","altitude_at_least","active_waypoint","distance_to_runway_at_most","aircraft_phase"]},"value":{"type":["number","string"]}},"required":["type"],"additionalProperties":false},"lateral":{"type":"object","properties":{"mode":{"type":"string","enum":["heading","track_fix","bank"]},"heading_deg":{"type":"number","minimum":0,"maximum":359.999},"waypoint_id":{"type":"string","minLength":1},"bank_deg":{"type":"number","minimum":-25,"maximum":25}},"required":["mode"],"additionalProperties":false},"vertical":{"type":"object","properties":{"mode":{"type":"string","enum":["pitch","altitude"]},"pitch_deg":{"type":"number","minimum":-10,"maximum":15},"altitude_ft":{"type":"number","minimum":585,"maximum":6000}},"required":["mode"],"additionalProperties":false},"energy":{"type":"object","properties":{"mode":{"type":"string","enum":["throttle","airspeed"]},"throttle":{"type":"number","minimum":0,"maximum":1},"airspeed_kt":{"type":"number","minimum":120,"maximum":260}},"required":["mode"],"additionalProperties":false},"gear_down":{"type":"boolean"},"flaps_deg":{"type":"number","enum":[0,10,20,30]}},"required":["id","when","lateral","vertical","energy","gear_down","flaps_deg"],"additionalProperties":false}},"go_around":{"type":"object","properties":{"commands":{"type":"array","minItems":2,"maxItems":16,"items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"when":{"type":"object","properties":{"type":{"type":"string","enum":["immediate","airspeed_at_least","altitude_at_least","active_waypoint","distance_to_runway_at_most","aircraft_phase"]},"value":{"type":["number","string"]}},"required":["type"],"additionalProperties":false},"lateral":{"type":"object","properties":{"mode":{"type":"string","enum":["heading","track_fix","bank"]},"heading_deg":{"type":"number","minimum":0,"maximum":359.999},"waypoint_id":{"type":"string","minLength":1},"bank_deg":{"type":"number","minimum":-25,"maximum":25}},"required":["mode"],"additionalProperties":false},"vertical":{"type":"object","properties":{"mode":{"type":"string","enum":["pitch","altitude"]},"pitch_deg":{"type":"number","minimum":-10,"maximum":15},"altitude_ft":{"type":"number","minimum":585,"maximum":6000}},"required":["mode"],"additionalProperties":false},"energy":{"type":"object","properties":{"mode":{"type":"string","enum":["throttle","airspeed"]},"throttle":{"type":"number","minimum":0,"maximum":1},"airspeed_kt":{"type":"number","minimum":120,"maximum":260}},"required":["mode"],"additionalProperties":false},"gear_down":{"type":"boolean"},"flaps_deg":{"type":"number","enum":[0,10,20,30]}},"required":["id","when","lateral","vertical","energy","gear_down","flaps_deg"],"additionalProperties":false}}},"required":["commands"],"additionalProperties":false},"restart_route":{"type":"boolean","default":false},"reason":{"type":"string","minLength":1}},"required":["plan","commands","reason"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"request_diversion","kind":"act","impl":"imperative","description":"After emergency_detected, choose one route from that event response's decisionContext.routeOptions. This sends the request to simulated ATC but does not change the active route. Wait for atc_clearance_received before acting.","title":"Request ATC diversion","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"plan":{"type":"string","enum":["continue_kmdw","return_kstl"]},"reason":{"type":"string","minLength":1}},"required":["plan","reason"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"accept_clearance","kind":"act","impl":"imperative","description":"Accept the current ATC clearance by copying its clearance.id and reading back its destination, runway, altitude, and initial heading. The clearance then publishes the complete route and crossing targets. Replace the command program so the aircraft meets each checkpoint.","title":"Read back ATC clearance","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"clearance_id":{"type":"string","minLength":1},"readback":{"type":"string","minLength":1}},"required":["clearance_id","readback"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"wait_for_flight_event","kind":"act","impl":"imperative","description":"Wait without polling for route, comfort, configuration, touchdown, completion, or failure events. The current state is returned with every event. emergency_detected also returns the newly unsealed evidence, fuel, decision time, and route options as decisionContext. Emergency and failure events preempt routine notices. The aircraft keeps executing the active command program for the entire wait.","title":"Wait for flight event","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"after_revision":{"type":"number","minimum":0},"events":{"type":"array","items":{"type":"string","enum":["emergency_detected","decision_timer_expired","atc_clearance_received","atc_clearance_accepted","plan_updated","route_progress_stalled","checkpoint_reached","comfort_limit_approaching","passenger_safety_update","stall_warning","configuration_required","configuration_confirmed","go_around_required","approach_stable","touchdown","mission_complete","mission_failed"]},"minItems":1},"timeout_ms":{"type":"number","minimum":1000,"maximum":15000,"default":15000}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"AI & Agents","favicon":"/favicons/agent-flight-sim-production.up.railway.app.png","apiSurface":"spec","toolCount":6}}