Skip to main content
Glama
TomTom MCP Server

TomTom MCP Server

Official

TomTom Fuzzy Search

tomtom-fuzzy-search
Read-onlyIdempotent

Search addresses, points of interest, and geographies with typo-tolerant queries, so locations are still found when the input contains misspellings.

Instructions

Typo-tolerant search for addresses, points of interest, and geographies.

Input Schema

NameRequiredDescriptionDefault
viewNoGeopolitical view for disputed territories.
limitNoMaximum number of results to return (1-100). Default: 10.
queryYesNatural language search query. Works with addresses, POI names, coordinates, or free-form text. Examples: 'restaurants near Central Park', 'IKEA stores', '52.3791,4.8994', 'coffee shops downtown'
cursorNoThe next page of results: the nextCursor of the previous response, with the same other parameters.
idxSetNoSearch only these indexes, comma-separated: 'Geo' (geographies), 'PAD' (point addresses), 'Addr' (address ranges), 'Str' (streets), 'XStr' (cross streets), 'POI'.
radiusNoSearch radius in meters around position; needs position. Examples: 1000 (neighborhood), 5000 (city area), 20000 (metro 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).
positionNoCenter position as [longitude, latitude] for location bias (GeoJSON convention). Example: [4.89707, 52.377956] for Amsterdam. Not with boundingBox.
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']
typeaheadNoEnable autocomplete mode for partial queries. Use for search-as-you-type interfaces.
maxPowerKWNoMaximum charging power in kW for EV stations
minPowerKWNoMinimum charging power in kW for EV stations
boundingBoxNoBounding box as [minLon, minLat, maxLon, maxLat] (GeoJSON convention). Example: [4.8, 52.3, 4.95, 52.45] for Amsterdam area. Not with position.
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
entityTypeSetNoFilter results by geographic entity types, comma-separated: Country, CountrySubdivision, CountrySecondarySubdivision, CountryTertiarySubdivision, Municipality, MunicipalitySubdivision, MunicipalitySecondarySubdivision, Neighbourhood, PostalCodeArea. Note: This parameter is for geographic entities only, not POIs. For POI filtering, use poiCategories instead
maxFuzzyLevelNoMaximum fuzzy matching level (1-4)
minFuzzyLevelNoMinimum fuzzy matching level (1-4)
poiCategoriesNoFilter POI results by UPPER_SNAKE_CASE text category codes (e.g. 'RESTAURANT', 'PARKING_GARAGE'), NOT numeric IDs. 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. Changed30 schema fields changedv1.6.13
    • removedInput schema / properties / addressRanges
      Removed value: -{
      -  "description": "Include address ranges in the response",
      -  "type": "boolean"
      -}
    • addedInput schema / properties / boundingBox
      Added value: +{
      +  "description": "Bounding box as [minLon, minLat, maxLon, maxLat] (GeoJSON convention). Example: [4.8, 52.3, 4.95, 52.45] for Amsterdam area. Not with position.",
      +  "items": {
      +    "type": "number"
      +  },
      +  "maxItems": 4,
      +  "minItems": 4,
      +  "type": "array"
      +}
    • 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 / btmRight
      Removed value: -{
      -  "description": "Bottom-right coordinates of bounding box (format: 'lat,lon'). Must be used with topLeft",
      -  "type": "string"
      -}
    • 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"
      -}
    • 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"
      +}
    • changedInput schema / properties / entityTypeSet / description
      Previous 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"New value: +"Filter results by geographic entity types, comma-separated: Country, CountrySubdivision, CountrySecondarySubdivision, CountryTertiarySubdivision, Municipality, MunicipalitySubdivision, MunicipalitySecondarySubdivision, Neighbourhood, PostalCodeArea. Note: This parameter is for geographic entities only, not POIs. For POI filtering, use poiCategories instead"
    • 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'."
    • 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"
      -}
    • changedInput schema / properties / idxSet / description
      Previous value: -"Filter results by index set"New value: +"Search only these indexes, comma-separated: 'Geo' (geographies), 'PAD' (point addresses), 'Addr' (address ranges), 'Str' (streets), 'XStr' (cross streets), 'POI'."
    • removedInput schema / properties / lat
      Removed value: -{
      -  "description": "Center latitude for location bias",
      -  "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: 10."
    • removedInput schema / properties / lon
      Removed value: -{
      -  "description": "Center longitude for location bias",
      -  "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 / ofs
      Removed value: -{
      -  "description": "Offset for pagination of results",
      -  "type": "number"
      -}
    • addedInput schema / properties / poiCategories
      Added value: +{
      +  "description": "Filter POI results by UPPER_SNAKE_CASE text category codes (e.g. 'RESTAURANT', 'PARKING_GARAGE'), NOT numeric IDs. 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 location bias (GeoJSON convention). Example: [4.89707, 52.377956] for Amsterdam. Not with boundingBox.",
      +  "items": {
      +    "type": "number"
      +  },
      +  "maxItems": 2,
      +  "minItems": 2,
      +  "type": "array"
      +}
    • changedInput schema / properties / radius / description
      Previous value: -"Search radius in meters when lat/lon provided. Examples: 1000 (neighborhood), 5000 (city area), 20000 (metro area)."New value: +"Search radius in meters around position; needs position. Examples: 1000 (neighborhood), 5000 (city area), 20000 (metro area)."
    • 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."
    • 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 / topLeft
      Removed value: -{
      -  "description": "Top-left coordinates of bounding box (format: 'lat,lon'). Must be used with btmRight",
      -  "type": "string"
      -}
    • 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"
      +]
  2. Changed8 schema fields changedv1.6.8
    • removedInput schema / additionalProperties
      Removed value: -false
    • changedInput schema / properties / categorySet / description
      Previous value: -"Filter by POI categories. Common IDs: '7315' (restaurants), '7309' (gas), '7311' (hotels), '9663' (EV charging)."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)"
    • removedInput schema / properties / connectors
      Removed value: -{
      -  "description": "Include connector information for EV stations",
      -  "type": "boolean"
      -}
    • 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"
    • removedInput schema / properties / gomList
      Removed value: -{
      -  "description": "Include geometry-only matches in the result list",
      -  "type": "boolean"
      -}
    • 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 / roadUse
      Removed value: -{
      -  "description": "Include road usage information",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / sort
      Removed value: -{
      -  "description": "Sort options for results",
      -  "type": "string"
      -}
  3. First observedv1.0.0

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive behavior, so the safety profile is fully covered elsewhere. The description adds no further behavioral context such as pagination behavior, the compact-vs-full response tradeoff, or the show_ui widget limitation, which are non-obvious traits an agent would benefit from knowing up front.

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

Conciseness3/5

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

The sentence is clean, front-loaded, and waste-free, but for a 27-parameter tool it reads as under-specification rather than disciplined brevity. It is not padded, yet it leaves the definition too thin to stand on.

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

Completeness3/5

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

A 27-param search tool with no output schema and an entirely self-describing schema means most calling details are covered structurally, and readOnly annotations carry the safety story. The remaining gap is disambiguation from the many overlapping TomTom search siblings, which a one-line description cannot supply.

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 27 parameter descriptions are unusually rich, including enum values, examples, mutual exclusions (position vs boundingBox), and even cross-tool routing for poiCategories. The one-line description adds nothing beyond that, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource set (search addresses, POIs, geographies) and the 'typo-tolerant' qualifier distinguishes it from exact-match geocoding. However, it never names or contrasts with obvious siblings like tomtom-geocode, tomtom-poi-search, or tomtom-area-search, so the agent must infer the boundary.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not guidance and no mention of alternatives, despite a crowded sibling set (geocode, poi-search, nearby, area-search, ev-search) where routing matters a lot. The single sentence describes what it is, not when to pick it.

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