Skip to main content
Routal

MCP Server

Connect Routal to Claude, ChatGPT, or any MCP client — import stops, optimize plans, and read operational analytics by chatting with your AI assistant.

Routal ships a hosted MCP server. Connect it once and your AI assistant can list your projects, import stops, create and optimize plans, and answer questions about your operation — using your own Routal account, with your own permissions. One server works across every MCP client: Claude, ChatGPT, Claude Code, Cursor, and anything else that speaks the protocol. This page is the setup guide for all of them.

Connection details

Server URLhttps://api.routal.com/mcp
TransportStreamable HTTP
AuthenticationOAuth 2.1 — sign in with your Routal account when the client prompts you
Credentials neededNone. No API key, no configuration — the OAuth flow handles everything

The server supports dynamic client registration and PKCE, so any compliant MCP client can connect without pre-registered credentials. The assistant acts as your Routal user: it sees the same projects, plans, and stops you see in planner.routal.com, and nothing more.

Directory listing vs. manual URL

If Routal appears in your client's connector or app directory, connect from there — one click, same server. The steps below are for connecting by URL directly, which works today on every client.


Connect from Claude

On claude.ai (web, desktop, or mobile — requires a paid Claude plan):

  1. Open Settings → Connectors.
  2. Click Add custom connector.
  3. Paste https://api.routal.com/mcp and click Add.
  4. Click Connect and sign in with your Routal account when the OAuth window opens.

In a new conversation, the Routal tools are now available — Claude asks for confirmation before any tool that writes data.

For Claude Code, add the server from your terminal:

claude mcp add --transport http routal https://api.routal.com/mcp

Then run /mcp inside Claude Code to complete the OAuth sign-in.

Connect from ChatGPT

On chatgpt.com (web — requires Plus, Pro, Business, Enterprise, or Edu):

  1. Enable developer mode: Settings → Apps & Connectors → Advanced settings → Developer mode.
  2. Go to Settings → Apps & Connectors and create a new connector:
    • Name: Routal
    • MCP server URL: https://api.routal.com/mcp
    • Authentication: OAuth
  3. Sign in with your Routal account when the OAuth window opens.
  4. In a conversation, open the composer's tool menu and enable the Routal connector.

ChatGPT's exact menu names shift between releases — if you don't see these options, check OpenAI's developer mode guide.

Connect from any other MCP client

Any client that supports Streamable HTTP with OAuth works. The generic configuration shape:

{
  "mcpServers": {
    "routal": {
      "type": "http",
      "url": "https://api.routal.com/mcp"
    }
  }
}

Cursor, VS Code, Windsurf, and most agent frameworks accept exactly this in their MCP settings file, then trigger the OAuth sign-in on first use.


What the assistant can do

The server exposes 14 tools. Read tools run freely; well-behaved clients ask for your confirmation before the four tools that write.

Discover & set up

ToolWhat it does
list_projectsLists the projects your account can access.
get_import_schemaWhich stop fields and constraints a project accepts — time windows, pickups, weight, custom fields.
get_organization_resourcesYour usage vs. subscription limits (users, vehicles, stops per plan, SMS/WhatsApp/geocode credits).

Plans, stops & fleet

ToolWhat it does
create_plan ✏️Creates an empty plan for an execution date.
import_stops ✏️Imports up to 100 stops per call — geocodes addresses; supports time windows, pickup+delivery pairs, driver tasks, and per-parcel packages.
search_stopsFilters stops by predicate — status, execution date, cancel reason, text fields.
move_stops ✏️Moves stops to another plan or back to the unassigned inbox.
list_plansPaginated plan summaries with status, date-range, and text filters.
get_planFull detail for one plan — every stop, route, and vehicle.
list_vehiclesThe project's fleet: capacities, skills, pricing, enabled state.

Optimize

ToolWhat it does
optimize_plan ✏️Starts an optimization run — assigns stops to vehicles, orders them, computes ETAs. Asynchronous.
get_optimization_statusPolls whether the run is still going.
get_last_optimizationThe finished result — route assignments, stop timings, unassigned stops.

Analyze

ToolWhat it does
get_analyticsTime series for stop counts, cancellation reasons, proof-of-delivery, and plan counts — bucketed by day/week/month/quarter/year.

✏️ = writes data.

Prompts to try

Import these stops into a new plan for tomorrow and optimize it: [paste rows from your spreadsheet]

Which deliveries were canceled this week, and what was the most common reason?

Find Friday's incomplete stops and move them to Monday's plan.

How close are we to our subscription limits? I want to add five vehicles.

A typical planning session chains the tools for you: the assistant resolves your project (list_projects), checks what fields it accepts (get_import_schema), creates the plan, imports the stops in batches of 100, starts the optimization, polls until it finishes, and reads back the routes — including any stops the optimizer could not place.


Security & data access

  • You authorize with OAuth, per user. The server never sees an API key, and the assistant can only touch data your Routal user can touch.
  • Writes are opt-in. The four writing tools are annotated as such; Claude and ChatGPT ask for confirmation before running them. Everything else is read-only.
  • Revoke anytime. Remove the connector in your client's settings and its access token stops working.
  • Tool results flow through your AI provider. What the tools return is processed by Claude or ChatGPT under that provider's data policies — the same consideration as pasting the data into the chat yourself.

Troubleshooting

SymptomFix
Tools fail with mcp.error.unauthorized after working beforeThe OAuth token was revoked or expired. Disconnect and reconnect the connector to sign in again.
Optimization "finished instantly" but routes look unchangedOptimization is asynchronous — the start call returns immediately. Ask the assistant to poll the status and read the result when the run completes.
"An optimization is already in progress"One run per plan at a time. Wait for the current run to finish, then retry.
Importing hundreds of stops feels slowimport_stops caps at 100 stops per call by design; the assistant batches automatically.
Tools don't appear in ChatGPTRefresh the connector in Settings → Apps & Connectors and make sure it's enabled in the conversation's tool menu.

Still stuck? Write to developers@routal.com. The MCP server shares the API's rate limit (2,000 requests/min per organization) — see Rate limits.