Skip to main content
Glama
tomtom-international

TomTom MCP Server

Official

tomtom-reverse-geocode

Convert latitude and longitude coordinates into human-readable addresses using TomTom's geocoding capabilities. Specify language, country set, and additional details like mapcodes, geopolitical views, or extended postal codes for precise, customizable results.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
addressRangesNoInclude address ranges in the response
allowFreeformNewLineNoAllow newlines in freeform addresses
countrySetNoLimit results to specific countries using ISO codes. Examples: 'US', 'FR,GB', 'CA,US'
entityTypeSetNoFilter by entity types: 'Country', 'Municipality', etc.
extendedPostalCodesForNoInclude extended postal codes for specific index types. Examples: 'PAD', 'PAD,Addr', 'POI'
geometriesNoInclude geometries information in the response
headingNoHeading direction in degrees (0-360) for improved accuracy on roads
languageNoPreferred language for results using IETF language tags. Examples: 'en-US', 'fr-FR', 'de-DE', 'es-ES'
latYesLatitude coordinate (-90 to +90). Precision to 4+ decimal places recommended.
limitNoMaximum number of results to return (1-100). Default: 5
lonYesLongitude coordinate (-180 to +180). Precision to 4+ decimal places recommended.
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). Accepts array of string(s).
maxResultsNoMaximum results to return (alias for limit)
ofsNoOffset for pagination of results
radiusNoSearch radius in meters. Default: 100
returnAddressNamesNoInclude address names in the response
returnCommuneNoInclude commune information in the results
returnMatchTypeNoInclude information about the type of geocoding match achieved
returnRoadAccessibilityNoInclude road accessibility information
returnRoadUseNoInclude road use types for street level results
returnSpeedLimitNoInclude posted speed limit for street results
roadUseNoTypes of road use to include in the results. Examples: 'Arterial', 'Ferry', 'Highway', etc.
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
viewNoGeopolitical view for disputed territories. Options: 'Unified', 'AR', 'IL', 'IN', 'MA', 'PK', 'RU', 'TR', 'CN'

Implementation Reference

  • MCP tool handler factory for 'tomtom-reverse-geocode'. Extracts lat/lon/options, calls reverseGeocode service, logs progress, returns JSON result or error response.
    export function createReverseGeocodeHandler() {
      return async (params: any) => {
        const { lat, lon, ...options } = params;
        logger.info(`📍 Reverse geocoding: (${lat}, ${lon})`);
        try {
          const result = await reverseGeocode(
            lat,
            lon,
            Object.keys(options).length > 0 ? options : undefined
          );
          logger.info(`✅ Reverse geocoding successful`);
          return { content: [{ type: "text" as const, text: JSON.stringify(result, null, 2) }] };
        } catch (error: any) {
          logger.error(`❌ Reverse geocoding failed: ${error.message}`);
          return {
            content: [{ type: "text" as const, text: JSON.stringify({ error: error.message }) }],
            isError: true,
          };
        }
      };
    }
  • Zod input schema for tomtom-reverse-geocode tool, defining lat, lon, and various optional search parameters like radius, entity types, and formatting options.
    export const tomtomReverseGeocodeSearchSchema = {
      lat: z
        .number()
        .describe("Latitude coordinate (-90 to +90). Precision to 4+ decimal places recommended."),
      lon: z
        .number()
        .describe("Longitude coordinate (-180 to +180). Precision to 4+ decimal places recommended."),
      ...baseSearchParams,
      radius: z.number().optional().describe("Search radius in meters. Default: 100"),
      entityTypeSet: z
        .string()
        .optional()
        .describe(`Filter results by geographic entity types. Valid values: PostalCodeArea,
          CountryTertiarySubdivision, CountrySecondarySubdivision, MunicipalitySubdivision,
          MunicipalitySecondarySubdivision, Country, CountrySubdivision, Neighbourhood, Municipality.
          Note: This parameter is for geographic entities only, not POIs.
          For POI filtering, use categorySet instead`
        ),
      returnMatchType: z
        .boolean()
        .optional()
        .describe("Include information about the type of geocoding match achieved"),
      returnSpeedLimit: z
        .boolean()
        .optional()
        .describe("Include posted speed limit for street results"),
      returnRoadUse: z.boolean().optional().describe("Include road use types for street level results"),
      roadUse: z
        .array(z.string())
        .optional()
        .describe(
          "Types of road use to include in the results. Examples: 'Arterial', 'Ferry', 'Highway', etc."
        ),
      allowFreeformNewLine: z.boolean().optional().describe("Allow newlines in freeform addresses"),
      returnAddressNames: z.boolean().optional().describe("Include address names in the response"),
      heading: z
        .number()
        .optional()
        .describe("Heading direction in degrees (0-360) for improved accuracy on roads"),
      maxResults: z.number().optional().describe("Maximum results to return (alias for limit)"),
      returnRoadAccessibility: z
        .boolean()
        .optional()
        .describe("Include road accessibility information"),
      returnCommune: z.boolean().optional().describe("Include commune information in the results"),
      ofs: z.number().optional().describe("Offset for pagination of results"),
    };
  • MCP server registration of 'tomtom-reverse-geocode' tool with title, description, input schema, and handler factory.
    server.registerTool(
      "tomtom-reverse-geocode",
      {
        title: "TomTom Reverse Geocode",
        description: "Convert coordinates to addresses",
        inputSchema: schemas.tomtomReverseGeocodeSearchSchema,
      },
      createReverseGeocodeHandler()
    );
  • Orbis variant of MCP tool handler factory for 'tomtom-reverse-geocode', identical logic but uses Orbis service.
    export function createReverseGeocodeHandler() {
      return async (params: any) => {
        const { lat, lon, ...options } = params;
        logger.info(`📍 Reverse geocoding: (${lat}, ${lon})`);
        try {
          const result = await reverseGeocode(
            lat,
            lon,
            Object.keys(options).length > 0 ? options : undefined
          );
          logger.info(`✅ Reverse geocoding successful`);
          return { content: [{ type: "text" as const, text: JSON.stringify(result, null, 2) }] };
        } catch (error: any) {
          logger.error(`❌ Reverse geocoding failed: ${error.message}`);
          return {
            content: [{ type: "text" as const, text: JSON.stringify({ error: error.message }) }],
            isError: true,
          };
        }
      };
    }
  • Orbis variant MCP server registration of 'tomtom-reverse-geocode' tool using Orbis schema and handler.
    server.registerTool(
      "tomtom-reverse-geocode",
      {
        title: "TomTom Reverse Geocode",
        description: "Convert coordinates to addresses",
        inputSchema: schemas.tomtomReverseGeocodeSearchSchema,
      },
      createReverseGeocodeHandler()
    );
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

Install Server

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tomtom-international/tomtom-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server