Skip to main content
Glama
tomtom-international

TomTom MCP Server

Official

TomTom Maps MCP Server

NPM Version License

The TomTom Maps MCP Server simplifies geospatial development by providing seamless access to TomTom’s location services, including search, routing, traffic and static maps data. It enables easy integration of precise and accurate geolocation data into AI workflows and development environments.

Demo

TomTom Maps MCP Demo

Related MCP server: mcp-tomtom

Table of Contents


Remote MCP Server (No Installation Required)

Public Preview — The TomTom Maps Remote MCP Server is currently in public preview.

The easiest way to get started is to connect directly to TomTom's hosted MCP Server — no Node.js, Docker, or local setup needed.

Endpoint:

https://mcp.tomtom.com/maps

Prerequisites:

Generic MCP Client Configuration

Add the following to your MCP client configuration:

{
  "mcpServers": {
    "tomtom-mcp": {
      "type": "http",
      "url": "https://mcp.tomtom.com/maps",
      "headers": {
        "tomtom-api-key": "your_api_key_here"
      }
    }
  }
}

Selecting a Map Backend

Add the optional tomtom-maps-backend header to choose your backend:

TomTom Maps (default):

{
  "mcpServers": {
    "tomtom-mcp": {
      "type": "http",
      "url": "https://mcp.tomtom.com/maps",
      "headers": {
        "tomtom-api-key": "your_api_key_here",
        "tomtom-maps-backend": "tomtom-maps"
      }
    }
  }
}

TomTom Orbis Maps:

{
  "mcpServers": {
    "tomtom-mcp": {
      "type": "http",
      "url": "https://mcp.tomtom.com/maps",
      "headers": {
        "tomtom-api-key": "your_api_key_here",
        "tomtom-maps-backend": "tomtom-orbis-maps"
      }
    }
  }
}

If the tomtom-maps-backend header is omitted, the server defaults to TomTom Maps.

VS Code (GitHub Copilot)

Create or edit .vscode/mcp.json in your workspace:

{
  "servers": {
    "tomtom-mcp": {
      "type": "http",
      "url": "https://mcp.tomtom.com/maps",
      "headers": {
        "tomtom-api-key": "your_api_key_here"
      }
    }
  }
}

Claude Desktop

The quickest option is to install the pre-built extension — see the Claude Desktop Setup guide for details.

Alternatively, configure Claude Desktop to use the remote server directly by editing your configuration file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "tomtom-mcp": {
      "type": "http",
      "url": "https://mcp.tomtom.com/maps",
      "headers": {
        "tomtom-api-key": "your_api_key_here"
      }
    }
  }
}

Note: If your MCP client does not support remote HTTP connections with custom headers, use the local setup instead.


Security Notice

Keeping local deployments of the TomTom Maps MCP Server up-to-date is the responsibility of the MCP client/operator. TomTom publishes updates to address known vulnerabilities, but failing to apply updates, patches, or recommended security configurations to your local instance may expose it to known vulnerabilities.

Quick Start

Prerequisites

  • Node.js 22.x

  • TomTom API key

How to obtain a TomTom API key:

  1. Create a developer account on TomTom Developer Portal and Sign-in

  2. Go to API & SDK Keys in the left-hand menu.

  3. Click the red Create Key button.

  4. Select all available APIs to ensure full access, assign a name to your key, and click Create.

For more details, visit the TomTom API Key Management Documentation.

Installation

npm install @tomtom-org/tomtom-mcp@latest

# or run directly without installing
npx @tomtom-org/tomtom-mcp@latest

Configuration

Set your TomTom API key using one of the following methods:

# Option 1: Use a .env file (recommended)
echo "TOMTOM_API_KEY=your_api_key" > .env

# Option 2: Environment variable
export TOMTOM_API_KEY=your_api_key

# Option 3: Pass as CLI argument
TOMTOM_API_KEY=your_api_key npx @tomtom-org/tomtom-mcp@latest

Environment Variables

Variable

Description

Default

TOMTOM_API_KEY

Your TomTom API key

-

MAPS

Backend to use: tomtom-maps (TomTom Maps) or tomtom-orbis-maps (TomTom Orbis Maps)

tomtom-maps

PORT

Port for the HTTP server

3000

LOG_LEVEL

Logging level: debug, info, warn, or error. Use debug for local development to see all logs

info


Usage

Stdio Mode (Default - for AI assistants like Claude):

# Start MCP server via stdio
npx @tomtom-org/tomtom-mcp@latest

HTTP Mode (for web applications and API integration):

pnpm run build            # Build first (required)
pnpm run start:http
# or run the built binary directly
node bin/tomtom-mcp-http.js

When running in HTTP mode, you need to include your API key in the tomtom-api-key header. You can also optionally set the maps backend per-request using the tomtom-maps-backend header:

tomtom-api-key: <API_KEY>
tomtom-maps-backend: tomtom-maps        # or tomtom-orbis-maps

Note: The tomtom-maps-backend header is only used when the server is started without the MAPS env var (dual-backend mode). If MAPS is set at startup, the header is ignored and the server uses the fixed backend.

For example, to make a request using curl:

curl --location 'http://localhost:3000/mcp' \
--header 'Accept: application/json,text/event-stream' \
--header 'tomtom-api-key: <API KEY>' \
--header 'Content-Type: application/json' \
--data '{
  "method": "tools/call",
  "params": {
    "name": "tomtom-geocode",
    "arguments": {
        "query": "Amsterdam Central Station"
    }
  },
  "jsonrpc": "2.0",
  "id": 24
}'

The Docker setup is also configured to use this HTTP mode with the same authentication method.

Docker Mode (recommended):

# Option 1: Using docker run directly
# Note: TomTom Maps is the default backend (same as npm package)
docker run -p 3000:3000 ghcr.io/tomtom-international/tomtom-maps-mcp:latest

# To use TomTom Orbis Maps backend instead:
docker run -p 3000:3000 -e MAPS=tomtom-orbis-maps ghcr.io/tomtom-international/tomtom-maps-mcp:latest

# Option 2: Using Docker Compose (recommended for development)
# Clone the repository first
git clone https://github.com/tomtom-international/tomtom-maps-mcp.git
cd tomtom-maps-mcp

# Start the service (uses TomTom Maps backend by default)
docker compose up

Both Docker options run the server in HTTP mode. Pass your API key via the tomtom-api-key header as shown in the HTTP Mode curl example above.


Integration Guides

TomTom Maps MCP Server can be easily integrated into various AI development environments and tools.

These guides help you integrate the MCP server with your tools and environments:


Available Tools

Tool

Description

Documentation

tomtom-geocode

Convert addresses to coordinates with global coverage

https://developer.tomtom.com/geocoding-api/documentation/geocode

tomtom-reverse-geocode

Get addresses from GPS coordinates

https://developer.tomtom.com/reverse-geocoding-api/documentation/reverse-geocode

tomtom-fuzzy-search

Intelligent search with typo tolerance

https://developer.tomtom.com/search-api/documentation/search-service/fuzzy-search

tomtom-poi-search

Find specific business categories

https://developer.tomtom.com/search-api/documentation/search-service/points-of-interest-search

tomtom-nearby

Discover services within a radius

https://developer.tomtom.com/search-api/documentation/search-service/nearby-search

tomtom-routing

Calculate optimal routes between locations

https://developer.tomtom.com/routing-api/documentation/tomtom-maps/calculate-route

tomtom-waypoint-routing

Multi-stop route planning Routing API

https://developer.tomtom.com/routing-api/documentation/tomtom-maps/calculate-route

tomtom-reachable-range

Determine coverage areas by time/distance

https://developer.tomtom.com/routing-api/documentation/tomtom-maps/calculate-reachable-range

tomtom-traffic

Real-time incidents data

https://developer.tomtom.com/traffic-api/documentation/traffic-incidents/traffic-incidents-service

tomtom-static-map

Generate custom map images

https://developer.tomtom.com/map-display-api/documentation/raster/static-image

tomtom-dynamic-map

Advanced map rendering with custom markers, routes, and traffic visualization

https://developer.tomtom.com/map-display-api/documentation/raster/map-tile


TomTom Orbis Maps (optional backend)

By default the MCP tools use TomTom Maps APIs listed above. We also support using TomTom Orbis Maps for the same tools. To enable TomTom Orbis Maps for all tools set the environment variable MAPS=tomtom-orbis-maps.

Note: The Orbis Maps backend includes all the tools from TomTom Maps plus additional Orbis-exclusive tools: tomtom-ev-routing, tomtom-search-along-route, tomtom-area-search, tomtom-ev-search, and tomtom-data-viz. The tomtom-static-map tool is only available with the default TomTom Maps backend.

Tool

Description

TomTom Orbis Maps API (documentation)

tomtom-geocode

Forward geocoding: address → coordinates

https://developer.tomtom.com/geocoding-api/documentation/tomtom-orbis-maps/geocode

tomtom-reverse-geocode

Reverse geocoding: coordinates → address

https://developer.tomtom.com/reverse-geocoding-api/documentation/tomtom-orbis-maps/reverse-geocode

tomtom-fuzzy-search

General search with typo tolerance and suggestions

