MCP server
ZeroWidth ships a Model Context Protocol server at https://api.zerowidth.ai/mcp. Wire it into Claude Desktop, Cursor, Continue, or any MCP-compatible host and the LLM gains tools that search our docs and — with a personal access token — drive your workspace's flows, datasets, evals, and pages.
Two classes of tools, one endpoint
The same /mcp URL serves both:
- Docs tools —
search_docs,get_doc,list_docs. No authentication required. Work the moment you paste the URL into your MCP client. - Platform tools —
workbench_flows_list,caliper_datasets_list,compass_pages_list,ledger_entries_list,napkin_boards_view, … Require a bearer token (personal access token or workspace API key) carrying the right scope. Acts with your permissions across every workspace you're a member of.
Try the docs first to see if it's installed correctly; add a token when you want the platform layer too.
Docs tools (no auth)
Three tools, all backed by the same corpus that powers /docs/* here:
search_docs(query, limit?) → matches[]Token-overlap search across docs. Returns each match's title, slug, public URL, and a query-relevant snippet. Use when the user asks about a product, an API behavior, or a policy.
get_doc(slug) → markdownFull Markdown body for a specific page. Accepts compass/api, /compass/api, or docs/compass/api — all three resolve.
list_docs(product?) → page[]Enumerate every indexed page, optionally filtered by product (compass, workbench, caliper, overview).
Every doc page is also registered as an MCP resource under docs://<slug> — hosts that surface MCP resources (Claude Desktop's "Attach from MCP" UI, certain Cursor flows) let the user browse the list and pull pages into context without an LLM tool call.
Platform tools (authenticated)
With a bearer token, the LLM gets tools that drive your workspace. Each requires a scope; a _list/_get/search tool needs the matching :read, a create/run/edit tool needs :write (or :run).
Workbench
| Tool | Does | Scope |
|---|---|---|
workbench_flows_list | List flows in a workspace | workbench:flows:read |
workbench_flows_get | Read one flow's definition | workbench:flows:read |
workbench_node_catalog_get | Search the node catalog | workbench:flows:read |
workbench_flows_run | Run a flow | workbench:flows:run |
workbench_flows_scaffold | Draft a first-cut flow | workbench:flows:write |
workbench_flows_edit_text | Make a surgical text edit in a flow | workbench:flows:write |
workbench_flows_share_create | Mint a guest share link | workbench:flows:write |
Caliper
| Tool | Does | Scope |
|---|---|---|
caliper_datasets_list | List datasets | caliper:datasets:read |
caliper_evals_list | List evals | caliper:evals:read |
caliper_evals_run | Kick off an eval run | caliper:evals:write |
Compass
| Tool | Does | Scope |
|---|---|---|
compass_pages_list | List pages (optionally by type) | compass:pages:read |
compass_pages_search | Search pages | compass:pages:read |
compass_pages_get | Read a page's body | compass:pages:read |
compass_page_links_list | List a page's connections | compass:pages:read |
compass_pages_create | Create a page | compass:pages:write |
compass_links_create | Connect two pages with a typed link | compass:pages:write |
compass_interviews_create | Start a stakeholder interview | compass:pages:write |
Ledger
| Tool | Does | Scope |
|---|---|---|
ledger_entries_list | List decision entries (filterable) | ledger:entries:read |
ledger_entries_get | Read one entry with its expectations | ledger:entries:read |
ledger_entries_create | Record a decision or memory (approval-gated) | ledger:entries:write |
ledger_entries_settle | Settle an entry against evidence (approval-gated) | ledger:entries:write |
Napkin
| Tool | Does | Scope |
|---|---|---|
napkin_boards_list | List sketches — name, activity, shape count | napkin:boards:read |
napkin_boards_view | Render a sketch to an image the model can SEE | napkin:boards:read |
Prism
| Tool | Does | Scope |
|---|---|---|
prism_fields_list | List fields | prism:fields:read |
prism_fields_get | Read a field's nodes | prism:fields:read |
prism_fields_create | Create a field (approval-gated) | prism:fields:write |
prism_nodes_expand | Generate permutations from a node (approval-gated) | prism:fields:write |
prism_nodes_update | Edit a node (approval-gated) | prism:fields:write |
The token determines the ceiling; your workspace role (OWNER / ADMIN / MEMBER) determines the floor. A token with caliper:evals:write can't write in workspaces where you're not an ADMIN.
Mint a personal access token at accounts.zerowidth.ai → Integrations. Tokens are bound to you, expire on a schedule you choose (default 90 days), and revoke instantly from the same page.
Setup
- (Optional) Mint a personal access token
Go to accounts.zerowidth.ai → Integrations → New token. Pick a name (where you'll paste it), pick scopes (start broad with
full_accessif you're not sure), pick a default workspace (lets you skip theworkspacearg on most calls), confirm. Copy the token immediately — it's shown exactly once.Skip this step if you only need the docs tools.
- Add the server to your MCP client's config
- Restart the client
Most MCP hosts only re-scan their config on startup. Quit fully and re-open. The
zerowidthserver should appear in the tools menu. - Try it
Without a token, the docs tools are available. Ask:
How do I run a Workbench flow from my code?
The LLM should call
search_docsand thenget_doc, then summarize from the returned Markdown.With a token, the platform tools light up too:
List my Workbench flows in the acme workspace.
The LLM calls
workbench_flows_listwithworkspace: "acme"(or omits it if the token has a default workspace).
Troubleshooting
The server doesn't show up in the tools menu
Most MCP hosts surface server-startup errors in their logs:
- Claude Desktop —
~/Library/Logs/Claude/mcp.log(macOS) or%APPDATA%\Claude\logs\mcp.log(Windows). - Cursor — Help → Toggle Developer Tools, then the Console tab.
Look for HTTP errors against api.zerowidth.ai/mcp. The most common is a typo in the URL — the path is /mcp, not /1.0/mcp or /api/mcp.
Tools return `auth_required`
You're calling a platform tool (workbench / caliper / compass) without a bearer token. Either:
- Mint a token at accounts.zerowidth.ai → Integrations and paste it into your client's MCP config under
headers.Authorization. - Stick to the docs tools (
search_docs/get_doc/list_docs), which work without auth.
Tools return `scope_missing`
Your token authenticated but doesn't carry the scope the tool needs. Mint a new token with the broader scope set — tokens are immutable on scopes (rotation = revoke + remint), but the old one keeps working alongside the new one until you revoke it.
Tools return `workspace_required`
You're calling a platform tool with a personal token that has no default workspace, and you didn't pass a workspace argument. Either set a default at accounts.zerowidth.ai or pass workspace: "<slug>" on the call.
Tools can't find a workspace you expected
A workspace you aren't a member of looks the same as one that doesn't exist. Check the slug and your membership at accounts.zerowidth.ai. (If your default workspace was deleted, the pointer was nulled automatically — pass workspace explicitly until you set a new default.)
The LLM doesn't seem to be calling the tools
MCP tools are visible to the LLM but the LLM decides whether to call them. If you find it ignoring the docs:
- Be explicit: "Use the
zerowidthMCP server to look this up." - Check the host's tool-permission UI — some hosts default to "ask before each call" which can interrupt the flow.
- Some smaller models don't reach for tools as eagerly; if the assistant keeps ignoring the server, prompt it explicitly or switch to a more capable model.
Security
- Tokens are shown exactly once at mint — copy immediately. Lost tokens can't be recovered, only revoked + reminted.
- Expiry is mandatory (default 90 days, max 365). Forced rotation is a leak mitigation.
- Optional IP allowlist at mint time restricts where the token can be used from. Recommended for service hosts; skip for laptops on changing networks.
- Revoke instantly from accounts.zerowidth.ai → Integrations; the revoke takes effect on the token's next call.
- Every call lands in your workspace's audit log under your name.
Roadmap
- Mutating tools (create/update/delete/run) with a server-side confirmation step the client surfaces before the action lands.
- Guided install flow from the accounts UI that mints a token with the right defaults and emits a one-click config snippet per client.
- Prompts capability — slash-commands like
/explain compass apifor guided flows. - stdio variant as a published npm package, for hosts that prefer a local subprocess to an HTTP server.