Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

ZeroWidth Compass

REMOTE · API.ZEROWIDTH.AI

Read and update your Compass map: pages, changes, opportunities and interviews.

Available components

+3 this week 73 Trust /100

Last scanned (35 minutes ago)

Scores higher than 64% of remote servers

Reachable. Last reached 24 Oct 2026.

Category Productivity and Notes

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security57
Transport & Reachability100
Schema Quality & AI Usability86
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Tool/resource definitions use about 17388 tokens (~88/item across 196 items; 62 tools + 134 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management53
  • Stability observed for 16 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage97
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 90% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 63 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 23 Oct 26 0
    • Tool “compass_gaps_resolve” rewrote its description, which is the text the model reads security
    • Tool “compass_interviews_create” rewrote its description, which is the text the model reads security
    • Tool “compass_map_view” rewrote its description, which is the text the model reads security
    • Tool “compass_step_claims_propose” rewrote its description, which is the text the model reads security
    • Tool “search_docs” rewrote its description, which is the text the model reads security
    • New tool “compass_role_story” functional
    • New tool “compass_roles_overview” functional
    • “compass_opportunities_mark_implemented” added an optional parameter “applyToMap” cosmetic
  • 22 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.

  • 20 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 37 to 40. That category is still filling its 30-day observation window: 11 days of observed history at the previous scan, 12 at this one. The score rises as the window fills, whether or not the server changes.

  • 18 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.

  • 17 Oct 26 0
    • Tool “compass_step_claims_propose” rewrote its description, which is the text the model reads security
    • Tool “search_workspace” rewrote its description, which is the text the model reads security
    • “search_workspace” added an optional parameter “folderId” cosmetic
    • “compass_links_create” reworded the description of “sourceId” cosmetic
    • “compass_links_create” reworded the description of “sourceKind” cosmetic
    • “compass_step_claims_propose” reworded the description of “sourceId” cosmetic
    • “compass_step_claims_propose” reworded the description of “sourceKind” cosmetic
    • “compass_step_measures_propose” reworded the description of “sourceId” cosmetic
    • “search_workspace” reworded the description of “kinds” cosmetic
    • “search_workspace” reworded the description of “q” cosmetic
  • 16 Oct 26 +1
    • Tool “compass_inbox_list” rewrote its description, which is the text the model reads security
    • Tool “compass_links_create” rewrote its description, which is the text the model reads security
    • Server version: 0.0.0 → 1.0.0 functional
  • 14 Oct 26 +1
    • Tool “compass_priority_steps_find” rewrote its description, which is the text the model reads security
    • Tool “compass_step_claims_propose” rewrote its description, which is the text the model reads security
    • Tool “compass_transformations_make_change” rewrote its description, which is the text the model reads security
    • New resource “prism/synthetic-panels” functional
    • New tool “compass_transformations_respond” functional
    • “compass_interviews_create” reworded the description of “focusPrompt” cosmetic
  • 13 Oct 26 0
    • Tool “compass_step_claims_propose” rewrote its description, which is the text the model reads security
    • Tool “compass_workflow_steps” rewrote its description, which is the text the model reads security
    • New tool “compass_priority_steps_find” functional
    • New tool “compass_transformations_get” functional
    • New tool “compass_transformations_make_change” functional
    • New tool “compass_transformations_read” functional
    • Tool “compass_step_claims_propose” changed its title: Propose who does a workflow's steps → Propose who does a workflow's steps and what in cosmetic
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 24 Oct 2026 · Probed https://api.zerowidth.ai/mcp/x/compass

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=api.zerowidth.ai CN=WR3,O=Google Trust Services,C=US 20 Sept 2026 19 Dec 2026 RSA 2048 SHA256-RSA ef3f24a330d02ed80992778a6ead44bf
SANs: api.zerowidth.ai
CN=WR3,O=Google Trust Services,C=US (CA) CN=GTS Root R1,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 RSA 2048 SHA256-RSA 7ff005a91568d63abc22861684aa4b5a
CN=GTS Root R1,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 19 Jun 2020 28 Jan 2028 RSA 4096 SHA256-RSA 77bd0d6cdb36f91aea210fc4f058d30d

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of api.zerowidth.ai. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
ai. present 3799 8 Verified
zerowidth.ai. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://api.zerowidth.ai/mcp/x/compass Verified 200
http (plaintext) http://api.zerowidth.ai/mcp/x/compass HTTPS enforced
MCP tools · 62 exposed · ~13,788 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
comments_create ~184

Posts a comment on a workspace entity — a new thread, or a reply when rootId is given. Use it to leave findings where the discussion already lives (an eval result on the flow being debated, a summary on a long thread). Mention people via mentionedUserIds (from workspace member ids) to ring their notification bell; never mention someone who didn't ask to be pulled in.

NameTypeReqDescription
approvalIdstring––
bodystringyes–
entityIdstringyes–
entityKindstringyesWhat the thread hangs on.
mentionedUserIdsarray––
rootIdstring–Reply into this thread; omit to start a new one.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

comments_list ~105

Lists the comment threads on one workspace entity (open first, then resolved) with authors and timestamps. Read this before weighing in on contested work — the threads are where disagreement lives before it becomes a decision.

NameTypeReqDescription
entityIdstringyes–
entityKindstringyesWhat the thread hangs on.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

comments_resolve ~118

Sets a comment thread's resolved state (rootId = the thread's root comment id). Resolve ONLY when the human asked or the thread's question is demonstrably settled — and say what settled it in a reply first. Reopening is for new evidence.