https://developer.tomtom.com/search-api/documentation/tomtom-orbis-maps/search-service/fuzzy-search

tomtom-poi-search

Points of Interest (category-based) search

https://developer.tomtom.com/search-api/documentation/tomtom-orbis-maps/search-service/points-of-interest-search

tomtom-nearby

Find POIs near a coordinate within a radius

https://developer.tomtom.com/search-api/documentation/tomtom-orbis-maps/search-service/nearby-search

tomtom-routing

Calculate optimal route between two points

https://developer.tomtom.com/routing-api/documentation/tomtom-orbis-maps/calculate-route

tomtom-waypoint-routing

Multi-stop / waypoint route planning

https://developer.tomtom.com/routing-api/documentation/tomtom-orbis-maps/calculate-route

tomtom-reachable-range

Compute coverage area by time or distance budget

https://developer.tomtom.com/routing-api/documentation/tomtom-orbis-maps/calculate-reachable-range

tomtom-traffic

Traffic incidents and related details

https://developer.tomtom.com/traffic-api/documentation/tomtom-orbis-maps/incident-details

tomtom-dynamic-map

Advanced map rendering with custom markers, routes, and traffic visualization

https://developer.tomtom.com/map-display-api/documentation/tomtom-orbis-maps/raster-tile

tomtom-ev-routing

Plan long-distance EV routes with automatic charging stop optimization

https://developer.tomtom.com/routing-api/documentation/tomtom-orbis-maps/long-distance-ev-routing

tomtom-search-along-route

Find POIs (restaurants, gas stations, hotels, etc.) along a route corridor

https://developer.tomtom.com/search-api/documentation/tomtom-orbis-maps/search-service/search-along-route

tomtom-area-search

Search for places within a geographic area (circle, polygon, or bounding box)

https://developer.tomtom.com/search-api/documentation/tomtom-orbis-maps/search-service/geometry-search

tomtom-ev-search

Find EV charging stations with real-time availability and connector types

https://developer.tomtom.com/search-api/documentation/tomtom-orbis-maps/search-service/ev-charging-stations-availability

tomtom-data-viz

Visualize custom GeoJSON data on an interactive TomTom basemap (markers, heatmaps, clusters, choropleths)

https://developer.tomtom.com/map-display-api/documentation/tomtom-orbis-maps/raster-tile

How dynamic map tool works

The dynamic map tool fetches raster tiles from TomTom (either TomTom Maps or TomTom Orbis Maps), then uses skia-canvas (server-side) to:

  • stitch map tiles into a single canvas at the appropriate zoom level;

  • add markers, routes, polygons, and other overlays;

  • render the final composited image.

The server converts the rendered image to PNG and returns it as a Base64 string.

References:


Debug UI

A built-in debug UI lets you visually test MCP tools and their interactive map widgets without needing an AI client.

Quick Start

pnpm run ui

This starts both the MCP HTTP server (port 3000) and the debug UI host (port 8080). Open http://localhost:8080 in your browser.

Features

  • Tool browser — searchable sidebar listing all available tools, with icons distinguishing map-enabled tools from plain tools

  • Pre-filled examples — each tool loads with example parameters (including show_ui: true for map widgets)

  • Live map widgets — tools with UI resources render interactive TomTom maps directly in the browser

  • Response metadata — latency, payload size, estimated token count, content parts, and timestamps for every call

  • Dark / light mode — toggle with the theme button or follows system preference

  • Keyboard shortcutsCmd+Enter to run, Cmd+K to search tools

Requirements

  • The MCP server must be running in HTTP mode (handled automatically by pnpm run ui)

  • A valid TOMTOM_API_KEY in your .env file

  • To see map widgets, use the TomTom Orbis Maps backend (MAPS=tomtom-orbis-maps in .env)

Building the UI separately

The UI host is a workspace package (tomtom-mcp-app-host in ui/), so the root pnpm install already installed its dependencies.

pnpm run ui:build                              # Build the UI
pnpm --filter tomtom-mcp-app-host start        # Start only the UI host (assumes MCP server is already running)

Local Development

This project uses pnpm (>=11) as its package manager. Install it with npm install -g pnpm or corepack enable. Linting and formatting are handled by Biome.

Setup

git clone https://github.com/tomtom-international/tomtom-maps-mcp.git

cd tomtom-maps-mcp

pnpm install

cp .env.example .env      # Add your API key in .env

pnpm run build            # Build TypeScript files

node ./bin/tomtom-mcp.js   # Start the MCP server

Testing

pnpm run build              # Build TypeScript
pnpm test                   # Run all tests
pnpm run test:all           # All tests (unit + stdio + http)

Testing Requirements

⚠️ Important: All tests require a valid API key in .env as they make real API calls (not mocked). This will consume your API quota.

Project Structure

src/
├── apps/              # MCP App UI resources
├── handlers/          # Request handlers
├── schemas/           # Validation schemas
├── services/          # TomTom API wrappers
├── tools/             # MCP tool definitions
├── types/             # TypeScript type definitions
├── utils/             # Utilities
├── createServer.ts    # MCP Server creation logic
├── index.ts           # Main entry point (stdio)
└── indexHttp.ts       # HTTP server entry point

Troubleshooting

API Key Issues

echo $TOMTOM_API_KEY  # Check if set

Test Failures

ls -la .env          # Verify .env exists
cat .env             # Check API key

Build Issues

pnpm run build           # Rebuild
pnpm store prune         # Clear cache

Forbidden (403) Errors

If you see an error stating "missing permissions", it means your API key does not have access to the TomTom Orbis Maps or EV services.

Note: TomTom Orbis Maps and certain EV routing features are currently in Public Preview. They may not be available on all developer accounts by default.

How to troubleshoot:

  1. Log in to the TomTom Developer Portal.

  2. Ensure all available products are selected for your API key.

  3. If you still encounter 403 errors when using MAPS=tomtom-orbis-maps, your account may not yet have access to the Orbis preview. You can continue using the standard tomtom-maps backend in the meantime.


Contributing & Feedback

We welcome contributions to the TomTom Maps MCP Server! Please see CONTRIBUTING.md for details on how to submit pull requests, report issues, and suggest improvements.

All contributions must adhere to our Code of Conduct and be signed-off according to the Developer Certificate of Origin (DCO).

Open issues on the GitHub repo

Security

Please see our Security Policy for information on reporting security vulnerabilities and our security practices.

License

This project is licensed under the Apache License 2.0 - see the LICENSE.md file for details.

Copyright (C) 2025 TomTom Navigation B.V.

Available Tools

14 tools
tomtom-dynamic-mapTomTom Dynamic MapA
Read-onlyIdempotent

Render a custom map image with markers, drawn lines, polygons, and area overlays using server-side rendering. Intended for map visualization: showing locations on a map, highlighting areas, or combining multiple visual elements in one view. Not intended for route calculations (tomtom-routing) or traffic incidents (tomtom-traffic). The optional routePlans parameter can calculate and draw routes on the map; it is meant for routes combined with other map elements (markers, polygons) in a single image.

