Auth, scopes and limits
Three ways to sign in
Section titled “Three ways to sign in”| Credential | Looks like | Best for | Scopes and limits |
|---|---|---|---|
| OAuth 2.1 (recommended) | mcp_at_… access token, issued to the client |
Claude, Claude Code and other OAuth clients | The MCP server’s scopes, tool and connection limits |
| MCP server token | mcps_… |
Cursor, Make, n8n, scripts | The MCP server’s scopes, tool and connection limits |
| API key | nxa_… |
Quick tests, existing integrations | Full access, no MCP limits |
All three act in one workspace: the MCP server’s or the key’s. An OAuth token acts as the person who signed in and approved it; an MCP server token acts as the person who created the MCP server. Either way, with that person’s permissions and data visibility.
A key with the access level Contacts: create & update only, and every test key, is refused by the MCP server.
OAuth 2.1
Section titled “OAuth 2.1”Clients find everything on their own from https://api.nexacloser.com/mcp:
| Protected resource metadata | https://api.nexacloser.com/.well-known/oauth-protected-resource |
| Authorization server metadata | https://api.nexacloser.com/.well-known/oauth-authorization-server |
| Dynamic client registration | POST https://api.nexacloser.com/oauth/register |
| Authorize | https://api.nexacloser.com/oauth/authorize |
| Token | POST https://api.nexacloser.com/oauth/token |
| Revoke | POST https://api.nexacloser.com/oauth/revoke |
- Authorization code flow with PKCE (S256); public clients (
none) andclient_secret_post. - On the consent page the person signs in to NexaCloser, picks an MCP server and approves. The token is bound to that MCP server.
- Access tokens last 1 hour; clients renew them with the refresh token. Codes last 10 minutes.
- Revoking the MCP server in NexaCloser cuts off every token issued for it at once.
Scopes
Section titled “Scopes”| Scope | Allows |
|---|---|
mcp:read |
Read tools only: look up and list contacts, deals, bookings, campaigns, reports. |
mcp:write |
Read and write tools: send messages, create and move deals, book meetings, run automations, change ad campaigns. |
A read-only MCP server grants mcp:read; a normal one grants both. Read or write is decided
per tool, and the tool reference marks each one. API keys skip the scope check.
Limit an MCP server
Section titled “Limit an MCP server”On the MCP server’s page in NexaCloser:
- Restrict Tools: allow only the tools you pick. Every other tool answers not in this MCP server’s allowed tools.
- Restrict Connections: allow only some outside services (for example Google Ads but not Meta). CRM tools are never limited by this.
- Token: create, show or rotate the
mcps_…token. Rotating stops the old token at once. - Revoke: disconnect every client of this MCP server for good.
Rate limits
Section titled “Rate limits”MCP calls count against your workspace’s API limit: 100 per 10 seconds and 200,000 per day.
A tools/call of a write tool counts 2, everything else counts 1. Over the limit the server answers
429 with Retry-After. See Rate limits.
API keys in URLs
Section titled “API keys in URLs”Some clients cannot send headers. The server also reads ?key= from the URL, but avoid it: URLs
are written to logs and stored by clients, so the key can leak. Use OAuth or an MCP server token
instead.
