Skip to main content
Glama

Plan routes for one or more drivers

plan_routes
Read-onlyIdempotent

Split up to 100 stops across up to 10 drivers from one depot and put each driver's stops in the best order on real roads (Great Britain and US), within a shift length including time at each stop. Each driver gets google_maps_links: the day as chained Google Maps links of up to 9 stops each, every link starting where the last one ended (the Maps app takes about 10 stops a route), so a driver opens the first and then the next; plus google_maps_link_all_stops, one link with every stop, for a desktop browser. Stops that do not fit or cannot be reached come back in unassigned with the reason. A driver over the daily driving limits (EU/UK 9 hours, US 11) gets driving_limit_warning; low bridges under 4.6 m near a driver's road come back as low_bridges (advisory). The map of each driver's stops, numbered in order, shows in the chat by itself (no road line: the Google Maps links are the route). Set render to true only when the user wants to keep or share the map: it returns a link, GeoJSON and KML, and update_map can change it later. A kept route map carries each driver's Google Maps links.

Input Schema

NameRequiredDescriptionDefault
depotYesWhere the drivers start: an address or {lat, lng}.
stopsNoAddresses, or {id, name, address} / {id, name, lat, lng}. name labels the stop on the map and in the plan.
titleNoThe kept map's title when render is on.
renderNoAlso keep the map: a link to share with the drivers, GeoJSON and KML.
sourceNoInstead of typing rows: { sheet: "<Google Sheets link>", tab?: "Sites" } (shared with the InstaMaps service account, or viewable by anyone with the link), { file: "<Drive link to a CSV or Excel file>" }, or { run: "<run_id from an earlier answer>" }. Columns are found by their headers (id, name, address or its parts, lat/lng); name them if they aren't obvious (id_column, address_column, lat_column, lng_column; from_column and to_column for road distances). Rows with coordinates are used as they are.
driversNo
trafficNoweekday (default): road times with the area's measured weekday slowdown (DfT delay on local 'A' roads by council and on motorways in Great Britain; the Urban Mobility Report's Travel Time Index by US urban area). free_flow: empty roads.weekday
shift_hoursNo
return_to_depotNo
service_minutesNoTime spent at each stop.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds genuine behavioral context beyond that: unroutable stops surface in `unassigned` with a reason, over-limit shifts emit `driving_limit_warning`, low bridges come back as `low_bridges`, and the map auto-renders without a road line. It stops short of describing pagination/size limits on the returned link sets.

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?

Long but information-dense and front-loaded: purpose first, then output/warning behavior, then the render caveat. Each sentence carries new signal (link chaining logic, warnings, render semantics), though the middle discussion of Google Maps link chaining is more detailed than an agent strictly needs to select the tool.

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 10-parameter tool with nested `source` and no output schema, the description goes a long way toward explaining what comes back (chained maps links, `unassigned`, warnings) and when render matters. The remaining gap is the `source` ingestion variants and return_to_depot behavior, which are only covered by the schema text.

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 70%, so the schema documents most fields (depot, stops, traffic, service_minutes). The description re-states scope that maps onto drivers/shift_hours and elaborates render's return values (link, GeoJSON, KML), but leaves return_to_depot and the source column-detection options unexplained beyond what the schema already says.

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 first sentence names a specific verb and resource with hard scope: 'Split up to 100 stops across up to 10 drivers from one depot and put each driver's stops in the best order on real roads.' It is instantly distinguishable from the other map/route siblings (render_map, update_map, get_road_distances) because it produces a multi-driver ordered plan rather than a single artifact.

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?

Gives explicit conditional use for render ('Set render to true only when the user wants to keep or share the map') and notes update_map can modify a kept map afterwards. It does not name when to prefer get_road_distances, get_travel_time_area, or render_map for simpler needs, so exclusion guidance is incomplete but present.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources