openvan-travel

Vanlife & RV data: roadbooks, fuel, tolls, visas, holidays, hazards, weather, currency. openvan.camp

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
97%
Naming quality
97%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~10,413Tokens (tool definitions)
~2.7 KBTypical response size
Significant attention impact (8.14% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "openvan-travel": {
      "command": "npx",
      "args": [
        "@openvancamp/mcp-server"
      ]
    }
  }
}

Runnable packages

npm@openvancamp/mcp-server0.9.6stdio

Remote endpoints

https://mcp.openvan.camp/mcpstreamable-http

What it can do

Tool inventory

Tools (29)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢plan_road_trip(locale, waypoints, passports, residence, kids, ...)

Plan a road trip by campervan or car between 2-10 places with the OpenVan.camp roadbook: distance, driving time and a day-by-day plan with overnights, budget (fuel, tolls, vignettes, ferries), and for every country on the way the entry rule for the given passports, residence permit and plates, how long you and the vehicle may stay (Schengen 90/180), road rules and city access (low-emission zones and stickers such as Umweltplakette and Crit'Air, Italian ZTL), holidays on the trip dates, safety and power plugs, plus the main warning and a checklist. Returns a link to the full roadbook the user can open, edit and share. Use this first when the user describes a trip from A to B.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "fr",
        "es",
        "pt",
        "tr"
      ],
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "waypoints": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 120
      },
      "minItems": 2,
      "maxItems": 10,
      "description": "2-10 places in travel order: cities or countries (a country means its capital), e.g. [\"Munich\", \"Venice\"]."
    },
    "passports": {
      "type": "string",
      "description": "Passports of the travellers, comma separated ISO alpha-2 codes, e.g. RU or DE,RU. Enables visa terms and the Schengen counter."
    },
    "residence": {
      "type": "string",
      "description": "Residence permit of the travellers, ISO alpha-2, in the same order as passports (one code applies to all), e.g. DE. A Schengen residence permit removes the visa and the 90/180 counter in Schengen."
    },
    "kids": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9,
      "description": "Number of children travelling (adds the documents children need abroad to the checklist)."
    },
    "pets": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9,
      "description": "Number of pets travelling (adds pet passport, microchip, rabies and EU titre-test steps to the checklist)."
    },
    "plates": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "Country of the vehicle's plates, ISO alpha-2 (entry bans and green card depend on it)."
    },
    "weight": {
      "type": "string",
      "enum": [
        "le35",
        "gt35"
      ],
      "description": "Vehicle weight: le35 (up to 3.5 t) or gt35."
    },
    "vehicle_class": {
      "type": "string",
      "enum": [
        "car",
        "van",
        "heavy"
      ],
      "default": "van",
      "description": "car; van = campervan/motorhome up to 3.5 t (default); heavy = over 3.5 t."
    },
    "fuel": {
      "type": "string",
      "description": "Fuel, e.g. diesel, gasoline, lpg."
    },
    "consumption": {
      "type": "number",
      "minimum": 1,
      "maximum": 60,
      "description": "Consumption, litres per 100 km."
    },
    "tank": {
      "type": "number",
      "minimum": 10,
      "maximum": 2000,
      "description": "Tank volume, litres."
    },
    "start_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Departure date, YYYY-MM-DD. Enables holidays, weather by day and visa deadlines."
    },
    "hours_per_day": {
      "type": "integer",
      "minimum": 3,
      "maximum": 12,
      "description": "Driving hours per day for the day-by-day plan. Default 6."
    },
    "round_trip": {
      "type": "boolean",
      "description": "Return to the start along the same route."
    },
    "avoid_tolls": {
      "type": "boolean",
      "description": "Route avoiding toll roads."
    },
    "currency": {
      "type": "string",
      "minLength": 3,
      "maxLength": 3,
      "description": "Currency of the budget, ISO 4217. Default EUR."
    }
  },
  "required": [
    "waypoints"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_country_travel_brief(locale, country_code, passport)

Everything to know before driving into one country by campervan or car, in one call: entry rule and how long the person and the vehicle may stay (with passport), travel weather now and this week, fuel prices, tolls and vignettes, public holidays in the next 30 days, safety advice, power plugs, customs limits and food prices. Use it when someone asks what to know about a country, the nuances or a guide for travelling there, or is preparing a trip to it; use the single-topic tools for one narrow question.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "fr",
        "es",
        "pt",
        "tr"
      ],
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "country_code": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 code of the country, e.g. ES."
    },
    "passport": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "Traveller's passport, ISO alpha-2 — adds the entry rule and how long the person and the vehicle may stay. Only if the user gave it."
    }
  },
  "required": [
    "country_code"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_fuel_prices(locale, country_code)

Current retail fuel prices for all API-supported countries. Covers gasoline, diesel, LPG, CNG, E85, kerosene and grade variants. Pass country_code to get one country in detail; omit it for a summary list. Use it for the price of petrol, diesel, LPG/autogas/propane or CNG in one country; without a country it gives an overview.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "fr",
        "es",
        "pt",
        "tr"
      ],
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "country_code": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 country code, e.g. DE. If omitted, returns all countries."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢compare_fuel_prices(locale, country_codes, fuel_type)

