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.
One token, three hops, a leash the whole way
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.
- “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?”
“Show me the P&L” answers from the same live report your team sees.
- “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.
Where a “draft an invoice” ask ends up — staged, not sent.
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.
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.
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.
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.
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.
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.
A bad or expired token gets the same flat 401 as a nonsense one — the endpoint is not an oracle for probing what exists.
First, mint a token in Coordinator
Two minutes, once. Then pick your client below.
- 1
Open Settings → Integrations → Connectors and choose New connector.
- 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
Copy the
cct_…token. It's shown exactly once — treat it like a password. - 4
Note the server URL. That's everything the clients below need.
cct_9f2kq81mz…k41chttps://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.
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.
- Open Settings → Connectors → Advanced and enable Developer mode.
- 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.
- For Authentication choose API key / custom header and enter the header below. Don't put the token in the URL.
- Save, enable the connector in a chat, and ask “which invoices are overdue in Coordinator?”
https://www.coordinator.one/api/mcp
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.
- Open Settings → Connectors (Team/Enterprise: an owner adds it once under Organization settings → Connectors, members click Connect).
- Choose Add custom connector and paste the server URL.
- Under Advanced settings, add the request header below. Leave OAuth Client ID and Secret empty — Coordinator doesn't use OAuth.
- Save, then ask Claude “what's unbilled in Coordinator?”
https://www.coordinator.one/api/mcp
Authorization: Bearer cct_…your token…
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 mcp add --transport http coordinator https://www.coordinator.one/api/mcp --header "Authorization: Bearer cct_…your token…" --scope user
{
"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.
Grok
The Grok CLI takes the header directly — same shape as the others. That's the path to use.
grok mcp add --transport http coordinator https://www.coordinator.one/api/mcp --header "Authorization: Bearer cct_…your token…"
[mcp_servers.coordinator]
url = "https://www.coordinator.one/api/mcp"
headers = { "Authorization" = "Bearer cct_…your token…" }{
"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.
[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.
- In the editor's agent side panel, click … → MCP Servers → Manage MCP Servers → View raw config.
- Add the block below and save. (The file lives at
~/.gemini/config/mcp_config.json, or per-workspace under.agents/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.
{
"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.
MCP, asked directly
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.
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.
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.
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.
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.
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
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.