ParametersJSON Schema
NameRequiredDescriptionDefault
bboxNoBounding box in format [west, south, east, north] (min longitude, min latitude, max longitude, max latitude). Alternative to center+zoom. Use this parameter to ensure all map elements are fully visible. EXAMPLE: [4.87, 52.355, 4.915, 52.385] for central Amsterdam area.
zoomNoZoom level (0-22). EXAMPLES: 3 (continent), 6 (country), 10 (city), 15 (neighborhood), 18 (street), 20-22 (building detail). Auto-calculated if not provided. NOTE: Zoom levels 20+ are only useful for very small geographic areas.
widthNoMap width in pixels (100-2048). Auto-calculated based on content if not provided. Recommended values: 800 (standard), 1200 (detailed). EXAMPLE: 800 for standard display, 1200 for detailed map.
centerNoMap center coordinates. Optional if bbox provided or if markers/routes are used for auto-calculation. IMPORTANT: If using 'center', also provide 'zoom' for best results. Use either center+zoom OR bbox, not both simultaneously. EXAMPLE: {lat: 52.3676, lon: 4.9041} for Amsterdam Central.
detailNoControls the image quality included in the tool response. 'compact' (DEFAULT): Compresses the image to stay under 1MB, using JPEG conversion and/or downscaling as needed. Best for most use cases since the interactive MCP app widget renders the full map separately. 'full': Returns the original full-resolution PNG image. Use when you need maximum image quality in the conversation, but note this may exceed the 1MB response limit for large/detailed maps.compact
heightNoMap height in pixels (100-2048). Auto-calculated based on content if not provided. Recommended values: 600 (standard), 900 (detailed). EXAMPLE: 600 for standard display, 900 for detailed map.
routesNoDraw straight lines between coordinates — for visualizing custom paths, connections, or external data (e.g. flight paths, supply chains, hiking trails). These are NOT road-following routes and have no distance/time info. For actual driving or walking routes that follow roads, use 'routePlans' instead. EXAMPLE: [{points: [{lat: 52.3676, lon: 4.9041}, {lat: 52.36, lon: 4.8852}], color: '#0000FF', name: 'Flight Path'}].
markersNoArray of markers to display on the map. Each marker can have custom color, label, and priority. EXAMPLE: [{lat: 52.3676, lon: 4.9041, color: '#FF4444', label: 'Amsterdam Central', priority: 'high'}].
show_uiNoEnable interactive MCP app visualization. When true, the response includes a viz_id that allows an MCP App to render an interactive version of the map with zoom, pan, and click capabilities. Set to false if you only need the static PNG image. DEFAULT: false.
polygonsNoArray of polygons and circles to display on the map. Supports both custom polygon shapes (with coordinate arrays) and circular areas (with center point and radius). Each shape can have custom styling and labels. EXAMPLE for polygon: [{type: 'polygon', coordinates: [[4.9041, 52.3676], [4.8979, 52.3745], [4.8852, 52.36], [4.9041, 52.3676]], fillColor: 'rgba(255,0,0,0.3)', label: 'Tourist Area'}]. EXAMPLE for circle: [{type: 'circle', center: {lat: 52.3676, lon: 4.9041}, radius: 1000, fillColor: 'rgba(0,0,255,0.2)', label: '1km Radius'}].
routePlansNoArray of route calculations to draw on the map. Each entry is an independent origin→destination trip calculated via TomTom Routing API. NOTE: For standalone route queries (directions, travel time, distance), prefer the tomtom-routing tool instead. Use routePlans here only when you need to visualize calculated routes alongside other map elements (markers, polygons) in a single map image. Each plan can have its own routeType, travelMode, and color. EXAMPLE: [{origin: {lat: 52.37, lon: 4.89}, destination: {lat: 52.36, lon: 4.89}, label: 'Morning Commute'}, {origin: {lat: 48.86, lon: 2.35}, destination: {lat: 48.85, lon: 2.29}, label: 'Paris Tour'}].
showLabelsNoWhether to show text labels on markers, routes, and polygons. DEFAULT: false. EXAMPLE: true to display all labels.
routeInfoDetailNoLevel of route information to display when using routePlans. OPTIONS: 'basic' (simple), 'compact' (short), 'detailed' (full), 'distance-time' (time/distance only). DEFAULT: 'basic'. EXAMPLE: 'distance-time' to show just the travel distance and time.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful behavior: the detail parameter's 1MB response limit and JPEG/downscaling behavior, the show_ui parameter's interactive viz_id capability, and auto-calculation of dimensions. Minor gap: no explicit statement about the response format/return value, though the description covers most operational behavior.

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

Conciseness4/5

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

The main description is efficiently written with purpose front-loaded before exclusions. It avoids redundancy with the schema. However, the overall tool definition is lengthy due to the schema, and the description could be slightly trimmed — the routePlans guidance is repeated in both the description and the parameter schema. Still, it earns a 4 for being well-organized and purposeful.

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?

For a tool with 13 parameters, 0 required, and complex nested objects, the description covers the key operational concerns: auto-calculation behavior, the detail/response-size tradeoff, the show_ui interaction, and the routes vs routePlans distinction. No output schema exists, but the description addresses return behavior through the detail parameter. The main omission is not describing the output image format explicitly, though the detail parameter implies it.

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%, so the baseline is 3. The description adds real value with concrete examples (Amsterdam coordinates, hex color codes, priority semantics) and clarifies nuanced distinctions like the routes vs routePlans difference (straight lines vs road-following). However, much of the value is also present in the schema descriptions, so the description doesn't dramatically exceed the baseline.

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?

States a specific verb (Render) and resource (custom map image) with concrete elements: markers, drawn lines, polygons, and area overlays. Explicitly distinguishes from siblings (tomtom-routing, tomtom-traffic) by naming what it is NOT for, which is rare and highly valuable for agent selection.

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?

Provides explicit when-to-use guidance ('Intended for map visualization') and when-not-to ('Not intended for route calculations (tomtom-routing) or traffic incidents (tomtom-traffic)'). Also clarifies the edge case of routePlans — when it should be used vs. when to prefer tomtom-routing for standalone queries. This is exemplary routing guidance.

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

tomtom-geocodeTomTom GeocodeA
Read-onlyIdempotent

Convert street addresses to coordinates (does not support points of interest)

ParametersJSON Schema
NameRequiredDescriptionDefault
latNoCenter latitude for location bias
lonNoCenter longitude for location bias
viewNoGeopolitical view for disputed territories. Options: 'Unified', 'AR', 'IL', 'IN', 'MA', 'PK', 'RU', 'TR', 'CN'
limitNoMaximum number of results to return (1-100). Default: 5
queryYesFull address to convert to coordinates. Include as much detail as possible (street, city, country) for accurate results. Examples: '1600 Pennsylvania Ave, Washington DC', 'Eiffel Tower, Paris, France'
radiusNoSearch radius in meters when lat/lon provided
topLeftNoTop-left coordinates of bounding box (format: 'lat,lon'). Must be used with btmRight
btmRightNoBottom-right coordinates of bounding box (format: 'lat,lon'). Must be used with topLeft
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). Accepts array of string(s).
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
countrySetNoLimit results to specific countries using ISO codes. Examples: 'US', 'FR,GB', 'CA,US'
geometriesNoInclude geometries information in the response
addressRangesNoInclude address ranges in the response
entityTypeSetNoFilter 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
response_detailNoResponse detail level. 'compact' (default): trimmed response with essential fields only, saves tokens. 'full': complete API response with all fields including coordinates, classifications, etc.compact
extendedPostalCodesForNoInclude extended postal codes for specific index types. Examples: 'PAD', 'PAD,Addr', 'POI'

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds one useful behavioral constraint—no POI support—but says nothing about result ambiguity, coordinate format, or response behavior.

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?

The description is a single focused sentence that front-loads the core purpose and includes a meaningful limitation. Every word earns its place, and there is no redundant restating of the tool name or title.

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?

Given the rich 100%-covered schema and clear annotations, the description is mostly complete for safe invocation. The main gap is the lack of explicit routing to sibling tools for POI or fuzzy cases, but the core operation and constraints are sufficiently clear.

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 description coverage is 100%, so the schema already documents all 17 parameters with examples and constraints. The tool description adds no parameter-level meaning beyond what the schema provides, matching the baseline for full schema coverage.

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?

The description uses a specific verb and resource: 'Convert street addresses to coordinates'. It also adds a distinguishing scope constraint, 'does not support points of interest', which separates it from POI-oriented sibling tools like tomtom-poi-search and tomtom-fuzzy-search.

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

Usage Guidelines3/5

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

The description implies the tool is for address-to-coordinate conversion and explicitly excludes POI lookups. However, it does not name alternatives or give explicit guidance on when to choose this over tomtom-reverse-geocode or tomtom-fuzzy-search.

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

tomtom-get-api-keyGet TomTom API KeyA
Read-onlyIdempotent

Internal tool for apps to retrieve the TomTom API key

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, and the description's 'retrieve' is consistent with those. It adds the 'internal' access context but does not disclose operational details such as authentication requirements or secret-handling expectations.

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?

One concise sentence names the caller, action, and resource with no filler, repetition, or unnecessary detail.

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?

For a zero-parameter, read-only, idempotent internal lookup, the description covers the essential context. It is slightly incomplete because there is no output schema and no mention of failure behavior if the key is missing or how the key should be handled in responses.

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

Parameters4/5

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

The tool has zero parameters and 100% schema description coverage, so there is no parameter burden for the description to carry. The baseline 4 applies because no parameter ambiguity exists.

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?

The description names a specific verb ('retrieve'), a specific resource ('TomTom API key'), and an intended caller ('apps'). It is clearly distinguishable from sibling tools like tomtom-get-app-config and tomtom-get-viz-data.

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

Usage Guidelines4/5

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

The phrase 'Internal tool for apps' provides clear context that this is a back-end credential lookup for applications rather than a general-purpose utility. It does not explicitly name alternatives, but no sibling tool appears to serve this same key-retrieval role.

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

tomtom-get-app-configGet TomTom App ConfigA
Read-onlyIdempotent

Internal tool for apps to retrieve client configuration such as the attribution user-agent

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, lowering the burden. The description adds useful context by labeling the tool 'internal' and giving an example of returned content, going slightly beyond the structured annotations. No contradiction with annotations.

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?

The description is a single sentence that is front-loaded with the action and resource and includes a concrete example. No filler, redundancy, or unnecessary detail.

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?

With no output schema and no parameters, the description must carry the burden of indicating what the tool returns. The example ('attribution user-agent') hints at the output payload, and while the full set of config fields isn't enumerated, it is adequate for a simple no-arg config getter.

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

Parameters4/5

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

The tool takes zero parameters and schema coverage is 100%, so there are no parameter semantics to document. The description correctly focuses on purpose rather than parameters, meeting the baseline for zero-parameter tools.

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?

Description states a specific verb ('retrieve') and resource ('client configuration') with a concrete example ('attribution user-agent'). It is clearly distinct from geocoding/routing/map siblings, but it does not explicitly differentiate from other internal config tools like get-api-key or get-viz-data.

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

Usage Guidelines3/5

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

The description implies usage for apps needing client configuration, but provides no explicit when/when-not guidance or alternatives. The 'Internal tool for apps' context is present, yet no exclusions or sibling comparisons are offered.

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

tomtom-get-viz-dataGet Visualization DataA
Read-onlyIdempotent

Internal tool for apps to retrieve cached visualization data by viz_id

ParametersJSON Schema
NameRequiredDescriptionDefault
viz_idYesUnique visualization ID from the tool response _meta

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, establishing a safe read operation. The description adds the behavioral nuance that the data is 'cached', which indicates the tool does not perform fresh computations and may return stale data. This is valuable context beyond the annotations.

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?

The description is a single, front-loaded sentence that wastes no words. It conveys the tool's purpose, audience, and required input in under 15 words. Perfectly sized for a simple tool with one parameter.

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?

The tool is simple (one required parameter, no output schema, no nested objects) and the description, combined with annotations and schema, covers the essentials. The only omission is an explicit description of the return format, but given it is a retrieval tool, the agent can reasonably infer the response contains the visualization data. This is acceptable for an internal tool.

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?

The input schema already provides a clear description for the sole parameter (viz_id: 'Unique visualization ID from the tool response _meta'), giving 100% coverage. The tool description adds no additional parameter-specific information, so it neither enhances nor detracts from the schema. Baseline of 3 is appropriate.

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?

The description clearly states the verb (retrieve), the resource (cached visualization data), and the key identifier (viz_id). It explicitly marks the tool as internal, and none of the sibling tools overlap in function (geocoding, routing, etc.), so it is unambiguous.

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

Usage Guidelines4/5

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

The description provides clear context that this tool is for internal apps and for retrieving cached visualization data. While it doesn't explicitly state when not to use it, the absence of any sibling with similar functionality makes the usage scope self-evident. It also implies it should be used only when a viz_id is available from a prior tool response.

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

tomtom-nearbyTomTom Nearby SearchC
Read-onlyIdempotent

Discover services within a radius

ParametersJSON Schema
NameRequiredDescriptionDefault
extNoExtended parameters for the search
latYesCenter latitude for nearby search. Use precise coordinates from geocoding.
lonYesCenter longitude for nearby search. Use precise coordinates from geocoding.
ofsNoOffset for pagination of results
viewNoGeopolitical view for disputed territories. Options: 'Unified', 'AR', 'IL', 'IN', 'MA', 'PK', 'RU', 'TR', 'CN'
limitNoMaximum number of results to return (1-100). Default: 5
radiusNoSearch radius in meters. Default: 1000. Recommended: 500 (walking), 1000 (local), 5000 (driving), 20000 (wide area).
fuelSetNoFuel types: 'Petrol', 'Diesel', 'LPG', 'Hydrogen', 'E85'
roadUseNoInclude road usage information
brandSetNoFilter by brand names. Examples: 'Starbucks,Peet\'s', 'Marriott,Hilton'. Use quotes for brands with commas.
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). Accepts array of string(s).
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
countrySetNoLimit results to specific countries using ISO codes. Examples: 'US', 'FR,GB', 'CA,US'
geometriesNoInclude geometries information in the response
maxPowerKWNoMaximum charging power in kW for EV stations
minPowerKWNoMinimum charging power in kW for EV stations
categorySetNoFilter POI per category using category IDs. Examples: '7315' (Restaurant), '9361' (Shop), '7311' (Gas Station), '7321' (Hospital), '7397' (ATM), '7327' (Department Store), '7314' (Hotel/Motel), '9361009' (Convenience Store), '7324' (Post Office), '7383' (Airport), '7380' (Railroad Station), '9942' (Public Transportation Stop), '7313' (Parking Garage), '7369' (Open Parking Area), '7342' (Movie Theater), '9362' (Park & Recreation Area), '7310' (Repair Shop), '9376' (Café/Pub), '9379' (Nightlife), '7318' (Theater), '7317' (Museum), '7312' (Rent-a-Car Facility), '7372' (School), '7322' (Police Station), '7326' (Pharmacy), '9352' (Company), '7376' (Tourist Attraction), '7332005' (Supermarkets & Hypermarkets), '7315015' (Fast Food)
relatedPoisNoInclude related points of interest
connectorSetNoEV connector types: 'IEC62196Type2CableAttached', 'Chademo', 'TeslaConnector'
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
addressRangesNoInclude address ranges in the response
entityTypeSetNoFilter 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
maxFuzzyLevelNoMaximum fuzzy matching level (1-4)
minFuzzyLevelNoMinimum fuzzy matching level (1-4)
vehicleTypeSetNoA 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
response_detailNoResponse detail level. 'compact' (default): trimmed response with essential fields only, saves tokens. 'full': complete API response with all fields including coordinates, classifications, etc.compact
fuelAvailabilityNoInclude fuel availability information for gas stations
parkingAvailabilityNoInclude parking availability information
chargingAvailabilityNoInclude charging availability information for EV stations
extendedPostalCodesForNoInclude extended postal codes for specific index types. Examples: 'PAD', 'PAD,Addr', 'POI'

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. However, the description adds no behavioral context beyond what annotations and schema provide, such as default radius, response format, or typical usage patterns. It offers no additional disclosure about behavior like pagination, filtering, or data scope, so it adds little value given the existing structured metadata.

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

Conciseness2/5

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

The description is extremely concise—a single sentence—but it is under-specified rather than optimally concise. It does not front-load key information like the fact that it requires lat/lon, uses a radius, or returns POIs. For a tool with 31 parameters, a one-line generic tagline is not adequate structure; it fails to guide the agent toward understanding the tool's purpose without diving deep into the schema.

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

Completeness2/5

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

Given the tool's complexity (31 parameters, 2 required) and the rich schema, the description is far from complete. It does not explain the core use case (finding POIs near a coordinate), how it relates to sibling search tools, or any typical scenarios. The schema is thorough but the description adds no overview or relational context, leaving an agent to puzzle out the tool's role without a high-level map.

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 description coverage is 100%, so the 31 parameters are all individually documented. The tool description does not supplement parameter understanding at all, but since the baseline for high schema coverage is 3, this score is appropriate. The description's single sentence does not clarify any parameter relationships or defaults, but that is not its responsibility given the schema richness.

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

Purpose3/5

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

The description 'Discover services within a radius' conveys a nearby search concept, but it is too generic and does not specify that it operates on a center coordinate and radius, nor does it differentiate from sibling tools like tomtom-poi-search or tomtom-fuzzy-search. The verb 'discover' and resource 'services' are present, but the lack of specificity about the exact resource type (e.g., POIs, charging stations) and the lack of comparison to alternatives make it only minimally clear.

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?

The description provides no guidance on when to use this tool versus alternatives. It does not mention that it is appropriate when coordinates are known and the user wants nearby results, nor does it explicitly contrast with tomtom-geocode, tomtom-poi-search, or tomtom-fuzzy-search. An agent would have to infer usage solely from the schema, which lacks contextual routing advice.

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

tomtom-reachable-rangeTomTom Reachable RangeB
Read-onlyIdempotent

Determine the area reachable within a specified time or driving distance

