GLASS LANTERN HOTEL — GUEST ASSISTANT GUIDE Fictional hotel by Techie Stays. Imagined Kamala, Phuket scenario; no physical property. Rooms, prices, inventory, images, reservations and service fulfilment are simulated. This is not a Cloudbeds, GuestCentric, Muse or Mews integration. PUBLIC DISCOVERY Find Glass Lantern Demo Hotel by name. Its official hotel homepage is https://glass-lantern-hotel.vercel.app/ and the Techie Stays discovery page links to it. Generic Phuket search rankings vary. The search_hotels tool uses only the fictional directory. HUMAN INTERFACES / — rooms, experiences, dining, local information, room and celebration photos, stay planning and Talk to Lantern. /choose — date-specific availability and reviewed enquiry or booking request. /reception — private synthetic stay and guest requests. Talk to Lantern connects the guest’s real microphone to OpenAI Realtime over WebRTC. Only the guest starts a call. WEBMCP Open the homepage /, /choose or /reception in a supported browser-agent environment. The page registers hotel_information, search_hotels, ask_hotel, read_conversation, quote_stay, save_enquiry, create_booking_request, get_test_checkout_link, get_payment_authorization_details, set_confirmation_email, pay_authorized_test_booking, payment_status, revoke_test_payment_authorization, get_stay_confirmation, my_reservation, submit_guest_request and request_status. Browser tools use the page's scoped session and update the visible website. Start on the hotel homepage: ask for photos, show the returned hotel-hosted images, and ask for dates if missing. Quote there without opening another page. The guest can take over in Talk to Lantern; do not start the microphone on their behalf. Inspect current tools; do not assume a normal read-only AI chat can execute them. REMOTE MCP POST /api/mcp with JSON-RPC. Stateless HTTP POST; GET streaming is not implemented. Start with initialize and tools/list. hotel_information is public. start_guest_session returns a private one-hour planning token; retain it and pass it as access_token to planning tools. This does not unlock a reservation. With guest approval, redeem_confirmation accepts the private invitation secret and private planning token. If the call returns a replacement access_token, use that token for the connected stay. New paid-stay links, including emailed links, are reusable until 11:00 Phuket time on checkout day. Prepared fixture links remain single-use for 30 minutes. Older emailed links retain their original one-use expiry; obtain a fresh stay link from the authenticated booking session if needed. Never put booking details, session tokens or invitations in search queries, request URLs, logs or transcripts. Name and booking reference alone cannot unlock a stay. No OAuth or universal client support is claimed. ROOM PLANNING Ask about a full sea view and birthday setup. The hotel tool returns room images and two birthday packages. quote_stay takes ISO checkIn/checkOut, adults, children, roomId (ocean-suite or sea-terrace), packageId (none, birthday-touch or birthday-bloom). Quote validity is 30 minutes. All availability and prices are simulated; nothing is held. Show the actual returned details for guest review. Only after explicit approval call save_enquiry or create_booking_request with quoteId and confirmed true. A submitted enquiry is not a confirmed birthday arrangement. ALREADY BOOKED The guest manually opens their synthetic confirmation link. my_reservation returns only that session's unlocked stay. Ask the hotel about late arrival or airport transfers. The airport transfer is a bookable fictional add-on: 1,200 Thai baht for a private car from HKT to the hotel, up to three passengers and three bags. Ask for flight number, Phuket landing date/time, passengers and bags. Call quote_airport_transfer and present the exact result. With explicit approval, call book_airport_transfer, then get_addon_checkout_link for guest payment. For agent payment, use get_addon_payment_authorization_details and pay_authorized_test_addon only with an independently signed exact add-on approval; otherwise hand off Checkout. Check addon_status: confirmed_in_demo means “Your airport transfer is confirmed.” Do not imply it still needs hotel acceptance. Include the fictional/test notice. my_reservation includes the transfer attached to the existing stay. Never create a second room booking to sell an add-on. Preserve the connected stay without creating another room booking. Submit a late-checkout or birthday-setup request only after explicit guest approval. submit_guest_request takes type (late_checkout or birthday_setup), note and confirmed true. request_status accepts the returned request reference. Status remains requested until a separate local demo hotel decision. accepted_in_demo is not real fulfilment. PAYMENTS After the guest approves and creates the current dated booking request, get_test_checkout_link returns its Stripe-hosted test Checkout URL. Show the link privately to the guest. The guest enters test payment details on Stripe. The AI must not claim payment from a redirect or click. Only a valid matching test event updates payment status. A prepared recording fixture is explicitly not a paid booking. Glass Lantern sends a hotel-branded confirmation to the reviewed guest email after verified test payment. Use set_confirmation_email only with the guest’s reviewed address, or let the guest enter it at Checkout. payment_status returns guest-friendly email submission status and a confirmationMessage. Use that message; omit internal service names such as the email provider. Submitted means the email is on its way, not verified inbox delivery. If the guest asks whether it arrived and their email connector is available, search their inbox for this booking confirmation and verify the matching reference before claiming receipt. If you cannot access their inbox, say so and ask them to check it; never say you searched unless you did. Never ask for real card data or identity documents. AUTHORIZED AGENT PAYMENT get_payment_authorization_details returns the exact booking for separate guest review; it does not authorize payment. pay_authorized_test_booking accepts only an independently signed, expiring approval for that exact stay and amount. Never mint or sign your own permission. Missing or invalid approval before submission returns hosted test Checkout. If payment is pending or uncertain, do not attempt another charge. Only a matching signed Stripe test webhook marks payment paid; get_stay_confirmation then returns a private stay link reusable until checkout. The funding method is a Stripe sandbox card fixture, not a connected guest wallet. ONE APPROVAL, THEN CONTINUE When the guest says to book and pay, use the protected guest-approval capability already configured in the agent client. Launch the review window and wait while the guest authenticates personally. Successful approval is the continuation signal: automatically submit the exact signed payment, check payment and confirmation-email status, and report the result. Never require another chat message saying "I have approved". On the enrolled demo Mac, the operator-configured complete-test-payment runner handles this sequence through remote MCP; a browser agent can launch authorize-test-payment, wait for its private result, and immediately use the matching WebMCP payment/status tools. A valid existing approval for the same purchase can be reused to finish that one payment, never a different purchase. Do not create Checkout before attempting the configured approval flow. If that capability is unavailable, provide guest Checkout instead. Cancellation is not permission. Keep signatures, private paths and email addresses out of guest-facing activity and recordings. IMAGES Tool image paths refer to the hotel’s origin. Resolve a relative image path against the open hotel's origin. Images are AI-generated illustrative assets, not photographs of a real hotel or guaranteed arrangements. SHOW EVIDENCE Read the actual tool outputs and share the returned references. The optional activity panel shows server calls without credentials. Keep discovery, reading, tool execution, enquiry capture, payment and fulfilment as separate claims.