NameTypeReqDescription
approvalIdstring––
resolvedbooleanyes–
rootIdstringyes–
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_change_effects_set ~248

Replace a change's effects: for each step it reaches (workflowPageId + nodeId from compass_workflow_steps — a sub-workflow's steps included), one of eliminate, automate (reviewMinutes: what a person still spends checking), parallelize (its wait comes off the critical path), relax_gate (keepShare: share of the wait left, default 0.25), assist (keepShare: share of hands-on time left, default 0.5), reassign (toSubjectPageId). Eliminating or automating every step of a sub-workflow collapses the step that is that sub-workflow. Then project with compass_workflow_rollup changeIds. May return `needs_confirmation`.

NameTypeReqDescription
approvalIdstring–Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call.
effectsarrayyes–
opportunityIdstringyesThe change's key (e.g. ACME-12) or id.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_changes_upsert ~230

Create or update up to 100 changes in one call, each matched by `url` — the GitHub issue, Linear or Jira ticket, PR or doc it mirrors. A url already linked to a change updates that change (label, description, status, tags, experiment, workflow — omitted fields are left alone); any other url creates a change with that link. Run it again with the same urls to keep Compass in step; nothing duplicates. Statuses are by name (compass_statuses_list). Returns one result per item — created / updated with the change's key, or failed with why; a failed item doesn't stop the rest. Summarize what you're about to bring in before calling. May return `needs_confirmation` — one approval covers the whole batch.

NameTypeReqDescription
approvalIdstring–Approval id from a prior needs_confirmation response, after the user has approved.
itemsarrayyes–
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_gaps_create ~231

Records something you don't yet know — the gap registry is your working memory, so use it liberally while mapping or interviewing. Give one clear question, WHY it matters (what answering it unblocks), and how you'd resolve it (ask the user / interview a specific person / connect a source). No approval needed — noting your own uncertainty isn't acting on the user's behalf. Attach it to a subject (subjectType/subjectId) when it's ABOUT a specific page or person.

NameTypeReqDescription
questionstringyesThe open question, plainly ('Who approves refunds over $500?').
rationalestring–Why it matters / what answering it unblocks.
subjectIdstring–Id of the subject.
subjectTypestring–What it's about, e.g. compass_page.
suggestedResolutionstring–How to resolve it: 'ask the user', 'interview Dana', 'connect Drive'.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_gaps_list ~148

Lists the workspace's open questions — the gap registry: what the map doesn't know yet. Defaults to OPEN gaps. This is where you keep your head — check it before asking the user something you may already have flagged, and compose interview briefs from a subject's open questions.

NameTypeReqDescription
statusstring–Filter by lifecycle stage. Default OPEN.
subjectIdstring–Only gaps ABOUT this subject id.
subjectTypestring–Only gaps ABOUT this subject type (e.g. compass_page).
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_gaps_resolve ~259

Closes a gap once you've learned the answer (ANSWERED, with the resolution) or decided it doesn't matter (DISMISSED). Keep the registry honest — resolve gaps as their answers land (from an interview, a doc, or the user) so it always reflects what's still unknown. The resolution alone isn't the map: when the answer says something about a page (who does a step, a tool they use, how a decision gets made), write it there too in the same turn, on the page it's about or as the step, person or system it names. Gaps you raised close without a card; a question a person wrote needs their approval.

NameTypeReqDescription
approvalIdstring–Re-call with the approvalId from a needs_confirmation response after the user approves.
gapIdstringyesId of the gap (from compass_gaps_list).
resolutionstring–The answer / note, when marking ANSWERED.
statusstringyesANSWERED (you learned it) or DISMISSED (irrelevant).
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_gaps_update ~201

Edits an open question's wording, rationale, or suggested resolution — for sharpening a vague question or fixing one you phrased badly. Closing a gap is compass_gaps_resolve, not this. Gap ids come from compass_gaps_list. May return `needs_confirmation`.

NameTypeReqDescription
approvalIdstring–Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call.
gapIdstringyesId of the gap (from compass_gaps_list).
questionstring–New wording of the question.
rationalestring–Why it matters / what answering it unblocks.
suggestedResolutionstring–How to resolve it: 'ask the user', 'interview Dana', 'connect Drive'.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_inbox_list ~237

The Compass Inbox in one read: finished interviews awaiting review (transcript in, not yet turned into pages), AI-proposed opportunities awaiting accept / dismiss, and the caller's pending approval cards for Compass writes. THE place to answer 'what needs me?' for the map. Also `fillIn`: what the map is missing to say who's responsible for what (priorities with no owner, business units with no lead, people and roles in no unit, priorities with no workflow behind them); not counted in `total`. Next moves: compass_interviews_get to read a transcript, then propose pages from it with compass_pages_create; compass_opportunities_accept or compass_opportunities_delete for a proposal. For fillIn, ask the user who owns or leads it, or which unit someone sits in, then compass_links_create with kind owns (person or role → priority or unit) or part_of (person, role or unit → unit); never guess an owner.

NameTypeReqDescription
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_interview_invite ~256

