Plans a whole trip from a total budget, every price labelled live, estimate or official.
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.
When to go to a country, month by month: the best months overall, each covered place's most pleasant months, and the busy holiday weeks to plan around. From climate data (NASA POWER) and Trip720's research. Read only.
A country name or two-letter code, e.g. 'Japan' or 'JP'.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http trip720 https://trip720.travel/api/mcp
When to go to a country, month by month: the best months overall, each covered place's most pleasant months, and the busy holiday weeks to plan around. From climate data (NASA POWER) and Trip720's research. Read only.
| Argument | Type | Description |
|---|---|---|
| country* | string | A country name or two-letter code, e.g. 'Japan' or 'JP'. |
{
"type": "object",
"required": [
"country"
],
"properties": {
"country": {
"type": "string",
"description": "A country name or two-letter code, e.g. 'Japan' or 'JP'."
}
},
"additionalProperties": false
}Whether travellers need a visa or an electronic authorisation for a holiday, for each passport and each destination country: the rule's name, the minimum processing days and its source (official government pages where available). Read only.
| Argument | Type | Description |
|---|---|---|
| countries* | array | Two-letter destination countries, e.g. ['JP', 'VN']. |
| passports* | array | Two-letter passport countries, e.g. ['AU']. |
{
"type": "object",
"required": [
"passports",
"countries"
],
"properties": {
"countries": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 6,
"minItems": 1,
"description": "Two-letter destination countries, e.g. ['JP', 'VN']."
},
"passports": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 6,
"minItems": 1,
"description": "Two-letter passport countries, e.g. ['AU']."
}
},
"additionalProperties": false
}Trip720's checked facts for one destination, for travellers from Australia or the UK: what a day costs a person for food and getting around (street food, balanced, mostly restaurants), local transport and taxi prices, tourist tax, the most pleasant months, the visa for that home country, the sights not to miss with tips, and the total of a sample priced trip. Each figure comes from Trip720's research with its sources, in AUD or GBP. Read only; no booking or search is made. Places not covered say so and list the covered places in that country.
| Argument | Type | Description |
|---|---|---|
| place* | string | A town, island or country, e.g. 'Kyoto', 'Bali', 'Japan'. |
| homeCountry | string | Where the traveller lives: AU (Australia) or GB (the UK). AU when not given. |
{
"type": "object",
"required": [
"place"
],
"properties": {
"place": {
"type": "string",
"description": "A town, island or country, e.g. 'Kyoto', 'Bali', 'Japan'."
},
"homeCountry": {
"enum": [
"AU",
"GB"
],
"type": "string",
"description": "Where the traveller lives: AU (Australia) or GB (the UK). AU when not given."
}
},
"additionalProperties": false
}The day-by-day plan of one option of a trip already planned on Trip720 (the recommended option unless optionId is given): times, places and prices for each day. Read only; times marked typical are not from a timetable.
| Argument | Type | Description |
|---|---|---|
| tripId* | string | |
| optionId | string |
{
"type": "object",
"required": [
"tripId"
],
"properties": {
"tripId": {
"type": "string"
},
"optionId": {
"type": "string"
}
},
"additionalProperties": false
}Reads a trip already planned on Trip720, by its trip id: its status and, when ready, its options with every labelled price and booking link. Read only; trips are kept 30 days.
| Argument | Type | Description |
|---|---|---|
| tripId* | string |
{
"type": "object",
"required": [
"tripId"
],
"properties": {
"tripId": {
"type": "string"
}
},
"additionalProperties": false
}For a request to plan a trip with a budget. Plans a whole trip, home to home, against the traveller's total budget: flights, stays, transfers, activities, visas and daily costs. Returns up to six options, each with a Safe Trip Total (the whole trip with a contingency), the route, and every price labelled live (checked with the provider), estimate (Trip720's own, protection margin included) or official (a government fee), with a link to the option on trip720.travel where it is booked. Side effect: the trip is saved on Trip720 (kept 30 days) so it can be opened and booked; nothing is booked or paid. Limits: at most 6 travellers, 60 nights and 5 named places; flight fares are estimates in this quick build. A trip still being built comes back with status 'building' and its trip id.
| Argument | Type | Description |
|---|---|---|
| pace | string | PACKED: see as much as possible; RELAXED: take it slowly; SETTLED: one place. |
| budget* | object | |
| dining | string | |
| origin* | object | |
| interests | array | Finer interests in words, e.g. 'street art', 'hiking'. |
| tripFocus | array | Themes such as 'Culture & heritage', 'Food & wine'. |
| departDate* | string | Departure date, YYYY-MM-DD. |
Replaces one line of an option with one of the numbered choices from trip_alternatives, and re-prices the whole trip as the website does. Returns the updated option and its Safe Trip Total before and after. Side effect: the trip saved on Trip720 changes; the previous choice can be chosen again the same way. Nothing is booked or paid.
| Argument | Type | Description |
|---|---|---|
| choice* | integer | The number of the choice from trip_alternatives. |
| lineId* | string | |
| tripId* | string | |
| optionId* | string |
{
"type": "object",
"required": [
"tripId",
"optionId",
"lineId",
"choice"
],
"properties": {
"choice": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "The number of the choice from trip_alternatives."
},
"lineId": {
"type": "string"
},
"tripId": {
"type": "string"
},
"optionId": {
"type": "string"
}
},
"additionalProperties": false
}For one line of an option in a trip already planned on Trip720 (a stay, a flight, a transfer, an activity), the other choices the providers offer, numbered, each with its price and what it does to the whole trip's Safe Trip Total and budget. Line ids and option ids come from plan_trip or get_trip. Read only; searches the providers again.
| Argument | Type | Description |
|---|---|---|
| lineId* | string | The line's id, e.g. 'N-STAY-1'. |
| tripId* | string | |
| optionId* | string |
{
"type": "object",
"required": [
"tripId",
"optionId",
"lineId"
],
"properties": {
"lineId": {
"type": "string",
"description": "The line's id, e.g. 'N-STAY-1'."
},
"tripId": {
"type": "string"
},
"optionId": {
"type": "string"
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 4, 2026.
| returnDate* | string | Return date, YYYY-MM-DD, at most 60 nights later. |
| travellers* | object | At most 6 travellers in all. |
| destination* | any | 'surprise' to let Trip720 choose, or up to 5 places. |
{
"type": "object",
"required": [
"origin",
"departDate",
"returnDate",
"travellers",
"budget",
"destination"
],
"properties": {
"pace": {
"enum": [
"PACKED",
"BALANCED",
"RELAXED",
"SETTLED"
],
"type": "string",
"description": "PACKED: see as much as possible; RELAXED: take it slowly; SETTLED: one place."
},
"budget": {
"type": "object",
"required": [
"amount",
"currency"
],
"properties": {
"amount": {
"type": "number",
"description": "Total for everyone, home to home, in the currency's main unit (9000 = 9,000 dollars)."
},
"currency": {
"enum": [
"AUD",
"CAD",
"EUR",
"GBP",
"JPY",
"KHR",
"SGD",
"THB",
"USD"
],
"type": "string"
}
},
"additionalProperties": false
},
"dining": {
"enum": [
"STREET_FOOD_MARKET",
"BALANCED",
"MOSTLY_BISTROS",
"SELF_CATERING"
],
"type": "string"
},
"origin": {
"type": "object",
"required": [
"place",
"country"
],
"properties": {
"place": {
"type": "string",
"description": "Home town, e.g. 'Adelaide'."
},
"country": {
"type": "string",
"description": "Two-letter country code of the home town, e.g. 'AU'."
}
},
"additionalProperties": false
},
"interests": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 20,
"description": "Finer interests in words, e.g. 'street art', 'hiking'."
},
"tripFocus": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 5,
"description": "Themes such as 'Culture & heritage', 'Food & wine'."
},
"departDate": {
"type": "string",
"description": "Departure date, YYYY-MM-DD."
},
"returnDate": {
"type": "string",
"description": "Return date, YYYY-MM-DD, at most 60 nights later."
},
"travellers": {
"type": "object",
"required": [
"adults"
],
"properties": {
"adults": {
"type": "integer",
"maximum": 6,
"minimum": 1
},
"passport": {
"type": "string",
"description": "Two-letter passport country, for visa rules. The home country when not given."
},
"childrenAges": {
"type": "array",
"items": {
"type": "integer",
"maximum": 17,
"minimum": 0
},
"description": "Each child's age on departure."
}
},
"description": "At most 6 travellers in all.",
"additionalProperties": false
},
"destination": {
"anyOf": [
{
"enum": [
"surprise"
],
"type": "string"
},
{
"type": "object",
"required": [
"places"
],
"properties": {
"places": {
"type": "array",
"items": {
"type": "object",
"required": [
"country"
],
"properties": {
"towns": {
"type": "array",
"items": {
"type": "string"
},
"description": "Towns to include; empty lets Trip720 choose within the country."
},
"country": {
"type": "string",
"description": "Two-letter country code."
}
},
"additionalProperties": false
},
"maxItems": 5,
"minItems": 1
}
},
"additionalProperties": false
}
],
"description": "'surprise' to let Trip720 choose, or up to 5 places."
}
},
"additionalProperties": false
}