{"ok":true,"site":{"host":"houselights.pages.dev","url":"https://houselights.pages.dev/","type":"live","desc":"A live theater box office where a person and an AI agent pick real seats together on the same map. Built with WebMCP.","tools":[{"name":"search_performances","kind":"answer","impl":"imperative","description":"List upcoming performances at this theater, optionally filtered by date or genre. Read-only.","title":"Search performances","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"date":{"type":"string","description":"YYYY-MM-DD"},"genre":{"type":"string","description":"e.g. dance, drama, music"}},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_seat_map","kind":"answer","impl":"imperative","description":"Get every seat for the current performance with live availability, price, and sightline/acoustic/value scores. Read-only.","title":"Get seat map","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"section":{"type":"string","enum":["orchestra","mezzanine","balcony"]}},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"recommend_seats","kind":"answer","impl":"imperative","description":"Recommend the best available seats by sightline+acoustic value, optionally adjacent and within a budget. Read-only; does not hold.","title":"Recommend seats","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"count":{"type":"integer","minimum":1,"maximum":8,"default":2},"section":{"type":"string","enum":["orchestra","mezzanine","balcony"]},"maxPrice":{"type":"integer","description":"Max price per seat in USD"},"adjacent":{"type":"boolean","default":true}},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"hold_seats","kind":"act","impl":"imperative","description":"Place a time-limited hold on seats for the current performance. Held seats pulse on the shared map and cannot be sold to anyone else until the hold expires or checkout completes.","title":"Hold seats","inputSchema":{"type":"object","properties":{"seatIds":{"type":"array","items":{"type":"string","pattern":"^(orchestra|mezzanine|balcony)-[A-Z]{1,2}[0-9]{1,2}$"},"minItems":1,"maxItems":8,"uniqueItems":true,"description":"One to eight unique seat ids like orchestra-C7"},"ttlSeconds":{"type":"integer","minimum":10,"maximum":300,"default":45}},"required":["seatIds"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"release_holds","kind":"act","impl":"imperative","description":"Release agent-held seats back to general availability. Human-held seats are never released by this tool.","title":"Release holds","inputSchema":{"type":"object","properties":{"seatIds":{"type":"array","items":{"type":"string","pattern":"^(orchestra|mezzanine|balcony)-[A-Z]{1,2}[0-9]{1,2}$"},"minItems":1,"maxItems":8,"uniqueItems":true,"description":"One to eight unique seat ids like orchestra-C7"}},"required":["seatIds"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"move_holds_to_cart","kind":"act","impl":"imperative","description":"Move currently held seats into the shopping cart so they can be purchased at checkout.","title":"Move holds to cart","inputSchema":{"type":"object","properties":{"seatIds":{"type":"array","items":{"type":"string","pattern":"^(orchestra|mezzanine|balcony)-[A-Z]{1,2}[0-9]{1,2}$"},"minItems":1,"maxItems":8,"uniqueItems":true,"description":"One to eight unique seat ids like orchestra-C7"}},"required":["seatIds"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"remove_from_cart","kind":"act","impl":"imperative","description":"Remove seats from the shopping cart (they become available again).","title":"Remove from cart","inputSchema":{"type":"object","properties":{"seatIds":{"type":"array","items":{"type":"string","pattern":"^(orchestra|mezzanine|balcony)-[A-Z]{1,2}[0-9]{1,2}$"},"minItems":1,"maxItems":8,"uniqueItems":true,"description":"One to eight unique seat ids like orchestra-C7"}},"required":["seatIds"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_board_state","kind":"answer","impl":"imperative","description":"Get the full shared state: current performance, live holds and cart seats with ownership and countdowns, totals, promo, and recent orders. Read-only.","title":"Get board state","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"apply_promo","kind":"act","impl":"imperative","description":"Apply a promotional discount code to the cart.","title":"Apply promo code","inputSchema":{"type":"object","properties":{"code":{"type":"string"}},"required":["code"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"checkout","kind":"transact","impl":"imperative","description":"Open a human confirmation dialog for the current cart. This tool never completes a sale; only the person can confirm the bound seat and price snapshot.","title":"Request checkout confirmation","annotations":{"destructiveHint":true},"inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"announce_to_user","kind":"act","impl":"imperative","description":"Speak a short message to the person watching the page: it is written to the page's screen-reader live region and shown as a visual toast. Use it to narrate what you are doing so a human (including blind users) can follow along.","title":"Announce to user","inputSchema":{"type":"object","properties":{"message":{"type":"string","minLength":1,"maxLength":200}},"required":["message"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_order","kind":"answer","impl":"imperative","description":"Look up a placed order by id. Read-only.","title":"Get order","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"orderId":{"type":"string"}},"required":["orderId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"undo_last_action","kind":"act","impl":"imperative","description":"Undo the agent’s most recent hold or cart move. Human actions and confirmed purchases cannot be reversed by this tool.","title":"Undo last action","inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"select_performance","kind":"act","impl":"imperative","description":"Switch the seat map to a different performance. Resets holds and cart for the new performance.","title":"Select performance","inputSchema":{"type":"object","properties":{"performanceId":{"type":"string","enum":["p1","p2","p3","p4","p5"]}},"required":["performanceId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Travel & Events","favicon":"/favicons/houselights.pages.dev.svg","apiSurface":"spec","toolCount":14}}