Zero and the MCP server
Zero, the assistant inside ZeroReach, and the MCP server that gives Claude, Cursor and other AI tools the same abilities.
ZeroReach exposes the same set of tools in two places:
| Zero (in the app) | MCP server | |
|---|---|---|
| Who uses it | A signed-in person, in the ZeroReach app | Claude, Cursor, ChatGPT or any MCP client |
| Credential | The person's session | An API key (ro_pat_...) or an OAuth token (ro_oat_...) |
| Tools | A curated subset (What Zero can do) | Every tool the credential's scopes allow (MCP tool reference) |
| Writes | Shown as a plan; run only after the person confirms | Run when the client calls them |
How a tool call works
Each tool maps to one existing API route. The server checks the scope, then runs the route's own handler as an internal request. So role checks, validation, compliance gates (suppressions, consent, calling windows, caps) and the audit log apply exactly as for an HTTP request. The MCP layer never talks to the database directly.
- A
2xxanswer becomes the tool result'sstructuredContent. A non-object body is wrapped as{"result": ...}. - Any other status becomes a tool error with
{status, detail}, so scope and compliance denials reach the agent as readable errors. - Results are capped at 2 MB.
- Tools that return lists are paged: pass the previous result's
next_cursorascursor.
The MCP server
- Endpoint:
POST /api/v1/mcp. It uses Streamable HTTP, is stateless (no MCP sessions) and answers in JSON. - Auth:
Authorization: Bearer ro_pat_...(an API key) or an OAuth access token from a connector. Anything else is a401whoseWWW-Authenticateheader points to the OAuth discovery metadata. - Rate limits: every tool call counts towards the key's (or the connection's) request limit, like an API request.
- Audit: mutating tool calls are audited with
via: mcp. - stdio: for clients that launch a local process instead of connecting to a URL, the
core-mcpbridge forwards stdio JSON-RPC to the same endpoint (see Connect).
The server tells clients how to start:
Start with
whoami(who and where, local time, which scopes you have) andget_daily_briefing(what happened and what needs the user).
What stays with people
Email is never sent directly by a tool:
draft_emailputs a draft in the review queue.- Only a signed-in person approves and sends drafts.
- MCP clients can list, edit and reject drafts.
Zero goes further. It never sends email, places calls, starts or resumes a campaign, approves drafts, sends contracts for signature, approves discounts, changes roles or touches billing. The server refuses those routes for Zero even if a tool tried to reach one. See What Zero can do.