Emails the guest link for an existing interview, framed as coming from the REQUESTING USER (their name signs it; replies go to them). Author `message` in their voice — short, human, says why THEIR knowledge matters and that it takes ~15 minutes, no account needed. The approval card shows the exact subject + message before anything sends. Limit: the invite plus ONE reminder; a third ask is the user's conversation to have. Completion arrives as a notification with draft-page counts — don't poll.

NameTypeReqDescription
approvalIdstring–Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call.
emailstringyesThe interviewee's email address.
interviewIdstringyesInterview id from compass_interviews_create.
messagestringyesThe body, written in the requesting user's voice. Greeting + link + signature are added automatically — write only the middle.
subjectstringyesEmail subject, e.g. '15 minutes on how refunds actually work?'
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_interview_targets ~169

Ranks the PEOPLE the map says know about a page (workflow, system, pain point): `owns` links first, then `involved_in`, then weaker edges. Each target carries contact email + role from their PERSON page and their latest interview (skip someone who just gave one — interview fatigue is real). Empty result = the map doesn't know an owner: ASK THE USER who runs this, create the PERSON page + owns link from the answer, and the map gets smarter. Use before compass_interviews_create to pick the interviewee.

NameTypeReqDescription
pageIdstringyesThe page the knowledge gap is about.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_interviews_create ~479

Mints a stakeholder-interview invite: a no-account guest link where the person talks to an interviewer agent briefed by your focusPrompt, and the transcript flows back into Compass as reviewable draft pages. THE KNOWLEDGE-GAP MOVE: when caliper_flow_performance shows failures clustered on missing company facts (the judge says the flow invented a policy, missed a rule, didn't know who owns something), the fix is usually not a prompt edit — it's asking the human who actually knows. Write a focusPrompt that names the SPECIFIC gaps (cite the eval run id), pick the owner of the relevant workflow as interviewee when the map knows one. When you have their email, send the link with compass_interview_invite next rather than asking the user to forward it; otherwise hand the user the link. May return `needs_confirmation` — tell the user who you want to interview and why, then wait.

NameTypeReqDescription
anonymousboolean–The guest is told it's anonymous and never asked who they are; no name or email is kept, so leave intervieweeName and intervieweeEmail out, and the link isn't emailed from here. Use when the user ask…
approvalIdstring–Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call.
contextPageIdsarray–Compass page ids the interviewer gets as briefing context (e.g. the workflow page whose flow underperformed).
focusPromptstringyesThe interviewer's aim (≤2000 chars), never shown to the guest: why the team is asking, in one sentence; 2–3 things to come away knowing, each describable from experience (who does a step, what happen…
intervieweeEmailstring–Their email, when known — enables compass_interview_invite to send the link directly (with approval).
intervieweeNamestring–Who this invite is for, when known.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_interviews_get ~128

One interview in full — metadata plus the transcript of what the guest actually said. Read this before summarizing an interview or drafting pages from it: the transcript is the source you work from, and your compass skill has the rules for typing and splitting what's in it. Ids come from compass_interviews_list or compass_inbox_list.

NameTypeReqDescription
interviewIdstringyesInterview id (from compass_interviews_list).
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_interviews_list ~131

Every stakeholder interview in the workspace, newest first: who was invited, status (INVITED / IN_PROGRESS / COMPLETED), focus, message count, whether the transcript was already reviewed (documentPageId set), and the invite URL while the link is still live. Check this before inviting someone again — interview fatigue is real — and to answer 'who have we already asked?'. Read one in full with compass_interviews_get.

NameTypeReqDescription
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_interviews_revoke ~153

Kills an interview's invite link — the guest's next visit sees that the link is no longer active. Use when an invite went to the wrong person, the user changed their mind, or the link leaked. Idempotent. Ids come from compass_interviews_list. May return `needs_confirmation`.

NameTypeReqDescription
approvalIdstring–Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call.
interviewIdstringyesInterview id (from compass_interviews_list).
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_links_create ~546

Creates a typed, directed edge between two pages — the knowledge graph's connective tissue. Canonical directions: PERSON or ROLE owns WORKFLOW/SYSTEM/PRIORITY, PERSON or ROLE involved_in WORKFLOW, PERSON holds ROLE, WORKFLOW uses SYSTEM, SYSTEM uses SYSTEM, PAIN_POINT affects WORKFLOW/SYSTEM/PERSON/ROLE, DOCUMENT documents anything, PRIORITY contributes_to PRIORITY (a priority that ladders up to a bigger one; each ladders up to at most one, and choosing a new one moves it; a priority has one owner the same way), UNIT part_of UNIT and ROLE or PERSON part_of UNIT (the org chart: one parent each; a UNIT's lead owns it, one owner), relates_to as fallback. Prefer attaching responsibilities to the ROLE and linking the PERSON to it with holds — the role outlasts whoever is in it. Pass validFrom / validTo when the source says when it was true ('took over approvals in March'), and sourceKind + sourceId for who said so (the interview or page you learned it from). Idempotent on an open (from, to, kind) edge — re-creating one returns it. May return `needs_confirmation`; tell the user what you're proposing, wait for their approval, then re-call with the approvalId.

