Skip to main content

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 toolssearch_docs, get_doc, list_docs. No authentication required. Work the moment you paste the URL into your MCP client.
  • Platform toolsworkbench_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) → markdown

Full 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

ToolDoesScope
workbench_flows_listList flows in a workspaceworkbench:flows:read
workbench_flows_getRead one flow's definitionworkbench:flows:read
workbench_node_catalog_getSearch the node catalogworkbench:flows:read
workbench_flows_runRun a flowworkbench:flows:run
workbench_flows_scaffoldDraft a first-cut flowworkbench:flows:write
workbench_flows_edit_textMake a surgical text edit in a flowworkbench:flows:write
workbench_flows_share_createMint a guest share linkworkbench:flows:write

Caliper

ToolDoesScope
caliper_datasets_listList datasetscaliper:datasets:read
caliper_evals_listList evalscaliper:evals:read
caliper_evals_runKick off an eval runcaliper:evals:write

Compass

ToolDoesScope
compass_pages_listList pages (optionally by type)compass:pages:read
compass_pages_searchSearch pagescompass:pages:read
compass_pages_getRead a page's bodycompass:pages:read
compass_page_links_listList a page's connectionscompass:pages:read
compass_pages_createCreate a pagecompass:pages:write
compass_links_createConnect two pages with a typed linkcompass:pages:write
compass_interviews_createStart a stakeholder interviewcompass:pages:write

Ledger

ToolDoesScope
ledger_entries_listList decision entries (filterable)ledger:entries:read
ledger_entries_getRead one entry with its expectationsledger:entries:read
ledger_entries_createRecord a decision or memory (approval-gated)ledger:entries:write
ledger_entries_settleSettle an entry against evidence (approval-gated)ledger:entries:write

Napkin

ToolDoesScope
napkin_boards_listList sketches — name, activity, shape countnapkin:boards:read
napkin_boards_viewRender a sketch to an image the model can SEEnapkin:boards:read

Prism

ToolDoesScope
prism_fields_listList fieldsprism:fields:read
prism_fields_getRead a field's nodesprism:fields:read
prism_fields_createCreate a field (approval-gated)prism:fields:write
prism_nodes_expandGenerate permutations from a node (approval-gated)prism:fields:write
prism_nodes_updateEdit 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

  1. (Optional) Mint a personal access token

    Go to accounts.zerowidth.ai → IntegrationsNew token. Pick a name (where you'll paste it), pick scopes (start broad with full_access if you're not sure), pick a default workspace (lets you skip the workspace arg on most calls), confirm. Copy the token immediately — it's shown exactly once.

    Skip this step if you only need the docs tools.

  2. Add the server to your MCP client's config
  3. Restart the client

    Most MCP hosts only re-scan their config on startup. Quit fully and re-open. The zerowidth server should appear in the tools menu.

  4. 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_docs and then get_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_list with workspace: "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 zerowidth MCP 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 api for guided flows.
  • stdio variant as a published npm package, for hosts that prefer a local subprocess to an HTTP server.
8 min read