Compare current prices for one fuel type across 2-10 countries. Returns sorted table cheapest-first. Use it when someone asks which of two or more named countries has cheaper or more expensive fuel.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "fr",
        "es",
        "pt",
        "tr"
      ],
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "country_codes": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 2,
        "maxLength": 2
      },
      "minItems": 2,
      "maxItems": 10,
      "description": "Array of 2-10 ISO 3166-1 alpha-2 country codes to compare."
    },
    "fuel_type": {
      "type": "string",
      "enum": [
        "gasoline_regular",
        "gasoline",
        "gasoline_premium",
        "gasoline_super",
        "diesel_regular",
        "diesel",
        "diesel_premium",
        "lpg",
        "cng",
        "e85",
        "kerosene",
        "premium"
      ],
      "default": "diesel",
      "description": "Fuel type to compare. e.g. gasoline, diesel, lpg, cng, e85."
    }
  },
  "required": [
    "country_codes"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢find_cheapest_fuel(locale, region, fuel_type, limit, order)

Rank countries by the price of a fuel type in a region (or worldwide): the cheapest first, or with order=most_expensive the most expensive first. Useful for route planning. Use it for «where is fuel cheapest» and, with order=most_expensive, «where is fuel the most expensive», in a region or worldwide.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "fr",
        "es",
        "pt",
        "tr"
      ],
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "region": {
      "type": "string",
      "enum": [
        "europe",
        "asia",
        "africa",
        "north_america",
        "south_america",
        "oceania",
        "world"
      ],
      "default": "world",
      "description": "Region to search. Default: world (all countries)."
    },
    "fuel_type": {
      "type": "string",
      "enum": [
        "gasoline_regular",
        "gasoline",
        "gasoline_premium",
        "gasoline_super",
        "diesel_regular",
        "diesel",
        "diesel_premium",
        "lpg",
        "cng",
        "e85",
        "kerosene",
        "premium"
      ],
      "default": "diesel",
      "description": "Fuel type. e.g. gasoline, diesel, lpg, cng, e85."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "default": 5,
      "description": "How many countries to return."
    },
    "order": {
      "type": "string",
      "enum": [
        "cheapest",
        "most_expensive"
      ],
      "default": "cheapest",
      "description": "cheapest first (default) or most_expensive first — «where is fuel the most expensive»."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_country_travel_weather(locale, country_code)

How suitable the weather in a whole country is for travelling and sleeping in a campervan, as a 0-100 score: overall travel score, sleep score, solar panel yield, driving conditions, awning safety, condensation risk, a 7-day forecast, and the 3 best and 3 toughest cities for the coming week. Country-level: for a named city use get_city_travel_weather. Use it when someone asks what the weather is like in a country, where in a country it is warmer, colder or sunnier, which of its cities are best or worst this week, or whether it is too cold or rainy to sleep in a van there now.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "fr",
        "es",
        "pt",
        "tr"
      ],
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "country_code": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 country code, e.g. DE."
    }
  },
  "required": [
    "country_code"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_city_travel_weather(locale, city, country_code)

How suitable the weather in one city or town is for travelling and sleeping in a campervan, as a 0-100 score for today and for the coming 7 days, with sleep, driving and solar scores and daily scores. Use this, not get_country_travel_weather, when the user names a place (Barcelona, Málaga, Alicante). Use it for the weather in one named city, town or place today, tomorrow or this week.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "fr",
        "es",
        "pt",
        "tr"
      ],
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "city": {
      "type": "string",
      "minLength": 2,
      "description": "City or town name in any language, e.g. Barcelona, Málaga, Alicante."
    },
    "country_code": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 country code to disambiguate (Barcelona ES vs Barcelona VE)."
    }
  },
  "required": [
    "city"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_best_weather_countries(locale, limit, region, sort)

List the N countries where today's weather is best for travelling by campervan, highest 0-100 travel score first. Use it when no country is named and someone asks where to go for warm or good weather right now — worldwide or in a region (region=europe…); with sort=warmest only when they literally ask where it is warmest or hottest (it ranks by temperature alone, so deserts come first; «warm and pleasant», «warm and dry» → the default score). These are today's conditions and the coming days, not a forecast for a later month: for «in November» say so.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "fr",
        "es",
        "pt",
        "tr"
      ],
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "default": 10,
      "description": "How many top-scoring countries to return."
    },
    "region": {
      "type": "string",
      "enum": [
        "world",
        "europe",
        "asia",
        "africa",
        "north_america",
        "south_america",
        "oceania"
      ],
      "default": "world",
      "description": "Only countries of this region — «best weather in Europe». Default: world."
    },
    "sort": {
      "type": "string",
      "enum": [
        "score",
        "warmest"
      ],
      "default": "score",
      "description": "score = best overall travel weather (default, also for «warm and pleasant»); warmest = highest daytime temperature today — only for a literal «where is it warmest/hottest»."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_events(locale, status, type, country, search, ...)

List vanlife events: expos (Caravan Salon), festivals, meetups, forums, road trips. Filter by status, type, country, or free-text search.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "fr",
        "es",
        "pt",
        "tr"
      ],
      "default": "en",
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "status": {
      "type": "string",
      "enum": [
        "upcoming",
        "ongoing",
        "past",
        "all"
      ],
      "default": "upcoming",
      "description": "Event time status."
    },
    "type": {
      "type": "string",
      "enum": [
        "expo",
        "festival",
        "forum",
        "meetup",
        "roadtrip"
      ],
      "description": "Event type filter."
    },
    "country": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 country code."
    },
    "search": {
      "type": "string",
      "description": "Free-text search in event name."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 15
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_event(locale, slug)

Get full details for a single vanlife event by its slug.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "fr",
        "es",
        "pt",
        "tr"
      ],
      "default": "en",
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "slug": {
      "type": "string",
      "description": "Event slug, e.g. caravan-salon-duesseldorf-2026."
    }
  },
  "required": [
    "slug"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢search_stories(locale, search, category, country, limit)

Search recent news about campervans, motorhomes and road travel collected by OpenVan.camp from public news sources. Returns for each story only a headline, a short summary of up to 300 characters, date, category, countries and a link to the story page on openvan.camp, which credits the original publishers. Never returns full article text. Filter by words in the headline, category, country and language.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "fr",
        "es",
        "pt",
        "tr"
      ],
      "default": "en",
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "search": {
      "type": "string",
      "maxLength": 100,
      "description": "Words to look for in story headlines."
    },
    "category": {
      "type": "string",
      "enum": [
        "law",
        "ban",
        "opening",
        "closing",
        "incident",
        "industry",
        "lifestyle",
        "builds",
        "festival",
        "expo",
        "review",
        "other"
      ],
      "description": "Story category."
    },
    "country": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 country code."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "default": 10
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢compare_food_prices(locale, from, to)

