Skip to main content
Glama
tomtom-international

TomTom MCP Server

Official

TomTom Traffic

tomtom-traffic
Read-onlyIdempotent

Find traffic incidents in any area, including accidents, road closures, congestion, and dangerous conditions, with severity, delay, and affected roads returned for each.

Instructions

Find traffic incidents in an area. The primary tool for questions about traffic, accidents, road closures, congestion, or dangerous road conditions. Returns severity, description, delay and affected roads for each incident. Incident locations are omitted unless response_detail is 'geometry'.

Input Schema

NameRequiredDescriptionDefault
bboxYesBounding box as [minLon, minLat, maxLon, maxLat] (GeoJSON convention). Example: [-74.02, 40.70, -73.96, 40.80] for lower Manhattan. Use smaller areas for better results.
show_uiNoRequest the interactive map widget. Only hosts that support MCP Apps render it. It adds no coordinates to the text response. Default: false
languageNoLanguage for incident descriptions: 'en-GB', 'de-DE', 'fr-FR', 'es-ES'. Default: 'en-GB'.
maxResultsNoMaximum number of incidents to return (1-1000). Default: 100. When more incidents match, the most severe are returned and the response includes an incidentSummary with full totals.
categoryFilterNoIncident categories to return. Default: all categories.
response_detailNoResponse detail level. 'compact' (default): essential fields and point coordinates, no geometry. 'geometry': compact plus a 'geometry' key holding a GeoJSON FeatureCollection ([lon, lat], at most 1,000 vertices per feature); use this to get coordinates to draw or process. 'full': the raw API response, lossless and many times larger.compact
timeValidityFilterNoWhich incidents to return by time: 'present' (happening now), 'future' (planned, e.g. road works). Default: ['present'].

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed17 schema fields changedv1.6.13
    • changedInput schema / properties / bbox / description
      Previous value: -"Bounding 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."New value: +"Bounding box as [minLon, minLat, maxLon, maxLat] (GeoJSON convention). Example: [-74.02, 40.70, -73.96, 40.80] for lower Manhattan. Use smaller areas for better results."
    • addedInput schema / properties / bbox / items
      Added value: +{
      +  "type": "number"
      +}
    • addedInput schema / properties / bbox / maxItems
      Added value: +4
    • addedInput schema / properties / bbox / minItems
      Added value: +4
    • changedInput schema / properties / bbox / type
      Previous value: -"string"New value: +"array"
    • changedInput schema / properties / categoryFilter / description
      Previous value: -"Filter 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)."New value: +"Incident categories to return. Default: all categories."
    • addedInput schema / properties / categoryFilter / items
      Added value: +{
      +  "enum": [
      +    "accident",
      +    "broken-down-vehicle",
      +    "danger",
      +    "flooding",
      +    "fog",
      +    "frost",
      +    "jam",
      +    "lane-closed",
      +    "other",
      +    "rain",
      +    "road-closed",
      +    "roadworks",
      +    "wind"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / categoryFilter / type
      Previous value: -"string"New value: +"array"
    • changedInput schema / properties / maxResults / description
      Previous 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."New value: +"Maximum number of incidents to return (1-1000). Default: 100. When more incidents match, the most severe are returned and the response includes an incidentSummary with full totals."
    • changedInput schema / properties / response_detail / description
      Previous value: -"Response detail level. 'compact' (default): trimmed response with essential fields only, saves tokens. 'full': complete API response with all fields including coordinates, classifications, etc."New value: +"Response detail level. 'compact' (default): essential fields and point coordinates, no geometry. 'geometry': compact plus a 'geometry' key holding a GeoJSON FeatureCollection ([lon, lat], at most 1,000 vertices per feature); use this to get coordinates to draw or process. 'full': the raw API response, lossless and many times larger."
    • changedInput schema / properties / response_detail / enum
      Previous value: -[
      -  "compact",
      -  "full"
      -]New value: +[
      +  "compact",
      +  "geometry",
      +  "full"
      +]
    • addedInput schema / properties / show_ui
      Added value: +{
      +  "default": false,
      +  "description": "Request the interactive map widget. Only hosts that support MCP Apps render it. It adds no coordinates to the text response. Default: false",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / timeValidityFilter / description
      Previous value: -"Time validity filter: 'present' (current), 'future' (upcoming). Default: 'present'."New value: +"Which incidents to return by time: 'present' (happening now), 'future' (planned, e.g. road works). Default: ['present']."
    • removedInput schema / properties / timeValidityFilter / enum
      Removed value: -[
      -  "present",
      -  "future"
      -]
    • addedInput schema / properties / timeValidityFilter / items
      Added value: +{
      +  "enum": [
      +    "present",
      +    "future"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / timeValidityFilter / type
      Previous value: -"string"New value: +"array"
    • addedInput schema / required
      Added value: +[
      +  "bbox"
      +]
  2. Changed8 schema fields changedv1.6.8
    • 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"
      +}
  3. First observedv1.0.0

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so safety is covered. The description adds real value by naming the returned incident fields and, importantly, warning that incident locations are omitted unless response_detail is 'geometry' – a non-obvious behavior. It omits auth/rate-limit and pagination behavior, so 3 is appropriate.

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 short sentences, front-loaded with the action and selection criteria, then the return shape and the one caveat. Every sentence carries distinct information with no redundancy.

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, the description usefully previews returned fields (severity, description, delay, affected roads) and explains the geometry caveat, which is enough for correct invocation. It does not address bounding-box sizing strategy or result-volume expectations beyond what the schema covers.

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

Parameters3/5

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

Schema coverage is 100% and each parameter carries a detailed description, so the schema does the heavy lifting. The description reinforces the response_detail/geometry dependency but adds no syntax or format detail beyond the schema, matching the baseline 3.

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

Purpose4/5

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

States a specific verb and resource ('Find traffic incidents in an area') and frames itself as the primary traffic tool, which clearly separates it from the geocoding, search, and routing siblings. It does not name an explicit alternative, so a 4 rather than a 5.

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?

Explicitly enumerates the question types that should route here ('traffic, accidents, road closures, congestion, or dangerous road conditions'), giving strong positive selection guidance. No when-not/exclusion guidance is given, which keeps it at 4.

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