ParametersJSON Schema
NameRequiredDescriptionDefault
avoidNoRoute features to avoid. May increase travel time. Options: 'tollRoads','motorways','ferries','unpavedRoads','carpools','alreadyUsedRoads'. Accepts array of string(s).
originYesStarting point for reachable area calculation. Typically current location or point of interest.
reportNoSpecifies which data should be reported for diagnostic purposes. A possible value is: effectiveSettings. Reports the effective parameters or data used when calling the API. In the case of defaulted parameters, the default will be reflected where the parameter was not specified by the caller. Default value: effectiveSettings
trafficNoInclude real-time traffic data for more accurate reachable area calculation.
departAtNoDeparture time in ISO format (e.g., '2025-06-24T14:30:00Z').
hillinessNoPreference for avoiding hills. Use 'low' for flatter routes. This can be only used when `routeType` parameter is set to `thrilling`.
routeTypeNoRoute optimization: 'fastest' (time-optimized), 'shortest' (distance-optimized), 'eco' (fuel-efficient).
travelModeNoTravel mode affects reachable area shape. Default: 'car'. Note: Pedestrian/bicycle modes not supported by API.
windingnessNoPreference for avoiding winding roads. Use 'low' for straighter routes. This can be only used when `routeType` parameter is set to `thrilling`.
vehicleWidthNoVehicle width in meters. Used to avoid narrow roads.
vehicleHeightNoVehicle height in meters. Used to avoid low bridges.
vehicleLengthNoVehicle length in meters. Affects maneuverability restrictions.
vehicleWeightNoVehicle weight in kg. Important for truck routing restrictions.
maxChargeInkWhNoMaximum EV battery capacity in kWh. Required for EV routing.
response_detailNoResponse detail level. 'compact' (default): returns center point only, boundary coordinates are trimmed — the MCP App still renders the full reachable range polygon. 'full': includes boundary coordinates in the response, use this when you need to plot or process the boundary data yourself.compact
timeBudgetInSecNoMaximum travel time in seconds. Examples: 900 (15min), 1800 (30min), 3600 (1h). Use ONLY ONE budget parameter — do not combine with other budget types.
vehicleLoadTypeNoCargo type for hazardous materials routing.
vehicleMaxSpeedNoMaximum vehicle speed in km/h for commercial routing.
uphillEfficiencyNoEfficiency during uphill driving (0-1).
energyBudgetInkWhNoMaximum energy budget in kWh for electric vehicles. Example: 10 (10 kWh). REQUIRED companions: vehicleEngineType='electric', constantSpeedConsumptionInkWhPerHundredkm, currentChargeInkWh, maxChargeInkWh. Use ONLY ONE budget parameter — do not combine with other budget types.
vehicleAxleWeightNoVehicle axle weight in kg for weight-restricted roads.
vehicleCommercialNoCommercial vehicle flag. Affects road access restrictions.
vehicleEngineTypeNoEngine type for fuel/energy consumption calculation.
auxiliaryPowerInkWNoAuxiliary power consumption in kW for electric vehicles.
chargeMarginsInkWhNoComma-separated charge margins in kWh for route planning.
currentChargeInkWhNoCurrent EV battery charge in kWh. Required for EV routing.
downhillEfficiencyNoEfficiency during downhill driving (0-1).
fuelBudgetInLitersNoMaximum fuel budget in liters for combustion vehicles. Example: 5 (5 liters). REQUIRED companions: vehicleEngineType='combustion' and constantSpeedConsumptionInLitersPerHundredkm (e.g. '50,6.5:130,11.5'). Use ONLY ONE budget parameter — do not combine with other budget types.
currentFuelInLitersNoCurrent fuel level in liters for combustion vehicles.
vehicleNumberOfAxlesNoNumber of axles on the vehicle. Used for toll calculations and restrictions.
accelerationEfficiencyNoEfficiency during acceleration (0-1).
decelerationEfficiencyNoEfficiency during deceleration (0-1).
distanceBudgetInMetersNoMaximum travel distance in meters. Examples: 5000 (5km), 10000 (10km), 20000 (20km). Use ONLY ONE budget parameter — do not combine with other budget types.
maxFerryLengthInMetersNoMaximum allowed ferry length in meters.
auxiliaryPowerInLitersPerHourNoAuxiliary power consumption for combustion vehicles in L/hr.
vehicleAdrTunnelRestrictionCodeNoADR tunnel restriction code for hazardous materials.
consumptionInkWhPerkmAltitudeGainNoEnergy used per km of altitude gain.
fuelEnergyDensityInMJoulesPerLiterNoFuel energy density in megajoules per liter.
recuperationInkWhPerkmAltitudeLossNoEnergy recovered per km of altitude loss.
constantSpeedConsumptionInkWhPerHundredkmNoEV speed-to-consumption mappings format: '50,8.2:130,21.3' (speed in km/h, consumption in kWh/100km).
constantSpeedConsumptionInLitersPerHundredkmNoCombustion speed-to-consumption mappings: '50,6.3:130,11.5' (speed in km/h, consumption in L/100km).

TDQS

B3.2/5.0
Behavior3/5

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

Annotations are rich (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the bar is lower. The description 'determine the area reachable' is consistent with a read-only operation and doesn't contradict the annotations. However, it adds essentially no behavioral context beyond what the annotations already declare — no mention of response format, boundaries, or calculation characteristics.

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

Conciseness4/5

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

A single, front-loaded sentence with no wasted words — efficient and to the point. It's appropriately terse for a tool whose schema carries all the parameter documentation, though it could arguably add one clause about scope without becoming verbose.

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?

Given the tool's complexity (41 parameters, no output schema), the one-sentence description is minimal. The schema compensates well by documenting every parameter including budget exclusivity and required companions. However, the description doesn't mention that origin is required or that exactly one budget parameter must be supplied — important usage constraints an agent would benefit from knowing up front.

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 description coverage is 100% and the schema itself documents all 41 parameters thoroughly, including critical constraints like 'Use ONLY ONE budget parameter — do not combine with other budget types' and 'REQUIRED companions' for energy/fuel budgets. With full schema coverage, baseline 3 applies and the description correctly adds no redundant param info.

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?

The description 'Determine the area reachable within a specified time or driving distance' states a specific verb (determine) and resource (area reachable), clearly conveying the isochrone/reachability concept. However, it doesn't differentiate itself from routing siblings like tomtom-routing or tomtom-waypoint-routing, which could also involve travel time/distance — so it's clear but not distinct.

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?

No guidance on when to use this tool versus alternatives. It never mentions that this is for area-based reachability (isochrones) rather than point-to-point routing, nor names any sibling as an alternative. The 'specified time or driving distance' phrasing could even confuse an agent into choosing this over tomtom-routing.

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

tomtom-reverse-geocodeTomTom Reverse GeocodeA
Read-onlyIdempotent

Convert coordinates to addresses

ParametersJSON Schema
NameRequiredDescriptionDefault
latYesLatitude coordinate (-90 to +90). Precision to 4+ decimal places recommended.
lonYesLongitude coordinate (-180 to +180). Precision to 4+ decimal places recommended.
ofsNoOffset for pagination of results
viewNoGeopolitical view for disputed territories. Options: 'Unified', 'AR', 'IL', 'IN', 'MA', 'PK', 'RU', 'TR', 'CN'
limitNoMaximum number of results to return (1-100). Default: 5
radiusNoSearch radius in meters. Default: 100
headingNoHeading direction in degrees (0-360) for improved accuracy on roads
roadUseNoTypes of road use to include in the results. Examples: 'Arterial', 'Ferry', 'Highway', etc.
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). Accepts array of string(s).
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
countrySetNoLimit results to specific countries using ISO codes. Examples: 'US', 'FR,GB', 'CA,US'
geometriesNoInclude geometries information in the response
maxResultsNoMaximum results to return (alias for limit)
addressRangesNoInclude address ranges in the response
entityTypeSetNoFilter 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
returnCommuneNoInclude commune information in the results
returnRoadUseNoInclude road use types for street level results
response_detailNoResponse detail level. 'compact' (default): trimmed response with essential fields only, saves tokens. 'full': complete API response with all fields including coordinates, classifications, etc.compact
returnMatchTypeNoInclude information about the type of geocoding match achieved
returnSpeedLimitNoInclude posted speed limit for street results
returnAddressNamesNoInclude address names in the response
allowFreeformNewLineNoAllow newlines in freeform addresses
extendedPostalCodesForNoInclude extended postal codes for specific index types. Examples: 'PAD', 'PAD,Addr', 'POI'
returnRoadAccessibilityNoInclude road accessibility information

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds no extra behavioral context, but it also does not contradict the annotations.

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

Conciseness4/5

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

The description is extremely concise and front-loaded with the main action. There is no redundant wording, though for a tool with 25 parameters a bit more orienting context could still be useful.

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?

The core input (coordinates) and output (addresses) are established, which supports a basic successful invocation. However, with no output schema and 25 optional parameters, the description lacks guidance on defaults, result shape, and optional response controls.

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 description coverage is 100% across all 25 parameters, so the schema already provides detailed parameter semantics. The description adds no parameter-specific meaning beyond the generic phrase 'coordinates'.

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?

The description names a specific transformation—'Convert coordinates to addresses'—so the tool's purpose is unambiguous. The direction (coordinates → addresses) clearly distinguishes it from sibling tomtom-geocode and other search tools.

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

Usage Guidelines3/5

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

The usage context is implied: use this when you have latitude/longitude and want an address. However, the description does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites.

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

tomtom-routingTomTom RoutingA
Read-onlyIdempotent

Calculate optimal routes between two locations. The primary tool for directions, routes, travel time, or distance between places (e.g. 'route from Amsterdam to Berlin', 'how long to drive from A to B'). Returns turn-by-turn directions, distance, travel time, and a map image. Multi-stop routes with 3+ waypoints are handled by tomtom-waypoint-routing; visualizing multiple routes or combining routes with markers/polygons on a single map image is handled by tomtom-dynamic-map.

