No-auth: save a planned trip as a claimable itinerary, visa rules per passport, Schengen 90/180
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.
Use this when someone wants to know how many days they have used or have left in the Schengen Area under the 90/180 rule, or whether a planned trip would overstay. Pass every stay in any Schengen country with entry and exit dates. Do not use it for countries outside the Schengen Area, or for holders of an EU/EEA/Swiss passport, to whom the rule does not apply.
Each stay in the Schengen Area. Past and planned stays can be mixed.
Date to assess on, YYYY-MM-DD. Defaults to today.
Use this when someone wants to know how many days they have used or have left in the Schengen Area under the 90/180 rule, or whether a planned trip would overstay. Pass every stay in any Schengen country with entry and exit dates. Do not use it for countries outside the Schengen Area, or for holders of an EU/EEA/Swiss passport, to whom the rule does not apply.
| Argument | Type | Description |
|---|---|---|
| as_of | string | Date to assess on, YYYY-MM-DD. Defaults to today. |
| stays* | array | Each stay in the Schengen Area. Past and planned stays can be mixed. |
{
"type": "object",
"required": [
"stays"
],
"properties": {
"as_of": {
"type": "string",
"description": "Date to assess on, YYYY-MM-DD. Defaults to today."
},
"stays": {
"type": "array",
"items": {
"type": "object",
"required": [
"entry",
"exit"
],
"properties": {
"exit": {
"type": "string",
"description": "Departure date, YYYY-MM-DD. Counts as a full day."
},
"entry": {
"type": "string",
"description": "Arrival date, YYYY-MM-DD. Counts as a full day."
}
},
"additionalProperties": false
},
"description": "Each stay in the Schengen Area. Past and planned stays can be mixed."
}
},
"additionalProperties": false
}Use this when someone asks whether they need a visa to visit a country, or how long they can stay, for a specific passport. Returns the entry type (visa free, visa on arrival, e-visa, visa required) and the permitted stay in days when known. Do not use it for work, study or residence permits; it covers short tourist stays only.
| Argument | Type | Description |
|---|---|---|
| passport* | string | The passport's issuing country as an ISO 3166-1 alpha-2 code, e.g. US, GB, TH |
| destination* | string | The country being visited as an ISO 3166-1 alpha-2 code, e.g. US, GB, TH |
{
"type": "object",
"required": [
"passport",
"destination"
],
"properties": {
"passport": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "The passport's issuing country as an ISO 3166-1 alpha-2 code, e.g. US, GB, TH"
},
"destination": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "The country being visited as an ISO 3166-1 alpha-2 code, e.g. US, GB, TH"
}
},
"additionalProperties": false
}Use this after you have planned a trip with someone, to hand them the itinerary as a real, editable plan instead of a wall of text. No account or key needed. Pass the stops in order with arrival and departure dates, and optionally things to do in each. Returns plan_url: the traveller opens it to see the route and save it to their own NomadPoint on iPhone, Mac or web (free). Give the traveller that link. Do not use it for bookings: it records a plan, it does not reserve anything.
| Argument | Type | Description |
|---|---|---|
| name* | string | What the traveller would call it, e.g. 'Japan in April' |
| stops* | array | Each city on the route, in order. |
{
"type": "object",
"required": [
"name",
"stops"
],
"properties": {
"name": {
"type": "string",
"description": "What the traveller would call it, e.g. 'Japan in April'"
},
"stops": {
"type": "array",
"items": {
"type": "object",
"required": [
"city",
"country_code",
"arrive",
"depart"
],
"properties": {
"city": {
"type": "string",
"description": "The city itself, e.g. 'Kyoto', not a neighbourhood or hotel"
},
"notes": {
"type": "string"
},
"arrive": {
"type": "string",
"description": "Arrival date, YYYY-MM-DD"
},
"depart": {
"type": "string",
"description": "Departure date, YYYY-MM-DD"
},
"activities": {
"type": "array",
"items": {
"type": "object",
"required": [
"title",
"start"
],
"properties": {
"notes": {
"type": "string"
},
"start": {
"type": "string",
"description": "Local time at the place, YYYY-MM-DDTHH:MM"
},
"title": {
"type": "string",
"description": "e.g. 'Fushimi Inari at sunrise'"
},
"place_name": {
"type": "string"
}
},
"additionalProperties": false
}
},
"country_code": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "ISO 3166-1 alpha-2, e.g. JP"
}
},
"additionalProperties": false
},
"maxItems": 30,
"description": "Each city on the route, in order."
}
},
"additionalProperties": false
}