MCP · OAuth 2.1 · 2025-11-25 protocol

Add Parceled to your agent
in under a minute

Copy-paste configs for every major MCP client. OAuth flow kicks in automatically on the first tool call — no API key setup required.

Endpoint: https://parceled.ai/api/mcp
Transport: streamable-http
Auth: OAuth 2.1 · DCR

Claude Desktop

in-app setup

Add as a Custom Connector — native Streamable HTTP + browser OAuth. No bridge, no local subprocess, no config file.

Settings → Connectors → Add custom connector
URL: https://parceled.ai/api/mcp

Claude Desktop opens a browser for the OAuth flow, redirects back on
success, and exposes all Parceled tools in the chat.

OAuth tokens are stored by Claude Desktop. Revoke any time from the same Connectors screen.

Claude Code

command

Native Streamable HTTP MCP. One command.

claude mcp add --transport http parceled https://parceled.ai/api/mcp

Claude Code walks you through the OAuth flow on the first tool call. No API key needed if you OAuth.

Cursor

config

Native Streamable HTTP. Dynamic Client Registration + browser OAuth handled automatically.

Config file: ~/.cursor/mcp.json
{
  "mcpServers": {
    "parceled": {
      "url": "https://parceled.ai/api/mcp"
    }
  }
}

Cursor supports static OAuth client credentials as an override, but Parceled advertises DCR via /.well-known/oauth-authorization-server so the default flow just works.

Zed

config

Add a remote context server in Zed settings.json. Omit the Authorization header and Zed will auto-prompt for OAuth on first call.

Config file: ~/.config/zed/settings.json
{
  "context_servers": {
    "parceled": {
      "url": "https://parceled.ai/api/mcp"
    }
  }
}

Zed distinguishes remote vs stdio servers by the presence of `url` vs `command`. When no `Authorization` header is configured, Zed runs the standard MCP OAuth flow in a browser on first connect.

Cline (VS Code)

config

Native Streamable HTTP in cline_mcp_settings.json. OAuth auto-handled.

Config file: ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
{
  "mcpServers": {
    "parceled": {
      "type": "streamableHttp",
      "url": "https://parceled.ai/api/mcp"
    }
  }
}

Cline auto-creates an OAuth provider for any streamableHttp or sse server; no Bearer token needed up front. First tool call triggers the browser flow.

Any other MCP client

config

Point at the Streamable HTTP endpoint. Dynamic Client Registration + PKCE is supported end-to-end.

Endpoint:        https://parceled.ai/api/mcp
Transport:       streamable-http
Protocol:        MCP 2025-11-25
Auth:            OAuth 2.1 (DCR per RFC 7591)  — or Bearer <api_key>
Discovery:       https://parceled.ai/.well-known/oauth-protected-resource
Manifest:        https://parceled.ai/.well-known/mcp.json

If your client is stdio-only and has no remote/HTTP option, the community mcp-remote npm package (github.com/geelen/mcp-remote) bridges stdio to Streamable HTTP. Not required for any of the clients above.

Not using MCP?

The same data is available via GraphQL or REST — use whichever fits your stack.

GraphQL
POST https://parceled.ai/api

Apollo sandbox at /api. Same field-level billing.

REST (OpenAPI)
GET https://parceled.ai/api/v1/parcels

OpenAPI 3.1 spec: /.well-known/openapi.yaml. Ready for OpenAI GPT Actions, LangChain, Zapier.

FAQ

Do I need an API key first?
No. On first tool call, the MCP client triggers the OAuth flow — you get a magic-link email, click it in the browser, and a `prc_live_…` API key is created automatically. For non-MCP use (curl, scripts, GPT Actions, LangChain, Zapier), POST to `https://parceled.ai/api/v1/accounts` with `{"email":"you@example.com"}` and use the returned `apiKey` as Bearer. Same endpoint exposed via GraphQL as `createParceledAccount`.
Will my agent burn through credits?
Free tier is 100 MCP calls per month with no payment setup. All data fields are available. Field-level billing means you only pay for fields that actually return data — empty results are free. search_parcels accepts an explicit "include" array so agents can cap cost per call.
How do agents know what data you have for a location?
The free check_availability tool returns which datasets exist for a lat/lng before any billable call. Agents are instructed to call it first via the tool description.
Is the MCP surface stable?
We follow semver on /api/mcp and keep old shapes working ≥ 30 days after breaking changes. Protocol version is advertised in the initialize handshake and in /.well-known/mcp.json.
Can I use Parceled without MCP?
Yes — the same data is available via GraphQL at /api and via a REST surface at /api/v1/* described by /.well-known/openapi.yaml. Use whichever your stack prefers.

Discovery surface

Everything a machine needs to find and integrate Parceled.