Skip to main content
Glama

Server Details

Plan and book southern Thailand trips: island tours, private boats, ferries, hotels, itineraries.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.7% over 25 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4/5.0

Scored across 10 tools

Disambiguation4/5

Most tools are clearly separated by resource and action: search vs details vs availability vs booking, and tours vs transfers vs hotels/flights. The main overlap is ask_travel_guides, which can answer route, timing, and budget questions that also touch search_transfers, search_experiences, and plan_trip, though the descriptions clarify that it returns editorial excerpts rather than live inventory.

Naming Consistency5/5

All tools use snake_case and follow a predictable verb_noun pattern, with search_ consistently used for discovery tools and book_ for booking tools. The minor variation in get_experience_details is still readable and consistent with the overall convention.

Tool Count5/5

Ten tools is well scoped for a travel planning and booking server. Each tool covers a distinct part of the workflow, from research and availability to booking and itinerary building.

Completeness4/5

The surface covers the core workflow well: guides, tour and transfer search, details, availability, tour/transfer booking, hotel/flight search, and itinerary planning. Minor gaps exist around post-booking management, such as retrieving or cancelling an existing booking, and hotel/flight booking is intentionally delegated to external partner links.

Available Tools

10 tools
ask_travel_guidesSearch our travel guidesA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
questionYesThe traveller's question, any language.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false; the description is consistent with all of these ("our own" matches the closed-world hint). It adds value beyond the annotations by disclosing the return shape ("Returns excerpts and links"), though it says nothing about result limits, ranking, or latency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense sentence front-loads the core action and scope, the topic list is compact and high-signal, and the return-value clause is a short separate sentence. No filler or restatement of the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 compensates by stating the return format (excerpts and links), and the single-parameter surface is fully covered by the schema. Only minor gaps remain around result volume/limits and ranking behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter already documents itself as "The traveller's question, any language." The description adds no syntax, length, or phrasing guidance beyond that (e.g., the 3–300 character bound is only in the schema), so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Search) and resource (our own Thailand travel guides) with explicit scope, then enumerates the covered content types: transport, last boats, weather/monsoon, Maya Bay rules, island durations, budgets, safety. This clearly separates it from siblings like search_experiences, search_hotels, and search_flights, which cover bookable inventory rather than editorial guides.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The topic enumeration implies what kinds of questions belong here (practical/logistical guide questions), but there is no explicit when-to-use or when-not-to-use statement and no routing to alternatives such as search_experiences for bookable activities. An agent can infer the fit but gets no stated boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

book_experienceBook a tour (returns a payment link)A
Destructive
Inspect

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.

NameRequiredDescriptionDefault
dateYesTrip date, YYYY-MM-DD.
hotelNoHotel name, needed for tours with hotel pickup (Phuket, Krabi).
notesNoKids ages, allergies, special requests.
adultsYesAdults and children 12+.
optionNoExact option label when the tour has several priced options.
paymentNo'full' (default) or 'deposit'.
childrenNoChildren 4-11 (child rate).
languageNoTraveller language code (en, fr, de, es, zh...). Sets the emails and the payment page language.
toddlersNoBabies 0-3 (free).
experienceYesTour id 'destination/slug'.
traveller_nameYesFull name of the lead traveller.
traveller_emailYesEmail: receives the confirmation and e-ticket after payment.
traveller_phoneNoWhatsApp number with country code (e.g. +33612345678). Strongly recommended: the local team uses it on the day.
confirm_duplicateNoOnly true if the traveller explicitly wants a SECOND identical booking after an ALREADY BOOKED answer.
traveller_confirmedYestrue once the traveller has approved the restated product, date, party, total and payment.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare this is not read-only and is destructive, but the description adds important context beyond them: the booking is pending payment, it is only secured when the traveller pays on the payment page, and deposit terms differ between shared and private tours. It does not discuss cancellation, refunds, or irreversible side effects in detail, but the core booking lifecycle is well disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the action and return value, then moves to preconditions and payment mechanics. It is dense and mostly waste-free, though the parenthetical deposit explanation slightly repeats 'paid in cash on the day' for shared and private tours.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 15-parameter mutation tool with no output schema, the description covers the critical business flow: pending payment, payment link return, traveller_confirmed gating, and deposit/full payment rules. It does not elaborate on duplicate-booking behavior or hotel pickup requirements, but those are already specified in the schema's parameter descriptions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description meaningfully expands on the payment parameter: 'full' is default, 'deposit' only when the tour offers it, and the remaining balance is paid in cash. It also reinforces the semantics of traveller_confirmed as the traveller's approval gate, adding value beyond the schema's concise field description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Creates a tour booking pending payment') and names the return value ('its reference and a secure payment page on phiphiparadise.travel'). This clearly distinguishes it from sibling tools such as check_availability, search_experiences, and book_transfer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear precondition: traveller_confirmed must be true only after the traveller has approved the restated product, date, party, total, and payment. It also explains when deposit payment applies, but it does not explicitly route the agent to check_availability or search_experiences first, nor does it name alternatives.

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)A
Destructive
Inspect

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.

