Plan and book southern Thailand trips: island tours, private boats, ferries, hotels, itineraries.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Search our own Thailand travel guides: how to get from A to B, last boats, weather and monsoon by month, Maya Bay rules, how many days per island, budgets, safety. Returns excerpts and links.
The traveller's question, any language.
Search our own Thailand travel guides: how to get from A to B, last boats, weather and monsoon by month, Maya Bay rules, how many days per island, budgets, safety. Returns excerpts and links.
| Argument | Type | Description |
|---|---|---|
| question* | string | The traveller's question, any language. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"question"
],
"properties": {
"question": {
"type": "string",
"maxLength": 300,
"minLength": 3,
"description": "The traveller's question, any language."
}
}
}Creates a tour booking pending payment and returns its reference and a secure payment page on phiphiparadise.travel. Requires traveller_confirmed: true, set once the traveller has approved the tour, date, party, total and payment. Payment is online: 'full' (default) or 'deposit' when the tour offers it (shared tours: the rest is paid in cash to the tour operator on the day; private tours: the rest is paid in cash on the day). Some tours are paid in full only. The booking is secured only when the traveller pays on that page.
| Argument | Type | Description |
|---|---|---|
| date* | string | Trip date, YYYY-MM-DD. |
| hotel | string | Hotel name, needed for tours with hotel pickup (Phuket, Krabi). |
| notes | string | Kids ages, allergies, special requests. |
| adults* | integer | Adults and children 12+. |
| option | string | Exact option label when the tour has several priced options. |
| payment | string | 'full' (default) or 'deposit'. |
| children | integer | Children 4-11 (child rate). |
| language | string | Traveller language code (en, fr, de, es, zh...). Sets the emails and the payment page language. |
| toddlers | integer | Babies 0-3 (free). |
| experience* | string | Tour id 'destination/slug'. |
| traveller_name* | string | Full name of the lead traveller. |
| traveller_email* | string | Email: receives the confirmation and e-ticket after payment. |
Creates a booking for one transfer that Phi Phi Paradise organizes, listed by search_transfers, and returns its reference and a secure payment page. Partner departures listed with a trip_id: pass trip_id. Lines listed with a 12Go price are booked on 12Go, not here. Our own boat departures: pass from, to, type, departure_time and company exactly as listed. Requires traveller_confirmed: true, set once the traveller has approved the route, date, time, passengers and total. Transfers are paid online in full; the seat is secured only when paid.
| Argument | Type | Description |
|---|---|---|
| to | string | |
| date* | string | YYYY-MM-DD |
| from | string | |
| type | string | |
| hotel | string | Hotel name, for pickup. |
| notes | string | Kids ages, allergies, special requests. |
| company | string | Operator exactly as listed by search_transfers (our own departures). |
| trip_id | string | trip_id of a departure listed by search_transfers. |
Live availability and exact party price of one tour on one date (seats left, blocked dates, 48h notice rule, dated prices). When the date is not bookable, it lists the next open dates.
| Argument | Type | Description |
|---|---|---|
| date* | string | Trip date, YYYY-MM-DD. |
| adults* | integer | Adults and children 12+. |
| option | string | Exact option label (boat type, duration...) when the tour has several priced options. |
| children | integer | Children 4-11 (child rate). |
| toddlers | integer | Babies 0-3 (free). |
| experience* | string | Tour id 'destination/slug' or name. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"experience",
"date",
"adults"
],
"properties": {
"date": {
"type": "string",
"description": "Trip date, YYYY-MM-DD."
},
"adults": {
"type": "integer",
"maximum": 60,
"minimum": 1,
"description": "Adults and children 12+."
},
"option": {
"type": "string",
"maxLength": 200,
"description": "Exact option label (boat type, duration...) when the tour has several priced options."
},
"children": {
"type": "integer",
"maximum": 40,
"minimum": 0,
"description": "Children 4-11 (child rate)."
},
"toddlers": {
"type": "integer",
"maximum": 20,
"minimum": 0,
"description": "Babies 0-3 (free)."
},
"experience": {
"type": "string",
"maxLength": 160,
"minLength": 2,
"description": "Tour id 'destination/slug' or name."
}
}
}Full live sheet of one tour: price tiers (per person or per whole boat), child price, dated price periods, duration, schedule, meeting point, what is included, national park fee, page link.
| Argument | Type | Description |
|---|---|---|
| experience* | string | Tour id 'destination/slug' from search_experiences, or its name. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"experience"
],
"properties": {
"experience": {
"type": "string",
"maxLength": 160,
"minLength": 2,
"description": "Tour id 'destination/slug' from search_experiences, or its name."
}
}
}Build a multi-stop Thailand itinerary (stops in travel order) and get a shareable page plus a PDF: day-by-day plan, map, transport between stops with prices, hotel picks and tours. Suited to trips of several days or several places.
| Argument | Type | Description |
|---|---|---|
| adults | integer | |
| children | integer | |
| end_date | string | Last day YYYY-MM-DD. |
| language | string | Page language code. |
| start_date | string | First day YYYY-MM-DD. |
| destinations* | array | Stops in travel order, from: koh-phi-phi, phuket, krabi, koh-yao, bangkok, chiang-mai, koh-lanta, koh-lipe, koh-samui, koh-phangan, koh-tao, khao-lak, khao-sok, koh-muk. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"destinations"
],
"properties": {
"adults": {
"type": "integer",
"maximum": 30,
"minimum": 1
},
"children": {
"type": "integer",
"maximum": 20,
"minimum": 0
},
"end_date": {
"type": "string",
"description": "Last day YYYY-MM-DD."
},
"language": {
"type": "string",
"maxLength": 8,
"description": "Page language code."
},
"start_date": {
"type": "string",
"description": "First day YYYY-MM-DD."
},
"destinations": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40
},
"maxItems": 10,
"minItems": 1,
"description": "Stops in travel order, from: koh-phi-phi, phuket, krabi, koh-yao, bangkok, chiang-mai, koh-lanta, koh-lipe, koh-samui, koh-phangan, koh-tao, khao-lak, khao-sok, koh-muk."
}
}
}Search our tours: island hopping, Maya Bay, private boats, snorkeling, diving, boat parties, cultural day trips. Covers Koh Phi Phi, Krabi (Ao Nang, Railay), Phuket, Koh Yao, Bangkok and Chiang Mai. Returns ids, starting prices, durations and page links. Tour titles are in French.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max results (default 8). |
| query | string | What the traveller wants, any language, e.g. 'Maya Bay sunrise', 'private longtail', 'elephant sanctuary'. |
| destination | string | koh-phi-phi, krabi, phuket, koh-yao, bangkok or chiang-mai. |
| private_only | boolean | true = private boats/tours only, false = shared group tours only. |
| max_price_thb | number | Budget cap on the starting price, in THB. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Max results (default 8)."
},
"query": {
"type": "string",
"maxLength": 200,
"description": "What the traveller wants, any language, e.g. 'Maya Bay sunrise', 'private longtail', 'elephant sanctuary'."
},
"destination": {
"type": "string",
"maxLength": 40,
"description": "koh-phi-phi, krabi, phuket, koh-yao, bangkok or chiang-mai."
},
"private_only": {
"type": "boolean",
"description": "true = private boats/tours only, false = shared group tours only."
},
"max_price_thb": {
"type": "number",
"description": "Budget cap on the starting price, in THB.",
"exclusiveMinimum": 0
}
}
}Flights to and within Thailand (e.g. Paris CDG to Bangkok BKK, Bangkok to Krabi KBV or Phuket HKT). Returns live fares when our search has them, plus a ready-made booking link: 12Go (our partner, prices in baht) for flights within Thailand, Google Flights and Skyscanner otherwise. The traveller books on the partner site.
| Argument | Type | Description |
|---|---|---|
| to* | string | Arrival IATA airport code, e.g. KBV (Krabi), HKT (Phuket), USM (Koh Samui). |
| date* | string | Outbound date YYYY-MM-DD. |
| from* | string | Departure IATA airport code, e.g. CDG, BKK. |
| cabin | string | |
| adults | integer | |
| infants | integer | |
| children | integer | |
| return_date | string | Return date YYYY-MM-DD for a round trip. |
Hotels for a destination. With check-in and check-out dates: live Agoda nightly rates, stars, guest scores and booking links. Without dates: our editorial shortlist. Destinations: koh-phi-phi, phuket, krabi, koh-yao, bangkok, chiang-mai, koh-lanta, koh-lipe, koh-samui, koh-phangan, koh-tao, khao-lak, khao-sok, koh-muk.
| Argument | Type | Description |
|---|---|---|
| adults | integer | |
| check_in | string | YYYY-MM-DD |
| children | integer | |
| language | string | |
| check_out | string | YYYY-MM-DD |
| destination* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"destination"
],
"properties": {
"adults": {
"type": "integer",
"maximum": 20,
"minimum": 1
},
"check_in": {
"type": "string",
"description": "YYYY-MM-DD"
},
"children": {
"type": "integer",
"maximum": 10,
"minimum": 0
},
"language": {
"type": "string",
"maxLength": 8
},
"check_out": {
"type": "string",
"description": "YYYY-MM-DD"
},
"destination": {
"type": "string",
"maxLength": 40,
"minLength": 2
}
}
}Transfers across the whole of Thailand: ferries, speedboats and catamarans between the islands (Phuket, Krabi, Ao Nang, Koh Phi Phi, Koh Lanta, Koh Yao, Koh Lipe, Samui, Phangan, Tao, Koh Chang, Koh Kood…), shared vans and private taxis between towns and airports. Departure times, operator, piers or pickup point, price per person or per vehicle, and a photo page of the boat. Routes Phi Phi Paradise organizes (its boats between Phuket, Krabi, Ao Nang, Koh Phi Phi, Railay, Koh Lipe and Koh Yao, and partner companies with a trip_id) are booked with book_transfer; every other route is listed at its 12Go price with a 12Go booking link (12Go, our partner, takes the booking and the payment).
| Argument | Type | Description |
|---|---|---|
| to* | string | Arrival place. |
| date | string | Travel date YYYY-MM-DD (checks the 48h booking notice). |
| from* | string | Departure place, e.g. Phuket, Krabi, Ao Nang, Phi Phi, Koh Lanta. |
| lang | string | Traveller language code for the booking links (en, fr, de…). |
| type | string | Only ferries or only speedboats. |
| passengers | integer | Number of passengers (for totals). |
| traveller_phone | string | WhatsApp number with country code (e.g. +33612345678). Strongly recommended: the local team uses it on the day. |
| confirm_duplicate | boolean | Only true if the traveller explicitly wants a SECOND identical booking after an ALREADY BOOKED answer. |
| traveller_confirmed* | boolean | true once the traveller has approved the restated product, date, party, total and payment. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"experience",
"date",
"adults",
"traveller_name",
"traveller_email",
"traveller_confirmed"
],
"properties": {
"date": {
"type": "string",
"description": "Trip date, YYYY-MM-DD."
},
"hotel": {
"type": "string",
"maxLength": 200,
"description": "Hotel name, needed for tours with hotel pickup (Phuket, Krabi)."
},
"notes": {
"type": "string",
"maxLength": 1500,
"description": "Kids ages, allergies, special requests."
},
"adults": {
"type": "integer",
"maximum": 60,
"minimum": 1,
"description": "Adults and children 12+."
},
"option": {
"type": "string",
"maxLength": 200,
"description": "Exact option label when the tour has several priced options."
},
"payment": {
"enum": [
"full",
"deposit"
],
"type": "string",
"description": "'full' (default) or 'deposit'."
},
"children": {
"type": "integer",
"maximum": 40,
"minimum": 0,
"description": "Children 4-11 (child rate)."
},
"language": {
"type": "string",
"maxLength": 8,
"description": "Traveller language code (en, fr, de, es, zh...). Sets the emails and the payment page language."
},
"toddlers": {
"type": "integer",
"maximum": 20,
"minimum": 0,
"description": "Babies 0-3 (free)."
},
"experience": {
"type": "string",
"maxLength": 160,
"minLength": 2,
"description": "Tour id 'destination/slug'."
},
"traveller_name": {
"type": "string",
"maxLength": 120,
"minLength": 2,
"description": "Full name of the lead traveller."
},
"traveller_email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Email: receives the confirmation and e-ticket after payment."
},
"traveller_phone": {
"type": "string",
"maxLength": 40,
"description": "WhatsApp number with country code (e.g. +33612345678). Strongly recommended: the local team uses it on the day."
},
"confirm_duplicate": {
"type": "boolean",
"description": "Only true if the traveller explicitly wants a SECOND identical booking after an ALREADY BOOKED answer."
},
"traveller_confirmed": {
"type": "boolean",
"const": true,
"description": "true once the traveller has approved the restated product, date, party, total and payment."
}
}
}| language |
| string |
| Traveller language code (en, fr, de, es, zh...). Sets the emails and the payment page language. |
| passengers* | integer |
| pickup_time | string | Private taxi / van / boat (no fixed time): pickup time HH:MM chosen by the traveller. |
| hotel_pickup | boolean | Only for departures listed 'hotel pickup on request, +100 THB/person'. |
| departure_time | string | HH:MM exactly as listed by search_transfers (our own departures). |
| traveller_name* | string | Full name of the lead traveller. |
| traveller_email* | string | Email: receives the confirmation and e-ticket after payment. |
| traveller_phone | string | WhatsApp number with country code (e.g. +33612345678). Strongly recommended: the local team uses it on the day. |
| confirm_duplicate | boolean | Only true if the traveller explicitly wants a SECOND identical booking after an ALREADY BOOKED answer. |
| traveller_confirmed* | boolean | true once the traveller has approved the restated product, date, party, total and payment. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"date",
"passengers",
"traveller_name",
"traveller_email",
"traveller_confirmed"
],
"properties": {
"to": {
"type": "string",
"maxLength": 40,
"minLength": 2
},
"date": {
"type": "string",
"description": "YYYY-MM-DD"
},
"from": {
"type": "string",
"maxLength": 40,
"minLength": 2
},
"type": {
"enum": [
"Ferry",
"Speedboat"
],
"type": "string"
},
"hotel": {
"type": "string",
"maxLength": 200,
"description": "Hotel name, for pickup."
},
"notes": {
"type": "string",
"maxLength": 1500,
"description": "Kids ages, allergies, special requests."
},
"company": {
"type": "string",
"maxLength": 80,
"description": "Operator exactly as listed by search_transfers (our own departures)."
},
"trip_id": {
"type": "string",
"pattern": "^[0-9a-f]{12}$",
"description": "trip_id of a departure listed by search_transfers."
},
"language": {
"type": "string",
"maxLength": 8,
"description": "Traveller language code (en, fr, de, es, zh...). Sets the emails and the payment page language."
},
"passengers": {
"type": "integer",
"maximum": 30,
"minimum": 1
},
"pickup_time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}$",
"description": "Private taxi / van / boat (no fixed time): pickup time HH:MM chosen by the traveller."
},
"hotel_pickup": {
"type": "boolean",
"description": "Only for departures listed 'hotel pickup on request, +100 THB/person'."
},
"departure_time": {
"type": "string",
"maxLength": 5,
"description": "HH:MM exactly as listed by search_transfers (our own departures)."
},
"traveller_name": {
"type": "string",
"maxLength": 120,
"minLength": 2,
"description": "Full name of the lead traveller."
},
"traveller_email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Email: receives the confirmation and e-ticket after payment."
},
"traveller_phone": {
"type": "string",
"maxLength": 40,
"description": "WhatsApp number with country code (e.g. +33612345678). Strongly recommended: the local team uses it on the day."
},
"confirm_duplicate": {
"type": "boolean",
"description": "Only true if the traveller explicitly wants a SECOND identical booking after an ALREADY BOOKED answer."
},
"traveller_confirmed": {
"type": "boolean",
"const": true,
"description": "true once the traveller has approved the restated product, date, party, total and payment."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"from",
"to",
"date"
],
"properties": {
"to": {
"type": "string",
"maxLength": 3,
"minLength": 3,
"description": "Arrival IATA airport code, e.g. KBV (Krabi), HKT (Phuket), USM (Koh Samui)."
},
"date": {
"type": "string",
"description": "Outbound date YYYY-MM-DD."
},
"from": {
"type": "string",
"maxLength": 3,
"minLength": 3,
"description": "Departure IATA airport code, e.g. CDG, BKK."
},
"cabin": {
"enum": [
"ECONOMY",
"PREMIUM_ECONOMY",
"BUSINESS",
"FIRST"
],
"type": "string"
},
"adults": {
"type": "integer",
"maximum": 9,
"minimum": 1
},
"infants": {
"type": "integer",
"maximum": 8,
"minimum": 0
},
"children": {
"type": "integer",
"maximum": 8,
"minimum": 0
},
"return_date": {
"type": "string",
"description": "Return date YYYY-MM-DD for a round trip."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"from",
"to"
],
"properties": {
"to": {
"type": "string",
"maxLength": 40,
"minLength": 2,
"description": "Arrival place."
},
"date": {
"type": "string",
"description": "Travel date YYYY-MM-DD (checks the 48h booking notice)."
},
"from": {
"type": "string",
"maxLength": 40,
"minLength": 2,
"description": "Departure place, e.g. Phuket, Krabi, Ao Nang, Phi Phi, Koh Lanta."
},
"lang": {
"type": "string",
"maxLength": 5,
"description": "Traveller language code for the booking links (en, fr, de…)."
},
"type": {
"enum": [
"Ferry",
"Speedboat"
],
"type": "string",
"description": "Only ferries or only speedboats."
},
"passengers": {
"type": "integer",
"maximum": 30,
"minimum": 1,
"description": "Number of passengers (for totals)."
}
}
}