Access, limits, and errors
Who can connect, what plans are required, and the errors you can hit.
Access and plans
- Who gets a token: the MCP page in the web app is available to organization owners. Tokens are personal; each member gets their own.
- Subscription: every organization-scoped tool call checks that the organization has an active subscription. Trials count as active, so you can use the MCP during a trial.
- Paused billing: if billing collection is paused, MCP access is paused too. Resume billing under Settings, then Billing, in the web app.
- Paid-only features: creating Public API keys and webhooks through MCP tools requires a paid plan, same as in the web app.
Limits
There is no request rate limit on the MCP endpoint. Instead, individual tools cap their own cost:
| Limit | Where |
|---|---|
| 50 sampled jobs per call (default 20) | knowledge_base_simulate |
| 10 sampled jobs per call (default 5) | cover_letter_simulate |
| 1,000 rooms and 500 messages per room (default 100 and 50), 50 MB per file | inbox_export_start |
| 100 messages per room read (default 30) | inbox_room_get |
| 25 MB per file, 5 proposal attachments | campaign_attachment_create |
| About 15 MB per attachment | inbox_room_send_message |
| 24-hour expiry on export download links | all export tools |
Simulation tools run the production AI on each sampled job, so agents are instructed to offer them rather than run them automatically.
Errors
Connection-level failures come back as JSON-RPC errors:
| Situation | HTTP | Message |
|---|---|---|
| No token in the URL or headers | 401 | Missing MCP token |
| Malformed, unknown, or regenerated token | 401 | Invalid MCP token |
| Expired token | 401 | MCP token expired |
| Subscription inactive or billing paused | 403 | Explains how to fix it in Settings, then Billing |
More than one organization and no organizationId given | 400 | Tells the agent to call organization_list |
Tool-level failures (a campaign that cannot start, a knowledge base profile at its plan limit, a blocked delete) come back as structured tool errors with a message the agent can act on, not as protocol failures. Well-behaved agents read the message, fix the input or ask you, and retry.
Common ones you might see surfaced in chat:
- Campaign cannot start: the response lists every unmet requirement (missing filters, no template, no active subscription, and so on).
- Knowledge base profile limit reached: delete an unused profile or upgrade your plan.
- Delete blocked: knowledge base profiles and templates cannot be deleted or archived while a live campaign uses them.
- Export expired: export downloads are valid for 24 hours; start a new export.
Privacy and audit
- Every tool response passes through a sanitizer that strips credentials, tokens, and secrets before the agent sees it.
- Every call is audit-logged with the tool name, sanitized input, latency, and outcome. Writes additionally record what changed, with before and after state.
- Reading messages with
inbox_room_getmarks the room read on Upwork, andinbox_room_send_messageposts real messages to real clients. The server flags these side effects to the agent so it confirms with you first.