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 URL | https://api.routal.com/mcp |
| Transport | Streamable HTTP |
| Authentication | OAuth 2.1 — sign in with your Routal account when the client prompts you |
| Credentials needed | None. 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):
- Open Settings → Connectors.
- Click Add custom connector.
- Paste
https://api.routal.com/mcpand click Add. - 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/mcpThen 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):
- Enable developer mode: Settings → Apps & Connectors → Advanced settings → Developer mode.
- Go to Settings → Apps & Connectors and create a new connector:
- Name:
Routal - MCP server URL:
https://api.routal.com/mcp - Authentication: OAuth
- Name:
- Sign in with your Routal account when the OAuth window opens.
- 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
| Tool | What it does |
|---|---|
list_projects | Lists the projects your account can access. |
get_import_schema | Which stop fields and constraints a project accepts — time windows, pickups, weight, custom fields. |
get_organization_resources | Your usage vs. subscription limits (users, vehicles, stops per plan, SMS/WhatsApp/geocode credits). |
Plans, stops & fleet
| Tool | What 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_stops | Filters stops by predicate — status, execution date, cancel reason, text fields. |
move_stops ✏️ | Moves stops to another plan or back to the unassigned inbox. |
list_plans | Paginated plan summaries with status, date-range, and text filters. |
get_plan | Full detail for one plan — every stop, route, and vehicle. |
list_vehicles | The project's fleet: capacities, skills, pricing, enabled state. |
Optimize
| Tool | What it does |
|---|---|
optimize_plan ✏️ | Starts an optimization run — assigns stops to vehicles, orders them, computes ETAs. Asynchronous. |
get_optimization_status | Polls whether the run is still going. |
get_last_optimization | The finished result — route assignments, stop timings, unassigned stops. |
Analyze
| Tool | What it does |
|---|---|
get_analytics | Time 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
| Symptom | Fix |
|---|---|
Tools fail with mcp.error.unauthorized after working before | The OAuth token was revoked or expired. Disconnect and reconnect the connector to sign in again. |
| Optimization "finished instantly" but routes look unchanged | Optimization 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 slow | import_stops caps at 100 stops per call by design; the assistant batches automatically. |
| Tools don't appear in ChatGPT | Refresh 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.
