Built in · MCP server

Run Coordinator from the AI you already use

Coordinator ships a built-in MCP (Model Context Protocol) server. Mint a scoped, expiring token in settings, paste it into ChatGPT, Claude, Gemini, Grok, Codex or Antigravity — and your assistant can work your actual business: look up a client's history, turn a meeting into tasks, log time, stage a draft invoice. The dangerous verbs are refused by the server itself.

Free. No card. About two minutes to set up.

How it works

One token, three hops, a leash the whole way

Your AI client
ChatGPT · Claude · Gemini · Grok · Codex · Antigravity — or any MCP client
Bearer cct_…
coordinator.one/api/mcp
Streamable HTTP · token hashed at rest · flat 401s for wrong guesses
acts as Maya R.
Your workspace
roles rechecked on every request · reads broad, writes capped · sends & payments refused
What your assistant can do

Ask anything. Change only what's safe.

Every tool call runs as a named member of your team, inside that member's live permissions. Reads are broad; writes have a deliberate ceiling.

Ask — reads
  • “What's on today?” — the day's meetings, work and deadlines
  • “Which invoices are overdue, and how overdue?” — live receivables aging
  • “How profitable is Harbor & Finch this year?” — client profitability from the real ledger
  • “Show me the P&L for the quarter”
  • “Find everything we have on the Meridian project” — records, contacts, activities, history
  • “What's unbilled?” — time logged but not yet invoiced
  • “Who's next in the support queue? What's the check-in status?”
Reports · Profit & loss
Net income · this quarter
$23,780
↑ 14% vs last quarter
Design services$41,200
Retainers$18,400
Product sales$6,150
Invoices, bills, bank feeds and budgets roll up into statements automatically.

“Show me the P&L” answers from the same live report your team sees.

Do — writes, with a ceiling
  • “Turn this meeting into follow-up tasks” — creates the activities, files them right
  • “Log the last two hours to the Meridian build”
  • “Add the person I just met as a contact”
  • “Draft an invoice from my unbilled hours” — a DRAFT, for a human to send

That list is the whole write ceiling: create activities, log time, add contacts, prepare draft invoices. Everything an assistant stages, a human reviews and sends.

coordinator.one/i/x4k9…
Invoice INV-0042
Meridian Design Studio → Harbor & Finch Ltd
Awaiting payment
Brand identity — discovery & concepts$3,200.00
Website design — 6 templates$4,800.00
Rush delivery add-on$640.00
Total due$8,640.00
Pay with cardDownload PDF

Where a “draft an invoice” ask ends up — staged, not sent.

The leash is the feature

A token that can't outgrow the person behind it

Most MCP servers hand your assistant a key to everything. This one hands it a badge — scoped, expiring, and checked on every single request.

Acts as a person, never above one

Every token is bound to a member and every request recalculates the intersection of the token's grants and that member's live role. Role changes? The token narrows with it, instantly.

Scoped like you mean it

Read-only or write mode, module by module, legal entity by legal entity — and network-shared content is off by default, because another firm's text is where a hostile instruction would arrive.

No immortal tokens

7, 30 or 90 days — 90 is the hard maximum. 256-bit, stored hashed, shown exactly once. Revoke any time in settings, where you can also see what an assistant has been calling.

The never-list is server-side

Send an invoice or email, message a client, record or reverse a payment, approve anything, change roles, delete anything: refused by Coordinator itself, not by the assistant's good behaviour. No permission level turns these on.

Attributed, always

Everything a connector does lands in the audit trail as connector work under the member it acts as — there's no setting to make an assistant look like a person.

Wrong tokens learn nothing

A bad or expired token gets the same flat 401 as a nonsense one — the endpoint is not an oracle for probing what exists.

Setup · step one

First, mint a token in Coordinator

Two minutes, once. Then pick your client below.

  1. 1

    Open Settings → Integrations → Connectors and choose New connector.

  2. 2

    Pick who it acts as, read or write mode, the modules and entities it may reach, and an expiry — 7, 30 or 90 days.

  3. 3

    Copy the cct_… token. It's shown exactly once — treat it like a password.

  4. 4

    Note the server URL. That's everything the clients below need.