ParametersJSON Schema
NameRequiredDescriptionDefault
avoidNoRoute features to avoid. May increase travel time. Options: 'tollRoads','motorways','ferries','unpavedRoads','carpools','alreadyUsedRoads'. Accepts array of string(s).
originYesStarting point coordinates. Obtain from geocoding for best results.
reportNoSpecifies which data should be reported for diagnostic purposes. A possible value is: `effectiveSettings`. Reports the effective parameters or data used when calling the API. In the case of defaulted parameters, the default will be reflected where the parameter was not specified by the caller. Default value: effectiveSettings
trafficNoInclude real-time traffic data for more accurate ETAs and route suggestions.
arriveAtNoArrival time in ISO format (e.g., '2025-06-24T17:00:00Z'). Cannot be used with departAt.
departAtNoDeparture time in ISO format (e.g., '2025-06-24T14:30:00Z'). Cannot be used with arriveAt.
languageNoLanguage code for instructions (e.g., 'en-US', 'de-DE').
hillinessNoPreference for avoiding hills. Use 'low' for flatter routes.
routeTypeNoRoute optimization: 'fastest' (time-optimized), 'shortest' (distance-optimized), 'eco' (fuel-efficient), 'thrilling' (scenic).
travelModeNoTransportation mode. Default: 'car'.
destinationYesDestination coordinates. Obtain from geocoding for best results.
sectionTypeNoHighlight specific road section types in response for route analysis: toll (toll roads), motorway (highways), tunnel, urban (city areas), country (rural areas), pedestrian (walking paths), etc.
windingnessNoPreference for avoiding winding roads. Use 'low' for straighter routes.
vehicleWidthNoVehicle width in meters. Used to avoid narrow roads.
vehicleHeightNoVehicle height in meters. Used to avoid low bridges.
vehicleLengthNoVehicle length in meters. Affects maneuverability restrictions.
vehicleWeightNoVehicle weight in kg. Important for truck routing restrictions.
maxChargeInkWhNoMaximum EV battery capacity in kWh. Required for EV routing.
vehicleHeadingNoHeading of the vehicle in degrees (0-359) for more accurate initial routing.
alternativeTypeNoWhen maxAlternatives is greater than 0, it allows the definition of computing alternative routes: finding routes that are significantly different from the reference route, or finding routes that are better than the reference route. Possible values are: `anyRoute` (returns alternative routes that are significantly different from the reference route.), `betterRoute` (only returns alternative routes that are better than the reference route, according to the given planning criteria (set by routeType). If there is a road block on the reference route, then any alternative that does not contain any blockages will be considered a better route. The summary in the route response will contain information (see the planningReason parameter) about the reason for the better alternative.) Note: The betterRoute value can only be used when reconstructing a reference route. Default value: `anyRoute` Other values: `betterRoute`
maxAlternativesNoNumber of alternative routes (0-5). More alternatives = more options but larger response.
response_detailNoResponse detail level. 'compact' (default): trimmed response with essential fields only, saves tokens. 'full': complete API response with all fields including coordinates, classifications, etc.compact
vehicleLoadTypeNoCargo type for hazardous materials routing.
vehicleMaxSpeedNoMaximum vehicle speed in km/h for commercial routing.
computeBestOrderNoReorder waypoints for optimization. Use with multiple waypoints to find the most efficient route order.
instructionsTypeNoInstruction format: 'text' (human-readable), 'coded' (machine-readable), 'tagged' (HTML).
supportingPointsNoAdditional coordinates that influence the route shape without being stops (format: 'lat,lon;lat,lon').
uphillEfficiencyNoEfficiency during uphill driving (0-1).
vehicleAxleWeightNoVehicle axle weight in kg for weight-restricted roads.
vehicleCommercialNoCommercial vehicle flag. Affects road access restrictions.
vehicleEngineTypeNoEngine type for fuel/energy consumption calculation.
auxiliaryPowerInkWNoAuxiliary power consumption in kW for electric vehicles.
chargeMarginsInkWhNoComma-separated charge margins in kWh for route planning.
currentChargeInkWhNoCurrent EV battery charge in kWh. Required for EV routing.
downhillEfficiencyNoEfficiency during downhill driving (0-1).
currentFuelInLitersNoCurrent fuel level in liters for combustion vehicles.
routeRepresentationNoRepresentation of routes in response: 'polyline' (default, includes points), 'encodedPolyline' (compressed format), 'summaryOnly' (no points), 'none' (with computeBestOrder only). It cannot be used when `maxAlternatives` is set
computeTravelTimeForNoCalculate travel times for all segments ('all') or none ('none').
vehicleNumberOfAxlesNoNumber of axles on the vehicle. Used for toll calculations and restrictions.
accelerationEfficiencyNoEfficiency during acceleration (0-1).
decelerationEfficiencyNoEfficiency during deceleration (0-1).
includeTollPaymentTypesNoInclude toll payment types in the toll section. If a toll section has different toll payment types in its subsections, this toll section is split into multiple toll sections with the toll payment types. Possible values: all(Include toll payment types in the toll section.), none (Do not include toll payment types in the toll section). The value `all` must be used together with sectionType=toll. Default value: none
extendedRouteRepresentationNoAdditional routing data formats to include in the response.
auxiliaryPowerInLitersPerHourNoAuxiliary power consumption for combustion vehicles in L/hr.
vehicleAdrTunnelRestrictionCodeNoADR tunnel restriction code for hazardous materials.
consumptionInkWhPerkmAltitudeGainNoEnergy used per km of altitude gain.
fuelEnergyDensityInMJoulesPerLiterNoFuel energy density in megajoules per liter.
recuperationInkWhPerkmAltitudeLossNoEnergy recovered per km of altitude loss.
constantSpeedConsumptionInkWhPerHundredkmNoEV speed-to-consumption mappings format: '50,8.2:130,21.3' (speed in km/h, consumption in kWh/100km).
constantSpeedConsumptionInLitersPerHundredkmNoCombustion speed-to-consumption mappings: '50,6.3:130,11.5' (speed in km/h, consumption in L/100km).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral detail beyond annotations: it returns turn-by-turn directions, distance, travel time, and a map image, which matters because there is no output schema. This is meaningful but not exhaustive given the tool's large parameter space.

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

Conciseness4/5

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

The description is compact and front-loaded, starting with the core purpose, then use cases and return values, and ending with sibling routing. Every sentence earns its place, and the examples make intent concrete. It is not maximally lean due to some redundancy between 'primary tool for directions/routes' and 'calculate optimal routes,' but it is efficient overall.

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?

For a highly complex 50-parameter tool with no output schema, the description covers the essential selection criteria: what the tool does, what it returns, and when to route to siblings. It does not explicitly instruct the agent to geocode place names into lat/lon coordinates first, though the schema does say this. Overall the description is complete enough for an agent to invoke it correctly for basic and moderate routing requests.

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 description coverage is 100%, so the baseline is 3; the schema documents all 50 parameters in detail. The description adds little parameter-level meaning, only examples like 'route from Amsterdam to Berlin' that imply place-name inputs even though origin and destination are coordinate objects. It neither contradicts the schema nor substantially enriches it beyond the baseline.

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?

The description states a specific verb and resource: 'Calculate optimal routes between two locations,' and frames it as 'the primary tool for directions, routes, travel time, or distance between places.' It clearly distinguishes itself from tomtom-waypoint-routing and tomtom-dynamic-map, so an agent can separate it from siblings without opening schemas.

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?

Explicitly names alternative tools and the conditions for using them: 'Multi-stop routes with 3+ waypoints are handled by tomtom-waypoint-routing' and 'visualizing multiple routes or combining routes with markers/polygons on a single map image is handled by tomtom-dynamic-map.' This gives clear when-to-use and when-not-to-use guidance.

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

tomtom-static-mapTomTom Static MapB
Read-onlyIdempotent

Generate custom map images from TomTom Maps with specified center coordinates, zoom levels, and style options

ParametersJSON Schema
NameRequiredDescriptionDefault
bboxNoBounding box in format [west, south, east, north]. Alternative to center+zoom. Example: [-122.42, 37.77, -122.40, 37.79] for part of San Francisco.
viewNoGeopolitical view for border disputes and territories. 'Unified' is the international standard view.
zoomNoZoom level (0-22). Examples: 3 (continent), 6 (country), 10 (city), 15 (neighborhood), 18 (street). Default: 15.
layerNoMap layer type: 'basic' (streets), 'labels' (text only, transparent background), 'hybrid' (satellite with labels).
styleNoMap style: 'main' (default daytime), 'night' (dark theme).
widthNoMap width in pixels (50-2048). Examples: 300-500 (preview), 800-1200 (detailed). Default: 512.
centerYesMap center coordinates. Use results from geocoding or search operations for best positioning.
formatNoImage format: 'png' (better quality, supports transparency), 'jpg' (smaller file size).
heightNoMap height in pixels (50-2048). Examples: 300-500 (preview), 800-1200 (detailed). Default: 512.
languageNoLanguage for map labels (IETF language tag). Examples: 'en-US', 'es-ES', 'fr-FR'.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds that it generates images but doesn't disclose details like rate limits, image size limits beyond schema, or behavior when both bbox and center are provided. It doesn't contradict annotations.

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

Conciseness4/5

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

The description is a single concise sentence that front-loads the core purpose. It's efficient and doesn't waste words, though it could benefit from a brief usage note.

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?

For a tool with 10 parameters and no output schema, the description is adequate but not complete. The schema covers parameters well, but the description doesn't explain return values (image format details), potential conflicts between bbox and center, or when to prefer this over tomtom-dynamic-map. The annotations cover safety, but behavioral context is thin.

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 description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds a general overview but doesn't provide additional meaning beyond what the schema already covers. Baseline 3 is appropriate since the schema does the heavy lifting.

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?

The description clearly states the tool's function: generating custom map images from TomTom Maps with center coordinates, zoom levels, and style options. It distinguishes it from sibling tools like geocoding or routing, though it doesn't explicitly differentiate from the closely related tomtom-dynamic-map sibling.

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

Usage Guidelines3/5

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

The description implies usage for generating static map images but provides no explicit guidance on when to choose this tool over tomtom-dynamic-map or other alternatives. The parameter descriptions offer some context (e.g., using geocoding results for center), but there's no direct when-to-use or when-not-to-use guidance.

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

tomtom-trafficTomTom TrafficA
Read-onlyIdempotent

