Skip to main content
Glama
TomTom MCP Server

TomTom MCP Server

Official

TomTom Nearby Search

tomtom-nearby
Read-onlyIdempotent

Find places of a kind near exact coordinates by category, brand, fuel type, or EV connector, with results sorted by distance for "what's around here?" queries.

Instructions

Find places of a kind close to a specific point. Best for 'what's around here?' queries when you have exact coordinates (lat/lon). Needs poiCategories, or a brand, fuel, connector or charging-power filter. Returns results sorted by distance. Use tomtom-area-search instead when the search area is a polygon or bounding box rather than a simple radius.

Input Schema

NameRequiredDescriptionDefault
viewNoGeopolitical view for disputed territories.
limitNoMaximum number of results to return (1-100). Default: 20.
cursorNoThe next page of results: the nextCursor of the previous response, with the same other parameters.
radiusNoSearch radius in meters. Default: 1000. Recommended: 500 (walking), 1000 (local), 5000 (driving), 20000 (wide area).
fuelSetNoFuel types, comma-separated: Petrol, LPG, Diesel, Biodiesel, DieselForCommercialVehicles, E85, LNG, CNG, Hydrogen, AdBlue.
show_uiNoRequest the interactive map widget. Only hosts that support MCP Apps render it. It adds no coordinates to the text response. Default: false
brandSetNoFilter by brand names, comma-separated. Examples: 'Starbucks', 'Marriott,Hilton'.
languageNoPreferred language for results using IETF language tags. Examples: 'en-US', 'fr-FR', 'de-DE', 'es-ES'
mapcodesNoInclude mapcode information in the response. Mapcodes represent specific locations within a few meters and are designed to be short, easy to recognize and communicate. Options: Local, International, Alternative. Examples: ['Local'] (local mapcode only), ['Local', 'Alternative'] (multiple types).
positionYesCenter position as [longitude, latitude] for nearby search (GeoJSON convention). Example: [4.89707, 52.377956] for Amsterdam. Use precise coordinates from geocoding.
timeZoneNoUsed to indicate the mode in which the timeZone object should be returned. Values: iana Mode shows the IANA ID which allows the user to determine the current time zone for the POI. Usage examples: timeZone=iana
countriesNoLimit results to specific countries using ISO alpha-2 codes. Example: ['US'], ['FR', 'GB'], ['NL', 'DE']
maxPowerKWNoMaximum charging power in kW for EV stations
minPowerKWNoMinimum charging power in kW for EV stations
relatedPoisNoInclude related points of interest: 'off', 'child', 'parent' or 'all'. Default: 'off'.
connectorSetNoEV connector types, comma-separated. Examples: 'IEC62196Type2CCS', 'IEC62196Type2CableAttached,Chademo', 'Tesla'.
openingHoursNoList of opening hours for a POI (Points of Interest).Value: `nextSevenDays` Mode shows the opening hours for next week, starting with the current day in the local time of the POI. Usage example: openingHours=nextSevenDays
poiCategoriesNoPOI categories to find, as UPPER_SNAKE_CASE codes (e.g. 'RESTAURANT', 'PARKING_GARAGE'), NOT numeric IDs. Required unless brandSet, connectorSet, fuelSet, minPowerKW or maxPowerKW is given. IMPORTANT: Never guess codes — always call tomtom-poi-categories first with the user's intent as keywords to discover valid codes.
response_detailNoResponse detail level. 'compact' (default): essential fields and point coordinates, saves tokens. 'full': the raw API response with every field, lossless and much larger.compact
extendedPostalCodesForNoComma-separated index types whose results carry extended postal codes: Geo, PAD, Addr, Str, XStr, and POI for POI results. Default: every type except Geo, so listing types removes the codes from the others. Examples: 'PAD,Addr', 'Geo'.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed32 schema fields changedv1.6.13
    • removedInput schema / properties / addressRanges
      Removed value: -{
      -  "description": "Include address ranges in the response",
      -  "type": "boolean"
      -}
    • changedInput schema / properties / brandSet / description
      Previous value: -"Filter by brand names. Examples: 'Starbucks,Peet\\'s', 'Marriott,Hilton'. Use quotes for brands with commas."New value: +"Filter by brand names, comma-separated. Examples: 'Starbucks', 'Marriott,Hilton'."
    • removedInput schema / properties / categorySet
      Removed value: -{
      -  "description": "Filter POI per category using category IDs.\n      Examples: \n      '7315' (Restaurant), '9361' (Shop), '7311' (Gas Station), '7321' (Hospital),\n      '7397' (ATM), '7327' (Department Store), '7314' (Hotel/Motel), '9361009' (Convenience Store),\n      '7324' (Post Office), '7383' (Airport), '7380' (Railroad Station), '9942' (Public Transportation Stop),\n      '7313' (Parking Garage), '7369' (Open Parking Area), '7342' (Movie Theater),\n      '9362' (Park & Recreation Area), '7310' (Repair Shop), '9376' (Café/Pub), '9379' (Nightlife),\n      '7318' (Theater), '7317' (Museum), '7312' (Rent-a-Car Facility), '7372' (School),\n      '7322' (Police Station), '7326' (Pharmacy), '9352' (Company), '7376' (Tourist Attraction),\n      '7332005' (Supermarkets & Hypermarkets), '7315015' (Fast Food)",
      -  "type": "string"
      -}
    • removedInput schema / properties / chargingAvailability
      Removed value: -{
      -  "description": "Include charging availability information for EV stations",
      -  "type": "boolean"
      -}
    • changedInput schema / properties / connectorSet / description
      Previous value: -"EV connector types: 'IEC62196Type2CableAttached', 'Chademo', 'TeslaConnector'"New value: +"EV connector types, comma-separated. Examples: 'IEC62196Type2CCS', 'IEC62196Type2CableAttached,Chademo', 'Tesla'."
    • addedInput schema / properties / countries
      Added value: +{
      +  "description": "Limit results to specific countries using ISO alpha-2 codes. Example: ['US'], ['FR', 'GB'], ['NL', 'DE']",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • removedInput schema / properties / countrySet
      Removed value: -{
      -  "description": "Limit results to specific countries using ISO codes. Examples: 'US', 'FR,GB', 'CA,US'",
      -  "type": "string"
      -}
    • addedInput schema / properties / cursor
      Added value: +{
      +  "description": "The next page of results: the nextCursor of the previous response, with the same other parameters.",
      +  "type": "string"
      +}
    • removedInput schema / properties / entityTypeSet
      Removed value: -{
      -  "description": "Filter results by geographic entity types. Valid values: PostalCodeArea,\n      CountryTertiarySubdivision, CountrySecondarySubdivision, MunicipalitySubdivision,\n      MunicipalitySecondarySubdivision, Country, CountrySubdivision, Neighbourhood, Municipality.\n      Note: This parameter is for geographic entities only, not POIs.\n      For POI filtering, use categorySet instead",
      -  "type": "string"
      -}
    • removedInput schema / properties / ext
      Removed value: -{
      -  "description": "Extended parameters for the search",
      -  "type": "string"
      -}
    • changedInput schema / properties / extendedPostalCodesFor / description
      Previous value: -"Include extended postal codes for specific index types. Examples: 'PAD', 'PAD,Addr', 'POI'"New value: +"Comma-separated index types whose results carry extended postal codes: Geo, PAD, Addr, Str, XStr, and POI for POI results. Default: every type except Geo, so listing types removes the codes from the others. Examples: 'PAD,Addr', 'Geo'."
    • removedInput schema / properties / fuelAvailability
      Removed value: -{
      -  "description": "Include fuel availability information for gas stations",
      -  "type": "boolean"
      -}
    • changedInput schema / properties / fuelSet / description
      Previous value: -"Fuel types: 'Petrol', 'Diesel', 'LPG', 'Hydrogen', 'E85'"New value: +"Fuel types, comma-separated: Petrol, LPG, Diesel, Biodiesel, DieselForCommercialVehicles, E85, LNG, CNG, Hydrogen, AdBlue."
    • removedInput schema / properties / geometries
      Removed value: -{
      -  "description": "Include geometries information in the response",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / lat
      Removed value: -{
      -  "description": "Center latitude for nearby search. Use precise coordinates from geocoding.",
      -  "type": "number"
      -}
    • changedInput schema / properties / limit / description
      Previous value: -"Maximum number of results to return (1-100). Default: 5"New value: +"Maximum number of results to return (1-100). Default: 20."
    • removedInput schema / properties / lon
      Removed value: -{
      -  "description": "Center longitude for nearby search. Use precise coordinates from geocoding.",
      -  "type": "number"
      -}
    • changedInput schema / properties / mapcodes / description
      Previous value: -"Include mapcode information in the response. Mapcodes represent specific locations within a few meters and are designed to be short, easy to recognize and communicate. Options: Local, International, Alternative. Examples: 'Local' (local mapcode only), 'Local,Alternative' (multiple types). Accepts array of string(s)."New value: +"Include mapcode information in the response. Mapcodes represent specific locations within a few meters and are designed to be short, easy to recognize and communicate. Options: Local, International, Alternative. Examples: ['Local'] (local mapcode only), ['Local', 'Alternative'] (multiple types)."
    • removedInput schema / properties / maxFuzzyLevel
      Removed value: -{
      -  "description": "Maximum fuzzy matching level (1-4)",
      -  "type": "number"
      -}
    • removedInput schema / properties / minFuzzyLevel
      Removed value: -{
      -  "description": "Minimum fuzzy matching level (1-4)",
      -  "type": "number"
      -}
    • removedInput schema / properties / ofs
      Removed value: -{
      -  "description": "Offset for pagination of results",
      -  "type": "number"
      -}
    • removedInput schema / properties / parkingAvailability
      Removed value: -{
      -  "description": "Include parking availability information",
      -  "type": "boolean"
      -}
    • addedInput schema / properties / poiCategories
      Added value: +{
      +  "description": "POI categories to find, as UPPER_SNAKE_CASE codes (e.g. 'RESTAURANT', 'PARKING_GARAGE'), NOT numeric IDs. Required unless brandSet, connectorSet, fuelSet, minPowerKW or maxPowerKW is given. IMPORTANT: Never guess codes — always call tomtom-poi-categories first with the user's intent as keywords to discover valid codes.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 10,
      +  "type": "array"
      +}
    • addedInput schema / properties / position
      Added value: +{
      +  "description": "Center position as [longitude, latitude] for nearby search (GeoJSON convention). Example: [4.89707, 52.377956] for Amsterdam. Use precise coordinates from geocoding.",
      +  "items": {
      +    "type": "number"
      +  },
      +  "maxItems": 2,
      +  "minItems": 2,
      +  "type": "array"
      +}
    • changedInput schema / properties / relatedPois / description
      Previous value: -"Include related points of interest"New value: +"Include related points of interest: 'off', 'child', 'parent' or 'all'. Default: 'off'."
    • changedInput schema / properties / response_detail / description
      Previous value: -"Response detail level. 'compact' (default): trimmed response with essential fields only, saves tokens. 'full': complete API response with all fields including coordinates, classifications, etc."New value: +"Response detail level. 'compact' (default): essential fields and point coordinates, saves tokens. 'full': the raw API response with every field, lossless and much larger."
    • removedInput schema / properties / roadUse
      Removed value: -{
      -  "description": "Include road usage information",
      -  "type": "boolean"
      -}
    • addedInput schema / properties / show_ui
      Added value: +{
      +  "default": false,
      +  "description": "Request the interactive map widget. Only hosts that support MCP Apps render it. It adds no coordinates to the text response. Default: false",
      +  "type": "boolean"
      +}
    • removedInput schema / properties / vehicleTypeSet
      Removed value: -{
      -  "description": "A comma-separated list of vehicle types that could be used to restrict the result to the Points Of Interest of specific vehicles. If vehicleTypeSet is specified, the query can remain empty. Only POIs with a proper vehicle type will be returned. Value: A comma-separated list of vehicle type identifiers (in any order). When multiple vehicles types are provided, only POIs that belong to (at least) one of the vehicle types from the provided list will be returned. Available vehicle types: Car , Truck",
      -  "type": "string"
      -}
    • changedInput schema / properties / view / description
      Previous value: -"Geopolitical view for disputed territories. Options: 'Unified', 'AR', 'IL', 'IN', 'MA', 'PK', 'RU', 'TR', 'CN'"New value: +"Geopolitical view for disputed territories."
    • addedInput schema / properties / view / enum
      Added value: +[
      +  "Unified",
      +  "AE",
      +  "AR",
      +  "BN",
      +  "CL",
      +  "CN",
      +  "DZ",
      +  "IL",
      +  "IN",
      +  "KR",
      +  "MA",
      +  "MY",
      +  "PH",
      +  "PK",
      +  "RS",
      +  "RU",
      +  "TR",
      +  "TW",
      +  "US",
      +  "VN"
      +]
    • changedInput schema / required
      Previous value: -[
      -  "lat",
      -  "lon"
      -]New value: +[
      +  "position"
      +]
  2. Changed5 schema fields changedv1.6.8
    • removedInput schema / additionalProperties
      Removed value: -false
    • changedInput schema / properties / categorySet / description
      Previous value: -"POI category filter. Common: '7315' (restaurants), '7309' (gas), '9663' (EV charging), '7311' (hotels), '9376' (parking)."New value: +"Filter POI per category using category IDs.\n      Examples: \n      '7315' (Restaurant), '9361' (Shop), '7311' (Gas Station), '7321' (Hospital),\n      '7397' (ATM), '7327' (Department Store), '7314' (Hotel/Motel), '9361009' (Convenience Store),\n      '7324' (Post Office), '7383' (Airport), '7380' (Railroad Station), '9942' (Public Transportation Stop),\n      '7313' (Parking Garage), '7369' (Open Parking Area), '7342' (Movie Theater),\n      '9362' (Park & Recreation Area), '7310' (Repair Shop), '9376' (Café/Pub), '9379' (Nightlife),\n      '7318' (Theater), '7317' (Museum), '7312' (Rent-a-Car Facility), '7372' (School),\n      '7322' (Police Station), '7326' (Pharmacy), '9352' (Company), '7376' (Tourist Attraction),\n      '7332005' (Supermarkets & Hypermarkets), '7315015' (Fast Food)"
    • changedInput schema / properties / entityTypeSet / description
      Previous value: -"Filter results by entity types"New value: +"Filter results by geographic entity types. Valid values: PostalCodeArea,\n      CountryTertiarySubdivision, CountrySecondarySubdivision, MunicipalitySubdivision,\n      MunicipalitySecondarySubdivision, Country, CountrySubdivision, Neighbourhood, Municipality.\n      Note: This parameter is for geographic entities only, not POIs.\n      For POI filtering, use categorySet instead"
    • addedInput schema / properties / response_detail
      Added value: +{
      +  "default": "compact",
      +  "description": "Response detail level. 'compact' (default): trimmed response with essential fields only, saves tokens. 'full': complete API response with all fields including coordinates, classifications, etc.",
      +  "enum": [
      +    "compact",
      +    "full"
      +  ],
      +  "type": "string"
      +}
    • removedInput schema / properties / sort
      Removed value: -{
      -  "description": "Sort options for results",
      -  "type": "string"
      -}
  3. First observedv1.0.0

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), so the description correctly spends its words elsewhere: it discloses that results are distance-sorted and that the filter fields form an OR-requirement. It stops short of describing pagination (the cursor/limit interplay) or result-size tradeoffs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with purpose and query shape before prerequisites and the sibling alternative. Every clause carries routing or requirement information; nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A 20-parameter tool with no output schema, yet the description covers purpose, precondition, ordering of results, and the alternative tool. Remaining gaps (pagination, compact vs full response size) are documented in the schema, so the definition is nearly complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema itself already carries the nuanced notes (the poiCategories-vs-filter disjunction, the 'call tomtom-poi-categories first' warning, radius presets). The description echoes the requirement rather than adding syntax or format detail beyond it, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Find places of a kind close to a specific point') and immediately distinguishes itself from tomtom-area-search by geometry (radius vs polygon/bbox). An agent can route between the two without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the ideal query shape ('what's around here?' with exact lat/lon), the precondition (needs poiCategories or a brand/fuel/connector/power filter), and an explicit when-not rule naming the alternative sibling. This is the full when/how/exclusion set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.