Settings · Connectors · New
Acts as
Maya R.
Mode
ReadRead + write
Expires
7d30d90d
Modules
ProjectsMoneyTimeRecordsChat
cct_9f2kq81mz…k41c
Shown once — copy it now.
Server URL
https://www.coordinator.one/api/mcp

The endpoint even answers a plain GET with a friendly self-description — paste it in a browser and it will tell you what it is. It speaks MCP's Streamable HTTP transport; there is no page to browse.

Setup · step two

Then connect your client

Exact steps per client — including the caveats other guides skip. These mirror the setup help inside the product, so they stay current together.

ChatGPT

API-key connectors are a first-class, documented ChatGPT feature — no beta involved. You need a paid plan with developer mode on.

  1. Open Settings → Connectors → Advanced and enable Developer mode.
  2. Back in Connectors, choose Create and paste the server URL — exactly. A missing path segment is the most common cause of a connector that silently never connects.
  3. For Authentication choose API key / custom header and enter the header below. Don't put the token in the URL.
  4. Save, enable the connector in a chat, and ask “which invoices are overdue in Coordinator?”
Server URL
https://www.coordinator.one/api/mcp
Header
X-Coordinator-Token: cct_…your token…

Claude

Custom connectors exist on every Claude plan, including Free (one connector at a time there). No add-on, no extra API key — the assistant you already pay for does the thinking.

  1. Open Settings → Connectors (Team/Enterprise: an owner adds it once under Organization settings → Connectors, members click Connect).
  2. Choose Add custom connector and paste the server URL.
  3. Under Advanced settings, add the request header below. Leave OAuth Client ID and Secret emptyCoordinator doesn't use OAuth.
  4. Save, then ask Claude “what's unbilled in Coordinator?”
Server URL
https://www.coordinator.one/api/mcp
Header
Authorization: Bearer cct_…your token…
Honest caveat. Anthropic currently labels request-header authentication beta, and some Claude builds don't show the header field at all — the connector then attempts OAuth and fails with “couldn't reach the MCP server”. Nothing is wrong with your token: use Claude Code below, which works unconditionally, and try the web UI again later.
Claude Code (one command, works today)
claude mcp add --transport http coordinator https://www.coordinator.one/api/mcp --header "Authorization: Bearer cct_…your token…"

Gemini CLI

The Gemini CLI takes a fixed header directly — one command, no beta, no OAuth, available in every session.

Gemini CLI (one command)
gemini mcp add --transport http coordinator https://www.coordinator.one/api/mcp --header "Authorization: Bearer cct_…your token…" --scope user
Or by hand — ~/.gemini/settings.json
{
  "mcpServers": {
    "coordinator": {
      "httpUrl": "https://www.coordinator.one/api/mcp",
      "headers": { "Authorization": "Bearer cct_…your token…" }
    }
  }
}

The key is httpUrl, not url. In Gemini's config they select different transports — httpUrl is Streamable HTTP (what this server speaks); url is the older SSE transport (which it doesn't). The wrong one fails with an error that mentions neither.

Honest caveat. Gemini Enterprise can't use this token — its custom-MCP form offers only “No authentication” or OAuth 2.0, with no field for a fixed header. Use the CLI.

Grok

The Grok CLI takes the header directly — same shape as the others. That's the path to use.

Grok CLI (one command)
grok mcp add --transport http coordinator https://www.coordinator.one/api/mcp --header "Authorization: Bearer cct_…your token…"
Or by hand — ~/.grok/config.toml
[mcp_servers.coordinator]
url = "https://www.coordinator.one/api/mcp"
headers = { "Authorization" = "Bearer cct_…your token…" }
Honest caveat. The grok.com connector dialog is not the same path — it documents no fixed-header option and may push you into an OAuth flow (Coordinator has no authorization server). If it does, nothing is wrong with your token: use the CLI.
Building your own? xAI Responses API — tools entry
{
  "type": "mcp",
  "server_label": "coordinator",
  "server_url": "https://www.coordinator.one/api/mcp",
  "authorization": "cct_…your token…"
}