NameRequiredDescriptionDefault
toNo
dateYesYYYY-MM-DD
fromNo
typeNo
hotelNoHotel name, for pickup.
notesNoKids ages, allergies, special requests.
companyNoOperator exactly as listed by search_transfers (our own departures).
trip_idNotrip_id of a departure listed by search_transfers.
languageNoTraveller language code (en, fr, de, es, zh...). Sets the emails and the payment page language.
passengersYes
pickup_timeNoPrivate taxi / van / boat (no fixed time): pickup time HH:MM chosen by the traveller.
hotel_pickupNoOnly for departures listed 'hotel pickup on request, +100 THB/person'.
departure_timeNoHH:MM exactly as listed by search_transfers (our own departures).
traveller_nameYesFull name of the lead traveller.
traveller_emailYesEmail: receives the confirmation and e-ticket after payment.
traveller_phoneNoWhatsApp number with country code (e.g. +33612345678). Strongly recommended: the local team uses it on the day.
confirm_duplicateNoOnly true if the traveller explicitly wants a SECOND identical booking after an ALREADY BOOKED answer.
traveller_confirmedYestrue once the traveller has approved the restated product, date, party, total and payment.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the safety profile is known. The description adds genuine value beyond that: it returns a reference plus a secure payment page, payment is online and in full, and the seat is only secured once paid — plus the confirm_duplicate escape hatch for repeat bookings. It stops short of stating refund/cancellation or payment-link expiry behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded: booking creation and return value come first, then the branch conditions, then the payment caveat. Every sentence carries information. It reads as one long block rather than clearly separated path/precondition/payment statements, which slightly hurts scannability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 18 parameters, no output schema and a non-idempotent write, the description does the heavy lifting: it explains the two booking paths, the required confirmation flag, and what the call returns. Cancellation/refund policy and payment-link expiry are omitted, which is a minor gap for a payment-generating mutation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 78%, just under the high-coverage threshold, but the description adds real meaning by explaining which parameters form each booking path (trip_id vs. the own-departure set) and why traveller_confirmed must be true. It does not discuss the pickup/hotel/language/notes parameters, but the schema documents those adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Creates a booking for one transfer'), names the organizing entity, and explicitly ties itself to the sibling tool that produces the listings ('listed by search_transfers'). An agent can tell what this does and how it relates to the search tool 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit routing rules: pass trip_id for partner departures that expose one, use from/to/type/departure_time/company for own boat departures, and do NOT use this tool for lines priced on 12Go. It also states the traveller_confirmed: true precondition, so the when-to-use and when-not-to-use conditions are both covered.

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 priceA
Read-only
Inspect

Live availability and exact party price of one tour on one date (seats left, blocked dates, booking cutoff 18:00 Bangkok the day before, dated prices). When the date is not bookable, it lists the next open dates.

