TomTom Traffic Analytics MCP

Area Analytics Tools

Area Analytics Tools

Analyze traffic patterns across custom geographical areas over specific time periods. Define a region using a GeoJSON Polygon, choose your date range (up to 31 days), and query congestion levels, speeds, and travel times.

tomtom-area-analytics-stats

Retrieve area analytics statistics for a GeoJSON Polygon region within a 31-day period.

Parameters

ParameterTypeRequiredDescription
namestringYesName for the analysis report (1–250 characters)
startDatestringYesAnalysis start date (YYYY-MM-DD)
endDatestringYesAnalysis end date (YYYY-MM-DD). Must be within 31 days of startDate and at least 2 days before today
hoursnumber[]YesHours to analyze (0–23). Minimum 1, maximum 24
frcsnumber[]YesFunctional road classes (0–8). 0 = Motorway, 1 = Major, 2 = Other Major, 3 = Secondary, 4 = Local Connecting, 5 = Local High, 6 = Local, 7 = Local Minor, 8 = Other
dataTypesenum[]YesOne or more of: NETWORK_LENGTH, CONGESTION_LEVEL, FREE_FLOW_SPEED, TRAVEL_TIME, SPEED
featuresGeoJSON[]YesExactly 1 GeoJSON Feature with Polygon or MultiPolygon geometry
sql_queriesobjectYesNamed SQL queries (see SQL Filtering )

SQL Tables

timed_data: One row per time aggregation per region

ColumnTypeDescription
region_namestringRegion name from GeoJSON properties
timezonestringTimezone from GeoJSON properties
aggregation_typestringall, yearly, monthly, daily, or hourly
timestringTimestamp
speednumberSpeed
free_flow_speednumberFree flow speed
congestion_levelnumberCongestion level (0–100)
travel_timenumberTravel time in seconds
network_lengthnumberNetwork length

tiled_data: One row per spatial tile per region

ColumnTypeDescription
region_namestringRegion name from GeoJSON properties
latnumberTile latitude
lonnumberTile longitude
speednumberSpeed
free_flow_speednumberFree flow speed
congestion_levelnumberCongestion level (0–100)
travel_timenumberTravel time in seconds
network_lengthnumberNetwork length

Example SQL Queries

-- Daily congestion trend
SELECT time::DATE as day, ROUND(AVG(congestion_level), 2) as avg_congestion
FROM timed_data
WHERE aggregation_type = 'daily'
GROUP BY day
ORDER BY day
-- Top congestion hotspots
SELECT lat, lon, congestion_level
FROM tiled_data
WHERE congestion_level > 70
ORDER BY congestion_level DESC
LIMIT 20
-- Compare hourly patterns across the week
SELECT date_part('dow', time::TIMESTAMP) as day_of_week,
date_part('hour', time::TIMESTAMP) as hour,
ROUND(AVG(congestion_level), 1) as avg_congestion
FROM timed_data
WHERE aggregation_type = 'hourly'
GROUP BY day_of_week, hour
ORDER BY day_of_week, hour