TripWays
Server Details
Find, price, and book tours, day trips, and activities worldwide, with live dates and prices.
- Status
- Healthy
- Uptime
- 93.5% over 43 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- TripWays
- Claude
- mcp.tripways.com
TDQS
Scored across 12 tools
Each tool has a clearly distinct role: catalog search, destination resolution, single-tour details, multi-tour comparison, live availability, live pricing, checkout-link generation, cancellation terms, meeting points, reviews, alternatives, and itinerary suggestions. Overlap between search_tours, find_alternatives, compare_tours, and get_tour_details is resolved by different inputs and outputs, so an agent can reliably select the right tool.
All 12 tools use a consistent snake_case verb_noun pattern such as check_availability, get_price_quote, search_tours, and compare_tours. The convention is predictable throughout with no mixed styles or vague names.
Twelve tools is well scoped for a tour discovery and booking-intent server. Each tool covers a distinct part of the traveler workflow, and there are no redundant or trivial tools.
The surface covers the full pre-booking lifecycle: destination resolution, catalog search, tour details, comparisons, alternatives, itinerary ideas, live availability, live pricing, checkout links, cancellation policies, meeting points, and reviews. Payment and seat-holding are explicitly out of scope and handled by the checkout link, so no obvious operational gap remains.
Available Tools
12 toolscheck_availabilityCheck availabilityARead-onlyIdempotentInspect
Check live start times and remaining seats for a TripWays tour on one date or a range of up to 31 days. Pass party_size (seats needed) or a travelers object; slots that cannot fit the group are left out, and party_size wins if both are given. The status field is ok, no_schedule, no_fit, or calendar_gone. Use get_price_quote with the same date, start time, and travelers for the total; its rate_options name and price the options in rate_ids.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | ||
| bokun_id | Yes | ||
| date_end | No | Inclusive end; default = date. Max 31 days. | |
| travelers | No | Simple ages; mapped to occupied seats (infants excluded unless the tour has an infant category). Used only when party_size is omitted. | |
| party_size | No | Occupied seats to keep (not ticket count). Slots with availabilityCount < party_size are omitted unless unlimited. Wins over travelers when both are set. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| note | No | |
| error | No | Present when ok is false. code: tour_not_found, destination_not_found, destination_ambiguous, or unpriced. message is written for the traveler. |
| slots | No | Open start times that fit the party. |
| reason | No | |
| status | No | ok, no_schedule, no_fit, or calendar_gone. |
| bokun_id | No | |
| checkout_url | No | |
| bookable_natively | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations' read-only and idempotent hints, the description discloses the filtering behavior ('slots that cannot fit the group are left out'), the precedence rule between party_size and travelers, the 31-day range cap, and the status values ok, no_schedule, no_fit, and calendar_gone. These are substantive behavioral traits that help an agent interpret results correctly.
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?
The description is front-loaded with purpose and then moves efficiently through input selection, status values, and the get_price_quote handoff. It is dense but appropriately sized; the final sentence about rate_options and rate_ids is slightly compressed but still earns its place by linking to the pricing sibling.
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?
An output schema exists, so return values need not be fully explained, and the description still names the status values and the sibling to use for pricing. It leaves the meanings of no_schedule, no_fit, and calendar_gone implicit, but overall it gives enough context for an agent to call the tool 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 60%, and the description mostly restates what the schema already says about party_size, travelers, and their precedence. It adds little for the undocumented bokun_id and date parameters, and does not explain formats or edge cases beyond the schema's own patterns and constraints.
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 ('Check live start times and remaining seats') plus the exact scope: a TripWays tour, one date or a range up to 31 days. It also distinguishes this tool from get_price_quote by assigning pricing to that sibling, so an agent can tell them apart without reading 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?
It clearly says to use get_price_quote with the same date, start time, and travelers for the total, which gives a concrete handoff condition. It also states party_size wins over travelers when both are supplied. It does not explicitly list when not to use this tool, so it stops short of a full when/when-not routing statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_toursCompare toursARead-onlyIdempotentInspect
Compare 2 to 4 TripWays tours side by side by bokun_id: from-price, duration, rating, cancellation type, hotel pickup, languages, inclusions, and exclusions. The result also names the tour with the lowest from-price, the shortest duration, the best rating (10+ reviews), and which have free cancellation. Ids that are not bookable tours come back in not_found. For group totals on a date, use check_availability and get_price_quote.
| Name | Required | Description | Default |
|---|---|---|---|
| bokun_ids | Yes | Two to four tour ids (the number in tripways.com/t/{id}). |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| note | No | |
| error | No | Present when ok is false. code: tour_not_found, destination_not_found, destination_ambiguous, or unpriced. message is written for the traveler. |
| tours | No | One row per tour found, in the order asked. |
| not_found | No | Ids that are not bookable tours. |
| highlights | No | bokun_id of the tour with the lowest from-price, the shortest duration, and the best rating (10+ reviews), and the ids with free cancellation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior. The description adds real value beyond that: it discloses the derived verdicts returned (lowest price, shortest duration, best rating with a 10+ review threshold, free cancellation flags) and how unresolvable ids surface in not_found.
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 action, then the returned attributes and derived picks, then the sibling routing. Every sentence earns its place with 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?
With an output schema present and full param coverage, the description supplies the extra semantics an agent needs: the derived 'best' logic and not_found behavior. Minor residual gap is ordering/pagination of results, which is low-impact for a max-4-item comparison.
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% and the schema already documents the 2-4 count, uniqueness, and the tripways.com/t/{id} form. The description repeats the count and id meaning without adding format or edge-case detail 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?
States a specific verb and resource ('Compare 2 to 4 TripWays tours side by side by bokun_id') and enumerates the compared attributes. It also distinguishes itself from siblings by naming check_availability and get_price_quote for a different need.
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?
Clear positive guidance: use this to compare 2-4 tours by bokun_id, and route to check_availability/get_price_quote for group totals on a date. Lacks an explicit exclusion such as pointing to get_tour_details for a single tour, so not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_alternativesFind alternativesARead-onlyIdempotentInspect
Find tours similar to one TripWays tour that have open start times on a date, or a date range of up to 31 days, for a group. Pass the tour the traveler wanted (bokun_id), the date, and party_size or travelers. Returns up to limit similar tours (1 to 5, default 3), each with its card and up to three open start times with seats left, plus the original tour's own status for those dates. It reads several live calendars, so it can take a few seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | ||
| limit | No | ||
| bokun_id | Yes | ||
| date_end | No | Inclusive end; default = date. Max 31 days. | |
| travelers | No | Simple ages; mapped to occupied seats. Used only when party_size is omitted. | |
| party_size | No | Occupied seats to keep. Wins over travelers when both are set. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| note | No | |
| error | No | Present when ok is false. code: tour_not_found, destination_not_found, destination_ambiguous, or unpriced. message is written for the traveler. |
| source | No | The tour that was asked about and its own status for these dates. |
| checked | No | How many similar tours' calendars were read. |
| alternatives | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, and non-destructive behavior. The description adds non-obvious behavior: it reads several live calendars, may take a few seconds, and returns up to limit tours with card data and up to three open start times plus original-tour status. No contradiction.
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 purpose, then invocation, then return and latency expectations. The limit/default detail repeats the schema, but every sentence contributes useful selection or expectation-setting information.
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 read-only tool with annotations, an output schema, and nested parameters, the description covers purpose, invocation, return shape, latency, and date-range cap. Remaining gaps are mostly sibling routing rather than missing call-critical information.
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 already documents date_end, travelers precedence, and party_size precedence, but overall coverage is 50%. The description adds meaning for bokun_id ('the tour the traveler wanted'), date/date-range scope, and party_size-or-travelers, but does not fully explain the nested travelers object or all constraints 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?
States a specific verb and resource ('Find tours similar to one TripWays tour') and scopes it to open start times on a date or date range for a group. It is clearly different in substance from check_availability or search_tours, though it does not name a sibling explicitly.
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?
Provides invocation guidance ('Pass the tour the traveler wanted ...'), which implies the use case, but it never says when to choose this over check_availability/search_tours or when not to use it. Alternatives and exclusions are left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_booking_linkGet a booking linkARead-onlyIdempotentInspect
Get the TripWays checkout link for a tour, optionally preset to a date, start time, rate, and traveler mix. The traveler pays on tripways.com; this tool does not hold seats or take payment. bookable_natively and reason say whether the link opens TripWays checkout or the operator's calendar, and whether a hotel pickup must be chosen at checkout.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| rate_id | No | Option to preselect: the rate_id get_price_quote priced or one from its rate_options. Omit for the option a quote would price. | |
| bokun_id | Yes | ||
| travelers | No | Simple ages; mapped to Bokun pricing categories. | |
| start_time | No | HH:MM if start_time_id unknown. | |
| start_time_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | Present when ok is false. code: tour_not_found, destination_not_found, destination_ambiguous, or unpriced. message is written for the traveler. |
| reason | No | |
| bokun_id | No | |
| spots_left | No | |
| start_time | No | |
| checkout_url | No | Open in the browser to pay on tripways.com. |
| min_participants | No | |
| bookable_natively | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld/non-destructive, yet the description adds real context: the link does not hold inventory or process payment, and the returned bookable_natively and reason indicate whether checkout happens on TripWays or the operator's calendar and whether a hotel pickup must be selected. That is exactly the side-effect clarity an agent needs before handing a link to a user.
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 dense sentences, front-loaded with the core action, then the payment/inventory disclaimer, then the return-field semantics. No filler and nothing repeated from the annotations.
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?
An output schema covers return values and the description still explains bookable_natively and reason helpfully; the nested travelers object is noted as mapping to Bokun pricing categories. Minor gaps remain: bokun_id is never explained as the tour identifier, and link expiry/validity is unmentioned, which matters for a link-generation 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 coverage is only 50%, but the description compensates by explaining the optional preset set (date, start time, rate, traveler mix) and by defining rate_id's relationship to get_price_quote's rate_options. It does not clarify bokun_id's meaning nor the start_time vs start_time_id precedence beyond what the schema text says.
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?
Names a specific verb and resource (get the TripWays checkout link for a tour) and enumerates the preset dimensions (date, start time, rate, traveler mix). It is clearly differentiated from siblings like get_price_quote and check_availability, which price and check rather than produce a purchasable link.
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?
The rate_id parameter text ties the tool to get_price_quote ('the rate_id get_price_quote priced or one from its rate_options'), which implies the quote-then-link workflow. It also states the traveler pays on tripways.com and the tool does not hold seats or take payment, but it never explicitly says when not to use it or that availability should be confirmed first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cancellation_policyGet cancellation policyARead-onlyIdempotentInspect
Get the cancellation terms stored for one TripWays tour by bokun_id: the type (free, flexible, partial, or non_refundable), the refund percent and cutoff when the tour has them, and the operator's policy text. These are the tour's terms, not a quote for a specific booking.
| Name | Required | Description | Default |
|---|---|---|---|
| bokun_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| url | No | The tour's TripWays page. |
| note | No | |
| error | No | Present when ok is false. code: tour_not_found, destination_not_found, destination_ambiguous, or unpriced. message is written for the traveler. |
| cutoff | No | How long before the start the terms apply. |
| summary | No | One-line terms, e.g. 'Free Cancellation'. |
| bokun_id | No | |
| guidance | No | |
| policy_text | No | The operator's policy text. |
| cancellation | No | free, flexible, partial, or non_refundable. |
| refund_percent | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful context in 'when the tour has them' (fields may be absent) and the fact that data is operator-authored policy text, but it discloses no auth, rate-limit, or failure behavior beyond that.
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 verb and resource, then the returned fields and a scoping caveat. No filler; every clause adds information.
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 an output schema present, the description needn't enumerate return structure, yet it does so helpfully, and it clarifies the tour-scoped (non-booking) semantics. It is complete enough to invoke correctly, with only the parameter's id origin/format left implicit.
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?
Single parameter with 0% schema description coverage, so the description must carry the load. It tells the agent bokun_id identifies 'one TripWays tour,' which is meaningful scoping, but adds nothing about the numeric-string format or where the id comes from.
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 (Get) and resource (cancellation terms stored for one TripWays tour), and enumerates the returned fields (type, refund percent, cutoff, operator policy text). It also draws a boundary against get_price_quote by clarifying these are the tour's stored terms, not a booking-specific quote.
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?
The closing sentence carves out the usage case by contrasting with a booking-specific quote, implicitly steering the agent to get_price_quote for that need. However, it does not name that alternative explicitly or state hard when/when-not conditions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_destination_infoFind a destinationARead-onlyIdempotentInspect
Resolve a place name (a city, region, country, or well-known area such as Khao Sok) to a TripWays destination with bookable tours. Useful before search_tours when a name could mean more than one place. An ambiguous name returns destination_ambiguous with a did_you_mean list; pass country_code (ISO 3166-1 alpha-2, e.g. FR) to choose one. Area names resolve to their parent destination and include resolved_via=area_alias.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| country_code | No | Optional ISO2 pin, e.g. FR. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | Present when ok is false. code: tour_not_found, destination_not_found, destination_ambiguous, or unpriced. message is written for the traveler. |
| destination | No | |
| did_you_mean | No | Candidate destinations when the place name matched more than one location. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description goes well beyond them by disclosing the failure path ('returns destination_ambiguous with a did_you_mean list') and the alias behavior ('Area names resolve to their parent destination and include resolved_via=area_alias'). These are non-obvious runtime traits an agent must plan around.
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 the core action, then the routing rationale, then the edge-case behavior. No filler and no restatement of the title or structured fields.
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 an output schema present, return values need not be enumerated, yet the description still flags the two return shapes an agent must branch on (destination_ambiguous, resolved_via=area_alias). Nothing needed to call this correctly 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 coverage is 50% and the undocumented param is `query`, whose meaning the description does supply (place names, including well-known areas). It also adds disambiguation semantics for country_code — that it exists to pick one meaning — beyond the schema's bare 'Optional ISO2 pin, e.g. FR.'
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 ('Resolve a place name ... to a TripWays destination with bookable tours') and enumerates accepted input forms (city, region, country, well-known area like Khao Sok). It also distinguishes itself from the sibling search_tours by naming it and its prep-step role.
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 says when to reach for it: 'Useful before search_tours when a name could mean more than one place.' It names the alternative tool and the exact condition that selects this one, plus the fallback lever (pass country_code) when the first call is ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_itinerary_ideasGet itinerary ideasARead-onlyIdempotentInspect
Suggest a day-by-day plan of bookable TripWays tours for a destination. Pass destination, days (1 to 7, default 3), and optional interests such as food, history, or boat trips. Each day holds one full-day tour or a morning and afternoon pair, with from-prices and links; multi-day tours are listed apart. These are suggestions only: dates, seats, and group totals are not checked.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| interests | No | Optional, e.g. 'food and history'. | |
| destination | Yes | City, region, or country, e.g. 'Rome' or 'Phuket'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| days | No | |
| note | No | |
| error | No | Present when ok is false. code: tour_not_found, destination_not_found, destination_ambiguous, or unpriced. message is written for the traveler. |
| did_you_mean | No | Candidate destinations when the place name matched more than one location. |
| days_requested | No | |
| longer_options | No | Multi-day tours, kept out of the day plan. |
| destination_resolved | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds real value beyond that: the result structure (from-prices, links, multi-day tours listed apart) and the important caveat that availability, seats, and group totals are unverified. It does not discuss result size, empty-result behavior, 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?
Four sentences, front-loaded with purpose, then parameters, then output shape, then the caveat — each carrying distinct information with no restatement 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 three-parameter read-only suggestion tool with an output schema, nothing essential is missing: inputs, result structure, and the key limitation (no live availability) are all stated. The remaining gaps, such as empty-destination handling, are minor.
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 67%; the description reinforces the days bounds (1 to 7, default 3) and broadens the interests examples to 'food, history, or boat trips' beyond the schema's single example. It explains what interests actually do (shape the suggested plan), which the schema does not.
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 — 'Suggest a day-by-day plan of bookable TripWays tours for a destination' — and the structured shape of the result (full-day tour or morning/afternoon pair, multi-day listed apart). This is clearly distinct from siblings like search_tours or compare_tours, which return flat lists or comparisons rather than a plan.
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?
'These are suggestions only: dates, seats, and group totals are not checked' establishes the planning context and implicitly routes verification to check_availability/get_price_quote. It never names an alternative tool explicitly, so the agent must infer the handoff rather than being told it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_meeting_pointGet meeting pointARead-onlyIdempotentInspect
Get where one TripWays tour starts, by bokun_id: the operator's meeting point text, whether hotel pickup is available, and the operator's know-before-you-go notes and what to bring. Fields the operator has not filled in are left out, with a note when nothing is stored.
| Name | Required | Description | Default |
|---|---|---|---|
| bokun_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| url | No | |
| note | No | |
| error | No | Present when ok is false. code: tour_not_found, destination_not_found, destination_ambiguous, or unpriced. message is written for the traveler. |
| bokun_id | No | |
| hotel_pickup | No | |
| meeting_point | No | The operator's meeting point text. |
| what_to_bring | No | |
| know_before_you_go | No | |
| meeting_pickup_label | No | e.g. 'Pickup available' or 'Meet on location'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds genuinely useful behavioral context beyond that: missing operator fields are omitted rather than returned empty, and a note is emitted when nothing is stored. That is real output-shape disclosure an agent would not otherwise know.
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?
The primary purpose and identifier are front-loaded in the first clause, and the second sentence covers output behavior without padding. The field enumeration is dense but each item maps to a real returned value, so little 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 an output schema present, the description need not document return structure, yet it still summarizes returned content and missing-field handling. For a single-parameter read tool with full annotation coverage, nothing an agent needs to call it 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 description coverage is 0%, so the description must carry the meaning of bokun_id; it does add that the id refers to a TripWays tour, which is more than the schema's bare pattern constraint says. But it gives no format or sourcing hint (e.g., numeric string, obtainable from search results), so it only partially compensates.
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?
Names a specific verb and resource ('Get where one TripWays tour starts') and enumerates exactly what is returned: meeting point text, hotel pickup availability, know-before-you-go notes, and what to bring. That enumeration clearly carves out a niche distinct from get_tour_details or get_itinerary_ideas without needing to name them.
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?
The phrase 'by bokun_id' implies the prerequisite (you need a tour identifier, presumably from search_tours or get_tour_details), so usage is inferable. However, there is no explicit when-to-use statement, no guidance on when get_tour_details would be the better call, and no exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_price_quoteGet a price quoteARead-onlyIdempotentInspect
Get the live total for a TripWays tour on one date and start time for a traveler mix, priced from the operator's booking calendar. Without rate_id it prices the option the tour page advertises (else the operator's default, then the cheapest option that fits the group). rate_options lists every option at that start time with its total for the same travelers; pass one's rate_id to price that option. The start time can be left out when the date has only one. A quote does not hold seats or charge anything. Optional extras and promo codes are not included. When no option can price the mix, the result is unpriced and the message gives the group size the options take. from_price is what one adult pays (the price Google shows); group_price, when present, is the per-person price for a group as the tour page shows it.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | ||
| rate_id | No | Option to price: a rate_id from rate_options (or check_availability rate_ids). Omit for the option the tour page advertises. | |
| bokun_id | Yes | ||
| travelers | No | Simple ages; mapped to Bokun pricing categories. | |
| start_time | No | HH:MM if start_time_id unknown. | |
| start_time_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| date | No | |
| error | No | Present when ok is false. code: tour_not_found, destination_not_found, destination_ambiguous, or unpriced. message is written for the traveler. |
| reason | No | |
| rate_id | No | The option priced. Pass to get_booking_link. |
| bokun_id | No | |
| currency | No | |
| from_price | No | The tour's From price: what one adult pays on the option the tour page advertises, the price Google shows. Not the price of this quote; that is package_total. |
| per_person | No | What each traveler pays in this quote, when all are one age group on a per-person option (package_total split evenly). |
| quote_kind | No | |
| rate_title | No | |
| start_time | No | |
| group_price | No | Present when the tour page also shows a group price, for example "2 travelers: $187.09 each": what each pays when that many adults book together on the advertised option. Quote it as given. |
| checkout_url | No | Checkout preset to this date, time, and travelers. |
| rate_options | No | Every option at this start time. Priced options carry package_total for the same travelers; unpriced ones carry min_travelers or max_travelers when group size is the reason. Pass rate_id to get_price_quote or get_booking_link to choose one. |
| package_total | No | Total for the whole group, before optional extras and promo codes. |
| pickup_charge | No | Compulsory pickup / drop-off charge, already in package_total. |
| promo_applied | No | |
| min_participants | No | |
| travelers_priced | No | Traveler counts the total covers. |
| bookable_natively | No | |
| from_price_basis_adults | No | Travelers from_price covers: 1, or the minimum group on a tour sold only to groups (from_price is then that group's total). |
| includes_required_extras | No | |
| optional_extras_excluded | No | |
| required_extras_unpriced | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations: states a quote holds no seats and charges nothing, excludes extras and promo codes, and describes the unpriced outcome with a message giving the group size the options can take. This is exactly the extra context an agent needs before calling.
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?
Dense and front-loaded, starting with what is priced and following with the rate_id ladder, then behavioral caveats. A few sentences (the rate_id restatement) duplicate the schema, which trims a point off an otherwise efficient definition.
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 six-param pricing tool with an output schema, the description covers fallback behavior, optional parameters, exclusivity of extras/promos, and the failure mode. It also clarifies what from_price and group_price mean, so an agent can interpret results without guessing.
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?
With 50% schema coverage, the description compensates by explaining the pricing fallback for a missing rate_id and the condition for omitting start_time, plus how traveler mixes map to pricing. It repeats the rate_id schema description somewhat, and travel-mix category mapping stays briefly noted rather than fully elaborated.
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 (live total for a TripWays tour on a date/start time for a traveler mix) and scopes the pricing source to the operator's booking calendar. It also distinguishes the rate_options path from check_availability, making it easy to tell apart from siblings.
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 explains the rate_id decision ladder (advertised option → operator default → cheapest fitting option), when to pass a rate_id from rate_options, and that start_time can be omitted for single-time dates. Effectively states when and how to use it rather than leaving options to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tour_detailsGet tour detailsARead-onlyIdempotentInspect
Get the full details of one TripWays tour by bokun_id (the number in tripways.com/t/{id}): summary, itinerary stops, inclusions and exclusions, languages, cancellation policy, meeting point or pickup, from-price, rating, hero_image, url, and checkout_url. Live dates and group totals come from check_availability and get_price_quote.
| Name | Required | Description | Default |
|---|---|---|---|
| bokun_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| url | No | The tour's TripWays page. |
| error | No | Present when ok is false. code: tour_not_found, destination_not_found, destination_ambiguous, or unpriced. message is written for the traveler. |
| title | No | |
| rating | No | |
| reason | No | Why checkout works the way it does, e.g. pickup_required. |
| themes | No | |
| summary | No | |
| bokun_id | No | Tour id; the number in tripways.com/t/{id}. |
| guidance | No | |
| itinerary | No | |
| languages | No | |
| activities | No | |
| exclusions | No | |
| from_price | No | What one adult pays: the tour page's From price, the same price Google shows. |
| hero_image | No | Main photo URL. |
| inclusions | No | |
| cancellation | No | free, flexible, partial, or non_refundable. |
| checkout_url | No | TripWays checkout for this tour. |
| destinations | No | |
| hotel_pickup | No | |
| duration_text | No | |
| gttd_eligible | No | Listed on Google Things to Do. |
| duration_hours | No | |
| bookable_natively | No | True when checkout_url opens TripWays checkout; false when it opens the operator calendar. |
| meeting_pickup_label | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds meaningful context beyond them: the response is a static catalog snapshot, with live dates and group totals explicitly excluded. It doesn't mention auth requirements, rate limits, or error behavior for a nonexistent bokun_id, so it stops short of full disclosure.
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?
The key identifier and scope are front-loaded, and the second sentence is a tight hand-off to the money/availability tools. The long field enumeration partially duplicates the output schema, making one sentence do more work than necessary.
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?
An output schema exists, so return values needn't be explained, yet the description still previews the payload shape well enough to plan a call. For a single-parameter read tool with strong annotations, nothing an agent needs 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 0% for the single parameter, so the description must carry the meaning — and it does, explaining that bokun_id is the numeric id from the tripways.com/t/{id} URL. It adds no note on the digits-only pattern or what happens with an invalid id, keeping it below a 5.
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 ('Get the full details of one TripWays tour') and disambiguates the identifier by tying bokun_id to the number in tripways.com/t/{id}. It also enumerates the returned content and names the siblings that serve live pricing/availability, so the agent can distinguish it from check_availability without opening either 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?
Explicitly routes dynamic concerns elsewhere: 'Live dates and group totals come from check_availability and get_price_quote.' That is clear positive guidance on when to use alternatives, but it doesn't address the other overlapping siblings (get_meeting_point, get_cancellation_policy, get_tour_reviews), which return subsets of the same data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tour_reviewsGet tour reviewsARead-onlyIdempotentInspect
Get the rating summary and written reviews for one TripWays tour by bokun_id. Written reviews come from travelers who booked on TripWays and carry first name, country, date, star rating, and text; the overall rating can also include ratings from other platforms. limit sets how many written reviews to return (1 to 10, default 5, newest first).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| bokun_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| url | No | |
| note | No | |
| error | No | Present when ok is false. code: tour_not_found, destination_not_found, destination_ambiguous, or unpriced. message is written for the traveler. |
| rating | No | |
| reviews | No | |
| bokun_id | No | |
| site_reviews | No | Reviews written on TripWays by travelers who booked. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, non-destructive and closed-world behavior. The description adds genuinely useful non-schema context: reviews originate only from TripWays bookings while the aggregate rating may include other platforms, and written reviews are returned newest first.
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?
A single front-loaded sentence carrying purpose, provenance, and the limit semantics with no filler. Every clause (review contents, rating provenance, ordering) earns its place.
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 an output schema present, return values need not be detailed, and the description still sketches what reviews contain (name, country, date, star rating, text). For a two-parameter read tool, nothing essential 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 0%, so the description carries the load, and it does: it explains bokun_id identifies a single TripWays tour and spells out limit's range, default, and ordering. It stops short of explaining what a bokun_id is or where it comes from, leaving a small gap.
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 ('Get the rating summary and written reviews for one TripWays tour') and scopes it to a single tour by bokun_id. This distinguishes it from siblings like get_tour_details or search_tours without needing to open a 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: you call it when you want reviews for a known tour id. However, no explicit when-to-use/when-not guidance or named alternative (e.g., get_tour_details) is offered, so the agent must infer that reviews are not included in the general tour lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_toursSearch toursARead-onlyIdempotentInspect
Search the TripWays catalog of bookable tours, day trips, and activities worldwide. Pass a natural-language query plus any filters you already know: destination, price range in USD, duration in hours, activity, theme, or cancellation policy. Returns ranked tours with bokun_id, title, from-price, duration, destinations, rating, cancellation policy, hero_image, the TripWays page (url), and checkout_url. For live dates, remaining seats, or a group total, use check_availability and get_price_quote.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | Natural-language search, e.g. 'family food tour in Rome under $100'. | |
| theme | No | ||
| activity | No | Activity facet, e.g. food, hiking, snorkeling. | |
| price_max | No | ||
| price_min | No | ||
| destination | No | Place name (city, region, country, or well-known area/landmark). Resolved against TripWays destinations; a landmark that is not a destination is added to the search text. | |
| cancellation | No | ||
| duration_hours_max | No | ||
| duration_hours_min | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| note | No | Why the list is empty or how the destination was read. |
| error | No | Present when ok is false. code: tour_not_found, destination_not_found, destination_ambiguous, or unpriced. message is written for the traveler. |
| tours | No | Ranked tours; empty when nothing matched (see note). |
| guidance | No | |
| did_you_mean | No | Candidate destinations when the place name matched more than one location. |
| destination_resolved | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent and closed-world behavior. The description adds that results are ranked and that filters are optional ('any filters you already know'), which guides partial-query usage. It does not disclose result-set sizing or the effect of the limit cap, but with annotations carrying the safety profile this is close to complete.
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 purpose and usage before the field list. The return-field enumeration is somewhat wasted because an output schema exists, but it does not obscure the actionable guidance.
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 10-parameter, read-only search tool with an output schema, the description covers purpose, filter semantics and sibling routing. Only behavior around the limit cap and result ranking/ordering is unstated, which is a small residual gap.
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 only 30%, so the description does real work: it enumerates query, destination, price range in USD, duration in hours, activity, theme and cancellation policy, confirming all are optional refinements. Only 'limit' is left unexplained, which is a minor gap given its documented default and maximum in 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?
States a specific verb and resource ('Search the TripWays catalog of bookable tours, day trips, and activities worldwide') and scopes it to catalog discovery rather than live availability. An agent can distinguish it from check_availability and get_price_quote without reading either 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?
Explicitly describes two modes: free-text query plus optional known filters. It also names the exact conditions that route elsewhere — live dates, remaining seats, group totals go to check_availability and get_price_quote. This is a clear when-to-use / when-not-to-use split.
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.
8 tool updates
- Changed
check_availability1 field changed- added
Output schema / properties / slots / items / properties / rate_ids / descriptionAdded value: +"Options (rate ids) offered at this start time."
- Changed
compare_tours1 field changed- changed
Output schema / properties / tours / items / properties / from_price / descriptionPrevious value: -"Lowest adult price."New value: +"What one adult pays: the tour page's From price, the same price Google shows."
- Changed
find_alternatives1 field changed- changed
Output schema / properties / alternatives / items / properties / tour / properties / from_price / descriptionPrevious value: -"Lowest adult price."New value: +"What one adult pays: the tour page's From price, the same price Google shows."
- Changed
get_booking_link1 field changed- added
Input schema / properties / rate_id / descriptionAdded value: +"Option to preselect: the rate_id get_price_quote priced or one from its rate_options. Omit for the option a quote would price."
- Changed
get_itinerary_ideas2 fields changed- changed
Output schema / properties / days / items / properties / tours / items / properties / from_price / descriptionPrevious value: -"Lowest adult price."New value: +"What one adult pays: the tour page's From price, the same price Google shows." - changed
Output schema / properties / longer_options / items / properties / from_price / descriptionPrevious value: -"Lowest adult price."New value: +"What one adult pays: the tour page's From price, the same price Google shows."
- Changed
get_price_quote9 fields changed- added
Input schema / properties / rate_idAdded value: +{ + "description": "Option to price: a rate_id from rate_options (or check_availability rate_ids). Omit for the option the tour page advertises.", + "minimum": 1, + "type": "integer" +} - added
Output schema / properties / from_price / descriptionAdded value: +"The tour's From price: what one adult pays on the option the tour page advertises, the price Google shows. Not the price of this quote; that is package_total." - added
Output schema / properties / from_price_basis_adultsAdded value: +{ + "description": "Travelers from_price covers: 1, or the minimum group on a tour sold only to groups (from_price is then that group's total).", + "type": "integer" +} - added
Output schema / properties / group_priceAdded value: +{ + "description": "Present when the tour page also shows a group price, for example \"2 travelers: $187.09 each\": what each pays when that many adults book together on the advertised option. Quote it as given.", + "properties": { + "adults": { + "type": "integer" + }, + "per_person": { + "minimum": 0, + "type": "number" + }, + "total": { + "minimum": 0, + "type": "number" + } + }, + "type": "object" +} - added
Output schema / properties / per_personAdded value: +{ + "description": "What each traveler pays in this quote, when all are one age group on a per-person option (package_total split evenly).", + "minimum": 0, + "type": "number" +} - added
Output schema / properties / pickup_chargeAdded value: +{ + "description": "Compulsory pickup / drop-off charge, already in package_total.", + "minimum": 0, + "type": "number" +} - added
Output schema / properties / rate_idAdded value: +{ + "description": "The option priced. Pass to get_booking_link.", + "type": "integer" +} - added
Output schema / properties / rate_optionsAdded value: +{ + "description": "Every option at this start time. Priced options carry package_total for the same travelers; unpriced ones carry min_travelers or max_travelers when group size is the reason. Pass rate_id to get_price_quote or get_booking_link to choose one.", + "items": { + "properties": { + "max_travelers": { + "type": "integer" + }, + "min_travelers": { + "type": "integer" + }, + "package_total": { + "minimum": 0, + "type": "number" + }, + "pickup_charge": { + "minimum": 0, + "type": "number" + }, + "priced": { + "type": "boolean" + }, + "rate_id": { + "type": "integer" + }, + "required_extras_unpriced": { + "type": "boolean" + }, + "title": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / required_extras_unpricedAdded value: +{ + "type": "boolean" +}
- Changed
get_tour_details1 field changed- changed
Output schema / properties / from_price / descriptionPrevious value: -"Lowest adult price."New value: +"What one adult pays: the tour page's From price, the same price Google shows."
- Changed
search_tours1 field changed- changed
Output schema / properties / tours / items / properties / from_price / descriptionPrevious value: -"Lowest adult price."New value: +"What one adult pays: the tour page's From price, the same price Google shows."
6 tool updates
- Added
compare_tours - Added
find_alternatives - Added
get_cancellation_policy - Added
get_itinerary_ideas - Added
get_meeting_point - Added
get_tour_reviews
6 tool updates
- Changed
check_availability1 field changed- added
Output schema / properties / errorAdded value: +{ + "description": "Present when ok is false. code: tour_not_found, destination_not_found, destination_ambiguous, or unpriced. message is written for the traveler.", + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "type": "object" +}
- Changed
get_booking_link1 field changed- added
Output schema / properties / errorAdded value: +{ + "description": "Present when ok is false. code: tour_not_found, destination_not_found, destination_ambiguous, or unpriced. message is written for the traveler.", + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "type": "object" +}
- Changed
get_destination_info2 fields changed- added
Output schema / properties / did_you_meanAdded value: +{ + "description": "Candidate destinations when the place name matched more than one location.", + "type": "array" +} - added
Output schema / properties / errorAdded value: +{ + "description": "Present when ok is false. code: tour_not_found, destination_not_found, destination_ambiguous, or unpriced. message is written for the traveler.", + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "type": "object" +}
- Changed
get_price_quote1 field changed- added
Output schema / properties / errorAdded value: +{ + "description": "Present when ok is false. code: tour_not_found, destination_not_found, destination_ambiguous, or unpriced. message is written for the traveler.", + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "type": "object" +}
- Changed
get_tour_details1 field changed- added
Output schema / properties / errorAdded value: +{ + "description": "Present when ok is false. code: tour_not_found, destination_not_found, destination_ambiguous, or unpriced. message is written for the traveler.", + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "type": "object" +}
- Changed
search_tours2 fields changed- added
Output schema / properties / did_you_meanAdded value: +{ + "description": "Candidate destinations when the place name matched more than one location.", + "type": "array" +} - added
Output schema / properties / errorAdded value: +{ + "description": "Present when ok is false. code: tour_not_found, destination_not_found, destination_ambiguous, or unpriced. message is written for the traveler.", + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "type": "object" +}
6 tool updates
- First observed
check_availability - First observed
get_booking_link - First observed
get_destination_info - First observed
get_price_quote - First observed
get_tour_details - First observed
search_tours
Publisher details
- Operator
- TripWays
- Operator website
- https://tripways.com · Publisher source
- Vendor relationship
- First-party
- Documentation
- https://TripWays.com · Publisher source
- Trust center
- https://tripways.com/mcp
- Restrictions
- No Auth, Fair Use Policy
Related MCP Connectors
Search, check availability and book tours and activities worldwide.
Search & compare prices for tours, activities and tickets across multiple providers.
Free walking tours & activities in 1,000+ cities — live availability, ratings & booking links.
Discover and book theatre, tours, attractions, and live experiences worldwide. No API key required.
Related MCP Servers
- AlicenseAqualityFmaintenanceReal-time last-minute tour and activity booking across 18 suppliers in 15 countries via the OCTO open standard. Search available slots, create Stripe checkout sessions, and check booking status.41MIT
- AlicenseAqualityCmaintenanceDiscover and book theatre, shows, events, tours and experiences across 700+ cities worldwide on tickadoo® with real-time pricing and booking links.461 npm2MIT
- AlicenseNot gradedqualityDmaintenanceEnables searching, browsing, and booking tours and unique travel experiences on GetExperience.com via MCP, with support for both guest payments and B2B partner integrations.MIT
- AlicenseBqualityBmaintenanceOfficial MCP server for MAQAMI, a hotel and flight booking platform with 3M+ hotels. Search live hotel rates and flights, look up places, airports and hotel details, then prebook and book. Remote Streamable HTTP endpoint, no API key required.4197 npm2MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.