Find, price, and book tours, day trips, and activities worldwide, with live dates and prices.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
Inclusive end; default = date. Max 31 days.
Simple ages; mapped to occupied seats (infants excluded unless the tour has an infant category). Used only when party_size is omitted.
Occupied seats to keep (not ticket count). Slots with availabilityCount < party_size are omitted unless unlimited. Wins over travelers when both are set.
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.
| Argument | Type | Description |
|---|---|---|
| date* | string | |
| bokun_id* | string | |
| date_end | string | Inclusive end; default = date. Max 31 days. |
| travelers | object | Simple ages; mapped to occupied seats (infants excluded unless the tour has an infant category). Used only when party_size is omitted. |
| party_size | integer | Occupied seats to keep (not ticket count). Slots with availabilityCount < party_size are omitted unless unlimited. Wins over travelers when both are set. |
{
"type": "object",
"required": [
"bokun_id",
"date"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"bokun_id": {
"type": "string",
"pattern": "^[0-9]+$"
},
"date_end": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Inclusive end; default = date. Max 31 days."
},
"travelers": {
"type": "object",
"properties": {
"youth": {
"type": "integer",
"minimum": 0
},
"adults": {
"type": "integer",
"default": 1,
"minimum": 0
},
"infants": {
"type": "integer",
"minimum": 0
},
"seniors": {
"type": "integer",
"minimum": 0
},
"children": {
"type": "integer",
"minimum": 0
}
},
"description": "Simple ages; mapped to occupied seats (infants excluded unless the tour has an infant category). Used only when party_size is omitted.",
"additionalProperties": false
},
"party_size": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Occupied seats to keep (not ticket count). Slots with availabilityCount < party_size are omitted unless unlimited. Wins over travelers when both are set."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| bokun_ids* | array | Two to four tour ids (the number in tripways.com/t/{id}). |
{
"type": "object",
"required": [
"bokun_ids"
],
"properties": {
"bokun_ids": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[0-9]+$"
},
"maxItems": 4,
"minItems": 2,
"description": "Two to four tour ids (the number in tripways.com/t/{id}).",
"uniqueItems": true
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| date* | string | |
| limit | integer | |
| bokun_id* | string | |
| date_end | string | Inclusive end; default = date. Max 31 days. |
| travelers | object | Simple ages; mapped to occupied seats. Used only when party_size is omitted. |
| party_size | integer | Occupied seats to keep. Wins over travelers when both are set. |
{
"type": "object",
"required": [
"bokun_id",
"date"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"limit": {
"type": "integer",
"default": 3,
"maximum": 5,
"minimum": 1
},
"bokun_id": {
"type": "string",
"pattern": "^[0-9]+$"
},
"date_end": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Inclusive end; default = date. Max 31 days."
},
"travelers": {
"type": "object",
"properties": {
"youth": {
"type": "integer",
"minimum": 0
},
"adults": {
"type": "integer",
"default": 1,
"minimum": 0
},
"infants": {
"type": "integer",
"minimum": 0
},
"seniors": {
"type": "integer",
"minimum": 0
},
"children": {
"type": "integer",
"minimum": 0
}
},
"description": "Simple ages; mapped to occupied seats. Used only when party_size is omitted.",
"additionalProperties": false
},
"party_size": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Occupied seats to keep. Wins over travelers when both are set."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| date | string | |
| rate_id | integer | |
| bokun_id* | string | |
| travelers | object | Simple ages; mapped to Bokun pricing categories. |
| start_time | string | HH:MM if start_time_id unknown. |
| start_time_id | integer |
{
"type": "object",
"required": [
"bokun_id"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"rate_id": {
"type": "integer",
"minimum": 1
},
"bokun_id": {
"type": "string",
"pattern": "^[0-9]+$"
},
"travelers": {
"type": "object",
"properties": {
"youth": {
"type": "integer",
"minimum": 0
},
"adults": {
"type": "integer",
"default": 1,
"minimum": 0
},
"infants": {
"type": "integer",
"minimum": 0
},
"seniors": {
"type": "integer",
"minimum": 0
},
"children": {
"type": "integer",
"minimum": 0
}
},
"description": "Simple ages; mapped to Bokun pricing categories.",
"additionalProperties": false
},
"start_time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}$",
"description": "HH:MM if start_time_id unknown."
},
"start_time_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| bokun_id* | string |
{
"type": "object",
"required": [
"bokun_id"
],
"properties": {
"bokun_id": {
"type": "string",
"pattern": "^[0-9]+$"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| query* | string | |
| country_code | string | Optional ISO2 pin, e.g. FR. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"country_code": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "Optional ISO2 pin, e.g. FR."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| days | integer | |
| interests | string | Optional, e.g. 'food and history'. |
| destination* | string | City, region, or country, e.g. 'Rome' or 'Phuket'. |
{
"type": "object",
"required": [
"destination"
],
"properties": {
"days": {
"type": "integer",
"default": 3,
"maximum": 7,
"minimum": 1
},
"interests": {
"type": "string",
"maxLength": 120,
"description": "Optional, e.g. 'food and history'."
},
"destination": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "City, region, or country, e.g. 'Rome' or 'Phuket'."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| bokun_id* | string |
{
"type": "object",
"required": [
"bokun_id"
],
"properties": {
"bokun_id": {
"type": "string",
"pattern": "^[0-9]+$"
}
},
"additionalProperties": false
}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. A quote does not hold seats or charge anything. Optional extras and promo codes are not included. When the tour's rates cannot price that mix, the result is unpriced.
| Argument | Type | Description |
|---|---|---|
| date* | string | |
| bokun_id* | string | |
| travelers | object | Simple ages; mapped to Bokun pricing categories. |
| start_time | string | HH:MM if start_time_id unknown. |
| start_time_id | integer |
{
"type": "object",
"required": [
"bokun_id",
"date"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"bokun_id": {
"type": "string",
"pattern": "^[0-9]+$"
},
"travelers": {
"type": "object",
"properties": {
"youth": {
"type": "integer",
"minimum": 0
},
"adults": {
"type": "integer",
"default": 1,
"minimum": 0
},
"infants": {
"type": "integer",
"minimum": 0
},
"seniors": {
"type": "integer",
"minimum": 0
},
"children": {
"type": "integer",
"minimum": 0
}
},
"description": "Simple ages; mapped to Bokun pricing categories.",
"additionalProperties": false
},
"start_time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}$",
"description": "HH:MM if start_time_id unknown."
},
"start_time_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| bokun_id* | string |
{
"type": "object",
"required": [
"bokun_id"
],
"properties": {
"bokun_id": {
"type": "string",
"pattern": "^[0-9]+$"
}
},
"additionalProperties": false
}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).
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| bokun_id* | string |
{
"type": "object",
"required": [
"bokun_id"
],
"properties": {
"limit": {
"type": "integer",
"default": 5,
"maximum": 10,
"minimum": 1
},
"bokun_id": {
"type": "string",
"pattern": "^[0-9]+$"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| query* | string | Natural-language search, e.g. 'family food tour in Rome under $100'. |
| theme | string | |
| activity | string | Activity facet, e.g. food, hiking, snorkeling. |
| price_max | number | |
| price_min | number | |
| destination | string | 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 |
| string |
| duration_hours_max | number |
| duration_hours_min | number |
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"default": 8,
"maximum": 20,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 500,
"minLength": 2,
"description": "Natural-language search, e.g. 'family food tour in Rome under $100'."
},
"theme": {
"type": "string",
"maxLength": 60
},
"activity": {
"type": "string",
"maxLength": 60,
"description": "Activity facet, e.g. food, hiking, snorkeling."
},
"price_max": {
"type": "number",
"minimum": 0
},
"price_min": {
"type": "number",
"minimum": 0
},
"destination": {
"type": "string",
"maxLength": 120,
"description": "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": {
"enum": [
"free",
"flexible",
"partial",
"non_refundable"
],
"type": "string"
},
"duration_hours_max": {
"type": "number",
"minimum": 0
},
"duration_hours_min": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
}