https://mcp.curri.com/mcp

Connect agents to the logistics platform for the built world.

Curri's Model Context Protocol server gives any MCP-aware agent — Claude Desktop, Claude Code, Cursor, your own server-to-server bot — the same delivery, account, and operations tools Curri uses internally.

01

Get Setup with Claude Code

In Claude Code, one command connects Curri MCP and the OAuth flow walks you through sign-in — no token to manage, no config file to edit. Same path works in Cursor and any other MCP client that supports OAuth dynamic client registration.

AITell your AI→ Claude Code
Connect me to the Curri MCP server using OAuth. Run this command, then walk me through the OAuth sign-in in the browser: claude mcp add --transport http curri-api https://mcp.curri.com/mcp --scope user After it completes, verify with `claude mcp list` and confirm "curri-api" appears.
One-liner, plain shell: claude mcp add --transport http curri-api https://mcp.curri.com/mcp --scope user
02

Other agents — Desktop, Cursor, MCP Inspector

Same OAuth flow, different client. Hand this prompt to the agent running on your machine — it knows where its own config file lives and will wire Curri MCP up correctly.

AITell your AI→ any MCP-aware AI
Set me up to use the Curri MCP server at https://mcp.curri.com/mcp. The server uses OAuth 2.1 with auto-discovery, so no auth token is needed up front — sign-in happens in the browser on first connect. Wire it into whichever MCP client I'm running on this machine: • If I'm in Claude Code: `claude mcp add --transport http curri-api https://mcp.curri.com/mcp --scope user` • If I'm in Claude Desktop: edit ~/Library/Application Support/Claude/claude_desktop_config.json and add an "mcpServers" entry that runs `npx -y mcp-remote https://mcp.curri.com/mcp`. Tell me to restart Claude Desktop afterward. • If I'm in Cursor or another MCP client: add an HTTP-transport MCP server with the URL https://mcp.curri.com/mcp. OAuth discovery kicks in on first request. Once configured, I'll be prompted to sign in via Curri's authorization server. After that, you'll have access to Curri's MCP tools.
03

Server-to-server

For backend agents, batch jobs, and anything that isn't a local MCP client. Any HTTP library that can POST JSON-RPC 2.0 with an OAuth bearer token works. Run the authorization-code flow once to mint a token, then keep it fresh with the refresh token you get back — API keys are not accepted here.

curl -X POST https://mcp.curri.com/mcp \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{ "jsonrpc": "2.0", "id": 1, "method": "tools/list" }'

The server forwards each tool call to api.curri.com/graphql with your token, so resolver-level auth and validation apply just like a normal Curri API client. Tools you didn't grant a scope for aren't registered at all — they never appear in tools/list.

05

Tool catalog

7 tools available. Every entry below is the title and name an MCP client sees on tools/list.

quote_delivery

Get a Curri delivery quote

Quote a delivery across two or more stops using the same logged-in pricing flow as the curri-app booking wizard. Returns one row per vehicle with the whole-route price for the requested priority, a price comparison across all three priority tiers, and accessorial and toll breakdowns. To book, pass the row `id` to `book_delivery` for a two-stop route, or as `quoteId` to `book_multi_stop_delivery` for three or more stops. Booking is a two-step, preview-then-commit flow: call the booking tool with `intent: "preview"`, confirm with the operator, then call again with `intent: "commit"`.

book_delivery

Book a Curri delivery (preview, then confirm)

Book a delivery using a quote id from `quote_delivery`. This places a PAID booking, so it is two-phase: call with `intent: "preview"` to see what will be booked plus a `stateHash`, confirm with the operator, then call again with `intent: "commit"` and the same `stateHash` to place the booking. Returns the delivery id, external id, tracking URL, and status. Books a two-stop route only — for three or more stops, use `book_multi_stop_delivery`.

quote_and_book_delivery

Quote and book a Curri delivery (preview, then confirm)

Book a delivery without first calling `quote_delivery` — sets `skipQuote: true` on the underlying bookDelivery mutation. This places a PAID booking, so it is two-phase: call with `intent: "preview"` to see the route and vehicle plus a `stateHash`, confirm with the operator, then call again with `intent: "commit"` and the same `stateHash`. Use this when your agent already knows the vehicle type and doesn't need to show the caller a quote first.

book_multi_stop_delivery

Book a multi-stop Curri delivery (preview, then confirm)

Book a route with three or more stops using one vehicle row from `quote_delivery` — pass that row's `id` as `quoteId`, a contact for every stop, and the orders that move between stops. This places a PAID booking, so it is two-phase: call with `intent: "preview"` to see what will be booked plus a `stateHash`, confirm with the operator, then call again with `intent: "commit"` and the same `stateHash`. The route is booked as one delivery with every stop on it; returns its id, external id, tracking URL, and status.

get_delivery

Fetch a Curri delivery by id

Look up a delivery by any of its identifiers (internal id, external id, hashed public id, or payload external id). Returns status, tracking info, origin/destination, and scheduling fields.

list_deliveries

List Curri deliveries

List deliveries visible to the authenticated API user, with optional filters by free-text query, account, vehicle type, or status. Returns a compact summary of each delivery (ids, status, priority, timestamps, tracking URL, origin/destination city-state). Use `get_delivery` to fetch full details for a specific id.

query_payload_status

Query the status of a Curri payload

Full status report for a payload (an item to be delivered): status timeline, manifest items, delivery windows (with a premium-window flag), origin/destination, account, tracking link, stops and stop tasks with arrival/departure/completion times, and proof-of-delivery photo URLs. Curri admins additionally get the admin page link and Home Depot batch lifecycle details. Look up by payload id, or by order/PO number within an account.