The MCP server
The Mandarin Beach Villa MCP server speaks the Model Context Protocol over Streamable HTTP and works with ChatGPT apps and any other MCP client. In ChatGPT (developer mode or apps), add a custom MCP server with the address below and authentication set to None. A plain browser visit to the address shows a short explanation page instead of the protocol.
- Server:
https://mandarinbeachvilla.com/mcp(read tools and the one write action). Read-only form:https://mandarinbeachvilla.com/mcp-read(the same tools without the write action). get_property_details: the verified facts, the two packages with their inclusions and additional costs, and the villa’s own links.check_availability: whether a check-in and check-out are open on Mandarin Beach Villa’s one live calendar, with the time of the check.search_available_dates: every open window of a given length in a date range, already priced.get_direct_quote: the exact direct price for the dates and party, for The Residence and All-Inclusive, with inclusions, additional costs, payment options and the cancellation terms.get_booking_link: the villa’s own booking page address with the dates, party and package filled in, so the guest can finish on mandarinbeachvilla.com.create_direct_checkout(write action): opens the villa’s own secure Stripe payment page for the quoted stay. It is used only after the guest has explicitly confirmed they want to proceed, and it never confirms or holds a booking by itself.
The JSON API
The same calendar and rate engine answer a plain HTTPS request. No key or login is needed for the read endpoints. Dates are ISO 8601 (YYYY-MM-DD) in villa time (Asia/Bangkok); prices are in GBP for the whole villa.
- Property facts:
GET https://mandarinbeachvilla.com/api/v1/property - Availability:
GET https://mandarinbeachvilla.com/api/v1/availability?check_in=YYYY-MM-DD&check_out=YYYY-MM-DD - Exact direct quote:
GET https://mandarinbeachvilla.com/api/v1/quote?check_in=YYYY-MM-DD&check_out=YYYY-MM-DD&adults=N&children=N&infants=N. The answer carries both packages, each with its total, nightly prices, inclusions, exclusions, payment options (pay in full, or an interest-free plan where the check-in is far enough ahead), the price basis and the cancellation terms. - Open dates:
GET https://mandarinbeachvilla.com/api/v1/search-dates?nights=N&from=YYYY-MM-DD&to=YYYY-MM-DD - Booking link:
GET https://mandarinbeachvilla.com/api/v1/booking-link?check_in=YYYY-MM-DD&check_out=YYYY-MM-DD&adults=N&package=residence - Secure checkout (write action, only after the guest confirms):
POST https://mandarinbeachvilla.com/api/v1/create-checkoutwith check_in, check_out, adults, children, infants, package (residence or all_inclusive), guest_confirmed, and optionally the quote_id from the quote and installments (the number of monthly payments, when the quote offers a plan). Prices are never accepted from the caller; the server recalculates them and refuses a quote that has changed or expired. - Verified facts dataset:
https://mandarinbeachvilla.com/data/mandarin-verified-quick-facts.json
The human-readable equivalent of a quote is the booking page itself: https://mandarinbeachvilla.com/book/?check_in=YYYY-MM-DD&check_out=YYYY-MM-DD&adults=N&children=N&infants=N. Every open window for the next twelve months, already priced, is on the direct rates page.
How a booking is created and confirmed
- Check. The assistant checks the dates on Mandarin Beach Villa’s live calendar and quotes the exact price for both packages. Availability is as checked at the stated time; nothing is held yet.
- Confirm with the guest. The guest sees the dates, the package, the total for the whole villa, what is included, the additional costs and the payment option, and is told that guest cancellations are non-refundable, and that a stay the villa cannot provide is refunded in full, before anything is created.
- Open secure checkout. Only then does
create_direct_checkout(orPOST /api/v1/create-checkout) re-check the dates and the price and return the address of the villa’s own Stripe payment page, valid for about 30 minutes. Card details are entered on Stripe alone; they never pass through mandarinbeachvilla.com or the assistant. - Confirmed. The moment Stripe reports the booking deposit or full payment, Mandarin Beach Villa confirms the booking, reserves the dates exclusively for the guest and emails the confirmation. On a payment plan the email carries the payment schedule and the remaining balance is payable according to that schedule; the private guest portal link follows once the villa balance is paid.
Payment and cancellation
Cancellation by the guest. If you cancel your booking, payments already made are non-refundable. This applies to bookings paid in full and to deposits and instalments paid under a payment plan. A plan left unpaid 7 days after a due date ends and releases the dates, and payments already made are not refunded. Cancellation by Mandarin Beach Villa. If Mandarin Beach Villa cancels because we cannot provide your booked stay, we will refund all monies you have paid to us for that booking in full. No security deposit is required. A change of dates depends on availability and the rate for the new dates. Because payment is made ahead of the stay, travel insurance with a Cancel For Any Reason option is recommended. An assistant presenting a quote states this before the guest confirms, exactly as the booking page shows it above every payment button. The full policy is in the booking terms, which also cover booking through an AI assistant.
Verified facts and feeds
- Verified quick facts (JSON, the canonical figures the website, the concierge and the API share):
https://mandarinbeachvilla.com/data/mandarin-verified-quick-facts.json - Summary feed for AI readers:
https://mandarinbeachvilla.com/llms.txt; the full feed:https://mandarinbeachvilla.com/llms-full.txt - Sitemap:
https://mandarinbeachvilla.com/sitemap.xml - Guest guide to booking direct: https://mandarinbeachvilla.com/direct-booking/; what is included and what costs extra: https://mandarinbeachvilla.com/included-and-faq/
Crawling, indexing and limits
The MCP addresses and the JSON API are open to assistants and readers in robots.txt but carry a noindex header: nothing under them is a page to index. This page and the direct booking guide are the indexable descriptions, and the booking page at /book/ is served with noindex. Read requests are rate-limited per client; a request over the limit receives HTTP 429 with a Retry-After header and succeeds when repeated after that interval. The write action is limited more tightly and is never retried automatically.
Questions
Developers and assistant builders can write to book@mandarinbeachvilla.com or message the reservations team on WhatsApp. The support page explains how guests reach the team before and after booking.
The booking terms and the privacy policy apply to every direct booking, including one made through an AI assistant.
Book Mandarin Beach Villa direct
Live availability, the exact price, secure payment. Booked with the owners.
Check availability How direct booking works