Plans & Rate Limits
Tier matrix
| Capability | Free | Bitter | Chainer | Architect |
|---|---|---|---|---|
Call MCP endpoint (mcp.access) | — | ✓ | ✓ | ✓ |
mcp.tools.read — all tools except update_agent | — | ✓ | ✓ | ✓ |
mcp.tools.write — update_agent | — | — | ✓ | ✓ |
Manage OAuth clients (mcp.oauth_client.manage) | — | — | ✓ | ✓ |
mcp.tools.read is not read-only. It is the single entitlement covering almost the whole tool surface, including the tools that create, change, and delete tasks, goals, memories, and sandbox files. See the Tools Reference for which entitlement each tool consumes.
Anonymous calls receive 401 Unauthorized with a WWW-Authenticate header pointing to the OAuth discovery URL — Claude.ai handles this automatically.
Rate limits
Two independent buckets:
Endpoint bucket — mcp.access
Counted per user, per minute. Exceeding it returns HTTP 429.
| Plan | Requests / minute |
|---|---|
| Bitter | 30 |
| Chainer | 120 |
| Architect | 300 |
Per-tool bucket — mcp.tools.read / mcp.tools.write
Counted per user, per hour, separately for read and write tools. Burning the read budget never affects write and vice versa.
| Plan | Read / hour | Write / hour |
|---|---|---|
| Bitter | 60 | n/a |
| Chainer | 600 | 60 |
| Architect | 6000 | 600 |
Per-tool budgets (loop prevention)
Inside a single MCP call, the server enforces its own ceilings:
- No nested tool calls — an MCP request dispatches exactly one tool.
- A cap on how many times the same tool may repeat within one request. A few tools whose legitimate usage fans out — reading several distinct records after a search, or grouping by every value of a status filter — carry a slightly higher cap.
These ceilings stop runaway loops from draining your hourly budget on a single request.
Upgrading
When a tool returns 403 feature_not_in_plan, the error includes the required feature key (e.g. mcp.tools.write). The web app's paywall page links straight to upgrade flow.