NameTypeReqDescription
approvalIdstring–Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call.
fromPageIdstringyesEdge source page id.
kindstringyesEdge type, in canonical direction.
notestring–≤500-char qualifier when the kind alone undersells it.
sourcestring–Provenance label. Defaults AI_ACCEPTED (agent writing under live human direction); pass USER for human-driven scripts.
sourceIdstring–Id of the interview, email thread, Prism report or page named by sourceKind.
sourceKindstring–Who says this is true: an interview, an email thread, a Prism desk-research report (prism_report), a page (a DOCUMENT, or the PERSON who told you), or the user.
toPageIdstringyesEdge target page id.
validFrom––When the relationship started being true (YYYY-MM-DD). Omit when unknown.
validTo––When it stopped being true (YYYY-MM-DD). Only for a relationship that has already ended — recording history.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_links_delete ~186

Deletes one edge from the graph (the pages stay). Use only when a connection was never true — the system isn't used by that workflow, it was recorded by mistake. When a relationship WAS true and has stopped (the person left the team, moved roles), end it with compass_links_update `validTo` instead, so the history stays. Link ids come from compass_page_links_list. Re-creating the same edge later revives it. May return `needs_confirmation`.

NameTypeReqDescription
approvalIdstring–Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call.
linkIdstringyesId of the link (from compass_page_links_list).
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_links_update ~315

Edits an existing edge between two pages: its `kind` (how the two relate), its `note`, and/or when it was true (`validFrom` / `validTo`). Use kind to CORRECT a connection typed wrongly — 'Dana doesn't own billing, she's involved in it'. Use validTo to END one that used to be true — 'Dana handed approvals to Sam in March' ends Dana's edge in March (then create Sam's from March); the old edge stays as history. Don't delete a relationship that ended; end it. Link ids come from compass_page_links_list. Fails with conflict when the new reading already exists between the same two pages (delete this one instead). May return `needs_confirmation`.

NameTypeReqDescription
approvalIdstring–Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call.
kindstring–New edge type, in canonical direction.
linkIdstringyesId of the link (from compass_page_links_list).
notestring–New qualifier note (≤500 chars); empty string clears it.
validFrom––When it started being true (YYYY-MM-DD); null clears it.
validTo––When it stopped being true (YYYY-MM-DD) — ends the relationship; null reopens it.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_map_view ~295

Renders the workspace's visual map to an image and returns it so you can SEE it the way the user does when they open Map: a transit-style map seen from above. Each workflow is a colored tile with a short code; people are round figures, systems are small squares with a drum, other pages are plain tiles, each named underneath. Lines along the grid join linked pages, solid between a workflow and what it touches, dashed between other pages; pages that link to each other more than to the rest gather into named regions on a pale ground plate, and pages connected to nothing sit together in a "Not connected" plate. zv1's drafts that nobody has accepted are drawn faint. Use this when the user asks about the shape of their map, where things cluster, what connects to what, or anything spatial. The text part counts the pages of each type, the links, and how many pages are unconnected, plus `mapUrl`. The image is for you to look at; do NOT put it in your reply as a markdown image (the chat can't show it). When the user should see the map, link `mapUrl` — e.g. `[Open your map](mapUrl)` — and describe what you saw.

NameTypeReqDescription
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_opportunities_accept ~233

The review verb for the Inbox: promotes an AI-PROPOSED opportunity (from compass_opportunities_propose or the opportunity scout) into the workspace's own pipeline. compass_opportunities_set_status does NOT do this — a proposal stays in the Inbox until accepted. Optional `status` decides its lane in the same step (BACKLOG to park it, EXPERIMENTING to start it); omitted, it lands in NEW. Fails with not_proposed when the row isn't an AI proposal. Ids come from compass_inbox_list / compass_opportunities_list. May return `needs_confirmation` — name the proposal and wait.

NameTypeReqDescription
approvalIdstring–Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call.
opportunityIdstringyesThe AI-proposed opportunity's id.
statusstring–Lane to place it in on accept (default NEW).
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_opportunities_create ~281

Record a change — a fix, a chore, a new step, or an experiment worth trying. Anchor it to a workflow page when one fits (compass_pages_list); leave unanchored otherwise. It lands in the board's first status unless you name another (compass_statuses_list). Set `experiment` only when the user wants it measured against the Ledger. May return `needs_confirmation` — summarize and wait for approval.

NameTypeReqDescription
approvalIdstring–Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call.
descriptionstring–What the change is, and why it's worth doing.
experimentboolean–Measure it against the Ledger. Default false.
labelstringyes≤200 chars, the change in one line.
linksarray–Where the work also lives — issue, ticket, PR or doc URLs.
statusNamestring–Start in this status (a name from compass_statuses_list).
tagsarray–Tags to file it under.
workflowPageIdstring–Workflow page to anchor to, when one fits.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_opportunities_delete ~182

Removes an opportunity from the pipeline (soft delete). For an AI proposal the user doesn't want, this is the dismiss verb; for a captured experiment that was a duplicate or a mistake, the remove verb. To conclude a real experiment without evidence, prefer compass_opportunities_set_status REJECTED — that keeps the record. Ids come from compass_opportunities_list. May return `needs_confirmation`.

NameTypeReqDescription
approvalIdstring–Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call.
opportunityIdstringyesThe change's key (e.g. ACME-12) or id, from compass_opportunities_list.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_opportunities_list ~216

The workspace's changes — fixes, chores, new steps, experiments. Each carries `statusName` (the workspace's own word for where it is) and `statusCategory` (TRIAGE undecided, BACKLOG not started, ACTIVE in progress, DONE, CANCELED dropped), plus the older lane key in `status`. `experiment: true` marks a change measured against the Ledger: `ledgerEntryId` null means no expectation registered; `ledger.verdict` carries confirmed/missed after settlement. Scores (value/feasibility/risk) and a workflow anchor are optional. Filter by lane key in `status` or by workflowPageId; compass_statuses_list has the status names.

