ExplorersMap
Update your ExplorersMap travel map from an AI assistant: countries, regions, places and trips.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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": {
"explorersmap": {
"url": "https://explorersmap.net/mcp"
}
}
}Remote endpoints
https://explorersmap.net/mcpstreamable-httpWhat it can do
Tool inventory
Tools (18)
π’whoami
Who the connected ExplorersMap account belongs to, and how much of today's fair-use quota is left.
Input Schema
{
"type": "object",
"properties": {}
}π’get_stats
A summary of this account's map: how many countries, territories, regions and places are marked, the Explorer score, and the share of the world explored. Answers "how many countries have I been to", and is the quickest way to see where the user stands before suggesting what to add next.
Input Schema
{
"type": "object",
"properties": {}
}π’get_badges
Achievements this account has earned, newest first.
Input Schema
{
"type": "object",
"properties": {}
}π’list_visited(type, limit, offset)
Everything marked as visited, newest first. Paged: check `total` against `returned` and follow `nextOffset` to read the rest. Filter by type to keep the response small.
Input Schema
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"country",
"region",
"place"
],
"description": "Which kind to list."
},
"limit": {
"type": "number",
"description": "Rows per page, default 100, max 500."
},
"offset": {
"type": "number",
"description": "Skip this many. Use nextOffset from the previous page."
}
},
"required": [
"type"
]
}π‘add_country(country, notes)
Mark a country as visited. Accepts an ISO-2 code or the country name. Idempotent.
Input Schema
{
"type": "object",
"properties": {
"country": {
"type": "string",
"description": "ISO-2 code or name, e.g. \"PT\" or \"Portugal\"."
},
"notes": {
"type": "string",
"description": "Optional private note."
}
},
"required": [
"country"
]
}π΄remove_country(country)
Unmark a country, undoing add_country. Accepts an ISO-2 code or the country name. Unmarking something that was never marked is not an error. This lowers the user's score, so confirm before removing anything they did not name.
Input Schema
{
"type": "object",
"properties": {
"country": {
"type": "string",
"description": "ISO-2 code or name."
}
},
"required": [
"country"
]
}π‘add_region(region, country, level, notes)
Mark a state, province or dΓ©partement as visited. Accepts a region id (FR-95) or a name plus country. Idempotent.
Input Schema
{
"type": "object",
"properties": {
"region": {
"type": "string",
"description": "Region id like \"FR-95\", or a name like \"Gironde\"."
},
"country": {
"type": "string",
"description": "Country, to disambiguate a name used in several places."
},
"level": {
"type": "string",
"enum": [
"passed",
"visited",
"slept",
"lived"
],
"description": "How well you know it. Default visited."
},
"notes": {
"type": "string",
"description": "Optional private note kept with this visit. Only the account owner sees it."
}
},
"required": [
"region"
]
}π΄remove_region(region, country)
Unmark a state, province or dΓ©partement, undoing add_region. Accepts a region id like "FR-95", or a region name plus its country. Unmarking something that was never marked is not an error. This lowers the user's score, so confirm before removing anything they did not name.
Input Schema
{
"type": "object",
"properties": {
"region": {
"type": "string",
"description": "Region id like \"FR-95\", or a region name like \"Gironde\"."
},
"country": {
"type": "string",
"description": "Country of that region, to disambiguate a name used in several countries."
}
},
"required": [
"region"
]
}π’search_places(query, type, country, limit)
Find places in the 90,000-entry database β cities, airports, monuments, museums, parks, heritage sites and more. Use this to get an id before add_place. Matching is on part of the name, so short beats formal: "Louvre" finds it, "Musee du Louvre" may not. Types overlap (the Louvre is filed under heritage, not museum), so a type filter narrows rather than decides β anything it excludes comes back under otherTypes.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Part of the name."
},
"type": {
"type": "string",
"description": "Prefer a type, e.g. \"monument\", \"museum\", \"airport\", \"city\", \"heritage\", \"park\". Other-type matches still come back, under otherTypes."
},
"country": {
"type": "string",
"description": "Narrow by country (ISO-2 or name)."
},
"limit": {
"type": "number",
"description": "Max results, default 10."
}
},
"required": [
"query"
]
}π‘add_place(place, notes)
Mark a specific place as visited β a monument, museum, airport, city, park and so on. Pass an id from search_places.
Input Schema
{
"type": "object",
"properties": {
"place": {
"type": "string",
"description": "A place id from search_places, e.g. \"monument:eiffel-tower-fr\"."
},
"notes": {
"type": "string",
"description": "Optional private note kept with this visit. Only the account owner sees it."
}
},
"required": [
"place"
]
}π΄remove_place(place)
Unmark a specific place such as a monument, museum, airport or city, undoing add_place. Accepts a place id from search_places or the exact place name. This lowers the user's score, so confirm before removing anything they did not name.
Input Schema
{
"type": "object",
"properties": {
"place": {
"type": "string",
"description": "A place id, or its exact name."
}
},
"required": [
"place"
]
}π’list_trips(limit, offset)
The user's trips, newest first. Paged: check `total` against `returned` and follow `nextOffset` to read the rest.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Rows per page, default 100, max 200."
},
"offset": {
"type": "number",
"description": "Skip this many. Use nextOffset from the previous page."
}
}
}π’get_rank(board)
This account's position on a global leaderboard, with the value it was ranked on and how many explorers are ranked in total. Boards: overall score, renown, countries, regions or places. Use it to answer "where do I rank" or to compare progress over time.
Input Schema
{
"type": "object",
"properties": {
"board": {
"type": "string",
"enum": [
"score",
"renown",
"countries",
"regions",
"places"
],
"description": "Which board. Default score."
}
}
}π‘add_places_to_trip(tripId, visitIds)
Attach places you have already marked to a trip. Pass visit ids from list_visited.
Input Schema
{
"type": "object",
"properties": {
"tripId": {
"type": "string",
"description": "From list_trips."
},
"visitIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Visit ids, e.g. \"place:museum:Q1954384\". Countries and regions are not attachable."
}
},
"required": [
"tripId",
"visitIds"
]
}π‘set_trip_visibility(tripId, visibility)
Publish a trip on the user's public profile, or take it private again. Private trips are visible only to the account owner. Always ask before making a trip public, since it then shows the trip's title, dates and places to anyone.
Input Schema
{
"type": "object",
"properties": {
"tripId": {
"type": "string",
"description": "From list_trips."
},
"visibility": {
"type": "string",
"enum": [
"private",
"public"
],
"description": "public shows the trip on the user's profile; private hides it again."
}
},
"required": [
"tripId",
"visibility"
]
}π΄delete_trip(tripId, confirm)
Permanently delete a trip. The places in it stay marked on the map β only the grouping is removed. Requires the exact trip id and confirm:true.
Input Schema
{
"type": "object",
"properties": {
"tripId": {
"type": "string",
"description": "The exact id from list_trips. Titles and labels are not accepted."
},
"confirm": {
"type": "boolean",
"description": "Must be true. Ask the user first β this cannot be undone from here."
}
},
"required": [
"tripId",
"confirm"
]
}π‘set_visit_dates(visitId, dates)
Set the travel dates on something already marked as visited. Does not change score.
Input Schema
{
"type": "object",
"properties": {
"visitId": {
"type": "string",
"description": "The id from list_visited, e.g. \"PT\" or \"reg:FR-95\"."
},
"dates": {
"type": "array",
"items": {
"type": "string"
},
"description": "ISO dates, YYYY-MM-DD."
}
},
"required": [
"visitId",
"dates"
]
}π‘create_trip(title, dateFrom, dateTo, visibility)
Create a trip with a title and date range. Private by default.
Input Schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "What the trip is called, e.g. \"Iberia 2026\"."
},
"dateFrom": {
"type": "string",
"description": "First day of the trip, YYYY-MM-DD."
},
"dateTo": {
"type": "string",
"description": "Last day of the trip, YYYY-MM-DD."
},
"visibility": {
"type": "string",
"enum": [
"private",
"public"
],
"description": "Default private."
}
},
"required": [
"title"
]
}Recommended Prompts
search_placessearch_placesget_statsget_statslist_visitedCommunity
Evidence