Find and display traffic incidents in an area. The primary tool for questions about traffic, accidents, road closures, congestion, or dangerous road conditions. Returns detailed incident data including severity, description, delay, and affected roads. Provides complete traffic incident data on its own; plotting incidents as markers with tomtom-dynamic-map is not needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
bboxNoBounding box for traffic area: 'minLon,minLat,maxLon,maxLat'. Example: '-74.02,40.70,-73.96,40.80' for lower Manhattan. Use smaller areas for better results.
languageNoLanguage for incident descriptions: 'en-GB', 'de-DE', 'fr-FR', 'es-ES'. Default: 'en-GB'.
maxResultsNoMaximum incidents to return (1-1000). Default: 100. Use 10-20 for readability in high-traffic areas. When more incidents match, the most severe are returned and the response includes an incidentSummary with full totals.
categoryFilterNoFilter by incident categories (comma-separated): '0' (Accident), '1' (Fog), '2' (Dangerous Conditions), '3' (Rain), '4' (Ice), '5' (Lane Restrictions), '6' (Lane Closure), '7' (Road Closure), '8' (Road Works), '9' (Wind), '10' (Flooding), '11' (Detour), '14' (Cluster).
response_detailNoResponse detail level. 'compact' (default): trimmed response with essential fields only, saves tokens. 'full': complete API response with all fields including coordinates, classifications, etc.compact
timeValidityFilterNoTime validity filter: 'present' (current), 'future' (upcoming). Default: 'present'.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds valuable behavioral context beyond that: it specifies the return content ('severity, description, delay, and affected roads') and asserts self-sufficiency ('Provides complete traffic incident data on its own'), which informs the agent about output expectations without contradicting any annotation.

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?

The description is four sentences, each earning its place: purpose, usage context, return data, and an explicit exclusion. It is front-loaded with the primary function and avoids redundancy, making it efficient and scannable for an agent.

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

Completeness5/5

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

With no output schema, the description compensates by naming key return fields (severity, description, delay, affected roads). It also clarifies that the tool returns complete data on its own, eliminating the need for a mapping tool. All six parameters are fully documented in the schema, and annotations cover safety, so nothing an agent needs to call it correctly is missing.

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 description coverage is 100% with detailed per-parameter explanations (e.g., bbox example, maxResults bounds and default, categoryFilter enumeration). The description itself adds no parameter-specific meaning, but since the schema already carries the full burden, the baseline score of 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?

The description opens with a specific verb-resource pair: 'Find and display traffic incidents in an area.' It further differentiates itself as 'The primary tool for questions about traffic, accidents, road closures, congestion, or dangerous road conditions' and explicitly states that plotting with tomtom-dynamic-map is not needed, making its scope and identity unmistakable.

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?

The description provides explicit when-to-use guidance: it is the primary tool for all traffic-related queries, enumerating example scenarios. It also gives a clear when-not-to-use instruction by stating that tomtom-dynamic-map is not needed for plotting, effectively naming the alternative and the condition that excludes it.

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

tomtom-waypoint-routingTomTom Waypoint RoutingA
Read-onlyIdempotent

Plan multi-stop routes through 3 or more waypoints. Use when the user needs to visit multiple locations in sequence (e.g. 'route from A to B via C and D'). Returns optimized turn-by-turn directions, total distance, and travel time. For simple A-to-B routes, use tomtom-routing instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
avoidNoRoute features to avoid. May increase travel time. Options: 'tollRoads','motorways','ferries','unpavedRoads','carpools','alreadyUsedRoads'. Accepts array of string(s).
reportNoSpecifies which data should be reported for diagnostic purposes. A possible value is: `effectiveSettings`. Reports the effective parameters or data used when calling the API. In the case of defaulted parameters, the default will be reflected where the parameter was not specified by the caller. Default value: effectiveSettings
trafficNoInclude real-time traffic data for more accurate ETAs and route suggestions.
arriveAtNoArrival time in ISO format (e.g., '2025-06-24T17:00:00Z'). Cannot be used with departAt.
departAtNoDeparture time in ISO format (e.g., '2025-06-24T14:30:00Z'). Cannot be used with arriveAt.
languageNoLanguage code for instructions (e.g., 'en-US', 'de-DE').
hillinessNoPreference for avoiding hills. Use 'low' for flatter routes.
routeTypeNoRoute optimization: 'fastest' (time-optimized), 'shortest' (distance-optimized), 'eco' (fuel-efficient), 'thrilling' (scenic).
waypointsYesOrdered array of waypoint coordinates (minimum 2). Route calculated in exact sequence provided. Use geocoding for accurate coordinates.
travelModeNoTransportation mode. Default: 'car'.
sectionTypeNoRoad section types to highlight for route analysis. Options: toll (toll roads), motorway (highways), tunnel, urban (city areas), country (rural areas), pedestrian (walking paths), traffic (traffic incidents), toll_road, ferry, travel_mode, important_road_stretch. Accepts array of string(s).
windingnessNoPreference for avoiding winding roads. Use 'low' for straighter routes.
vehicleWidthNoVehicle width in meters. Used to avoid narrow roads.
vehicleHeightNoVehicle height in meters. Used to avoid low bridges.
vehicleLengthNoVehicle length in meters. Affects maneuverability restrictions.
vehicleWeightNoVehicle weight in kg. Important for truck routing restrictions.
maxChargeInkWhNoMaximum EV battery capacity in kWh. Required for EV routing.
vehicleHeadingNoHeading of the vehicle in degrees (0-359) for more accurate initial routing.
alternativeTypeNoWhen maxAlternatives is greater than 0, it allows the definition of computing alternative routes: finding routes that are significantly different from the reference route, or finding routes that are better than the reference route. Possible values are: `anyRoute` (returns alternative routes that are significantly different from the reference route.), `betterRoute` (only returns alternative routes that are better than the reference route, according to the given planning criteria (set by routeType). If there is a road block on the reference route, then any alternative that does not contain any blockages will be considered a better route. The summary in the route response will contain information (see the planningReason parameter) about the reason for the better alternative.) Note: The betterRoute value can only be used when reconstructing a reference route. Default value: `anyRoute` Other values: `betterRoute`
maxAlternativesNoNumber of alternative routes (0-5). More alternatives = more options but larger response.
response_detailNoResponse detail level. 'compact' (default): trimmed response with essential fields only, saves tokens. 'full': complete API response with all fields including coordinates, classifications, etc.compact
vehicleLoadTypeNoCargo type for hazardous materials routing.
vehicleMaxSpeedNoMaximum vehicle speed in km/h for commercial routing.
computeBestOrderNoReorder waypoints for optimization. Use with multiple waypoints to find the most efficient route order.
instructionsTypeNoInstruction format: 'text' (human-readable), 'coded' (machine-readable), 'tagged' (HTML).
supportingPointsNoAdditional coordinates that influence the route shape without being stops (format: 'lat,lon;lat,lon').
uphillEfficiencyNoEfficiency during uphill driving (0-1).
vehicleAxleWeightNoVehicle axle weight in kg for weight-restricted roads.
vehicleCommercialNoCommercial vehicle flag. Affects road access restrictions.
vehicleEngineTypeNoEngine type for fuel/energy consumption calculation.
auxiliaryPowerInkWNoAuxiliary power consumption in kW for electric vehicles.
chargeMarginsInkWhNoComma-separated charge margins in kWh for route planning.
currentChargeInkWhNoCurrent EV battery charge in kWh. Required for EV routing.
downhillEfficiencyNoEfficiency during downhill driving (0-1).
currentFuelInLitersNoCurrent fuel level in liters for combustion vehicles.
routeRepresentationNoRepresentation of routes in response: 'polyline' (default, includes points), 'encodedPolyline' (compressed format), 'summaryOnly' (no points), 'none' (with computeBestOrder only). It cannot be used when `maxAlternatives` is set
computeTravelTimeForNoCalculate travel times for all segments ('all') or none ('none').
vehicleNumberOfAxlesNoNumber of axles on the vehicle. Used for toll calculations and restrictions.
accelerationEfficiencyNoEfficiency during acceleration (0-1).
decelerationEfficiencyNoEfficiency during deceleration (0-1).
includeTollPaymentTypesNoInclude toll payment types in the toll section. If a toll section has different toll payment types in its subsections, this toll section is split into multiple toll sections with the toll payment types. Possible values: all(Include toll payment types in the toll section.), none (Do not include toll payment types in the toll section). The value `all` must be used together with sectionType=toll. Default value: none
extendedRouteRepresentationNoAdditional routing data formats to include in the response.
auxiliaryPowerInLitersPerHourNoAuxiliary power consumption for combustion vehicles in L/hr.
vehicleAdrTunnelRestrictionCodeNoADR tunnel restriction code for hazardous materials.
consumptionInkWhPerkmAltitudeGainNoEnergy used per km of altitude gain.
fuelEnergyDensityInMJoulesPerLiterNoFuel energy density in megajoules per liter.
recuperationInkWhPerkmAltitudeLossNoEnergy recovered per km of altitude loss.
constantSpeedConsumptionInkWhPerHundredkmNoEV speed-to-consumption mappings format: '50,8.2:130,21.3' (speed in km/h, consumption in kWh/100km).
constantSpeedConsumptionInLitersPerHundredkmNoCombustion speed-to-consumption mappings: '50,6.3:130,11.5' (speed in km/h, consumption in L/100km).

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that it 'returns optimized turn-by-turn directions, total distance, and travel time,' which is useful. However, there is a minor inconsistency: the description says '3 or more waypoints' while the schema allows minItems=2, which could mislead an agent. No contradiction with annotations, but the added behavioral context is modest.

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?

