{"schemaVersion":"1.0.0","canonicalUrl":"https://flightsweeper-webmcp.vercel.app/agent-tools.json","site":{"name":"FlightSweeper WebMCP Challenge Edition","url":"https://flightsweeper-webmcp.vercel.app","environment":"synthetic sandbox"},"boundary":"No real supplier, payment, passenger identity, reservation, or ticketing system is connected.","webmcp":{"state":"browser-local","tools":[{"name":"read_flight_mission","description":"Read the active flight mission, its exact purchasing limits, current state, and safe booking status.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"readOnlyHint":true,"untrustedContentHint":false,"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false,"untrustedContentHint":false}},{"name":"search_flights","description":"Search the challenge flight inventory using the active mission. The caller cannot expand the stored route or spending authority.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"readOnlyHint":false,"untrustedContentHint":true,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false,"untrustedContentHint":true}},{"name":"tighten_flight_mission","description":"Make the active mission safer or narrower. The agent may lower the price cap, require an earlier arrival, reduce connections, or require refundability, but can never expand its authority.","inputSchema":{"type":"object","properties":{"maxTotalCents":{"type":"integer","minimum":0,"maximum":500000},"maxStops":{"type":"integer","minimum":0,"maximum":2},"arriveBefore":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},"refundableOnly":{"type":"boolean"}},"additionalProperties":false},"readOnlyHint":false,"untrustedContentHint":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false,"untrustedContentHint":false}},{"name":"compare_visible_offers","description":"Compare offers already visible in Mission Control and return application-side policy decisions for each.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"readOnlyHint":true,"untrustedContentHint":true,"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false,"untrustedContentHint":true}},{"name":"select_offer","description":"Select one currently visible offer for purchase evaluation. This does not charge or book.","inputSchema":{"type":"object","properties":{"offerId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["offerId"],"additionalProperties":false},"readOnlyHint":false,"untrustedContentHint":true,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false,"untrustedContentHint":true}},{"name":"refresh_selected_offer","description":"Refresh the selected offer before purchase and advance its application-controlled quote version.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"readOnlyHint":false,"untrustedContentHint":true,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false,"untrustedContentHint":true}},{"name":"evaluate_purchase","description":"Evaluate the selected offer against the stored route, fare, price, and authority policy. The agent cannot provide its own authorization decision.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"readOnlyHint":false,"untrustedContentHint":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false,"untrustedContentHint":false}},{"name":"purchase_selected_offer","description":"Issue one sandbox ticket for the selected, refreshed, authorized offer, or return the original ticket when the mission is already booked. Requires an idempotency key. Never creates a real charge or airline order.","inputSchema":{"type":"object","properties":{"idempotencyKey":{"type":"string","minLength":1,"maxLength":80}},"required":["idempotencyKey"],"additionalProperties":false},"readOnlyHint":false,"untrustedContentHint":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false,"untrustedContentHint":false}},{"name":"get_booking_receipt","description":"Read the canonical sandbox booking receipt without passenger or payment data.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"readOnlyHint":true,"untrustedContentHint":false,"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false,"untrustedContentHint":false}},{"name":"revoke_purchase_authority","description":"Revoke the active mission authority so future purchase attempts are denied.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"readOnlyHint":false,"untrustedContentHint":false,"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false,"untrustedContentHint":false}}],"lifecycle":"Only tools valid for the current mission state are registered."},"mcp":{"transport":"https://flightsweeper-webmcp.vercel.app/mcp","protocolVersion":"2025-11-25","protocolVersions":["2025-11-25","2025-06-18"],"tools":[{"name":"get_challenge_capabilities","description":"Use this when an agent needs to describe the public FlightSweeper WebMCP challenge and its synthetic-only boundary. Do not use it for real travel transactions or private data.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"title":"Get Challenge Capabilities","outputSchema":{"type":"object","additionalProperties":true},"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false,"untrustedContentHint":false}},{"name":"get_flight_tool_contracts","description":"Use this when an agent needs to list the browser-local WebMCP tool contracts without executing or mutating a mission. Do not use it for real travel transactions or private data.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"title":"Get Flight Tool Contracts","outputSchema":{"type":"object","additionalProperties":true},"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false,"untrustedContentHint":false}},{"name":"get_sandbox_inventory","description":"Use this when an agent needs to describe the bounded synthetic inventory used by the challenge. Do not use it for real travel transactions or private data.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"title":"Get Sandbox Inventory","outputSchema":{"type":"object","additionalProperties":true},"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false,"untrustedContentHint":false}},{"name":"get_safety_model","description":"Use this when an agent needs to describe FlightSweeper's application-enforced policy, revocation, and idempotency model. Do not use it for real travel transactions or private data.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"title":"Get Safety Model","outputSchema":{"type":"object","additionalProperties":true},"annotations":{"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false,"untrustedContentHint":false}}]},"modified":"2026-08-26"}