NameRequiredDescriptionDefault
dateYesTrip date, YYYY-MM-DD.
adultsYesAdults and children 12+.
optionNoExact option label (boat type, duration...) when the tour has several priced options.
childrenNoChildren 4-11 (child rate).
toddlersNoBabies 0-3 (free).
experienceYesTour id 'destination/slug' or name.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, non-destructive, closed-world, so the bar is lower. The description still adds real operational context: the 18:00 Bangkok day-before booking cutoff, blocked dates, and the fallback behavior of listing the next open dates when the requested date is unavailable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core purpose and outputs, followed by fallback behavior. The parenthetical is a dense list but every item carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 what comes back: seats left, blocked dates, dated prices, and next open dates. It is nearly complete for a read-only lookup tool; only the relationship to booking tools is unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters are already documented, including age banding for adults/children/toddlers and the option label. The phrase 'party price' hints that pricing is computed from group composition, which is marginal added meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: live availability plus exact party price for one tour on one date. It implicitly distinguishes itself from search_experiences by scoping to a single tour and date, but never names the sibling or the boundary explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the caller learns it is the per-date check and that non-bookable dates fall back to a list of next open dates. There is no explicit statement of when to call this versus search_experiences or book_experience, nor any prerequisite such as needing a tour id first.

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 pricesA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
experienceYesTour id 'destination/slug' from search_experiences, or its name.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds meaningful context beyond that: 'live' signals real-time (non-cached) pricing, and the field list discloses what the payload actually contains, which is the main behavioral question for a read tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence with zero filler, front-loading the scope ('Full live sheet of one tour') before the field inventory. The long comma list is information-dense rather than padded, though it reads more like a manifest than prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 must carry the return-value burden — and it does, enumerating every major section of the sheet. What it omits is any note on failure behavior for a bad slug or on whether pricing is currency-localized, which keeps it just under complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