NameTypeReqDescription
statusstring–Filter to one lane.
workflowPageIdstring–Only opportunities anchored to this workflow page.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_opportunities_mark_implemented ~268

The measurement window's boundary: when the user says the experiment's change actually shipped / went live / rolled out, record the landing date. Readings before it are baseline; after it, evidence of effect. Recorded once — it cannot move afterward, so confirm the date. Attaches to the linked Ledger entry as evidence. May return `needs_confirmation`.

NameTypeReqDescription
applyToMapboolean–Also move the map from the landing date: who does the change's steps, and how long they take, change as the change's effects say (automate, reassign, assist, relax a check, remove). Confirm with the…
approvalIdstring–Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call.
atstring–ISO date the change landed — omit for today.
notestring–What shipped, if worth recording.
opportunityIdstringyesThe change's key (e.g. ACME-12) or id, from compass_opportunities_list.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_opportunities_propose ~238

File an AI-PROPOSED opportunity into the workspace's review queue — the scouting verb (the opportunity-scout routine's main move). Unlike compass_opportunities_create this needs NO approval: the proposal itself is the human gate — it lands in the Compass Inbox and the cockpit's Needs-you for accept/dismiss. Check compass_opportunities_list first so you never duplicate an idea. Anchor to a workflow page when one fits; score value/feasibility/risk 1–5.

NameTypeReqDescription
descriptionstringyesWhat it is and why it's worth trying, grounded in the map.
feasibilityScoreinteger––
labelstringyes≤200 chars, the opportunity in one line.
reasoningstring–One or two sentences on why you're proposing this.
riskScoreinteger––
valueScoreinteger––
workflowPageIdstring–Workflow page to anchor to, when one fits.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_opportunities_register_expectation ~352

The honesty mechanism: write what the experiment is expected to change BEFORE evidence exists. Creates a Ledger decision entry and links it to the opportunity — never backfill an expectation to match an outcome. Bind a metric (ledger_metrics_list) + comparator + target when the expectation is measurable; readings then land on the entry as evidence automatically. One expectation per opportunity — revise by superseding in Ledger. May return `needs_confirmation`.

NameTypeReqDescription
approvalIdstring–Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call.
comparatorstring––
deadlinestring–ISO date the expectation is due by.
expectationstringyesOne sentence — what we expect this to change.
fromRollupobject–Instead of metricId: measure it off the change's workflow roll-up — a step's (nodeId) or the whole workflow's hands-on time, waiting, labor, or hard cost, per run or per month. Creates a daily-fed me…
metricIdstring–Ledger metric to bind (requires target). From ledger_metrics_list.
opportunityIdstringyesThe change's key (e.g. ACME-12) or id, from compass_opportunities_list.
targetnumber–Target value, in the metric's unit (hours for time).
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_opportunities_set_status ~268

Move a change to one of the workspace's statuses, by name (compass_statuses_list has them — e.g. "In review"). The old lane keys (NEW / QUALIFYING / BACKLOG / EXPERIMENTING / SETTLED / REJECTED) still work and land on that lane's default status. Only changes marked as experiments follow the Ledger: when an experiment enters an In progress status with no registered expectation, offer compass_opportunities_register_expectation; when it enters Done with its Ledger entry still open, offer ledger_entries_settle. Other changes just move. May return `needs_confirmation`.

NameTypeReqDescription
approvalIdstring–Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call.
opportunityIdstringyesThe change's key (e.g. ACME-12) or id, from compass_opportunities_list.
statusstring–A lane key. Use this or `statusName`.
statusNamestring–A status name from compass_statuses_list. Use this or `status`.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_opportunities_update ~478

Corrects an opportunity's content: label, description, priority, what done means, the 1–5 value / feasibility / risk scores, the owner (a PERSON page), notes, tags, workflow anchor, external link, visibility. Fields you omit are untouched; the lane is NOT here — move it with compass_opportunities_set_status. Opportunity ids come from compass_opportunities_list. May return `needs_confirmation` — say what you're changing and wait.

