Skip to main content
Glama
tomtom-international

TomTom MCP Server

Official

TomTom Dynamic Map

tomtom-dynamic-map
Read-onlyIdempotent

Render an interactive map with markers, drawn lines, polygons, and area overlays to visualize locations, highlight regions, or combine routes and map elements in a single view.

Instructions

Render an interactive map with markers, drawn lines, polygons, and area overlays. The map is drawn by the MCP app, so the visual requires a client that supports MCP apps. The caller gets back only a summary (the view, marker positions, route distance and time), never route lines or area outlines; tools whose response_detail offers 'geometry' return those as GeoJSON. 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), traffic incidents (tomtom-traffic), or large-dataset visualization like heatmaps/clusters/choropleth (tomtom-data-viz). 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 view.

Input 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). Without it the zoom fits the content (or the bbox). NOTE: Zoom levels 20+ are only useful for very small geographic areas.
widthNoMap viewport width in pixels (100-2048), used to fit the initial framing. DEFAULT: 600. EXAMPLE: 800 for standard display, 1200 for a wider view.
centerNoMap center coordinates. With 'zoom' it sets the view exactly; alone, the map centers here and zooms to fit the content. Ignored when 'bbox' is given. EXAMPLE: {lat: 52.3676, lon: 4.9041} for Amsterdam Central.
heightNoMap viewport height in pixels (100-2048), used to fit the initial framing. DEFAULT: 400. EXAMPLE: 600 for standard display, 900 for a taller view.
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_uiNoRender the map in the interactive MCP app (zoom, pan, click). The map is drawn by the app, so leaving this on is what makes the tool produce anything visual. Set to false only when the caller just wants the request acknowledged without a map. DEFAULT: true.
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. 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.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed19 schema fields changedv1.6.13
    • changedInput schema / properties / center / description
      Previous value: -"Map 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."New value: +"Map center coordinates. With 'zoom' it sets the view exactly; alone, the map centers here and zooms to fit the content. Ignored when 'bbox' is given. EXAMPLE: {lat: 52.3676, lon: 4.9041} for Amsterdam Central."
    • removedInput schema / properties / center / properties / label
      Removed value: -{
      -  "description": "Optional custom label for the map center. This label will only appear if the center point is also added to markers. EXAMPLE: 'Map Center'.",
      -  "type": "string"
      -}
    • removedInput schema / properties / detail
      Removed value: -{
      -  "default": "compact",
      -  "description": "Controls 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.",
      -  "enum": [
      -    "compact",
      -    "full"
      -  ],
      -  "type": "string"
      -}
    • changedInput schema / properties / height / description
      Previous value: -"Map 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."New value: +"Map viewport height in pixels (100-2048), used to fit the initial framing. DEFAULT: 400. EXAMPLE: 600 for standard display, 900 for a taller view."
    • removedInput schema / properties / routeInfoDetail
      Removed value: -{
      -  "description": "Level 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.",
      -  "enum": [
      -    "basic",
      -    "compact",
      -    "detailed",
      -    "distance-time"
      -  ],
      -  "type": "string"
      -}
    • changedInput schema / properties / routePlans / description
      Previous value: -"Array 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'}]."New value: +"Array 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. 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'}]."
    • addedInput schema / properties / routePlans / items / properties / avoid / items / enum
      Added value: +[
      +  "tollRoads",
      +  "motorways",
      +  "ferries",
      +  "unpavedRoads",
      +  "carpools",
      +  "alreadyUsedRoads",
      +  "borderCrossings",
      +  "tunnels",
      +  "carTrains",
      +  "lowEmissionZones"
      +]
    • changedInput schema / properties / routePlans / items / properties / destination / properties / lat / description
      Previous value: -"Latitude coordinate (-90 to +90). Use precise coordinates from geocoding for best results. EXAMPLE: 52.36 for Rijksmuseum."New value: +"Latitude coordinate (-90 to +90). Use precise coordinates from geocoding for best results. EXAMPLE: 52.3676 for Amsterdam Central Station."
    • changedInput schema / properties / routePlans / items / properties / destination / properties / lon / description
      Previous value: -"Longitude coordinate (-180 to +180). Use precise coordinates from geocoding for best results. EXAMPLE: 4.8852 for Rijksmuseum."New value: +"Longitude coordinate (-180 to +180). Use precise coordinates from geocoding for best results. EXAMPLE: 4.9041 for Amsterdam Central Station."
    • changedInput schema / properties / routePlans / items / properties / routeType / description
      Previous value: -"Route calculation strategy. DEFAULT: 'fastest'. EXAMPLE: 'shortest' for minimum distance."New value: +"Route calculation strategy: 'fast' (time-optimized), 'short' (distance-optimized), 'efficient' (fuel-efficient), 'thrilling' (scenic). DEFAULT: 'fast'."
    • changedInput schema / properties / routePlans / items / properties / routeType / enum
      Previous value: -[
      -  "fastest",
      -  "shortest",
      -  "eco",
      -  "thrilling"
      -]New value: +[
      +  "fast",
      +  "short",
      +  "efficient",
      +  "thrilling"
      +]
    • changedInput schema / properties / routePlans / items / properties / travelMode / description
      Previous value: -"Mode of transport. DEFAULT: 'car'. EXAMPLE: 'pedestrian' for walking routes."New value: +"Mode of transport. DEFAULT: 'car'. Only 'car' is supported."
    • changedInput schema / properties / routePlans / items / properties / travelMode / enum
      Previous value: -[
      -  "car",
      -  "truck",
      -  "bicycle",
      -  "pedestrian"
      -]New value: +[
      +  "car"
      +]
    • changedInput schema / properties / routes / items / properties / color / description
      Previous value: -"Route color in hex format (e.g., '#0066cc'). DEFAULT: system-defined color based on traffic conditions. EXAMPLE: '#FF0000' for red route, '#00FF00' for green route."New value: +"Route color in hex format (e.g., '#0066cc'). DEFAULT: '#007cbf'. EXAMPLE: '#FF0000' for red route, '#00FF00' for green route."
    • changedInput schema / properties / routes / items / properties / points / items / properties / label / description
      Previous value: -"Optional custom label for this location. If not provided, defaults will be used (e.g., 'Start', 'End', 'Waypoint 1'). EXAMPLE: 'Amsterdam Central' or 'First Stop'."New value: +"Optional custom label for this location. If not provided, defaults will be used (e.g., 'Start', 'End', 'Waypoint 1'). EXAMPLE: 'Amsterdam Central' or 'Coffee Stop'."
    • changedInput schema / properties / show_ui / default
      Previous value: -falseNew value: +true
    • changedInput schema / properties / show_ui / description
      Previous value: -"Enable 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."New value: +"Render the map in the interactive MCP app (zoom, pan, click). The map is drawn by the app, so leaving this on is what makes the tool produce anything visual. Set to false only when the caller just wants the request acknowledged without a map. DEFAULT: true."
    • changedInput schema / properties / width / description
      Previous value: -"Map 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."New value: +"Map viewport width in pixels (100-2048), used to fit the initial framing. DEFAULT: 600. EXAMPLE: 800 for standard display, 1200 for a wider view."
    • changedInput schema / properties / zoom / description
      Previous value: -"Zoom 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."New value: +"Zoom level (0-22). EXAMPLES: 3 (continent), 6 (country), 10 (city), 15 (neighborhood), 18 (street), 20-22 (building detail). Without it the zoom fits the content (or the bbox). NOTE: Zoom levels 20+ are only useful for very small geographic areas."
  2. Addedv1.6.8

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), yet the description adds crucial context annotations cannot: the map is rendered by the MCP app and requires an app-capable client, and the caller receives only a summary (view, positions, distance/time), not geometry. It even points to response_detail='geometry' on other tools for GeoJSON. The only minor omission is any note on error/fallback behavior when the client lacks app support.

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?

Front-loaded with the core purpose and the client-requirement caveat before the when-to-use guidance. Sentences are dense but each carries distinct information; the routePlans paragraph is slightly long relative to its weight but not wasteful.

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 an 11-parameter tool with nested objects and no output schema, the description correctly explains what the caller receives (a summary, not geometry) and why a client must support MCP apps. That covers the critical gaps; only minor edge cases like failure behavior for unsupported clients are unaddressed.

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 richly documented, example-laden parameters, so the schema carries parameter meaning and baseline 3 applies. The description does add conceptual distinctions (routes are straight lines, not road-following; routePlans computes real routes for combined views), but that is marginal added value over the already complete schema.

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?

Specific verb (render) plus resource (interactive map) and the exact element types supported (markers, lines, polygons, area overlays). It explicitly distinguishes itself from tomtom-routing, tomtom-traffic, and tomtom-data-viz by name, so an agent can route among 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?

States intended uses (showing locations, highlighting areas, combining elements in one view) and explicit exclusions for routing, traffic, and large-dataset visualization, each paired with the sibling tool to use instead. It also resolves the subtle routePlans-vs-tomtom-routing overlap with a clear condition.

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