One parameter with 100% schema description coverage — the schema already explains the 'destination/slug' id format and the name fallback. The description only reinforces the single-tour scope ('one tour') and adds no syntax or format detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific resource and scope: the full detail sheet for ONE tour, then enumerates the concrete fields returned (price tiers, child price, dated periods, duration, schedule, meeting point, inclusions, park fee, page link). The 'one tour' framing implicitly separates it from search_experiences, but no sibling is named explicitly, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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 follow-up to search_experiences once a specific tour is chosen, but the description never states when to call it, when not to, or which alternative (e.g. check_availability) to prefer for date-specific pricing.

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 itineraryA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
adultsNo
childrenNo
end_dateNoLast day YYYY-MM-DD.
languageNoPage language code.
start_dateNoFirst day YYYY-MM-DD.
destinationsYesStops 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

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is carried elsewhere. The description adds output composition but never explains the destructive or non-idempotent behavior—an agent is not told whether repeated calls create duplicate pages or what side effects occur.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, dense and front-loaded: capability and outputs first, suitability second. No filler or restated field names.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Because there is no output schema, the description usefully enumerates what is returned. However, for a tool annotated destructive and non-idempotent, it omits side-effect, repeat-call and prerequisite information, and leaves adults/children/date parameters unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 67%, with adults and children undocumented, yet the description says nothing about party size, start/end dates or language. It only echoes 'stops in travel order', which the destinations schema field already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Starts with a specific verb and resource ('Build a multi-stop Thailand itinerary') and states exactly what is returned: a shareable page and PDF with day-by-day plan, map, transport prices, hotels and tours. This is clearly distinguishable from the search_*/book_* siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The closing sentence ('Suited to trips of several days or several places') gives implied usage context for when this itinerary builder fits. It does not name alternatives (e.g., search_hotels or search_experiences for simpler lookups) or state when not to use it.

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 tripsA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
limitNoMax results (default 8).
queryNoWhat the traveller wants, any language, e.g. 'Maya Bay sunrise', 'private longtail', 'elephant sanctuary'.
destinationNokoh-phi-phi, krabi, phuket, koh-yao, bangkok or chiang-mai.
private_onlyNotrue = private boats/tours only, false = shared group tours only.
max_price_thbNoBudget cap on the starting price, in THB.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuinely non-structured context: the exact result fields ('ids, starting prices, durations and page links') and the important caveat that 'Tour titles are in French' — a detail an agent would otherwise not anticipate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: coverage first, then geographic scope, then return shape. Dense enumeration, but every item (category or destination) narrows the agent's expectation, and nothing is repeated from the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations covering the safety profile and the schema fully documented, the remaining burden is return/discovery behavior, and the description does state the returned fields despite no output schema. It omits pagination/ordering behavior and any hint of the follow-up flow (details or booking), which keeps it short of complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already defines limit, query, destination, private_only and max_price_thb including allowed destination slugs. The description echoes the same concepts (private boats, starting prices, destination list) without adding syntax, defaults, or interaction rules, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Search') and a concrete resource ('our tours: island hopping, Maya Bay, private boats, snorkeling...') with the covered destinations enumerated. Against siblings like search_hotels, search_flights and search_transfers, the tour/boat-trip domain is unmistakable 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description conveys scope of coverage (categories and destinations) so when to use it is implied, but it never names alternatives such as get_experience_details or book_experience, nor does it state any exclusion or prerequisite. Usage is left to inference rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_flightsFlight search linksA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
toYesArrival IATA airport code, e.g. KBV (Krabi), HKT (Phuket), USM (Koh Samui).
dateYesOutbound date YYYY-MM-DD.
fromYesDeparture IATA airport code, e.g. CDG, BKK.
cabinNo
adultsNo
infantsNo
childrenNo
return_dateNoReturn date YYYY-MM-DD for a round trip.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, openWorldHint, non-destructive), and the description adds genuinely useful behavior: fares are only returned 'when our search has them,' the tool produces a booking link rather than a booking, and the partner varies by route (12Go/baht domestic, Google Flights and Skyscanner otherwise). This tells the agent the tool is a link generator, not a transactional booker, which is material.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the scope, then outputs, then the booking mechanic. No filler, though the multiple parenthetical route and partner examples make it slightly dense for the amount of actionable information conveyed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 explains what comes back (live fares when available plus a booking link and which partner). It is complete enough for an agent to call the tool and interpret results, with the remaining gap being the undocumented cabin/passenger parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50% (from, to, date, return_date documented; cabin, adults, children, infants bare). The description reinforces the IATA-code and route semantics but adds nothing about cabin classes or passenger counts, so half the parameters remain undocumented in both schema and description. Baseline 3 is warranted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource (flight search) and pins the geographic scope ('to and within Thailand') with concrete route examples (CDG-BKK, BKK-KBV, BKK-HKT). This clearly separates it from sibling searches for hotels, transfers, and experiences, though it never names a sibling directly, keeping it just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the scope ('Flights to and within Thailand') but there is no explicit when-to-use or when-not guidance relative to alternatives like search_transfers (which might cover ground transport to an airport). No prerequisites, no exclusion cases, so it sits at minimum-viable.

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 ratesA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
adultsNo
check_inNoYYYY-MM-DD
childrenNo
languageNo
check_outNoYYYY-MM-DD
destinationYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=true, destructiveHint=false). The description adds genuine behavioral context beyond them: the data source (Agoda live rates), the fields returned (rates, stars, guest scores, booking links), and the fallback mode when dates are absent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core resource, then the dated/undated branch, then the constraint list. Every clause carries information; no filler sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description usefully tells the agent what comes back (rates, stars, guest scores, booking links) plus the two response modes. The main residual gap is the three undocumented optional params (adults, children, language), so a 6-param tool is not fully specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33% (only check_in/check_out are described). The description partially compensates: it explains the paired conditional role of the two date params and enumerates the 13 accepted destination slugs, which the schema does not (0 enums). But adults, children and language receive no semantic guidance anywhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 spells out the two operating modes: dated search returns live Agoda rates, undated search returns an editorial shortlist. An agent can immediately tell this apart from search_flights and search_experiences, which cover different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a crisp conditional: supply check-in/check-out to get live rates, omit them to get the editorial shortlist. It does not name sibling alternatives or state exclusions (e.g. what to do when a destination is not in the supported list), so it stops short of fully explicit routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_transfersFerry, speedboat, van and taxi transfers in ThailandA
Read-only
Inspect

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).

