← All tools

Route

Plan routes for one or more drivers

plan_routes

Split up to 100 stops across up to 10 drivers from one depot, in the best order on real roads, with Google Maps links per driver.

Read-onlySheets, files and runs by referenceKeeps a shareable map

Use it when

  • ✓ A day of deliveries, installs or visits
  • ✓ More than 10 stops (the Google Maps app limit)
  • ✓ Work that must fit a shift, with time at each stop

Not for

Usual chain: geocode_batch (optional) → plan_routes → render_map (to keep the routes)

Coverage: Great Britain and the US on our roads; elsewhere straight-line estimates, labelled.

Measured

  • Each driver past the daily driving limits (EU/UK 9 h, US 11 h) is warned; low bridges under 4.6 m on a driver's roads are listed (OpenStreetMap, advisory).

Sources

  • InstaMaps roads: OpenStreetMap routed with Valhalla (GB and US) (2026-10-08)
  • InstaMaps address index (OpenStreetMap, OpenAddresses) and postcodes.io (2026-10-08)

Basis: road drive times, normal traffic

Inputs

depot

object · required

Where the drivers start: an address or {lat, lng}.

stops

array · up to 100

Addresses, or {id, name, address} / {id, name, lat, lng}. name labels the stop on the map and in the plan.

drivers

integer

— Default: 1

return_to_depot

boolean

— Default: true

shift_hours

number

— Default: 8

service_minutes

number

Time spent at each stop. Default: 10

render

boolean

Also keep the map: a link to share with the drivers, GeoJSON and KML. Default: false

title

string

The kept map's title when render is on.

traffic

string

weekday (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. One of: weekday · free_flowDefault: "weekday"

source

object

Instead 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.
The full description, as the server gives it to an agent

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 with each driver's route shows in the chat by itself. 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.

A real answer

Captured from the live server on 2026-10-13, trimmed to the first rows.

Request

{
  "depot": "Canning Town, London E16 1DQ",
  "stops": [
    {
      "id": "0",
      "address": "Stratford Station, London E15 1AZ"
    },
    {
      "id": "1",
      "address": "Hackney Central, London E8 1LL"
    },
    {
      "id": "2",
      "address": "Bethnal Green Road, London E2 6AH"
    },
    {
      "id": "3",
      "address": "Bow Road, London E3 4DH"
    },
    {
      "id": "4",
      "address": "Leyton High Road, London E10 5NA"
    }
  ],
  "drivers": 1
}

The answer's first line

5 stops across 1 driver(s) · 1 of 5 high confidence (4 medium, 0 low). Caveats: street or named place (4 rows).

The answer (trimmed)

{
  "confidence": {
    "summary": "1 of 5 high confidence (4 medium, 0 low). Caveats: street or named place (4 rows).",
    "levels": {
      "high": 1,
      "medium": 4,
      "low": 0
    },
    "caveats": [
      {
        "basis": "named_place",
        "level": "medium",
        "rows": 4,
        "ids": [
          "4",
          "1",
          "2",
          "… 1 more"
        ],
        "meaning": "Placed on a street or a named place; no house number was given, so it is not a doorstep point.",
        "next": "Fine for area questions. For doorstep precision, send a house number or coordinates."
      }
    ]
  },
  "traffic": {
    "model": "weekday",
    "area": "Newham (local A roads)",
    "note": "Weekday estimate: free-flow road times × 1.45 for short trips in Newham (local A roads), easing to × 1.21 on trips of an hour or more (DfT 2025 average delay on local 'A' roads and motorways)."
  },
  "depot": {
    "address": "Canning Town, London E16 1DQ",
    "lat": 51.5181741,
    "lng": 0.0134976,
    "confidence": {
      "level": "medium",
      "score": 0.65,
      "basis": "postcode_centre",
      "why": "at the centre of E16 1EW"
    }
  },
  "options": {
    "drivers": 1,
    "returnToDepot": true,
    "shiftHours": 8,
    "serviceMinutes": 10
  },
  "estimated": false,
  "drivers": [
    {
      "driver": 1,
      "stops": [
        {
          "n": 1,
          "id": "0",
          "record_key": "rk1_ab3e99364e6ccdf1b263",
          "address": "Stratford Station, London E15 1AZ",
          "lat": 51.5418028,
          "lng": -0.0025686,
          "arrive_minutes": 12,
          "confidence": {
            "level": "high",
            "score": 0.95,
            "basis": "exact_building"
          }
        },
        {
          "n": 2,
          "id": "4",
          "record_key": "rk1_79d1fef46539228c1969",
          "address": "Leyton High Road, London E10 5NA",
          "lat": 51.5608896,
          "lng": -0.0098956,
          "arrive_minutes": 29,
          "confidence": {
            "level": "medium",
            "score": 0.7,
            "basis": "named_place"
          }
        },
        {
          "n": 3,
          "id": "1",
          "record_key": "rk1_6d6e0e9df6e5d864f97f",
          "address": "Hackney Central, London E8 1LL",
          "lat": 51.5470605,
          "lng": -0.0568749,
          "arrive_minutes": 52,
          "confidence": {
            "level": "medium",
            "score": 0.7,
            "basis": "named_place"
          }
        },
        "… 2 more"
      ],
      "drive_minutes": 61,
      "work_minutes": 111,
      "miles": 14.2,
      "google_maps_links": [
        {
          "label": "Stops 1–5, then back to the depot",
          "url": "https://www.google.com/maps/dir/Canning%20Town%2C%20London%20E16%201DQ/Stratford%20Station%2C%20London%20E15%201AZ/Leyton%20High%20Road%2C%20London%20E10%205NA/Hackney%20Central%2C%20London%20E8%201LL/Bethnal%20Green%20Road%2C%20London%20E2%206AH/Bow%20Road%2C%20London%20E3%204DH/Canning%20Town%2C%20London%20E16%201DQ"
        }
      ],
      "google_maps_link_all_stops": "https://www.google.com/maps/dir/Canning%20Town%2C%20London%20E16%201DQ/Stratford%20Station%2C%20London%20E15%201AZ/Leyton%20High%20Road%2C%20London%20E10%205NA/Hackney%20Central%2C%20London%20E8%201LL/Bethnal%20Green%20Road%2C%20London%20E2%206AH/Bow%20Road%2C%20London%20E3%204DH/Canning%20Town%2C%20London%20E16%201DQ"
    }
  ],
  "unassigned": [],
  "run": {
    "tool": "plan_routes",
    "at": "2026-10-13T15:59:26.020Z",
    "rows": 5,
    "routed": 5,
    "unassigned": 0,
    "sources": [
      {
        "name": "InstaMaps roads: OpenStreetMap routed with Valhalla (GB and US)",
        "as_of": "2026-10-08"
      },
      {
        "name": "InstaMaps address index (OpenStreetMap, OpenAddresses) and postcodes.io",
        "as_of": "2026-10-08"
      }
    ],
    "basis": "road drive times, normal traffic",
    "run_id": "run_184817a78044ee43",
    "confidence": {
      "high": 1,
      "medium": 4,
      "low": 0
    }
  }
}

Use it in Claude

Add the connector https://get-instamaps.com/mcp and ask in plain words. 5,000 tool calls a day per person, reset at midnight UTC; a call counts once however many rows it carries; a sheet by reference is one call; checking a job is free.

How to add it →