Sortd Docs

Connect your AI to Sortd

MCP (Model Context Protocol) lets an AI assistant use Sortd directly — read the mailbox, task emails onto boards, prioritise lists, draft and (if you allow it) send replies. Sortd hosts the server; you connect your assistant and approve access once in the browser. Two minutes, no key, no code.

1. Connect your client

The hosted endpoint speaks MCP over Streamable HTTP:

https://api.sortd.com/mcp

The default auth is OAuth: your client opens a Connect Sortd page in the browser, you sign in with your normal Sortd account and approve the scopes listed on the consent screen — that approval is the permission grant, no API key involved. Clients that can send headers (CLIs, config files) can use an API key instead.

You can also just ask the assistant to set itself up — in current Claude and ChatGPT builds, "add the Sortd connector, the URL is https://api.sortd.com/mcp" walks you through the right settings. The browser sign-in and consent approval always remain yours to click.

Claude — the app & Cowork (claude.ai, desktop)

  1. Open the Connectors section (currently Customize → Connectors on claude.ai and in the desktop app). On Team/Enterprise plans an Owner adds it for everyone under Organization settings → Connectors.
  2. Click + and choose Add custom connector.
  3. Name it Sortd and paste the URL: https://api.sortd.com/mcp.
  4. Complete the Connect Sortd browser sign-in — the consent screen lists exactly the scopes being granted.
  5. In a chat, check the connector is enabled (search & tools menu), then try: "Which Sortd boards can you see?"

Once connected it's available in ordinary chats, in Cowork sessions, and to scheduled tasks — so a morning task can triage the inbox before you sit down.

Claude Code (CLI)

OAuth, like the app — add the server, then authenticate from inside a session:

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

Run /mcp in a session to complete the browser sign-in and see the connection and its tools. For headless or scripted use, skip OAuth and pass an API key instead:

claude mcp add --transport http sortd https://api.sortd.com/mcp \
  --header "Authorization: Bearer sk_live_…"

ChatGPT — apps & connectors

  1. Enable Developer mode (currently Settings → Apps → Advanced settings; paid plans — on Business/Enterprise an admin may need to allow custom connectors first).
  2. Create a connector and paste the server URL: https://api.sortd.com/mcp. Write a real description — the model reads it when deciding to use the tools (e.g. "Sortd: my mailbox, boards and tasks — search email, create and move tasks, draft replies").
  3. Pick OAuth for authentication and complete the Connect Sortd sign-in. (ChatGPT's custom connectors don't send custom headers, so the API-key style isn't available here — OAuth carries the same scopes.)
  4. Enable the connector in the conversation (and for scheduled tasks if you use them), then try: "List my Sortd boards."

Cursor (.cursor/mcp.json)

{
  "mcpServers": {
    "sortd": {
      "url": "https://api.sortd.com/mcp",
      "headers": { "Authorization": "Bearer sk_live_…" }
    }
  }
}

Uses an API key as the Bearer token.

Any other MCP client (JSON config)

{
  "mcpServers": {
    "sortd": {
      "type": "http",
      "url": "https://api.sortd.com/mcp",
      "headers": { "Authorization": "Bearer sk_live_…" }
    }
  }
}

Clients with built-in OAuth support can omit the header and complete the Connect Sortd sign-in instead; header-only clients use an API key.

2. Try it

Ask the assistant something that exercises the connection:

The full tool list, grouped by scope: MCP tool catalog.

3. Put it on a schedule

The connector really earns its keep on a schedule: "every hour, check for new mail and file anything urgent onto the Support board" is one sentence to your assistant. Claude Cowork and ChatGPT can both run the connector on recurring tasks — recipes, cadences and the scopes to grant a scheduled agent are on the Automate page.

Using an API key instead (CLIs & headless)

For clients that can't run a browser sign-in — scripted CLIs, servers, config-file clients — create a key in the Sortd app: open Settings (the cog, bottom-left), select the API tab, name the key and click Generate. The scopes you tick play the same role as the OAuth consent screen: the assistant only ever sees the tools those scopes allow, and the server enforces them again on every call. The secret (sk_live_…) is shown once; store it now.

The Sortd Settings dialog open on the API tab, showing key generation
Settings → API in the Sortd app. Full walkthrough with screenshots in the Sortd help article (opens in a new tab).

A sensible starter set for an assistant: tasks.read, tasks.write, boards.read, lists.read, email.metadata.read, ai.classify, and drafts.write if it should prepare replies. Sending has its own ladder — see Drafts & sending.

How authorisation works

Can my assistant watch my webhooks?

Not directly. Webhooks are Sortd calling your HTTPS endpoint — and a chat assistant (Claude, ChatGPT, a Cowork session, a scheduled task) is a client, not a server: it has no public URL for Sortd to deliver to. Three patterns that do work:

Rule of thumb: assistants pull; servers push. Use MCP for the pulling and webhooks for the pushing, and meet in the middle with a schedule or a bridge — ready-made bridge patterns for n8n, Make, Pipedream, Zapier and self-hosted agents are in the AI guides.

Sessions — audit & disconnect

Each connected assistant gets a session on its first initialize. You can list them (client name, version, declared capabilities, last seen) and revoke any one — the client must re-initialize to continue.

# list connected assistants
curl "https://api.sortd.com/mcp/sessions" -H "Authorization: Bearer sk_live_…"

# revoke one
curl -X POST "https://api.sortd.com/mcp/sessions/mcps_…/revoke" \
  -H "Authorization: Bearer sk_live_…"

Under the hood (for the protocol-curious)

It's plain JSON-RPC — you can drive it with curl. initialize returns an mcp-session-id header; present it on subsequent calls.

curl -i -X POST "https://api.sortd.com/mcp" \
  -H "Authorization: Bearer sk_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "jsonrpc": "2.0", "id": 1, "method": "initialize",
        "params": { "protocolVersion": "2025-03-26",
                    "clientInfo": { "name": "curl", "version": "0" }, "capabilities": {} } }'

curl -X POST "https://api.sortd.com/mcp" \
  -H "Authorization: Bearer sk_live_…" \
  -H "mcp-session-id: mcps_…" \
  -H "Content-Type: application/json" \
  -d '{ "jsonrpc": "2.0", "id": 2, "method": "tools/list" }'

Every MCP tool proxies the corresponding REST v2 route in-process — same validation, same scope checks, same audit trail, same webhooks. MCP can't do anything REST can't.

Next: put the connector on a schedule, browse the full MCP tool catalog, or wire up webhooks so your own systems hear what the assistant does.

App menu paths verified September 2026 — vendors rename these periodically; the connector URL and flow are unchanged when they do.