Compare food price index between two countries (world average = 100). Higher number = more expensive food. Use it when someone asks where food is cheaper between two countries.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "fr",
        "es",
        "pt",
        "tr"
      ],
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "from": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "Home country ISO alpha-2 code."
    },
    "to": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "Destination country ISO alpha-2 code."
    }
  },
  "required": [
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_country_food_prices(locale, country_code)

Food price index for one country (world average = 100): how expensive groceries are there, with its yearly history. Use it when someone asks how expensive food, groceries or living is in a country.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "fr",
        "es",
        "pt",
        "tr"
      ],
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "country_code": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 country code."
    }
  },
  "required": [
    "country_code"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢rank_food_prices(locale, region, order, limit)

Rank countries by food price index (world average = 100) in a region or worldwide: the cheapest first, or with order=most_expensive the most expensive first. Use it when someone asks where food or groceries are cheapest or most expensive.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "fr",
        "es",
        "pt",
        "tr"
      ],
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "region": {
      "type": "string",
      "enum": [
        "world",
        "europe",
        "asia",
        "africa",
        "north_america",
        "south_america",
        "oceania"
      ],
      "default": "world",
      "description": "Only countries of this region. Default: world."
    },
    "order": {
      "type": "string",
      "enum": [
        "cheapest",
        "most_expensive"
      ],
      "default": "cheapest",
      "description": "cheapest first (default) or most_expensive first."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "default": 10,
      "description": "How many countries to return."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_currency_rate(locale, from, to, amount)

Convert an amount between two currencies using live rates (150+ currencies, daily updates). Use it for exchange rates and converting an amount between currencies.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "fr",
        "es",
        "pt",
        "tr"
      ],
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "from": {
      "type": "string",
      "minLength": 3,
      "maxLength": 3,
      "description": "Source currency ISO 4217 code, e.g. EUR."
    },
    "to": {
      "type": "string",
      "minLength": 3,
      "maxLength": 3,
      "description": "Target currency ISO 4217 code, e.g. USD."
    },
    "amount": {
      "type": "number",
      "exclusiveMinimum": 0,
      "default": 1,
      "description": "Amount to convert. Default 1."
    }
  },
  "required": [
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢check_visa_rules(locale, passport, destination, weight, plate)

Entry rules for one passport and destination: entry mode, allowed length of stay, how the days are counted (per entry or in a rolling window), whether a visa run resets the counter, and temporary vehicle import. Answers carry a confidence level and source — pass those on instead of stating a rule as certain.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "fr",
        "es",
        "pt",
        "tr"
      ],
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "passport": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 code of the passport, e.g. RU."
    },
    "destination": {
      "type": "string",
      "description": "Destination: ISO alpha-2 code, slug or zone code, e.g. TR."
    },
    "weight": {
      "type": "string",
      "enum": [
        "le35",
        "gt35"
      ],
      "description": "Vehicle weight class for the vehicle rule: le35 (<=3.5 t) or gt35."
    },
    "plate": {
      "type": "string",
      "enum": [
        "eu",
        "non_eu",
        "eaeu",
        "third"
      ],
      "description": "Plate origin for the green card rule."
    }
  },
  "required": [
    "passport",
    "destination"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_route_visa_rules(locale, countries, passports, weight)

Visa rules for every country of a route in one call, for up to 10 passports at once, plus the tightest leg of the route.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "fr",
        "es",
        "pt",
        "tr"
      ],
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "countries": {
      "type": "string",
      "description": "Countries in travel order, comma separated ISO alpha-2 codes or slugs, up to 12, e.g. RU,GE,TR."
    },
    "passports": {
      "type": "string",
      "description": "Passports to answer for, comma separated, up to 10, e.g. RU,BY."
    },
    "weight": {
      "type": "string",
      "enum": [
        "le35",
        "gt35"
      ],
      "description": "Vehicle weight class for the vehicle rules."
    }
  },
  "required": [
    "countries"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_vehicle_import_rules(locale, country)

Temporary admission rules for a foreign-plated vehicle in one country: allowed days, per entry or per window, carnet requirement, green card. A country without a rule we can stand behind returns nothing rather than a guess.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "fr",
        "es",
        "pt",
        "tr"
      ],
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "country": {
      "type": "string",
      "description": "Country: ISO alpha-2 code, slug or zone code, e.g. georgia or GE."
    }
  },
  "required": [
    "country"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_toll_rates(locale, country_code)

Toll reference for one country: payment system, per-km rates by vehicle class (car, campervan up to 3.5 t, over 3.5 t), vignette prices for every duration, concession sections and toll bridges/tunnels, each with verification date and source. Use it for toll roads, motorway fees, whether a vignette is needed and what it costs in one country.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "country_code": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 country code, e.g. FR."
    }
  },
  "required": [
    "country_code"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢estimate_route_tolls(locale, waypoints, vehicle_class)

Estimate toll cost for a road trip from 2-10 place names: per-km tolls, vignettes, bridges and tunnels, as a EUR range with a per-country breakdown. Flags partial results when a country on the route has no data. Use it only for the toll cost between named places when no other trip details are asked; for a whole trip use plan_road_trip.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "waypoints": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 120
      },
      "minItems": 2,
      "maxItems": 10,
      "description": "2-10 place names in travel order: cities or countries (a country means its capital), e.g. [\"Rome\", \"Paris\"]."
    },
    "vehicle_class": {
      "type": "string",
      "enum": [
        "car",
        "van",
        "heavy"
      ],
      "default": "van",
      "description": "car; van = campervan/motorhome up to 3.5 t (default); heavy = over 3.5 t."
    }
  },
  "required": [
    "waypoints"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_holidays(locale, country_code, from, to, kind)

Public holidays, school holidays (often regional, with ISO 3166-2 region codes) and official peak traffic days (France, Bison Futé) in one country for a period of up to 400 days. A country without data returns an error saying so — never present that as "no holidays". Use it for public holidays, days off, school holidays and peak traffic days.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "country_code": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 country code, e.g. FR."
    },
    "from": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Start of the period, YYYY-MM-DD. Defaults to today."
    },
    "to": {
      "$ref": "#/properties/from",
      "description": "End of the period, YYYY-MM-DD. Defaults to from + 90 days; at most 400 days after from."
    },
    "kind": {
      "type": "string",
      "enum": [
        "public",
        "school",
        "traffic"
      ],
      "description": "Only one kind: public holidays, school holidays (often regional), or traffic = official peak traffic days — France only (Bison Futé). For «when are the roads busy» elsewhere omit it: public and school holidays are the busy days. Omit for all."
    }
  },
  "required": [
    "country_code"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_travel_hazards(locale, country_code)

Situation now in one country: UK FCDO travel advice level and current GDACS natural disasters (flood, earthquake, tropical cyclone, wildfire, drought, volcano) with alert level green/orange/red. Not a forecast. Use it when someone asks whether it is safe to go to a country now, about travel warnings or natural disasters.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "country_code": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 country code, e.g. TR."
    }
  },
  "required": [
    "country_code"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_active_fires(locale, bbox)

NASA FIRMS VIIRS satellite fire detections of the last 48 hours in a bounding box up to 10°×10°, strongest first, with fire radiative power in MW. Use it for wildfires right now near a place or in a country: bbox is west,south,east,north in degrees — longitude first (Portugal ≈ -9.6,36.9,-6.1,42.2).

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "fr",
        "es",
        "pt",
        "tr"
      ],
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "bbox": {
      "type": "string",
      "pattern": "^-?\\d+(\\.\\d+)?(,-?\\d+(\\.\\d+)?){3}$",
      "description": "Bounding box west,south,east,north in degrees, at most 10° on each side, e.g. 29,36,33,38 (around Antalya)."
    }
  },
  "required": [
    "bbox"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_power_plugs(locale, country_code)

Plug types (IEC A–N), mains voltage and frequency for one country, with the source of the value, plus the campsite hook-up connector in Europe (CEE17). Use it for socket and plug types, adapters, mains voltage and campsite hook-ups.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "country_code": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 country code, e.g. GB."
    }
  },
  "required": [
    "country_code"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_customs_rules(locale, country_code, from)

Customs rules when driving into a country, optionally from a given country: food bans, cash declaration, alcohol and tobacco limits, goods value, fuel in a canister. Each rule carries a verbatim official quote and source link. A country without data returns an error saying so — never present that as "nothing is restricted". Use it for what you may bring in by car: alcohol, tobacco, cash, meat and other food, goods limits.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "country_code": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 code of the country you enter, e.g. PL."
    },
    "from": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 code of the country you come from, e.g. UA. Matters: no customs inside the EU, and some bans have exemptions by origin."
    }
  },
  "required": [
    "country_code"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_license_plate_countries(locale)

Countries whose license plates are available: international code, number of regions and an example plate.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "es",
        "fr",
        "pt",
        "tr"
      ],
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_license_plate_country(locale, country)

