Payment leaves the conversation entirely: book_hotel hands back a checkout link instead of asking for a card. Cancellation takes two calls, so the terms are on screen before anything is cancelled. Those two decisions are the difference between this and a search tool with a booking button.
A hotel booking server that goes all the way to a reservation rather than a search result and a link out. The hotel is the merchant of record, so the stay behaves like a direct booking; payment happens on a separate secure checkout page, never in the conversation.
- search_hotels — availability by location and dates with nightly rates across chains, boutiques and independents
- get_hotel_details — room types, live rates, amenities, cancellation policies, and the rate_code that book_hotel requires
- book_hotel — creates the reservation and returns a secure checkout URL
- lookup_booking — identity-verified lookup returning the confirmation number and a booking summary
- get_booking — full detail by booking id or hotel confirmation number
- cancel_booking — two calls: the first verifies identity and returns the cancellation terms, the second commits
- resend_confirmation — re-sends to the email on the booking record, and only to that address
- search_tools — lists the available tools, filterable by keyword
Point a client at https://mcp.stayker.com/mcp over Streamable HTTP, or run the npm package 1stay-mcp with npx. Authentication is the OAuth 2.0 authorization code flow, handled by the client, and needs a 1Stay account. Card details never pass through the conversation — book_hotel returns a checkout URL, valid for about 30 minutes, and payment completes there. Anonymous callers must verify identity through lookup_booking before get_booking will return a record.
One command — npx -y 1stay-mcp
