MCP docs › Authentication
Authentication
Two ways in: a bearer token (recommended) or OAuth 2.1 for clients that cannot send headers.
Bearer token
Authorization: Bearer cfm-your-scoped-token
# also accepted: X-API-Key: <token> | ?api_key=<token>
| Token | Prefix | Reach |
|---|---|---|
| Scoped MCP token | cfm- | Only the tools you ticked when minting it. Revocable individually. Recommended for agents. |
| Account API key | sk- | Every tool on the plan. |
Mint and revoke tokens in your dashboard → MCP / Agents. Tokens are stored hashed; the value is shown once.
Scopes
A scoped token changes what the server advertises, not just what it permits: tools/list only returns the tools in scope, and an out-of-scope call fails fast with -32001 naming the tools that are allowed. account_status reports the same list, so an agent can check before it starts.
OAuth 2.1
For clients that only speak OAuth (some Hermes, Claude and Zapier setups), the server is a full OAuth 2.1 resource + authorization server with PKCE, dynamic client registration and refresh-token rotation:
| Endpoint | Purpose |
|---|---|
/.well-known/oauth-protected-resource | RFC 9728 protected-resource metadata |
/.well-known/oauth-authorization-server | RFC 8414 authorization-server metadata |
/mcp/oauth/register | RFC 7591 dynamic client registration |
/mcp/oauth/authorize | Consent screen — paste your API key once |
/mcp/oauth/token | authorization_code + refresh_token grants |
A 401 from the MCP endpoint always carries a WWW-Authenticate header pointing at the resource metadata, so compliant clients can discover and start the flow on their own.