Three sentences with no filler. The primary use case and the key differentiator are front-loaded, and the alternative is named concisely. Every word earns its place.

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?

For a complex tool with 49 parameters, the description adequately covers the core use case and return fields, while the schema handles parameter specifics. It does not mention ordered waypoints or the computeBestOrder option, but those are in the schema. Given annotations and rich schema, nothing critical is missing for an agent to call it correctly.

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 description coverage is 100%, so the schema already documents all 49 parameters in detail. The description only mentions 'waypoints' generically and does not add syntax, ordering, or constraint nuances beyond what the schema provides. Baseline 3 is appropriate since schema does the heavy lifting.

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?

The description states a specific verb and resource: 'Plan multi-stop routes through 3 or more waypoints.' It clearly distinguishes itself from the sibling 'tomtom-routing' by specifying the multi-stop scenario, so an agent can tell them apart without opening the 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?

It explicitly says 'Use when the user needs to visit multiple locations in sequence' and directs to 'tomtom-routing' for simple A-to-B routes. This gives clear when-to-use and when-not-to-use guidance, naming the alternative tool.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 14 tool updatesv1.6.8
    • Addedtomtom-dynamic-map
    • Changedtomtom-fuzzy-search8 fields changed
      • 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"
        -}
    • Changedtomtom-geocode3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / entityTypeSet / description
        Previous value: -"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"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"
        +}
    • Addedtomtom-get-api-key
    • Addedtomtom-get-app-config
    • Addedtomtom-get-viz-data
    • Changedtomtom-nearby5 fields changed
      • 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"
        -}
    • Changedtomtom-poi-search7 fields changed
      • 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)"
      • 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"
      • changedInput schema / properties / query / description
        Previous value: -"Specific POI category search. Best for finding types of businesses: 'restaurants', 'gas stations', 'hotels', 'parking', 'ATMs', 'hospitals'"New value: +"Name of the POI to search for. If the intended query is a POI category like 'restaurant', provide an empty string for this param and use the category filter parameter to apply the desired category filter."
      • 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"
        -}
    • Changedtomtom-reachable-range7 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / distanceBudgetInMeters / description
        Previous value: -"Maximum travel distance in meters. Examples: 5000 (5km), 10000 (10km), 20000 (20km). Either time or distance budget required."New value: +"Maximum travel distance in meters. Examples: 5000 (5km), 10000 (10km), 20000 (20km). Use ONLY ONE budget parameter — do not combine with other budget types."
      • changedInput schema / properties / energyBudgetInkWh / description
        Previous value: -"Maximum energy budget in kWh for electric vehicles. Example: 10 (10 kWh)."New value: +"Maximum energy budget in kWh for electric vehicles. Example: 10 (10 kWh). REQUIRED companions: vehicleEngineType='electric', constantSpeedConsumptionInkWhPerHundredkm, currentChargeInkWh, maxChargeInkWh. Use ONLY ONE budget parameter — do not combine with other budget types."
      • changedInput schema / properties / fuelBudgetInLiters / description
        Previous value: -"Maximum fuel budget in liters for combustion vehicles. Example: 5 (5 liters)."New value: +"Maximum fuel budget in liters for combustion vehicles. Example: 5 (5 liters). REQUIRED companions: vehicleEngineType='combustion' and constantSpeedConsumptionInLitersPerHundredkm (e.g. '50,6.5:130,11.5'). Use ONLY ONE budget parameter — do not combine with other budget types."
      • removedInput schema / properties / origin / additionalProperties
        Removed value: -false
      • addedInput schema / properties / response_detail
        Added value: +{
        +  "default": "compact",
        +  "description": "Response detail level. 'compact' (default): returns center point only, boundary coordinates are trimmed — the MCP App still renders the full reachable range polygon. 'full': includes boundary coordinates in the response, use this when you need to plot or process the boundary data yourself.",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / timeBudgetInSec / description
        Previous value: -"Maximum travel time in seconds. Examples: 900 (15min), 1800 (30min), 3600 (1h). Either time or distance budget required."New value: +"Maximum travel time in seconds. Examples: 900 (15min), 1800 (30min), 3600 (1h). Use ONLY ONE budget parameter — do not combine with other budget types."
    • Changedtomtom-reverse-geocode3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / entityTypeSet / description
        Previous value: -"Filter by entity types: 'Country', 'Municipality', etc."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"
        +}
    • Changedtomtom-routing10 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / destination / additionalProperties
        Removed value: -false
      • removedInput schema / properties / destination / properties / lat / $ref
        Removed value: -"#/properties/origin/properties/lat"
      • addedInput schema / properties / destination / properties / lat / description
        Added value: +"Latitude coordinate (-90 to +90). Use precise coordinates from geocoding for best results."
      • addedInput schema / properties / destination / properties / lat / type
        Added value: +"number"
      • removedInput schema / properties / destination / properties / lon / $ref
        Removed value: -"#/properties/origin/properties/lon"
      • addedInput schema / properties / destination / properties / lon / description
        Added value: +"Longitude coordinate (-180 to +180). Use precise coordinates from geocoding for best results."
      • addedInput schema / properties / destination / properties / lon / type
        Added value: +"number"
      • removedInput schema / properties / origin / additionalProperties
        Removed value: -false
      • 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"
        +}
    • Changedtomtom-static-map2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / center / additionalProperties
        Removed value: -false
    • Changedtomtom-traffic8 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / incidentTypes
        Removed value: -{
        -  "description": "Filter by incident types (comma-separated): '0' (Accident), '1' (Fog), '4' (Ice), '5' (Lane Restrictions), '7' (Closure), '8' (Roadworks).",
        -  "type": "string"
        -}
      • changedInput schema / properties / language / description
        Previous value: -"Language for incident descriptions: 'en-US', 'de-DE', 'fr-FR', 'es-ES'. Default: 'en-US'."New value: +"Language for incident descriptions: 'en-GB', 'de-DE', 'fr-FR', 'es-ES'. Default: 'en-GB'."
      • changedInput schema / properties / maxResults / description
        Previous value: -"Maximum incidents to return (1-1000). Use 10-20 for readability in high-traffic areas."New value: +"Maximum incidents to return (1-1000). Default: 100. Use 10-20 for readability in high-traffic areas. When more incidents match, the most severe are returned and the response includes an incidentSummary with full totals."
      • 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 / t
        Removed value: -{
        -  "description": "Unix Timestamp in seconds for traffic model. Use current time if not provided.",
        -  "type": "number"
        -}
      • removedInput schema / properties / timeFilter
        Removed value: -{
        -  "description": "Time validity filter: 'present' (current), 'future' (upcoming), 'all' (both). Default: 'present'.",
        -  "enum": [
        -    "present",
        -    "future"
        -  ],
        -  "type": "string"
        -}
      • addedInput schema / properties / timeValidityFilter
        Added value: +{
        +  "description": "Time validity filter: 'present' (current), 'future' (upcoming). Default: 'present'.",
        +  "enum": [
        +    "present",
        +    "future"
        +  ],
        +  "type": "string"
        +}
    • Changedtomtom-waypoint-routing3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • 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 / waypoints / items / additionalProperties
        Removed value: -false
  2. 10 tool updatesv1.0.0
    • First observedtomtom-fuzzy-search
    • First observedtomtom-geocode
    • First observedtomtom-nearby
    • First observedtomtom-poi-search
    • First observedtomtom-reachable-range
    • First observedtomtom-reverse-geocode
    • First observedtomtom-routing
    • First observedtomtom-static-map
    • First observedtomtom-traffic
    • First observedtomtom-waypoint-routing

TDQS

A3.5/5.0

Scored across 14 tools

Disambiguation4/5

Most tools are clearly separated by purpose, with routing vs. waypoint-routing and static-map vs. dynamic-map explicitly disambiguated. Some overlap exists among fuzzy-search, geocode, and poi-search, but the descriptions provide enough contextual boundaries to guide correct selection.

Naming Consistency4/5

All tools share a consistent tomtom- prefix and lowercase hyphenated style, which makes the set predictable. Verb forms vary across geocode, search, routing, and nearby, so it is not a strict verb_noun pattern, but the deviations are minor and readable.

Tool Count5/5

Fourteen tools is within the ideal scope for a mapping, search, routing, traffic, and visualization server. Each tool covers a distinct operational area, and the three internal tools serve a clear supporting role for apps using the server.

Completeness5/5

The server provides strong coverage of the core mapping domain: forward and reverse geocoding, fuzzy and category search, nearby discovery, simple and multi-stop routing, reachable range, traffic, and map rendering. There are no obvious dead ends for typical user requests involving locations, directions, traffic, or map images.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers