TomTom Traffic Analytics MCP

Example Use Cases

Example Use Cases

These examples show how AI assistants use the Traffic Analytics MCP tools to answer real traffic analysis questions. Each example includes the natural language prompt and the kind of response you can expect.

Junction Congestion Monitoring

Which of my junctions have the worst delays right now? Show me the top 5.
See the response
πŸ” Step 1: Finding all active junctions...
Tool: tomtom-junction-search
SQL: SELECT junction_id, name, country_code FROM junctions WHERE status = 'ACTIVE'
Found 47 active junctions across 3 countries.
πŸ“Š Step 2: Getting real-time delays for all junctions...
Tool: tomtom-junction-live-data (47 junction IDs, batched)
SQL: SELECT junction_id, ROUND(AVG(delay_sec), 1) as avg_delay,
MAX(queue_length_meters) as max_queue
FROM approaches GROUP BY junction_id ORDER BY avg_delay DESC LIMIT 5
🚦 Top 5 Junctions by Delay:
| Rank | Junction | Avg Delay | Max Queue |
|------|----------|-----------|-----------|
| 1 | A10/S112 Interchange | 142.3s | 385m |
| 2 | Schiphol Terminal Exit | 98.7s | 220m |
| 3 | Centrum Ring North | 87.4s | 195m |
| 4 | A2/A9 Merge | 65.2s | 150m |
| 5 | Zuidas Business District | 52.1s | 110m |
⚠️ The A10/S112 Interchange has significantly higher delays than the rest,
with queue lengths extending nearly 400 meters. This may indicate an incident
or unusual congestion.

Route Performance Analysis

Are any of my monitored routes significantly delayed?
Show me the bottleneck segments.
See the response
πŸ” Step 1: Checking all monitored routes for delays...
Tool: tomtom-route-search
SQL: SELECT route_id, route_name, delay_time, travel_time,
ROUND(delay_time * 100.0 / NULLIF(travel_time, 0), 1) as delay_pct
FROM routes WHERE route_status = 'ACTIVE' AND delay_time > 60
ORDER BY delay_pct DESC
Found 3 routes with significant delays (>60 seconds):
| Route | Delay | Travel Time | Delay % |
|-------|-------|-------------|---------|
| A10 Ring South | 8m 42s | 22m 15s | 39.1% |
| A4 Schiphol–Den Haag | 5m 18s | 35m 40s | 14.9% |
| A2 Amsterdam–Utrecht | 2m 05s | 28m 12s | 7.4% |
πŸ“Š Step 2: Getting segment-level details for the worst route...
Tool: tomtom-route-monitoring-details (route: A10 Ring South)
SQL: SELECT segment_id, current_speed, typical_speed,
(typical_speed - current_speed) as speed_drop, segment_length
FROM segments WHERE current_speed < typical_speed * 0.5
ORDER BY speed_drop DESC LIMIT 5
🚧 Bottleneck segments on A10 Ring South:
| Segment | Current | Typical | Speed Drop | Length |
|---------|---------|---------|------------|--------|
| seg-4421 | 18 km/h | 95 km/h | -77 km/h | 1.2 km |
| seg-4422 | 25 km/h | 90 km/h | -65 km/h | 0.8 km |
| seg-4420 | 35 km/h | 85 km/h | -50 km/h | 1.0 km |
πŸ’‘ The bottleneck is concentrated in a 3 km stretch (segments 4420–4422),
where speeds have dropped to 18–35 km/h against typical speeds of 85–95 km/h.

Multi-Area Incident Comparison

Compare traffic incidents between downtown Amsterdam, Schiphol Airport area,
and the A10 ring road right now.
See the response
πŸ“Š Querying incidents for 3 areas...
Tool: tomtom-traffic-incidents
Areas:
- Downtown Amsterdam: 4.87,52.36,4.92,52.38
- Schiphol Airport: 4.72,52.28,4.80,52.33
- A10 Ring Road: 4.82,52.32,4.95,52.40
SQL: SELECT area_name,
COUNT(*) as total,
SUM(CASE WHEN iconCategory = 'Accident' THEN 1 ELSE 0 END) as accidents,
SUM(CASE WHEN iconCategory = 'RoadWorks' THEN 1 ELSE 0 END) as roadworks,
SUM(CASE WHEN iconCategory = 'JamLane' THEN 1 ELSE 0 END) as jams,
ROUND(AVG(CASE WHEN delay IS NOT NULL THEN delay END)) as avg_delay_sec
FROM incidents GROUP BY area_name
🚦 Incident Comparison:
| Area | Total | Accidents | RoadWorks | Jams | Avg Delay |
|------|-------|-----------|-----------|------|-----------|
| A10 Ring Road | 12 | 2 | 5 | 5 | 245s |
| Downtown Amsterdam | 8 | 1 | 4 | 3 | 128s |
| Schiphol Airport | 3 | 0 | 2 | 1 | 67s |
⚠️ The A10 Ring Road has the most incidents and highest average delays.
Two active accidents are contributing to the elevated delay levels.
Schiphol area is relatively clear with only minor roadworks.
Analyze morning rush hour congestion in central Amsterdam
over the past two weeks.
See the response
πŸ“Š Analyzing area congestion...
Tool: tomtom-area-analytics-stats
Region: Central Amsterdam polygon
Date range: 2026-03-16 to 2026-03-28
Hours: [7, 8, 9] (morning rush)
Data types: CONGESTION_LEVEL, SPEED
SQL queries:
daily_trend: SELECT time::DATE as day,
ROUND(AVG(congestion_level), 1) as avg_congestion,
ROUND(AVG(speed), 1) as avg_speed
FROM timed_data WHERE aggregation_type = 'daily'
GROUP BY day ORDER BY day
worst_days: SELECT time::DATE as day,
ROUND(AVG(congestion_level), 1) as congestion
FROM timed_data WHERE aggregation_type = 'daily'
GROUP BY day ORDER BY congestion DESC LIMIT 3
πŸ“ˆ Daily Congestion Trend (Morning Rush, 07:00–09:00):
| Date | Avg Congestion | Avg Speed |
|------|---------------|-----------|
| Mar 16 (Mon) | 62.3 | 28.4 km/h |
| Mar 17 (Tue) | 58.1 | 31.2 km/h |
| Mar 18 (Wed) | 65.7 | 26.8 km/h |
| Mar 19 (Thu) | 61.4 | 29.1 km/h |
| Mar 20 (Fri) | 54.2 | 33.5 km/h |
| Mar 21 (Sat) | 22.1 | 48.7 km/h |
| Mar 22 (Sun) | 18.5 | 51.2 km/h |
| ... | ... | ... |
πŸ”΄ Worst days: Wednesday Mar 18 (65.7), Monday Mar 23 (64.8), Thursday Mar 26 (63.1)
πŸ’‘ Weekday mornings consistently show 54–66% congestion with speeds dropping
to 27–34 km/h. Wednesdays and Mondays tend to be the worst. Weekend mornings
are dramatically lighter at 18–22% congestion.

Historical Junction Pattern Analysis

Show me the hourly delay pattern for the A10/S112 Interchange
over the past 2 days, when does it get worst?
See the response
πŸ“Š Fetching historical data...
Tool: tomtom-junction-archive
Junction: A10/S112 Interchange
Date range: 2026-03-28 to 2026-03-29
SQL: SELECT date_part('hour', time::TIMESTAMP) as hour,
ROUND(AVG(delay_sec), 1) as avg_delay,
MAX(delay_sec) as peak_delay,
ROUND(AVG(queue_length_meters), 0) as avg_queue
FROM approaches
GROUP BY hour
ORDER BY hour
⏰ Hourly Delay Pattern (A10/S112 Interchange):
| Hour | Avg Delay | Peak Delay | Avg Queue |
|------|-----------|------------|-----------|
| 06:00 | 12.3s | 28s | 35m |
| 07:00 | 45.8s | 112s | 120m |
| 08:00 | 98.4s | 215s | 310m |
| 09:00 | 72.1s | 168s | 225m |
| 10:00 | 25.6s | 55s | 65m |
| ... | ... | ... | ... |
| 16:00 | 38.2s | 85s | 95m |
| 17:00 | 88.7s | 198s | 285m |
| 18:00 | 65.3s | 145s | 190m |
| 19:00 | 22.4s | 48s | 55m |
πŸ”΄ Peak congestion: 08:00 (avg 98.4s delay, queues up to 310m)
🟠 Secondary peak: 17:00 (avg 88.7s delay, queues up to 285m)
πŸ’‘ The junction has a classic dual-peak pattern. Morning rush peaks at 08:00
with average delays nearly 100 seconds. The evening peak at 17:00 is slightly
lower but still severe. Off-peak hours (10:00–15:00) show minimal delays.

Combined Multi-Tool Workflow

Find all junctions in the Netherlands with traffic lights,
then show me which ones currently have the longest queues.
See the response
πŸ” Step 1: Finding Dutch junctions with traffic lights...
Tool: tomtom-junction-search
SQL: SELECT junction_id, name
FROM junctions
WHERE country_code = 'NLD' AND traffic_lights = 1 AND status = 'ACTIVE'
Found 23 active signalized junctions in the Netherlands.
πŸ“Š Step 2: Getting real-time queue data for all 23 junctions...
Tool: tomtom-junction-live-data (23 junction IDs)
SQL queries:
queue_ranking: SELECT junction_id, approach_id,
queue_length_meters, delay_sec
FROM approaches
WHERE queue_length_meters > 0
ORDER BY queue_length_meters DESC LIMIT 10
junction_summary: SELECT junction_id,
MAX(queue_length_meters) as max_queue,
ROUND(AVG(delay_sec), 1) as avg_delay,
COUNT(*) as num_approaches
FROM approaches
GROUP BY junction_id
ORDER BY max_queue DESC LIMIT 5
🚦 Top 5 Signalized Junctions by Queue Length:
| Junction | Max Queue | Avg Delay | Approaches |
|----------|-----------|-----------|------------|
| A10/S112 Interchange | 385m | 142.3s | 4 |
| Zuidas S109 | 210m | 78.5s | 6 |
| A2 Entrance Amstel | 180m | 65.2s | 3 |
| Ringweg A10 West | 145m | 52.8s | 4 |
| Centraal Station North | 120m | 41.3s | 5 |
πŸ’‘ The A10/S112 Interchange stands out with queues nearly double the next
junction. This is consistent with historical patterns showing this junction
as the most congested during peak hours.