How a country's license plate looks and reads (standard, size, format), its plate types (standard, diplomatic, police, taxi…) with example numbers, and every region code on its plates, grouped by region — e.g. which region is 77 or 199 on Russian plates. Use it for what a plate region code means (77, 777, AA…) and a country's plate format.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "es",
        "fr",
        "pt",
        "tr"
      ],
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "country": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 country code, e.g. RU."
    }
  },
  "required": [
    "country"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢check_license_plate(locale, country, number, region, type)

Validate a plate number against the country's format (look-alike letters are normalized) and say which region its code belongs to. Pass type to check against a specific plate type's format. Never identifies the owner or the vehicle's location. Use it to check a specific plate number.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "es",
        "fr",
        "pt",
        "tr"
      ],
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "country": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 country code, e.g. RU."
    },
    "number": {
      "type": "string",
      "description": "Plate number without the region, e.g. A123BC. Look-alike Latin letters are normalized."
    },
    "region": {
      "type": "string",
      "description": "Region code if the country shows one, e.g. 77."
    },
    "type": {
      "type": "string",
      "description": "Plate type key from get_license_plate_country, e.g. on Russian plates diplomatic (red), police (blue), military (black), taxi_bus (yellow). Default: the country's standard plate."
    }
  },
  "required": [
    "country",
    "number"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_license_plate_image(locale, country, number, region)

Draw an illustrative image of a country's standard civilian license plate (PNG shown inline, plus SVG/PNG links). The number must match the country's standard format. Official, police, military and diplomatic plates are not drawn. Use it to draw or show a picture of a plate.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "fr",
        "es",
        "pt",
        "tr"
      ],
      "description": "Language the user writes in (en, ru, de, fr, es, pt, tr). Set it on every call: the answer and the interactive card are shown in this language and units; without it the card falls back to the app's interface language."
    },
    "country": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 country code, e.g. RU."
    },
    "number": {
      "type": "string",
      "description": "Plate number without the region, in the country's standard format."
    },
    "region": {
      "type": "string",
      "description": "Region code if the country shows one."
    }
  },
  "required": [
    "country",
    "number"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded29 tools