NameTypeReqDescription
approvalIdstring–Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call.
assignee––The workspace member doing the work, by email or user id; null unassigns. They're notified.
descriptionstring–New description (≤5,000 chars).
doneWhenstring–What's true when it's done, that someone else could check (≤1,000 chars).
experimentboolean–Measure it against the Ledger (expectation when it starts, verdict when it's done).
externalUrl––Where the doing happens off-platform (URL); null clears.
feasibilityScoreinteger––
labelstring–New one-line label (2–200 chars).
opportunityIdstringyesThe change's key (e.g. ACME-12) or id, from compass_opportunities_list.
ownerPageId––PERSON page id who owns the work; null clears.
priority––How soon it matters; null clears it, and the map's suggestion shows again.
qualitativeNotesstring–Free-form notes (≤20,000 chars) — replaces the current notes.
riskScoreinteger––
tagsarray–New tag set — replaces existing tags.
valueScoreinteger––
visibilitystring–Who can see it: PRIVATE (only the user), WORKSPACE (every member, the default), or SHARED (specific people, granted afterwards). Say 'make it private' → PRIVATE.
workflowPageId––Workflow page to anchor to; null un-anchors.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_page_links_list ~132

All typed edges touching one page, both directions, each hydrated with the other endpoint's page summary. Use this to understand a subject's neighborhood before adding to it. Current connections only, unless includeEnded — then also relationships that have ended (validTo in the past), for questions like who handled this before.

NameTypeReqDescription
includeEndedboolean–Also return connections that have ended.
pageIdstringyesThe page id.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_pages_create ~316

Creates a typed page in the workspace's Compass compendium. Check `compass_pages_list` first — don't create a page for a subject the map already has; link to it instead. May return `needs_confirmation` — if so, tell the user what you're proposing, wait for their approval, then re-call with the approvalId. Only record what the human has actually told you.

NameTypeReqDescription
approvalIdstring–Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call.
bodystring–Markdown body shaped to the type (steps for WORKFLOW, role/contact sections for PERSON, etc.).
tagsarray–Optional tags.
titlestringyes≤80 chars, sentence case, no filler verbs.
typestringyesPage type for this subject. PERSON = a specific individual; ROLE = a job, separate from whoever holds it (people hold roles); VALUE = something the business won't sacrifice; PRIORITY = an outcome it'…
visibilitystring–Who can see it: PRIVATE (only the user), WORKSPACE (every member, the default), or SHARED (specific people, granted afterwards). Say 'make it private' → PRIVATE.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_pages_delete ~182

Moves a page to the trash (soft delete — its connections and anchored opportunities go with it, and compass_pages_restore brings the whole set back). Use this to REMOVE a page you or an extraction created wrongly, or one the user says no longer belongs on the map; to fix a wrong title or body, use compass_pages_update instead. Page ids come from compass_pages_list / compass_pages_search. May return `needs_confirmation` — name the page and wait for approval.

NameTypeReqDescription
approvalIdstring–Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call.
pageIdstringyesId of the page to delete.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_pages_get ~108

Fetches one Compass page by id, including its full Markdown body, header fields, and any attached Napkin sketches — view an attached sketch's actual drawing with `napkin_boards_view` (its boardId) before discussing it.

NameTypeReqDescription
pageIdstringyesThe page id (from compass_pages_list).
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_pages_list ~236

Lists pages in the active workspace's Compass compendium. Optional `type` filter narrows to one node type (WORKFLOW, PERSON, ROLE, SYSTEM, PAIN_POINT, DOCUMENT, VALUE, PRIORITY, AUDIENCE, OFFERING). Returns summaries, 50 at a time (`limit` / `offset`, `total` and `nextOffset` in the result) — fetch one with `compass_pages_get` for the full body. When you know what you're looking for, `compass_pages_search` is the better first call.

NameTypeReqDescription
limitinteger–Page size, default 50. Prefer compass_pages_search when you know what you're looking for.
offsetinteger–Skip this many, for the next page.
typestring–Narrow to a specific page type (WORKFLOW, PERSON, ROLE, SYSTEM, PAIN_POINT, DOCUMENT, VALUE, PRIORITY, AUDIENCE, OFFERING).
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_pages_restore ~155

Puts a trashed page back on the map, together with exactly the connections and opportunities its delete took. Use when the user wants a deleted page back (the pageId from the earlier compass_pages_delete, or from the Compass trash). Fails with not_found when the page is already live or never existed. May return `needs_confirmation`.

NameTypeReqDescription
approvalIdstring–Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call.
pageIdstringyesId of the deleted page.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_pages_search ~177

Keyword search over page titles, bodies, and tags (case-insensitive substring match), paginated. The fast way to check whether a subject already has a page before creating or linking. Returns summaries with a 300-char body snippet — fetch full text with `compass_pages_get`.

NameTypeReqDescription
limitinteger–Results per page, 1-25. Default 10.
offsetinteger–Pagination offset. Default 0.
qstringyesSearch term. Use the most distinctive word or phrase for the subject ('Zendesk', 'invoice approval') — not full sentences.
typestring–Narrow to one page type.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_pages_update ~372

Edits an existing page's title, description, body, tags, header fields, or visibility — use this to FIX what you (or an extraction) got wrong instead of creating a duplicate. Fetch the current page with `compass_pages_get` first and preserve what the human wrote; title / body / tags replace the field wholesale, while `headerFields` MERGES over the current ones (send only the keys you're changing — 'set the owner' leaves status alone). Page ids come from compass_pages_list. May return `needs_confirmation` — tell the user what you're changing, wait for approval, then re-call with the approvalId.

NameTypeReqDescription
approvalIdstring–Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call.
bodystring–New Markdown body — replaces the whole body.
descriptionstring–New one-line gallery summary (≤2,000 chars).
headerFieldsobject–Partial header fields for the page's type (PERSON: role, email, …; WORKFLOW: owner, status, …) — merged over the current values; the server validates the merged result against the type.
pageIdstringyesId of the page to edit.
tagsarray–New tag set — replaces existing tags.
titlestring–New title (≤200 chars).
visibilitystring–Who can see it: PRIVATE (only the user), WORKSPACE (every member, the default), or SHARED (specific people, granted afterwards). Say 'make it private' → PRIVATE.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_priority_steps_find ~155

Reads every mapped workflow against one PRIORITY (or VALUE) and proposes the steps that move it (or where the business lives the value), one marked as what holds a priority back. Proposals wait for a person to keep them on the priority's page or in the Inbox, except in workflows someone tied to it (a serves link), where they're kept at once. Steps already tied or proposed aren't proposed again, so it's safe to run as the map grows. Use it after a priority is named and workflows are mapped, or when someone asks what moves a priority.

NameTypeReqDescription
pageIdstringyesThe PRIORITY or VALUE page id.
workspacestring–Workspace slug. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_process_diagram_ensure ~246

Returns the Napkin diagram that holds a WORKFLOW page's steps, creating it when the page has none. If the page body has a ```mermaid block, it moves into the diagram verbatim (node ids kept, so changes anchored to a step still point at it) and leaves the body. Then edit the steps with napkin_diagrams_update using the returned diagramId. One diagram per workflow holds every step anyone has described — when two people describe the same process differently, add the steps to this one diagram rather than making a second. A step that is itself a workflow is a node whose meta ref is { type: 'page', id: <that workflow's page id> }. compass_pages_get returns processDiagramId when one exists. May return `needs_confirmation`.

NameTypeReqDescription
approvalIdstring–Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call.
pageIdstringyesThe WORKFLOW page id.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_role_story ~232

One ROLE page's story: hands-on hours a month by kind of work (rote, judgment, relationship, sign-off) before its first change or Task landed and now; what landed and when; new work it took on (checks inside Tasks, Tasks it looks after, work a change added), with whether each has settled; the role's size (people × hours each, `hoursAssumed` when the hours are a full-time default) and how much of its month is documented; and the latest analysis, when someone ran one: options for where saved hours could go, each with the stage of its change (proposed = looking into, agreed, done = in place, confirmed, dropped), and skills. Saved hours in a role with under half its month documented are unproven: say so. Talk about the role, never about a person.

NameTypeReqDescription
rolePageIdstringyesThe ROLE page's id.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_roles_overview ~146

Every role in the workspace in one row each, changed or not: hours documented against its working month, hours a month saved, saved hours by stage (looking into, agreed, in place, confirmed, not placed yet), judgment work before and now, new work, and why a role wants attention (unproven savings, saved hours nobody is placing, no documented steps, no headcount). Plus totals. Use compass_role_story for one role's detail. Talk about roles, never about people.

NameTypeReqDescription
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_scenario_changes ~111

Changes whose effects reach a WORKFLOW's steps — or any nested workflow's — plus changes anchored to it with no effects yet, each with what it does per step. Pass their ids to compass_workflow_rollup's changeIds to project the workflow after them.

NameTypeReqDescription
pageIdstringyesThe WORKFLOW page id.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_statuses_list ~135

The statuses this workspace's changes move through, in board order — the names people use. Each sits in a group: Undecided (TRIAGE), Not started (BACKLOG), In progress (ACTIVE), Done (DONE), Dropped (CANCELED). Groups are stable across workspaces; names aren't, so use the names when talking to people and the groups when reasoning about progress. Move a change with compass_opportunities_set_status.

NameTypeReqDescription
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_step_claims_list ~154

Every claim about a WORKFLOW's steps, oldest first: the step (nodeId; null = the workflow as a whole), the role or person (subject), the relation, who says so (sourceKind + sourceLabel), when it was true (validFrom/validTo), and origin — AI_PROPOSED claims are waiting for a person to review. Claims that disagree coexist; each keeps its source.

NameTypeReqDescription
nodeIdstring–Narrow to one step.
pageIdstringyesThe WORKFLOW page id.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_step_claims_propose ~508

Propose claims about who does what in a WORKFLOW, and what each step is done in, from what someone said. Each claim names a step (nodeId from compass_workflow_steps), a page (subjectPageId: a ROLE or PERSON, or an AUDIENCE when a customer or partner does the step; for uses a SYSTEM or DOCUMENT; for impacts a PRIORITY; for holds_to a VALUE), and a relation: owns (accountable for it), does (does the work), approves (signs off), consulted (asked for input), does_not_do (says they don't do it — an answer, not a gap), uses (the step is done in this SYSTEM, or with this DOCUMENT; a step a system runs on its own gets uses and no doer), impacts (the step moves this PRIORITY: where the priority is won or lost; pass limits: true on the one step holding it back most), holds_to (the business lives this VALUE at the step). Propose who and what in together, in one call per workflow. Claims land as proposals for a person to accept in Compass; they don't count until then, except in a conversation about the map's questions, where what the person tells you (sourceKind 'user') is kept straight away. Always say who said it: sourceKind 'interview' + the interview id, 'email_thread' + the thread id, 'prism_report' + the desk-research report id, or 'page' + the DOCUMENT or PERSON page id. Prefer the ROLE when the person speaks for their role, the PERSON when it's specific to them. Record a disagreement as its own claim rather than skipping it. When someone says a step happens that isn't in the diagram, add the step with napkin_diagrams_update first. Re-proposing an existing claim from the same source returns it.

NameTypeReqDescription
claimsarrayyes–
pageIdstringyesThe WORKFLOW page id.
sourceIdstring–The interview, email thread, Prism report or page id, for those kinds.
sourceKindstring–Who says so: 'interview', 'email_thread', 'prism_report', 'page', or 'user' (the person you're talking with).
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_step_measures_propose ~353

Propose estimates from what someone said, as ranges — people know "20 minutes to an hour", not "37 minutes"; when they give one number, use it for both ends. Each item is either a `measure` or a `gate` on a step (nodeId from compass_workflow_steps): - measure.metric `working`: hands-on minutes per run (low/high). - measure.metric `waiting`: minutes the work sits idle before or inside the step — ask about this separately; it's usually most of the waste. - measure.metric `hardCost`: money that isn't anyone's time (amount, currency, per run or month). - measure.metric `frequency` with nodeId null: how often the workflow runs (low/high per day, week, month, or year); with variantId, how often that variant runs. - gate: approval, handoff, rekey (typing the same data into another system), or rework, with returnRate (0–1) when they know how often it sends work back. Pass subjectPageId (a ROLE or PERSON) when the time is one person's or role's — it prices the time through that role's rate. Always say who said it. Proposals count once someone accepts them in Compass.

NameTypeReqDescription
itemsarrayyes–
pageIdstringyesThe WORKFLOW page id.
sourceIdstring–The interview, email thread, Prism report or page id, for those kinds.
sourceKindstring––
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_step_suggestions_build ~208

Builds a step suggestion the way Compass's Build button does: makes its change if it isn't one yet, then the thing in Workbench — a flow drafted from the step itself (who does it, its times, systems, write-up, attachments, interview notes) and its checklist; a shim named for the decision; or a task whose sentence is the steps. Use this, not workbench_flows_scaffold, whenever the work came from a step suggestion. Returns what was built and, for a flow, what the draft still needs. Fails if something's already built for it.

NameTypeReqDescription
approvalIdstring––
pageIdstringyesThe WORKFLOW page id the suggestion is on.
suggestionIdstringyesThe suggestion id, from compass_step_suggestions_list.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_step_suggestions_list ~224

Your earlier read of a WORKFLOW's steps: for each suggestion, the steps it covers (nodeIds, labels), what could do them (proposal.doer: a flow and its mode, a shim, or a task), whether it does the step or helps (reach), why, and what it would take (checklist, each item met or not). state OPEN is waiting for a person; APPLIED made a change (opportunityId), and `built` is what was built for it in Workbench, if anything. Pass changeId instead of pageId to get the one suggestion a change came from. To build one, use compass_step_suggestions_build — not workbench_flows_scaffold.

NameTypeReqDescription
changeIdstring–A change (opportunity) id: the suggestion it came from.
pageIdstring–The WORKFLOW page id.
workspacestring–Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_transformations_get ~152

What the workflows behind a PRIORITY could become, at five levels (Assist, Automate, Re-form, Invert, Dissolve): for each, whether it fits, is already reached, or what it needs; what changes; what it does to the priority; time freed; and the change made from it, if any. Also the recommended level, or `settled` when the work is good as it is. state 'running' means a read is under way; null means none has been read (compass_transformations_read starts one).

NameTypeReqDescription
priorityPageIdstringyesThe PRIORITY page id.
workspacestring–Workspace slug. Ignored for workspace API keys.

No output schema declared.

No examples provided.

compass_transformations_make_change ~154

Creates a Change from one level of a priority's transformations, with its step effects and the priority it serves, and starts drafting in Workbench up to three flows for what the level says to build (`builds`, each `drafting` until ready). Only a level that fits, once per level. May return `needs_confirmation`.

NameTypeReqDescription
approvalIdstring–Approval id from a prior needs_confirmation envelope.
levelintegeryes1 Assist, 2 Automate, 3 Re-form, 4 Invert, 5 Dissolve.
priorityPageIdstringyesThe PRIORITY page id.
workspacestring–Workspace slug. Ignored for workspace API keys.

No output schema declared.

No examples provided.

Install

How do I install the ZeroWidth Compass MCP server?

ZeroWidth Compass is a hosted endpoint at https://api.zerowidth.ai/mcp/x/compass, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · api.zerowidth.ai

# add to Claude Code
claude mcp add --transport http ai-zerowidth-compass 'https://api.zerowidth.ai/mcp/x/compass'
Common questions

What is the ZeroWidth Compass MCP server?

ZeroWidth Compass is an MCP server listed in the public MCP registry as ai.zerowidth/compass. Read and update your Compass map: pages, changes, opportunities and interviews. This page covers its hosted endpoint (https://api.zerowidth.ai/mcp/x/compass).

Is the ZeroWidth Compass MCP server safe to use?

ZeroWidth Compass scores 73 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the ZeroWidth Compass MCP server expose?

ZeroWidth Compass exposes 62 tools: search_docs, get_doc, list_docs, compass_pages_list, compass_pages_search, and 57 more. Their descriptions and schemas cost roughly 13,788 tokens of context every time the server is loaded.

Does the ZeroWidth Compass MCP server require authentication?

No. We connected to ZeroWidth Compass without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the ZeroWidth Compass MCP server still maintained?

ZeroWidth Compass is still listed as active in the MCP registry. We last reached this channel on 24 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.