xAI sends authorization as the Bearer header itself — don't prefix the token.

Codex (OpenAI)

Codex reads MCP servers from its config file — one TOML block and the tools are available in the CLI and the IDE extension alike.

~/.codex/config.toml
[mcp_servers.coordinator]
url = "https://www.coordinator.one/api/mcp"
http_headers = { "Authorization" = "Bearer cct_…your token…" }

Prefer keeping the token out of the file? Put it in an environment variable and use bearer_token_env_var = "COORDINATOR_TOKEN" instead of http_headers — Codex reads it at connect time and sends it as the Bearer header.

Antigravity (Google)

Antigravity's IDE, CLI and agent surfaces share one MCP config file. Reach it from the agent panel, or edit it directly.

  1. In the editor's agent side panel, click MCP ServersManage MCP ServersView raw config.
  2. Add the block below and save. (The file lives at ~/.gemini/config/mcp_config.json, or per-workspace under .agents/mcp_config.json.)
mcp_config.json
{
  "mcpServers": {
    "coordinator": {
      "serverUrl": "https://www.coordinator.one/api/mcp",
      "headers": { "Authorization": "Bearer cct_…your token…" }
    }
  }
}

The key is serverUrl — Antigravity's name for a remote HTTP server. A plain url key won't connect.

Everything else

Any MCP client that speaks Streamable HTTP and can set a header works — Claude Desktop, Cursor, the MCP Inspector, and whatever ships next week.

The universal config shape
{
  "mcpServers": {
    "coordinator": {
      "type": "http",
      "url": "https://www.coordinator.one/api/mcp",
      "headers": { "Authorization": "Bearer cct_…your token…" }
    }
  }
}

Two facts cover most integrations: the transport is Streamable HTTP, and authentication is a fixed bearer token in the Authorization header. If your client can express those, it can run Coordinator.

FAQ

MCP, asked directly

Can the assistant send an invoice or move money?

No — and not because we ask it nicely. Sending an invoice, estimate or credit note, sending email, messaging a client, recording or reversing a payment, approving anything, changing roles, and deleting anything are refused by Coordinator's server itself. No permission level turns them on. The write ceiling is: create activities, log time, add contacts, prepare DRAFT invoices.

What does a connector token cost?

Nothing. The MCP server is part of Coordinator, which is free. The thinking happens in the assistant you already use, on whatever plan you already pay for — there is no per-call charge on our side.

Which AI clients work?

Any MCP client that speaks Streamable HTTP and can send a header: ChatGPT (API-key connectors), Claude (web connectors, Claude Code, Claude Desktop), Gemini CLI, Grok CLI and the xAI Responses API, OpenAI's Codex, Google's Antigravity, Cursor, the MCP Inspector, and anything else with a config file. This page has the exact steps for each.

What happens if the person a token acts as leaves or changes roles?

The token narrows or stops with them, automatically. Access is recalculated on every request as the intersection of the token's grants and the member's live role — a token can never do more than the person it acts as can do right now.

How long do tokens live?

You choose 7, 30 or 90 days when you mint one — 90 is the maximum, and there are no immortal tokens. The token itself is 256-bit, stored hashed, and shown to you exactly once, at creation.

Can I scope what the assistant sees?

Yes — per token. You pick who it acts as, read-only or write mode, which modules it reaches, which legal entities, and whether it may read activities shared by other organizations (off by default, because text written by another firm is the likeliest place for a hostile instruction to arrive).

Want the other direction too — AI working inside Coordinator as a team member on your own API key? That's the AI employees story

100% free — every feature, every seat

Your assistant is hired

Mint a token tonight and ask "what's unbilled?" from the AI you already use. Coordinator is free — the leash is included.

Free. No card. About two minutes to set up.