NameRequiredDescriptionDefault
toYesArrival place.
dateNoTravel date YYYY-MM-DD (checks the 48h booking notice).
fromYesDeparture place, e.g. Phuket, Krabi, Ao Nang, Phi Phi, Koh Lanta.
langNoTraveller language code for the booking links (en, fr, de…).
typeNoOnly ferries or only speedboats.
passengersNoNumber of passengers (for totals).

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/openWorld/non-destructive, so safety is covered; the description usefully adds that results carry departure times, operator, pier/pickup, per-person or per-vehicle pricing, and a boat photo page, and it discloses that 12Go (a third party) handles booking and payment for non-partner routes. It stops short of stating pagination, coverage gaps, or what happens when no route exists, so it adds context without a complete behavioral picture.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first clause, but the body is a single dense run-on packed with a long island list, an ellipsis, and a parenthesized clause nested inside another parenthetical. Significant trimming is possible without losing selecting information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, describing the returned fields (times, operator, pier, price, photo) is genuinely necessary and is done. All six parameters are schema-documented and the booking hand-off is explained; only edge-case behavior (no results, notice window failure) is left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description contributes little beyond the schema: it names example places and mentions per-person vs per-vehicle pricing, but never explains the type filter (and its prose mentions catamarans, vans and taxis while the enum only accepts Ferry/Speedboat), nor what date or passengers actually change.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names the resource and scope precisely ('Transfers across the whole of Thailand') and enumerates the transport modes covered, which clearly separates it from search_flights and search_hotels. It never uses an explicit verb like 'search' or 'list', relying on the tool name for that, but the domain is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a concrete downstream routing rule that most tools lack: Phi Phi Paradise routes (with a trip_id) go to book_transfer, while everything else is an external 12Go listing with its own booking link. That tells the agent what to do after the search, but there is no explicit statement of when to prefer this over siblings like search_experiences or check_availability.

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.

  1. 1 tool update
    • Changedbook_transfer5 fields changed
      • changedInput schema / properties / company / description
        Previous value: -"Operator exactly as listed by search_transfers."New value: +"Operator exactly as listed by search_transfers (our own departures)."
      • changedInput schema / properties / departure_time / description
        Previous value: -"HH:MM exactly as listed by search_transfers."New value: +"HH:MM exactly as listed by search_transfers (our own departures)."
      • addedInput schema / properties / pickup_time
        Added value: +{
        +  "description": "Private taxi / van / boat (no fixed time): pickup time HH:MM chosen by the traveller.",
        +  "pattern": "^\\d{2}:\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / trip_id
        Added value: +{
        +  "description": "trip_id of a departure listed by search_transfers.",
        +  "pattern": "^[0-9a-f]{12}$",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "from",
        -  "to",
        -  "type",
        -  "date",
        -  "departure_time",
        -  "company",
        -  "passengers",
        -  "traveller_name",
        -  "traveller_email",
        -  "traveller_confirmed"
        -]New value: +[
        +  "date",
        +  "passengers",
        +  "traveller_name",
        +  "traveller_email",
        +  "traveller_confirmed"
        +]
  2. 1 tool update
    • Changedsearch_transfers1 field changed
      • addedInput schema / properties / lang
        Added value: +{
        +  "description": "Traveller language code for the booking links (en, fr, de…).",
        +  "maxLength": 5,
        +  "type": "string"
        +}
  3. 2 tool updates
    • Changedbook_experience1 field changed
      • changedInput schema / properties / traveller_confirmed / description
        Previous value: -"Must be true: you restated product, date, party, total and payment and the traveller explicitly said yes."New value: +"true once the traveller has approved the restated product, date, party, total and payment."
    • Changedbook_transfer1 field changed
      • changedInput schema / properties / traveller_confirmed / description
        Previous value: -"Must be true: you restated product, date, party, total and payment and the traveller explicitly said yes."New value: +"true once the traveller has approved the restated product, date, party, total and payment."
  4. 10 tool updates
    • First observedask_travel_guides
    • First observedbook_experience
    • First observedbook_transfer
    • First observedcheck_availability
    • First observedget_experience_details
    • First observedplan_trip
    • First observedsearch_experiences
    • First observedsearch_flights
    • First observedsearch_hotels
    • First observedsearch_transfers

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources