Phi Phi Paradise Travel
Server Details
Plan and book southern Thailand trips: island tours, private boats, ferries, hotels, itineraries.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 10 tools
Each tool targets a distinct travel-planning or booking action: searching guides, tours, flights, hotels, transfers; checking availability; getting tour details; booking tours or transfers; and planning itineraries. The search/get/check/book flow for experiences is especially clear because descriptions explicitly distinguish live detail retrieval, availability checks, and booking.
All tool names use a consistent snake_case verb_noun pattern, such as ask_travel_guides, search_experiences, check_availability, get_experience_details, and book_transfer. The convention is predictable and readable across the entire set.
With 10 tools, the set is well-scoped for a travel planning and booking server. Each tool covers a meaningful slice of the workflow without obvious redundancy or bloat.
The surface covers guides, experiences, transfers, flights, hotels, itinerary planning, availability, and booking for tours and transfers. Minor gaps exist around booking management, such as modifying or cancelling an existing booking, but the core travel-planning and booking lifecycle is well represented.
Available Tools
10 toolsask_travel_guidesSearch our travel guidesRead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| question | Yes | The traveller's question, any language. |
book_experienceBook a tour (returns a payment link)AInspect
Create a booking for a tour and get the secure payment page for the traveller. Only after check_availability and after the traveller explicitly approved the restated tour, date, party, total and payment. Payment is online: 'full' (default) or 'deposit' when the tour offers it (private tours: balance online before the trip; shared tours: balance in cash on the day). Nothing is secured until the traveller pays on the returned page.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Trip date, YYYY-MM-DD. | |
| hotel | No | Hotel name, needed for tours with hotel pickup (Phuket, Krabi). | |
| notes | No | Kids ages, allergies, special requests. | |
| adults | Yes | Adults and children 12+. | |
| option | No | Exact option label when the tour has several priced options. | |
| payment | No | 'full' (default) or 'deposit'. | |
| children | No | Children 4-11 (child rate). | |
| language | No | Traveller language code (en, fr, de, es, zh...). Sets the emails and the payment page language. | |
| toddlers | No | Babies 0-3 (free). | |
| experience | Yes | Tour id 'destination/slug'. | |
| traveller_name | Yes | Full name of the lead traveller. | |
| traveller_email | Yes | Email: receives the confirmation and e-ticket after payment. | |
| traveller_phone | No | WhatsApp number with country code (e.g. +33612345678). Strongly recommended: the local team uses it on the day. | |
| confirm_duplicate | No | Only true if the traveller explicitly wants a SECOND identical booking after an ALREADY BOOKED answer. | |
| traveller_confirmed | Yes | Must be true: you restated product, date, party, total and payment and the traveller explicitly said yes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations mark this as non-read-only and non-idempotent, but the description adds substantial context beyond them: nothing is secured until payment, the tool returns a payment link, and deposit balance rules differ between private and shared tours. This is meaningful behavioral disclosure about the mutation's real-world effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences with clear front-loading: first the action and return type, then the strict prerequisites, then the payment nuance. Every sentence adds necessary operational detail without repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 15-parameter mutation tool with no output schema, the description supplies the critical missing context: required prerequisites, the payment-link return format, the fact that payment is not automatic, and deposit handling by tour type. Parameter-level details are fully covered by the schema, so nothing an agent needs in order to call this correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all 15 parameters, establishing a baseline of 3. The description goes further by explaining deposit availability and the balance logistics for private versus shared tours, adding policy-level meaning to the payment parameter that the schema does not capture.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a booking for a tour') and the output ('secure payment page for the traveller'). It distinguishes itself from siblings by naming the required prerequisite check_availability and by focusing on tour bookings rather than transfers (book_transfer) or searches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the two preconditions: only after check_availability and after the traveller has explicitly approved the restated tour, date, party, total and payment. It also explains the payment choices and their practical consequences, leaving no ambiguity about when this tool should be invoked.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
book_transferBook a boat transfer (returns a payment link)AInspect
Book one ferry or speedboat departure listed by search_transfers and get the secure payment page. Only after the traveller explicitly approved the restated route, date, time, passengers and total. Transfers are paid online in full; nothing is secured until paid.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | ||
| date | Yes | YYYY-MM-DD | |
| from | Yes | ||
| type | Yes | ||
| hotel | No | Hotel name, for pickup. | |
| notes | No | Kids ages, allergies, special requests. | |
| company | Yes | Operator exactly as listed by search_transfers. | |
| language | No | Traveller language code (en, fr, de, es, zh...). Sets the emails and the payment page language. | |
| passengers | Yes | ||
| hotel_pickup | No | Only for departures listed 'hotel pickup on request, +100 THB/person'. | |
| departure_time | Yes | HH:MM exactly as listed by search_transfers. | |
| traveller_name | Yes | Full name of the lead traveller. | |
| traveller_email | Yes | Email: receives the confirmation and e-ticket after payment. | |
| traveller_phone | No | WhatsApp number with country code (e.g. +33612345678). Strongly recommended: the local team uses it on the day. | |
| confirm_duplicate | No | Only true if the traveller explicitly wants a SECOND identical booking after an ALREADY BOOKED answer. | |
| traveller_confirmed | Yes | Must be true: you restated product, date, party, total and payment and the traveller explicitly said yes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it is a non-readonly, non-idempotent, open-world write. The description adds meaningful behavior beyond that: the call returns a payment link, payment is online in full, and nothing is secured until paid. It does not cover failure modes or what happens if the link expires, but it substantially enriches the mutation semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and outcome, then the gating condition, then the payment caveat. Every sentence carries distinct information with no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 16-parameter, no-output-schema booking mutation, the description covers the return value (payment link) and the critical preconditions, and the schema handles the rest including duplicate confirmation. It lacks detail on what happens after payment or on failed bookings, but is adequate to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, so the schema documents most fields itself. The description restates the fields the agent must confirm (route, date, time, passengers, total) but adds no per-parameter meaning beyond what the schema already carries, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Book) and resource (one ferry or speedboat departure) plus the outcome (secure payment page). It explicitly ties itself to search_transfers as the source of the listing, so an agent can distinguish it from search_transfers and book_experience immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear precondition: book only after the traveller explicitly approved the restated route, date, time, passengers and total, and only for a departure surfaced by search_transfers. No explicit when-not or alternative tool is named, but the usage context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_availabilityCheck a date and get the party priceARead-onlyInspect
Live availability and exact party price of one tour on one date (seats left, blocked dates, 48h notice rule, dated prices). If the date does not work, it proposes the next open dates. Always call it before quoting a total or booking.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Trip date, YYYY-MM-DD. | |
| adults | Yes | Adults and children 12+. | |
| option | No | Exact option label (boat type, duration...) when the tour has several priced options. | |
| children | No | Children 4-11 (child rate). | |
| toddlers | No | Babies 0-3 (free). | |
| experience | Yes | Tour id 'destination/slug' or name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, non-destructive, open-world), so the bar is lower, and the description still adds real behavior: it returns availability, blocked dates, dated prices, and automatically proposes next open dates on failure. It does not mention latency, caching, or how stale 'live' data can be, so it falls short of the top mark.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, zero filler, with the core capability and its sub-details front-loaded before the usage imperative. Every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the return-value burden itself, and it does: availability, seat counts, blocked dates, dated prices, and fallback dates. For a read-only query tool whose annotations already declare the safety profile, nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is already 100%, so the baseline is 3. The description goes beyond the schema by tying party composition and date to pricing ('dated prices', 'exact party price', 'seats left') and by revealing a 48h notice rule that constrains which dates are valid — meaningful added context the schema does not state.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource — live availability plus exact party price for one tour on one date — and enumerates the concrete outputs (seats left, blocked dates, 48h notice rule, dated prices). Combined with the closing instruction to call it before quoting or booking, an agent can distinguish it from book_experience and get_experience_details without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear imperative trigger: 'Always call it before quoting a total or booking,' which is strong when-to-use guidance. It also describes the fallback path when a date fails, but it never names the sibling tools it should precede or states when it is unnecessary (e.g., exploratory browsing).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_experience_detailsTour details and pricesARead-onlyInspect
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. Call it before quoting any price.
| Name | Required | Description | Default |
|---|---|---|---|
| experience | Yes | Tour id 'destination/slug' from search_experiences, or its name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds the freshness signal ('live sheet'), which is genuine extra context, but discloses nothing about auth needs, staleness window, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the 'full live sheet' framing and followed by the actionable directive. Each listed field earns its place as return-value documentation. Slightly dense enumeration, but no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description usefully compensates by enumerating the returned fields (price tiers, child price, dated periods, duration, schedule, meeting point, inclusions, park fee, page link). Combined with annotations covering safety, this is nearly complete for a single-param read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'experience' parameter is documented there with its 'destination/slug' format and origin (search_experiences). The description adds no parameter-level detail, so the baseline 3 for schema-driven parameters is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Full live sheet of one tour') and enumerates the exact content it returns, which implicitly separates it from the list-oriented search_experiences. It stops short of naming a sibling explicitly, so it does not fully earn a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear imperative usage condition: 'Call it before quoting any price.' That tells the agent exactly when this tool is required. However, it names no alternatives (e.g., search_experiences) and lists no exclusions, so it falls short of the explicit when/when-not bar for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_tripBuild a shareable itineraryAIdempotentInspect
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. Use it for any trip of several days or several places.
| Name | Required | Description | Default |
|---|---|---|---|
| adults | No | ||
| children | No | ||
| end_date | No | Last day YYYY-MM-DD. | |
| language | No | Page language code. | |
| start_date | No | First day YYYY-MM-DD. | |
| destinations | Yes | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=true, openWorldHint=true), so the description's added value is limited to disclosing what the tool returns (page + PDF with maps, prices, hotel picks). It never states that a persistent shareable artifact is created, nor any auth/quota constraints, which matters for a non-read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences with the purpose front-loaded and the enumeration of outputs second; no filler. The trailing scope sentence is slightly redundant with the opening clause 'multi-stop ... itinerary,' costing it the top score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden well by enumerating the itinerary artifacts. Combined with the closed destination enum in the schema and the Thailand-only scope stated in the text, an agent has enough to invoke this correctly for an aggregating, multi-stop planning tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, and the description only echoes what the schema already says about destinations ('stops in travel order'). It adds nothing about the party-size, date, or language parameters, and does not surface the closed Thailand destination list that constrains valid input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Build a multi-stop Thailand itinerary') and enumerates the concrete deliverables (shareable page, PDF, day-by-day plan, map, transport prices, hotels, tours). This is unmistakably distinct from the search_*/book_* siblings, though it never names an alternative explicitly, so it falls just short of the top band.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use it for any trip of several days or several places' gives a clear condition for selecting this tool over the per-item search/book siblings. There is no explicit when-not guidance and no named alternative to route to, which keeps it out of the 5 band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_experiencesSearch tours and boat tripsARead-onlyInspect
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, prices from, durations and page links. Titles are in French; translate them for the traveller.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 8). | |
| query | No | What the traveller wants, any language, e.g. 'Maya Bay sunrise', 'private longtail', 'elephant sanctuary'. | |
| destination | No | koh-phi-phi, krabi, phuket, koh-yao, bangkok or chiang-mai. | |
| private_only | No | true = private boats/tours only, false = shared group tours only. | |
| max_price_thb | No | Budget cap on the starting price, in THB. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe, read-only, open-world call, so the bar is lower. The description still adds real value with the caveat that titles come back in French and must be translated, and it previews the returned fields (ids, starting prices, durations, page links) despite no output schema existing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose in the first clause, then supporting detail. Three dense sentences with no filler, though the destination/tour enumerations are slightly list-heavy for the space they occupy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the necessary work of summarizing the return payload and flagging the French-titles translation need. Missing only pagination/ordering behavior for a tool with a limit cap, which is a minor gap given the limit param's schema doc.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description restates destination coverage and tour types that map to the query/destination params, but adds no syntax, format, or edge-case detail (e.g. interaction of private_only with shared-only, or how max_price_thb applies) beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Search') plus resource ('our tours') with enumerated tour types (island hopping, Maya Bay, private boats, snorkeling, diving, boat parties, cultural day trips), which cleanly separates it from search_hotels, search_flights and search_transfers. The destination coverage list further scopes the tool's remit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied by the destination and tour-type lists, so an agent can infer this is the discovery tool for activities. However, it never names alternatives such as get_experience_details or check_availability/book_experience, so the handoff from search to detail/booking is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_flightsFlight search linksARead-onlyInspect
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, and always ready-made Google Flights and Skyscanner links. The traveller books flights with the airline.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Arrival IATA airport code, e.g. KBV (Krabi), HKT (Phuket), USM (Koh Samui). | |
| date | Yes | Outbound date YYYY-MM-DD. | |
| from | Yes | Departure IATA airport code, e.g. CDG, BKK. | |
| cabin | No | ||
| adults | No | ||
| infants | No | ||
| children | No | ||
| return_date | No | Return date YYYY-MM-DD for a round trip. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint, destructiveHint=false, openWorldHint), so the bar is lower. The description adds real value beyond them: it discloses the return shape (live fares when available, always Google Flights and Skyscanner links) and the booking boundary, which matters since there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with scope and examples, then return behavior, then the booking boundary. Efficient and each sentence carries information, though the inline example list is slightly heavy for what it contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-param search tool with no output schema, the description adequately explains what comes back (fares + external links) and sets expectations when live fares are absent. Combined with annotations covering safety, the main omission is any mention of round-trip vs one-way handling tied to return_date.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage sits at 50%: from/to/date have descriptions but cabin, adults, infants, and children do not. The description's airport examples largely duplicate the schema's from/to examples and add no meaning for the undocumented parameters, so it neither compensates for the gap nor falls to a 1-2.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (search flights) with an explicit geographic scope (to and within Thailand). The resource itself cleanly separates it from search_hotels, search_transfers, and search_experiences, so an agent can pick it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the resource, and the closing note 'The traveller books flights with the airline' signals that this tool does not complete bookings, which is a useful boundary. However, it gives no explicit when-to-use vs ask_travel_guides/plan_trip guidance and does not name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_hotelsHotels with live ratesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| adults | No | ||
| check_in | No | YYYY-MM-DD | |
| children | No | ||
| language | No | ||
| check_out | No | YYYY-MM-DD | |
| destination | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/non-destructive/openWorld, so the description focuses on what changes behaviorally: the return content flips from live rates and booking links (with dates) to an editorial shortlist (without). That is genuine context beyond the annotations, though it omits rate volatility or booking-auth caveats.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and mode rule before the destination list. The destination enumeration is long but high-value since no enum exists in the schema; nothing else is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully describes return content (rates, stars, guest scores, booking links). The main gap is silence on the adults, children, and language parameters, which an agent might need before invoking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description does useful work by listing valid destinations inline (effectively an enum the schema lacks) and implying check_in/check_out semantics. However, adults, children, and language are undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (hotels) for a destination and clearly differentiates itself from siblings like search_flights, search_experiences, and search_transfers. The dual-mode behavior is spelled out in the opening two clauses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear rule for the two modes: with dates you get live Agoda rates, without dates you get the editorial shortlist. It does not name a sibling alternative for hotel booking or availability, but the conditional usage is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_transfersFerry and speedboat timetableARead-onlyInspect
Boat transfers between Phuket, Krabi, Ao Nang, Railay, Koh Phi Phi, Koh Lanta, Koh Yao, Koh Lipe and the Gulf islands: departure times, operator, piers, hotel pickup policy and price per person. Suggests a connection when there is no direct boat.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Arrival place. | |
| date | No | Travel date YYYY-MM-DD (checks the 48h booking notice). | |
| from | Yes | Departure place, e.g. Phuket, Krabi, Ao Nang, Phi Phi, Koh Lanta. | |
| type | No | Only ferries or only speedboats. | |
| passengers | No | Number of passengers (for totals). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, so the bar is low, yet the description adds real behavioral context: it will synthesize a connection when no direct boat exists, and it reports hotel pickup policy and per-person price. The 48h booking notice is carried by the schema, not the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the route domain, with no filler or restatement of the tool name. The long place enumeration is dense but earns its place by defining coverage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the returned fields (times, operator, piers, pickup policy, price) and the fallback behavior for indirect routes. Combined with full schema coverage and read-only annotations, an agent has nearly everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents from/to/date/type/passengers; the description only echoes the destination list that the 'from' param already provides. It adds no syntax, format or enum guidance beyond the schema, so the baseline of 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource precisely (boat transfers/ferry-speedboat timetables), the covered routes, and the attributes returned (departure times, operator, piers, pickup policy, price). It is clearly distinct from search_flights, search_hotels and search_experiences, though it never uses an explicit search/find verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the lookup step before book_transfer or check_availability, but the description never states when to prefer it over those siblings or when it is not applicable. The mention that it 'suggests a connection when there is no direct boat' hints at scope but is not routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
- First observed
ask_travel_guides - First observed
book_experience - First observed
book_transfer - First observed
check_availability - First observed
get_experience_details - First observed
plan_trip - First observed
search_experiences - First observed
search_flights - First observed
search_hotels - First observed
search_transfers
Related MCP Connectors
Ferry and fast-boat schedules, seats and fares, boat and fishing charters across Indonesia.
Bangkok boutique planner: live Thailand journeys, prices, FAQs, and enquiry handoff.
Plan trips on a map: routed transport, day-by-day itineraries, and a plan you can share.
Search curated Bangkok, Thailand tours, activities, hotels, restaurants, nightlife and services.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables AI agents to plan weather-aware trips across Thailand by providing real-time sky conditions, area search, and weather-fit itinerary generation for 150+ locations through Arnfa's API.6-
- FlicenseNot gradedqualityDmaintenanceConverts natural language travel requests into customizable multi-city itineraries, with tools for planning, editing, and exporting trips across 69 global destinations.-
- AlicenseAqualityBmaintenanceEnables AI agents to plan trips by searching flights, accommodations, and activities, and managing itineraries collaboratively with role-based permissions.206 npm191 PyPI1MIT
- AlicenseAqualityDmaintenanceTravel planning tools from Plantrip: generate day-by-day itineraries, AI packing lists, weather insights, and trip cost estimates. Every itinerary gets a shareable page the user owns; free API key, no subscription.1431 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.