ZeroWidth Compass
Server Details
Read and update your Compass map: pages, changes, opportunities and interviews.
- Status
- Healthy
- Uptime
- 99.9% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 62 tools
Given 62 tools, the descriptions do unusually disciplined work drawing boundaries — create vs propose vs accept for opportunities, create/resolve/update for gaps, and create/update/delete for links are explicitly contrasted. The remaining friction is a cluster of lookup tools (search_workspace, search_docs, list_docs/get_doc, compass_pages_search, entity_tags_browse) whose scopes overlap enough that an agent may pick the wrong entry point.
The verb_noun snake_case pattern holds throughout (comments_create, entity_tags_get, compass_links_update), but half the tools carry a compass_ domain prefix and the other half are bare, and the docs/search tools flip to noun-first (get_doc, list_docs, search_docs, search_workspace) while the Compass equivalents use noun_verb (compass_pages_get, compass_pages_list). Readable, but the convention is not uniform.
62 tools is well beyond the point where an agent can hold the surface in mind, and the domain is split across several sub-products (Compass graph, interviews, transformations, Workbench, Ledger, docs, tagging) that already reference tools absent from this set. Most individual tools are justified, but the aggregate is too large for one server.
CRUD and lifecycle coverage is strong for the core graph objects (pages, links, opportunities, gaps, comments, claims, estimates), including restore and soft-delete. However, several workflows dead-end on tools that are named but not present — compass_process_diagram_ensure and compass_step_claims_propose both direct the agent to napkin_diagrams_update, and compass_step_suggestions_build warns against workbench_flows_scaffold, leaving no in-set way to actually edit a steps diagram.
Available Tools
62 toolscomments_createComment on an entityAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| rootId | No | Reply into this thread; omit to start a new one. | |
| entityId | Yes | ||
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| approvalId | No | ||
| entityKind | Yes | What the thread hangs on. | |
| mentionedUserIds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare write, non-destructive, closed-world behavior, so the baseline is set. The description adds genuine behavioral context: the mention path 'rings their notification bell', which is a side effect an agent should know about, plus the thread-vs-reply branching. It stops short of noting auth requirements or idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action and mode selection before the usage example. The closing etiquette line ('never mention someone who didn't ask') is editorializing but arguably still useful guardrail content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write tool with no output schema and annotations covering safety, the description covers purpose, use case, thread/reply behavior, and mention side effects. Missing pieces are minor (approvalId meaning, mention limits, what a successful post returns).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 43%, so the description is expected to compensate. It meaningfully explains mentionedUserIds (workspace member ids) and rootId (reply target), but leaves approvalId, workspace, entityKind semantics, and body constraints unexplained. Partial compensation warrants a baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Posts a comment on a workspace entity') and clarifies the two modes — new thread vs reply when rootId is given. An agent can immediately tell what this does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete use cases ('leave findings where the discussion already lives', 'a summary on a long thread') that establish when to reach for it. It does not, however, distinguish this from siblings comments_list or comments_resolve, nor state any when-not conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comments_listRead an entity's comment threadsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| entityId | Yes | ||
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| entityKind | Yes | What the thread hangs on. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safety profile (readOnlyHint=true, destructiveHint=false), so the bar is lower, and the description still adds real behavioral content: result ordering (open first, then resolved) and the fact that authors and timestamps are included. It stops short of stating pagination, volume limits, or behavior for entities with no threads.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the operative fact (what is listed, in what order) before the advisory second sentence. The second sentence is slightly rhetorical ("where disagreement lives before it becomes a decision") but it does convey routing intent, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by naming the returned content (threads, authors, timestamps, ordering), which is the key information an agent needs. It remains silent on result size/pagination and on empty-result behavior, so it is strong but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%: workspace is well documented in the schema, entityKind has only a terse "What the thread hangs on" description, and entityId has none. The description says only "one workspace entity," adding no format, valid-value, or relationship detail beyond the schema enum, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource ("Lists the comment threads on one workspace entity") and adds ordering detail (open first, then resolved). It implicitly separates itself from the write-side siblings comments_create and comments_resolve through the read verb, but never names or contrasts with them outright, so sibling differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Read this before weighing in on contested work" gives a thematic when-to-use cue, which is more than nothing. However, no alternatives are named (notably comments_resolve or comments_create, the natural next/previous steps) and there is no when-not-to-use guidance or note on whether resolved threads can be filtered out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comments_resolveResolve or reopen a threadADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| rootId | Yes | ||
| resolved | Yes | ||
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| approvalId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag this as a non-read-only, destructive mutation. The description adds meaningful policy context beyond that: the operation is a reversible toggle (resolve/reopen), and there is a sequencing constraint requiring justification before resolving. It does not state permission/auth requirements or what happens to existing replies, so it stops short of full disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with the mechanical fact (what rootId is) front-loaded, followed by the policy. No filler, no restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation tool with no output schema, the description covers purpose, when-to-use, and the key parameter. The gaps are approvalId (never explained) and workspace/auth expectations, which matter for a destructive operation, but the core agent decision-making path is well served.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25%, so the description must carry more weight. It usefully defines rootId (the thread's root comment id) and implies resolved=true/false via 'resolve or reopen', but says nothing about workspace (which the schema does describe) or approvalId (undocumented in both places). Partial compensation for a low-coverage schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (sets the resolved state) and resource (a comment thread), and clarifies the ambiguous rootId by equating it to the thread's root comment id. It clearly covers both directions of the operation (resolve and reopen). It does not explicitly distinguish itself from comments_create/comments_list, though the reply-first instruction implies a division of labor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use rules: resolve only when the human asked or the question is demonstrably settled, and reopen only for new evidence. It also imposes a prerequisite workflow step ('say what settled it in a reply first'), which implicitly routes the agent to comments_create. This is about as prescriptive as usage guidance gets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_change_effects_setSay what a change does to stepsADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| effects | Yes | ||
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| approvalId | No | Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call. | |
| opportunityId | Yes | The change's key (e.g. ACME-12) or id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true, and the description's 'Replace' wording is consistent with a full overwrite. Beyond annotations it adds genuinely useful behavior: the effects are holistic (a whole set is replaced), sub-workflow collapse semantics, and that the call 'May return `needs_confirmation`', which ties to the approvalId parameter. Auth/permission specifics are not stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded paragraph that opens with the core action and never repeats the structured fields. It is dense and requires careful parsing, but every clause (effect semantics, sub-workflow collapse, projection step, confirmation) earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, nested-schema mutation tool with no output schema, the description covers input provenance, per-effect semantics, the follow-up projection step, and confirmation behavior. It stops short of auth/permission or reversibility detail, but nothing critical to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% and the description adds real meaning beyond it: it defines the semantic intent of each effect enum value and supplies undocumented defaults (keepShare 0.25 for relax_gate, 0.5 for assist) and what reviewMinutes measures. The remaining covered params (workspace, approvalId, opportunityId) already carry schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Replace a change's effects') and immediately distinguishes itself by naming the sibling that supplies inputs (compass_workflow_steps) and the sibling that consumes the result (compass_workflow_rollup changeIds). An agent can tell this apart from compass_transformations_* and compass_changes_upsert without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It establishes the workflow context explicitly: steps come from compass_workflow_steps, effects are set here, then the result is projected with compass_workflow_rollup changeIds. There is no explicit when-not or exclusion, but the sequencing across siblings gives clear operational guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_changes_upsertBring changes in from another trackerADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | ||
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| approvalId | No | Approval id from a prior needs_confirmation response, after the user has approved. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations: it discloses upsert field-merge semantics (omitted fields left alone), idempotency (nothing duplicates), per-item result shape (created/updated with key, or failed with why), failure isolation ('a failed item doesn't stop the rest'), and the needs_confirmation/approvalId batch-approval flow. This is exactly the behavioral context annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core create-or-update rule and matching key, then layers merge semantics, idempotency, results, and confirmation. Dense but every sentence carries operational information; slightly long, though nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a batched mutation with no output schema and three params, the description covers creation, update/merge, idempotency, partial-failure behavior, return shape, and the confirmation/approval round trip. An agent has everything needed to call and interpret it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, and the description compensates by explaining the `url` match semantics (creates vs updates), that `statusName` is by name with a pointer to compass_statuses_list, and that omitted fields are preserved. It does not clarify the remaining nested item fields (tags, experiment, workflowPageId) beyond schema, but adds real meaning over the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create or update up to 100 changes in one call'), names the matching key (`url`), and defines the upsert rule against it. An agent can distinguish this batch upsert from siblings like compass_links_create or compass_pages_create without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage context: rerun with identical urls to stay in sync, statuses come by name via compass_statuses_list, and 'Summarize what you're about to bring in before calling.' It does not explicitly name when to prefer this over other creation paths, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_gaps_createRaise a Compass open question (gap)AInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| question | Yes | The open question, plainly ('Who approves refunds over $500?'). | |
| rationale | No | Why it matters / what answering it unblocks. | |
| subjectId | No | Id of the subject. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| subjectType | No | What it's about, e.g. compass_page. | |
| suggestedResolution | No | How to resolve it: 'ask the user', 'interview Dana', 'connect Drive'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark this as a non-destructive, non-readOnly, closed-world write. The description adds genuinely useful context beyond that: 'No approval needed — noting your own uncertainty isn't acting on the user's behalf', which explains why an agent may write freely, plus 'the gap registry is your working memory'. It doesn't cover rate limits or response shape, but the approval-free rationale is substantive added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and the guidance to use it liberally, then moves to required content and the subject attachment. It's appropriately sized, though the question/rationale/resolution sentences partially restate the schema, adding mild redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-param create tool with no output schema, the description covers purpose, when to use, required content, subject attachment, and the approval-free behavior. It doesn't say what the call returns (e.g., the created gap id) or whether a subject requires a matching subjectType, but nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description earns extra: it maps the required 'question' to a framing rule ('one clear question'), ties 'rationale' to 'what answering it unblocks', and — critically for the thin schema entries — explains subjectType/subjectId as the mechanism for tying a gap to a specific page or person. That last point adds meaning not present in the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Records something you don't yet know' against the 'gap registry' — and reframes the resource as 'open question (gap)', so an agent knows this is the create side of the compass_gaps_* family. The framing is distinguishable from compass_gaps_list/resolve/update without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use context: 'use it liberally while mapping or interviewing', and conditions the subject attachment on whether the gap is ABOUT a specific page or person. It stops short of naming alternatives explicitly (e.g., compass_gaps_update to amend, compass_gaps_resolve to close), so it's clear context but not full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_gaps_listList Compass open questions (gaps)ARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by lifecycle stage. Default OPEN. | |
| subjectId | No | Only gaps ABOUT this subject id. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| subjectType | No | Only gaps ABOUT this subject type (e.g. compass_page). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, destructiveHint=false, so the safety profile is covered. The description adds the default-to-OPEN filtering behavior and the registry framing, but says nothing about result size, pagination, or workspace/auth scoping beyond what the schema states. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with what the tool lists before moving to guidance. The colloquial aside ('This is where you keep your head') is colorful rather than wasteful, though it dilutes precision slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-optional-parameter read tool with no output schema and full schema coverage, the description covers what it returns (open questions/gaps), the default filter, and the workflow it supports. Nothing critical is missing, though return shape is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (status, subjectId, workspace, subjectType) are already documented, including the OPEN default and the workspace-token rules. The description only echoes the default status behavior, adding nothing new. Baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'Lists the workspace's open questions — the gap registry: what the map doesn't know yet.' The metaphor is anchored to a concrete concept (gaps), so an agent knows what it retrieves. It does not explicitly distinguish itself from siblings compass_gaps_create/resolve/update, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real usage context: 'check it before asking the user something you may already have flagged, and compose interview briefs from a subject's open questions.' That tells the agent when to reach for it. It does not name an alternative tool or state exclusions, so no 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_gaps_resolveResolve a Compass open question (gap)ADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| gapId | Yes | Id of the gap (from compass_gaps_list). | |
| status | Yes | ANSWERED (you learned it) or DISMISSED (irrelevant). | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| approvalId | No | Re-call with the approvalId from a needs_confirmation response after the user approves. | |
| resolution | No | The answer / note, when marking ANSWERED. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a destructive, non-read-only mutation, and the description adds genuinely non-obvious behavior on top: gaps the agent raised close without a card, while a person-authored question requires their approval (matching the approvalId re-call flow). It stops short of saying whether a resolution can be undone or corrected later.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and the two statuses are front-loaded in the first sentence. The middle sentence is a long run-on mixing invariant ('the resolution alone isn't the map') with follow-up page-writing instructions, slightly diluting focus, but overall it is tight and every clause is substantive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter mutation with no output schema, the description covers the approval-gating behavior and the expectation that the answer be propagated to the relevant page. What is missing is the response shape (e.g. whether the call can return needs_confirmation) and whether DISMISSED requires a resolution.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage on all five parameters (including the status enum and the approvalId flow), the schema already carries parameter meaning. The description restates the ANSWERED/DISMISSED distinction and the 'resolution' pairing but adds no syntax, constraints, or guidance beyond what is documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Closes a gap') and enumerates the two terminal states (ANSWERED with resolution, DISMISSED), which lets an agent distinguish it from compass_gaps_create and compass_gaps_list. It never states, however, how it differs from the sibling compass_gaps_update, which overlaps conceptually with 'resolve'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear trigger ('once you've learned the answer ... or decided it doesn't matter') and even a cadence recommendation ('resolve gaps as their answers land'). It does not explicitly exclude the closely-related compass_gaps_update or explain which to prefer when a gap merely changes status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_gaps_updateReword a Compass open question (gap)ADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| gapId | Yes | Id of the gap (from compass_gaps_list). | |
| question | No | New wording of the question. | |
| rationale | No | Why it matters / what answering it unblocks. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| approvalId | No | Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call. | |
| suggestedResolution | No | How to resolve it: 'ask the user', 'interview Dana', 'connect Drive'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true/readOnlyHint=false, so the mutation risk is covered. The description adds real behavioral context beyond that by flagging the two-phase confirmation flow ('May return `needs_confirmation`'), which changes how an agent must sequence calls. It stops short of saying whether prior wording is recoverable or what permissions are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, then the alternative and prerequisite, then the return caveat. Every clause carries information and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, it covers purpose, routing, id sourcing, and the needs_confirmation return path with annotations carrying the safety profile. Minor gaps remain around permission requirements and partial-update behavior, but nothing critical for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters, including the workspace and approvalId mechanics. The description only restates which content fields are editable (wording/rationale/resolution) already implied by the schema, adding little new meaning. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Edits an open question's wording, rationale, or suggested resolution') and explicitly contrasts with the nearest sibling: 'Closing a gap is compass_gaps_resolve, not this.' An agent can distinguish this from compass_gaps_resolve and compass_gaps_create without opening their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the when ('sharpening a vague question or fixing one you phrased badly'), the when-not with a named alternative ('Closing a gap is compass_gaps_resolve'), and the prerequisite for the id ('Gap ids come from compass_gaps_list'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_inbox_listWhat's waiting for a decision in CompassARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds valuable semantics the annotations cannot: the exact composition of the inbox, that fillIn is excluded from total, and that offsetting cards are pending approvals. It does not describe pagination or ordering, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose in the first clause, then sub-lists, then next moves. It is dense and long, but every section earns its place; the routing guidance and owner-lead instructions are not padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by naming the three inbox categories, the uncounted fillIn set, and the recommended follow-up tools for each category. Missing only explicit pagination/ordering and what a total counts, which is minor for a read-only overview tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single workspace parameter is fully documented, so the baseline is high. The description adds no parameter detail but does not need to, and it clarifies the return shape and the fillIn/total relationship which supports interpretation of results.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States exactly what is returned: finished interviews awaiting review, AI-proposed opportunities awaiting accept/dismiss, and pending approval cards, plus the fillIn sub-list. This is a specific verb+resource and distinguishes itself from siblings like compass_opportunities_list and compass_interviews_list by framing all of them as a decision queue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says it is 'THE place to answer what needs me?' and names concrete follow-up alternatives (compass_interviews_get → compass_pages_create, compass_opportunities_accept/delete, compass_links_create with kind owns/part_of). It even states a when-not/guardrail: 'never guess an owner'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_interview_inviteEmail an interview inviteAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | The interviewee's email address. | ||
| message | Yes | The body, written in the requesting user's voice. Greeting + link + signature are added automatically — write only the middle. | |
| subject | Yes | Email subject, e.g. '15 minutes on how refunds actually work?' | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| approvalId | No | Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call. | |
| interviewId | Yes | Interview id from compass_interviews_create. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations covering only read/destructive/openWorld, the description adds substantial behavior: the approval card shows the exact subject+message before send, there is a hard invite+one-reminder rate limit, and completion arrives asynchronously as a notification with draft-page counts (explicitly 'don't poll'). This is exactly the operational context annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and framing in the first clause, then layers operational constraints. It is a dense single paragraph and reads as slightly run-on, but nearly every clause carries distinct information, so almost nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that sends real outbound email through an approval flow with no output schema, the description covers the full lifecycle: message authoring, approval gating, rate limit, and async completion signal. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds content guidance for `message` beyond the schema — short, human, explains why THEIR knowledge matters, ~15 minutes, no account needed — which tells the agent what to actually write, not just where it goes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Emails the guest link for an existing interview') and pins the framing ('from the REQUESTING USER'). The word 'existing' cleanly separates it from compass_interviews_create, so an agent can distinguish it from siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: use it while framing a message in the requesting user's voice, respect the invite-plus-one-reminder limit, and expect a notification rather than polling. It never names a sibling alternative or an explicit when-not condition, which is the only thing keeping it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_interviews_createInvite someone to a Compass interviewAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| anonymous | No | 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 asks for anonymous interviews. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| approvalId | No | Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call. | |
| focusPrompt | Yes | The 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 happens when it goes wrong, how long it waits, why a check exists), aimed at what the map doesn't know; and what the answers feed. No opinion or preference questions. | |
| contextPageIds | No | Compass page ids the interviewer gets as briefing context (e.g. the workflow page whose flow underperformed). | |
| intervieweeName | No | Who this invite is for, when known. | |
| intervieweeEmail | No | Their email, when known — enables compass_interview_invite to send the link directly (with approval). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses real side effects: creates a guest-facing link, drafts pages flow back into Compass, and the call may return `needs_confirmation` requiring the agent to explain and wait. That two-phase approval loop is the kind of thing annotations cannot convey. It stops short of invite lifecycle behavior (expiry, whether repeated calls create multiple invites, revocability via compass_interviews_revoke).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core definition in sentence one, then usage, then mechanics, then the approval caveat — a sensible descending-priority order. Dense rather than padded, though the all-caps 'THE KNOWLEDGE-GAP MOVE' framing and stacked parentheticals add a little rhetorical weight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter creation tool with no output schema, the description covers purpose, creation conditions, sequencing to the invite sender, and the confirmation round-trip. The main gap is the success payload — it implies a link is returned ('hand the user the link') but never states what the response contains or what the agent should do with draft-page ids.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real selection guidance: focusPrompt should name the SPECIFIC gaps and cite the eval run id, and interviewee should be the owner of the relevant workflow when the map knows one. It doesn't add much for workspace or contextPageIds, which the schema already explains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource — 'Mints a stakeholder-interview invite' — immediately qualified by what the artifact actually is: a no-account guest link to an interviewer agent briefed by focusPrompt, with the transcript returning as draft pages. That distinguishes it cleanly from the sibling compass_interview_invite (which sends the link) and from compass_interviews_list/get/revoke.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use trigger wired to another tool: 'when caliper_flow_performance shows failures clustered on missing company facts … the fix is usually not a prompt edit.' It also tells the agent when NOT to stop here — if an email exists use compass_interview_invite next, otherwise hand the user the link — so the routing decision is fully resolved.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_interviews_getRead one Compass interview, transcript includedARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| interviewId | Yes | Interview id (from compass_interviews_list). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=false, destructiveHint=false), so the description is free to add payload-level context, which it does: it discloses that the response is metadata plus the guest's verbatim transcript and that the transcript is the downstream source of truth. It adds no auth, size, or error-handling context, but against read-only annotations this is solid added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and payload, with no filler sentences. The middle sentence is clause-heavy ('the transcript is the source you work from, and your compass skill has the rules for typing and splitting what's in it') and the final clause is slightly indirect, but it still earns its place as workflow context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so by naming the two payload components (metadata, transcript). Combined with the read-only annotations and a fully documented schema, an agent has what it needs to call this correctly; only permission/auth specifics are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are documented there and 3 is the baseline. The description adds one small piece the schema lacks — that ids may also come from compass_inbox_list, not only compass_interviews_list — but does not otherwise elaborate on parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('One interview in full — metadata plus the transcript') and states the scope that distinguishes it from compass_interviews_list: this returns the full record including transcript, not a list. An agent can immediately tell what it fetches without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a clear use condition ('Read this before summarizing an interview or drafting pages from it') and routes the agent to where ids come from (compass_interviews_list, compass_inbox_list). There is no explicit when-not or note about how this relates to bulk retrieval, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_interviews_listList Compass interviewsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnlyHint, openWorldHint=false, destructiveHint=false); the description adds substantive context beyond that: result ordering, the status lifecycle values, that transcript review is signalled by documentPageId being set, and that invite URLs are only present while the link is live. For a no-output-schema tool this is exactly the behavioral disclosure an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with scope and returned fields, then usage, then the sibling pointer — a logical order with no filler sentences. The field enumeration makes the middle sentence dense, but each clause carries information since no output schema exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-shape burden and does so thoroughly: fields, status values, ordering, and liveness caveat. Combined with annotations covering the safety profile and a fully documented single parameter, nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single 'workspace' parameter with 100% schema description coverage, so the schema already explains slug/default/API-key semantics fully. The description only implies workspace scoping and adds no format or defaulting detail for the parameter, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (list stakeholder interviews) and immediately enumerates scope: workspace-wide, newest first, with the exact fields returned. It explicitly distinguishes itself from compass_interviews_get, so an agent can choose between them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use conditions — 'Check this before inviting someone again' and answering 'who have we already asked?' — plus the reason (interview fatigue) and an explicit route to compass_interviews_get for full-detail reads. Nothing about selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_interviews_revokeRevoke an interview invite linkADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| approvalId | No | Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call. | |
| interviewId | Yes | Interview id (from compass_interviews_list). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, and the description builds on that by disclosing idempotency, the exact user-visible consequence (link becomes inactive), and the two-step confirmation flow ('May return needs_confirmation'), which pairs with the approvalId parameter. This is behavior an agent cannot infer from annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core effect, then triggers, then operational notes (idempotency, id source, confirmation). Every sentence carries distinct information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive revoke tool with no output schema, the description covers the effect, the trigger cases, idempotency, where ids come from, and the confirmation round-trip. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all three fields; the baseline would be 3. The description adds useful provenance for interviewId ('Ids come from compass_interviews_list') and ties the needs_confirmation return to the approvalId field, giving extra value over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Kills an interview's invite link') and even describes the observable effect ('the guest's next visit sees that the link is no longer active'). An agent can distinguish this from the invite-creating sibling without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives three concrete trigger scenarios — wrong recipient, changed mind, leaked link — which is strong positive guidance. It stops short of naming the explicit alternative (e.g. re-inviting via compass_interview_invite) or a when-not case, so it lands just below the top tier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_interview_targetsWho should be interviewed about a pageARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The page the knowledge gap is about. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description goes well beyond that, disclosing the ranking precedence, the skip rule for recent interviewees (interview fatigue), and the empty-result recovery procedure — real behavioral context. Minor gaps only (no pagination/limit behavior), so not a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the ranking purpose, then output contents, then the fallback, then the routing instruction — a logical order with little waste. The parentheticals are dense but each carries distinct information, so it is efficient without being terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must describe returns — and it does: each target carries contact email, role, and latest interview. Combined with the ranking order and empty-result guidance, an agent has everything needed to call and interpret this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so pageId and workspace are already documented in the schema. The description implies pageId means 'the page the knowledge gap is about' but adds no format or syntax detail beyond that. Baseline 3 is correct when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — ranks the PEOPLE the map says know about a page — and immediately narrows the domain (workflow, system, pain point). The ranking rule (owns first, then involved_in, then weaker edges) makes it unmistakable versus siblings like compass_interviews_create or compass_step_claims_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: 'Use before compass_interviews_create to pick the interviewee.' It also names the alternative action when the result is empty (ask the user, create PERSON page + owns link), so both the happy path and the fallback are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_links_createConnect two Compass pagesAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | Edge type, in canonical direction. | |
| note | No | ≤500-char qualifier when the kind alone undersells it. | |
| source | No | Provenance label. Defaults AI_ACCEPTED (agent writing under live human direction); pass USER for human-driven scripts. | |
| validTo | No | When it stopped being true (YYYY-MM-DD). Only for a relationship that has already ended — recording history. | |
| sourceId | No | Id of the interview, email thread, Prism report or page named by sourceKind. | |
| toPageId | Yes | Edge target page id. | |
| validFrom | No | When the relationship started being true (YYYY-MM-DD). Omit when unknown. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| approvalId | No | Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call. | |
| fromPageId | Yes | Edge source page id. | |
| sourceKind | No | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=false) by disclosing idempotency on an open (from, to, kind) edge and the needs_confirmation/approvalId round-trip that requires pausing for human approval. These are non-obvious behavioral traits that directly affect how the agent calls the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and nearly every sentence carries domain knowledge that earns its place. However, it is a single dense paragraph mixing kind semantics, temporal guidance, provenance, and the confirmation flow, which makes it harder to scan than a structured layout would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter mutation tool with no output schema, the description covers the domain rules (canonical directions, one-parent constraints on PRIORITY and UNIT, idempotency) and the return-side confirmation behavior, leaving no material gap an agent needs before calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning the schema lacks: it explains the semantic direction of each `kind` enum value (e.g. PERSON owns WORKFLOW, PAIN_POINT affects WORKFLOW), the purpose of validFrom/validTo, and the sourceKind/sourceId pairing. This lifts it above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb and resource — 'Creates a typed, directed edge between two pages' — and frames it as the graph's connective tissue. This is immediately distinguishable from the sibling mutation/read tools (compass_links_update, compass_links_delete, compass_page_links_list).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description is unusually rich on when-to-use: it enumerates canonical directions per kind and gives a clear preference rule ('Prefer attaching responsibilities to the ROLE... the role outlasts whoever is in it'). It also tells the agent when to pass validFrom/validTo and sourceKind/sourceId. It does not explicitly name when to reach for compass_links_update instead, so it stops short of full alternatives coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_links_deleteRemove a connection between two pagesADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| linkId | Yes | Id of the link (from compass_page_links_list). | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| approvalId | No | Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description adds materially important behavior beyond them: the delete is edge-only (pages survive), the edge can be revived by re-creating it, and the call may return `needs_confirmation` (matching the approvalId flow in the schema). Reversibility and the confirmation gate are exactly the traits an agent needs before invoking a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and scope, then the decision rule, then the id source and reversibility note. Every sentence carries distinct, actionable information with no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, 3-param tool with full schema coverage, destructive annotations, and no output schema, the description covers the decision criteria, the confirmation/approval path, and reversibility. Nothing an agent needs to call it safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (linkId, workspace, approvalId) are already fully documented in the schema. The description only restates that link ids come from compass_page_links_list, which the schema already says — baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource — 'Deletes one edge from the graph' — and immediately disambiguates scope with '(the pages stay)'. It is clearly distinguishable from its siblings compass_links_create, compass_links_update, and compass_page_links_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use condition ('only when a connection was never true... recorded by mistake') and an explicit when-NOT-to-use case, naming the alternative tool and its parameter ('end it with compass_links_update validTo instead, so the history stays'). This is textbook routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_links_updateChange a connection's reading, note, or datesADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | New edge type, in canonical direction. | |
| note | No | New qualifier note (≤500 chars); empty string clears it. | |
| linkId | Yes | Id of the link (from compass_page_links_list). | |
| validTo | No | When it stopped being true (YYYY-MM-DD) — ends the relationship; null reopens it. | |
| validFrom | No | When it started being true (YYYY-MM-DD); null clears it. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| approvalId | No | Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing that history is preserved (the old edge stays as history), that a conflict error is raised when the new reading already exists, and that the call may return needs_confirmation. This is meaningful mutation/error/approval context for a destructive write tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and dense with useful detail; every clause is actionable. It is on the long side with two inline examples, but no sentence is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no output schema, the description supplies the missing return/error behavior (conflict, needs_confirmation) and the lifecycle semantics an agent needs to call it correctly. Nothing substantive is left unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description adds real semantic meaning: it frames kind as a correction mechanism and validTo as a relationship terminator with an example. It does not, however, clarify validFrom or the approvalId/workspace plumbing beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Edits) and resource (an existing edge between two pages) and enumerates the mutable aspects (kind, note, validFrom/validTo). It is clearly distinguished from siblings compass_links_create and compass_links_delete, which handle the creation and removal ends of the lifecycle.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly prescribes when to use each field: kind to CORRECT a mistyped connection, validTo to END a relationship that used to be true. It names the alternative behavior ('Don't delete a relationship that ended; end it' and 'delete this one instead' on conflict) and points to compass_page_links_list for link ids.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_map_viewView the Compass map (rendered image)ARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only and non-destructive behavior, but the description adds substantial context beyond them: it explains the rendered image contents, the text summary fields, how unconnected pages and drafts are drawn, and the critical presentation rule not to put the image in a markdown reply. This is unusually complete behavioral guidance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but front-loaded and mostly earns its length by explaining how to interpret the visual output and how to present mapUrl. The detailed legend is useful for this visual tool, though some phrasing could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by explaining both return components: the rendered image and the text summary with counts, links, unconnected pages, and mapUrl. It also tells the agent what to do with each, so nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter, workspace, and schema description coverage is 100%, so the schema already explains its default/override behavior and limitations. The description adds no workspace-specific semantics beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (renders the workspace's visual map to an image) and precisely what the result represents: a transit-style map with named tiles, figures, squares, link styles, and regions. It clearly distinguishes this visual/spatial tool from page-listing or search siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it: when the user asks about the shape of their map, where things cluster, what connects to what, or anything spatial. It also tells the agent how to present the result afterward, including linking mapUrl rather than embedding the image.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_opportunities_acceptAccept an AI-proposed opportunityADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Lane to place it in on accept (default NEW). | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| approvalId | No | Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call. | |
| opportunityId | Yes | The AI-proposed opportunity's id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description discloses important behavior: default lane when status is omitted, special lane semantics for BACKLOG and EXPERIMENTING, the not_proposed failure for non-AI proposals, and the needs_confirmation two-step flow. These are exactly the kind of operational details annotations do not cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded: purpose first, then sibling contrast, status semantics, failure mode, id source, and confirmation behavior. Every clause contributes useful information, though the single long paragraph is heavier than strictly necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description covers the essential context an agent needs: the proposal-only constraint, the optional status lane, failure behavior, id sources, and the confirmation flow. Nothing critical appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description adds meaning by explaining what the status lanes do (BACKLOG parks, EXPERIMENTING starts, omitted lands in NEW) and by identifying where opportunityId values come from. It does not fully explain the workspace or approvalId parameters, but those are already documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('promotes an AI-PROPOSED opportunity ... into the workspace's own pipeline') and explicitly distinguishes it from the nearest sibling, compass_opportunities_set_status. An agent can identify what this tool uniquely does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when to use this tool versus compass_opportunities_set_status ('set_status does NOT do this — a proposal stays in the Inbox until accepted'), names where ids come from, and states the failure condition (not_proposed) and confirmation flow. This is near-complete routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_opportunities_createCapture an opportunityAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Tags to file it under. | |
| label | Yes | ≤200 chars, the change in one line. | |
| links | No | Where the work also lives — issue, ticket, PR or doc URLs. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| approvalId | No | Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call. | |
| experiment | No | Measure it against the Ledger. Default false. | |
| statusName | No | Start in this status (a name from compass_statuses_list). | |
| description | No | What the change is, and why it's worth doing. | |
| workflowPageId | No | Workflow page to anchor to, when one fits. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations only declaring readOnly=false, openWorld=false, destructive=false, the description adds real behavioral context: the record lands in the board's first status by default, and the call may return `needs_confirmation` requiring the agent to summarize and wait for approval. That approval-loop disclosure is meaningful and not derivable from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, each carrying distinct information (what to record, anchoring rule, default status, experiment condition, approval flow), with the core action front-loaded. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-param creation tool with no output schema, the description covers the essential behaviors: default status placement, anchoring, the experiment flag, and the needs_confirmation return path. It is largely complete, though it could say more about what an accepted opportunity returns or how it relates to compass_opportunities_propose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds semantic nuance beyond the schema: the default status behavior for statusName, and the intent condition for `experiment` (only when measured against the Ledger). It does not add meaning for label, tags, links, or description, which rely entirely on the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Record a change") and enumerates the kinds of changes (fix, chore, new step, experiment), which is more concrete than the title alone. It does not, however, clearly differentiate this create tool from close siblings like compass_opportunities_propose or compass_changes_upsert, leaving the agent to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives actionable conditions: anchor to a workflow page "when one fits," otherwise leave unanchored, and set `experiment` only when the user wants it measured against the Ledger. It routes to compass_pages_list and compass_statuses_list for lookups. It stops short of explaining when to prefer this over compass_opportunities_propose/accept, so no explicit alternative selection is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_opportunities_deleteDelete an opportunityADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| approvalId | No | Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call. | |
| opportunityId | Yes | The change's key (e.g. ACME-12) or id, from compass_opportunities_list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds value beyond that by disclosing that the delete is a soft delete (record preservation) and that the call may return `needs_confirmation`, hinting at an approval flow that the annotations do not express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action and its soft-delete qualifier are front-loaded, followed by routing guidance and the id source. Sentences earn their place, though the 'dismiss verb / remove verb' metaphor phrasing is slightly more elaborate than a terse statement would require.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description correctly carries the behavioral burden: it explains the soft-delete semantics, the confirmation flow, and correct usage relative to siblings. It is nearly complete, only omitting any detail about downstream effects on linked records or workspace scoping.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage the baseline is 3, but the description adds provenance for opportunityId ("Ids come from compass_opportunities_list") and ties the needs_confirmation behavior to the approvalId parameter's purpose, adding meaning beyond the raw field docs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (removes) and resource (opportunity) and immediately qualifies it as a soft delete, which materially changes what the agent expects. It also names the sibling it must not be confused with (compass_opportunities_set_status) and the verb-family nuance against other opportunity operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit routing: use this as the dismiss verb for unwanted AI proposals, the remove verb for duplicate/mistaken captured experiments, and prefer set_status REJECTED when concluding a real experiment without evidence. This is exactly the when/when-not/alternative guidance the dimension rewards.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_opportunities_listList Compass opportunitiesBRead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter to one lane. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| workflowPageId | No | Only opportunities anchored to this workflow page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description goes well beyond that, disclosing the shape of returned items: statusName vs statusCategory semantics, the legacy `status` lane key, the `experiment`/`ledgerEntryId` null-means-no-expectation rule, and `ledger.verdict` values after settlement. This is meaningful behavioral context that an agent would otherwise have to discover empirically.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is information-dense but not front-loaded: the opening sentence describes the resource rather than stating what the tool does, so an agent scanning the first clause does not immediately learn the operation. Most sentences carry real payload, but the heavy backtick-heavy prose and lack of a clear action-first structure hurt scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full burden of describing returns and does so well — item fields, status semantics, experiment/ledger linkage, optional scores and workflow anchor. It is nearly complete for a zero-required-param list tool, though it omits pagination, result limits/ordering, and default-scope behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds some value by explaining that `status` holds a 'lane key' and by mapping statusCategory stages (TRIAGE/BACKLOG/ACTIVE/DONE/CANCELED), but it does not clarify the relationship between the schema's lane enum values (NEW, QUALIFYING, EXPERIMENTING, SETTLED, REJECTED) and those categories, nor add format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description defines the returned resource ('the workspace's changes — fixes, chores, new steps, experiments') in rich detail, but never states the action itself — the fact that this enumerates opportunities is carried only by the name/title. It also does not differentiate this list operation from siblings such as compass_opportunities_propose or compass_opportunities_create. Purpose is inferable from the title but the description alone is vague about the verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete filtering guidance ('Filter by lane key in `status` or by workflowPageId') and points to a companion tool for status names ('compass_statuses_list has the status names'), which is genuinely useful routing. However there is no when-to-use versus when-not-to-use statement, no mention of what it excludes, and no indication of when a caller should prefer a different listing tool (e.g. compass_pages_list) instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_opportunities_mark_implementedRecord that the change landedAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | ISO date the change landed — omit for today. | |
| note | No | What shipped, if worth recording. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| applyToMap | No | 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 user first; it can't be undone. | |
| approvalId | No | Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call. | |
| opportunityId | Yes | The change's key (e.g. ACME-12) or id, from compass_opportunities_list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it as a non-destructive mutation. The description adds crucial behavioral context beyond annotations: the record is irreversible ('cannot move afterward'), it attaches to the linked Ledger entry as evidence, and it may return `needs_confirmation`, implying an approval flow. These are important for correct use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, each carrying useful information. It is mostly front-loaded, though the opening phrase 'The measurement window's boundary' is slightly abstract before the concrete action is stated. No wasteful content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a mutation with irreversible effects and an approval flow, the description covers the core action, trigger, irreversibility, side effect (attaching evidence), and potential return value (`needs_confirmation`). It is complete enough for an agent to call correctly, though it does not explain every parameter's effect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents all parameters. The description does not add parameter-specific meaning beyond the general concept of recording a date, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: recording the landing date of an experiment's change, framed as the measurement window boundary. It clearly distinguishes this from status changes or accept/propose siblings by focusing on the irreversible landing date and its baseline/effect implications. However, it does not explicitly name sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The trigger is clear: 'when the user says the experiment's change actually shipped / went live / rolled out.' It also advises confirming the date because it cannot move afterward. No alternatives or exclusions are mentioned, but the context is sufficiently defined for correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_opportunities_proposePropose an AI opportunityAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | ≤200 chars, the opportunity in one line. | |
| reasoning | No | One or two sentences on why you're proposing this. | |
| riskScore | No | ||
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| valueScore | No | ||
| description | Yes | What it is and why it's worth trying, grounded in the map. | |
| workflowPageId | No | Workflow page to anchor to, when one fits. | |
| feasibilityScore | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds real post-write context beyond them: the record lands in the Compass Inbox and Needs-you for accept/dismiss, and approval is not required because the proposal itself is the gate. It stops short of auth/rate-limit detail but meaningfully explains consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the core purpose and the sibling distinction before moving to prerequisites and parameter guidance. Dense but every sentence carries actionable information; em-dash clauses are slightly packed but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-param mutation tool with no output schema, the description covers purpose, when-to-use, dedup precondition, anchoring, and scoring semantics. The main residual gap is that it never states what the call returns (e.g., an ID), which an agent would need despite the inbox description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 63%, and the description compensates for the gap: valueScore/feasibilityScore/riskScore have no schema descriptions, yet the description explains them as 1–5 scores, and it explains workflowPageId as an optional anchor 'when one fits'. This adds meaning the schema does not carry, above the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (file/propose) + resource (AI-PROPOSED opportunity) with an explicit scope note that it targets the review queue. It directly differentiates itself from the sibling compass_opportunities_create, so an agent can distinguish the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames when to use this versus the alternative ('Unlike compass_opportunities_create this needs NO approval') and gives a precondition ('Check compass_opportunities_list first so you never duplicate'). Both the alternative and the exclusion condition are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_opportunities_register_expectationPre-register an experiment's expectationAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Target value, in the metric's unit (hours for time). | |
| deadline | No | ISO date the expectation is due by. | |
| metricId | No | Ledger metric to bind (requires target). From ledger_metrics_list. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| approvalId | No | Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call. | |
| comparator | No | ||
| fromRollup | No | 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 metric with the last 30 days rebuilt from the map's history, so the before is on record. Needs a target; comparator defaults to <=. | |
| expectation | Yes | One sentence — what we expect this to change. | |
| opportunityId | Yes | The change's key (e.g. ACME-12) or id, from compass_opportunities_list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnly=false, destructive=false). The description adds real behavioral context beyond that: it creates a linked Ledger decision entry, readings flow in automatically as evidence, revisions happen by superseding, and it may return needs_confirmation. It doesn't fully explain the confirmation/approval round-trip, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose in the first clause, then layers conditions and mechanics in tight, waste-free sentences. No filler, and the honesty framing is placed where an agent reads first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description does cover the notable return case (needs_confirmation) plus the downstream evidence behavior. For a 9-parameter tool with a nested object and an approval flow, it is nearly complete, lacking only explicit guidance on the approvalId sequencing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (89%), so baseline is 3, but the description adds meaning beyond the schema by tying metricId + comparator + target together as a binding unit and clarifying the evidence flow. The per-parameter details (target, deadline, fromRollup) are already well documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (pre-register/write) and resource (an experiment's expectation on an opportunity), and frames the unique value proposition ('the honesty mechanism') that no sibling offers. An agent can distinguish it from compass_opportunities_create or ledger_entries_create without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear timing ('BEFORE evidence exists', 'never backfill') and names the related tools (ledger_metrics_list) needed to make the expectation measurable, plus the one-per-opportunity rule with the supersede-in-Ledger alternative. It stops short of explicitly stating when to prefer this over a plain ledger entry or opportunity update, so it is clear context but without full exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_opportunities_set_statusMove a change to another statusADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | A lane key. Use this or `statusName`. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| approvalId | No | Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call. | |
| statusName | No | A status name from compass_statuses_list. Use this or `status`. | |
| opportunityId | Yes | The change's key (e.g. ACME-12) or id, from compass_opportunities_list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the mutation risk is known; the description adds real value by disclosing the needs_confirmation/approvalId flow and the conditional Ledger side effects that follow a status move. It stops short of describing reversibility or permissions, but the annotation coverage lowers the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then branches into status-name sourcing, legacy keys, Ledger conditionals, and the confirmation signal. Every sentence carries distinct operational information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no output schema, the description covers the confirmation handshake and downstream tool routing well. It does not state what a successful response contains, but in the absence of an output schema this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description meaningfully clarifies the status/statusName relationship ('the old lane keys still work and land on that lane's default status') and directs where status names come from. This is more than the schema conveys about defaulting behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb (move) and resource (a change/opportunity) plus the target (a workspace status), and names the sibling compass_statuses_list for obtaining status names. A reader can distinguish it from compass_opportunities_update and other siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing: use statusName from compass_statuses_list, legacy lane keys still work; only experiments follow the Ledger, with named follow-ups (compass_opportunities_register_expectation, ledger_entries_settle) and the exact conditions that trigger them, while 'Other changes just move.' It tells the agent when to reach for other tools and when to do nothing further.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_opportunities_updateEdit an opportunityADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | New tag set — replaces existing tags. | |
| label | No | New one-line label (2–200 chars). | |
| assignee | No | The workspace member doing the work, by email or user id; null unassigns. They're notified. | |
| doneWhen | No | What's true when it's done, that someone else could check (≤1,000 chars). | |
| priority | No | How soon it matters; null clears it, and the map's suggestion shows again. | |
| riskScore | No | ||
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| approvalId | No | Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call. | |
| experiment | No | Measure it against the Ledger (expectation when it starts, verdict when it's done). | |
| valueScore | No | ||
| visibility | No | Who can see it: PRIVATE (only the user), WORKSPACE (every member, the default), or SHARED (specific people, granted afterwards). Say 'make it private' → PRIVATE. | |
| description | No | New description (≤5,000 chars). | |
| externalUrl | No | Where the doing happens off-platform (URL); null clears. | |
| ownerPageId | No | PERSON page id who owns the work; null clears. | |
| opportunityId | Yes | The change's key (e.g. ACME-12) or id, from compass_opportunities_list. | |
| workflowPageId | No | Workflow page to anchor to; null un-anchors. | |
| feasibilityScore | No | ||
| qualitativeNotes | No | Free-form notes (≤20,000 chars) — replaces the current notes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=false, so the write profile is covered. The description adds genuinely useful behavior beyond that: partial-update semantics ('fields you omit are untouched') and the confirmation round-trip. It stops short of noting that tags/notes are replaced rather than merged, which the schema covers instead.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the field list, then the constraints (partial update, sibling exclusion, id source, confirmation), with no filler. The single dense sentence is efficient, though slightly list-heavy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 18-parameter mutation with no output schema, the description covers partial-update behavior, id sourcing, the status-tool boundary, and the confirmation flow. Only the replacement-vs-merge nuance for tags/notes is left to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, so the schema already documents nearly every parameter. The description's field list largely mirrors the schema and adds little new syntax, though flagging ownerPageId as 'a PERSON page' is a helpful clarification. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (corrects/edits) and resource (an opportunity's content) and enumerates the editable fields, so the scope is unambiguous. It explicitly distinguishes itself from compass_opportunities_set_status by declaring the lane is NOT handled here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing: use compass_opportunities_set_status to move the lane, and get ids from compass_opportunities_list. It also prescribes the interaction protocol for the needs_confirmation response (say what you're changing and wait).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_page_links_listList a page's connectionsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The page id. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| includeEnded | No | Also return connections that have ended. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, so safety is covered; the description goes further with edge directionality, hydration with endpoint summaries, and the temporal filtering rule for includeEnded (validTo in the past). This is meaningful behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with zero filler. Return shape and the includeEnded toggle are front-loaded appropriately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description partially explains return content (edges hydrated with endpoint summaries), which is what an agent needs. Minor: it doesn't detail pagination or the summary fields, but that is a small gap for a read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds meaning to includeEnded beyond the schema's terse wording—clarifying that ended relationships have validTo in the past and are useful for historical questions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (list the typed edges touching one page), explicitly notes scope (both directions, hydrated with the other endpoint). An agent can distinguish this from compass_links_create/update/delete at a glance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage context: 'understand a subject's neighborhood before adding to it' and 'who handled this before' for includeEnded. No alternative sibling is explicitly named, so it stops short of a 5, but the when-to-use scenarios are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_pages_createCreate a Compass pageAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Markdown body shaped to the type (steps for WORKFLOW, role/contact sections for PERSON, etc.). | |
| tags | No | Optional tags. | |
| type | Yes | Page 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's pushing toward; AUDIENCE = who the work is for; OFFERING = what the business delivers. | |
| title | Yes | ≤80 chars, sentence case, no filler verbs. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| approvalId | No | Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call. | |
| visibility | No | Who can see it: PRIVATE (only the user), WORKSPACE (every member, the default), or SHARED (specific people, granted afterwards). Say 'make it private' → PRIVATE. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so the description isn't needed for the safety profile. It adds real non-annotated behavior: the possible needs_confirmation response, the requirement to get user approval and re-call with approvalId, and a data-fidelity constraint ('only record what the human has actually told you'). It doesn't describe the created return shape, but no output schema exists so a full 5 isn't warranted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the create action, followed by the dedupe check, the approval flow, and the fidelity constraint. Every sentence earns its place with no repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-param create tool with no output schema, the description covers purpose, routing, and the non-obvious confirmation round-trip well enough to call correctly. It stops short of explaining downstream effects of the created page or the full type taxonomy usage, but the schema fills those gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all seven parameters (including the enum for visibility and the type taxonomy) are already fully documented. The description only ties the approvalId to the confirmation flow, which the schema explains anyway, so it adds little beyond structured fields. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (creates) plus resource and scope (a typed page in the workspace's Compass compendium), which cleanly separates it from compass_pages_update/list/search. It even names compass_pages_list as the sibling to consult first, so an agent can route correctly without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use and when-not guidance: 'Check compass_pages_list first — don't create a page for a subject the map already has; link to it instead.' It also documents the confirmation flow and what to do when needs_confirmation is returned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_pages_deleteDelete a Compass pageADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | Id of the page to delete. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| approvalId | No | Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, and the description adds substantial context beyond that: it is a soft delete, connections and anchored opportunities are cascaded with it, restore reverses the whole set, and it may return needs_confirmation requiring the page to be named and approval awaited. That is rich behavioral disclosure covering scope of destruction and reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core behavior (trash/soft delete) before the routing guidance, and every clause earns its place: scope of cascade, alternative tool, id provenance, confirmation protocol. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no output schema, the description covers what an agent needs: the mutation's effect, cascading scope, reversibility, id source, and the needs_confirmation approval loop. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents pageId, workspace, and approvalId, and the description adds provenance ('Page ids come from compass_pages_list / compass_pages_search') plus the confirmation/approval flow context. Useful beyond the schema, though it does not restate the workspace-scoping semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Moves a page to the trash') and immediately qualifies it as a soft delete. It explicitly contrasts itself with siblings compass_pages_restore and compass_pages_update, so an agent can route correctly without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('REMOVE a page you or an extraction created wrongly, or one the user says no longer belongs') and an explicit alternative ('to fix a wrong title or body, use compass_pages_update instead'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_pages_getGet a Compass pageARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The page id (from compass_pages_list). | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: it discloses the payload contents (full Markdown body, header fields, attached sketches), which tells the agent what to expect in the response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the core action and result contents. The trailing em-dash aside about napkin_boards_view is useful but slightly crowded into the same sentence, costing a point on structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining returns, and it does so adequately (body, header fields, sketches). Annotations cover the safety profile and the schema covers both parameters, so the remaining gaps (error behavior, page-not-found handling) are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters (pageId and workspace) are already fully documented in the schema, including the per-call workspace override rules. The description only restates 'by id' and references boardId for a sibling tool, adding little beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (fetches) and resource (one Compass page by id), and enumerates what is returned (Markdown body, header fields, attached Napkin sketches). This clearly distinguishes it from compass_pages_list and compass_pages_search, which handle collections or querying rather than single-page retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete usage cue — view an attached sketch via napkin_boards_view before discussing it — which routes the agent to the right sibling for the sketch sub-task. It does not, however, state when to use this vs. compass_pages_list or compass_pages_search, so primary-tool selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_pages_listList Compass pagesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Narrow to a specific page type (WORKFLOW, PERSON, ROLE, SYSTEM, PAIN_POINT, DOCUMENT, VALUE, PRIORITY, AUDIENCE, OFFERING). | |
| limit | No | Page size, default 50. Prefer compass_pages_search when you know what you're looking for. | |
| offset | No | Skip this many, for the next page. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: results are summaries (not full pages), paginated at 50 with limit/offset, and the response carries total and nextOffset. It does not mention workspace-scoping behavior, but the schema covers that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose and scope, then the type filter, then pagination and routing. No sentence is expendable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although there is no output schema, the description compensates by stating that the return is summaries with total/nextOffset, so an agent knows both the shape and the paging loop. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description restates the type enum and the limit/offset pagination model, which largely duplicates the schema rather than adding format or syntax detail beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Lists pages in the active workspace's Compass compendium') and immediately distinguishes the tool from compass_pages_get (full body) and compass_pages_search (better first call when you know the target). An agent can select it confidently without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing: use compass_pages_search when you know what you're looking for, use compass_pages_get to fetch a full body, and this tool otherwise. Both alternatives are named with the conditions that favor them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_pages_restoreRestore a deleted Compass pageAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | Id of the deleted page. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| approvalId | No | Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly=false, destructive=false, openWorld=false, which says little about what this write does. The description adds the crucial cascade behavior (connections and opportunities are restored along with the page), the not_found failure mode for already-live or nonexistent pages, and the needs_confirmation return path — all behavior beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the action and its cascade, the use condition, and the failure/confirmation semantics. Front-loaded with the operation before the routing advice.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description covers the restore semantics, cascade effects, error case, and confirmation path, which is nearly everything an agent needs. The only gap is that the needs_confirmation follow-up (gathering approval) is not spelled out in the description, though the approvalId schema field does cover it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description adds real value on top by explaining where pageId originates (a prior compass_pages_delete or the trash) rather than just 'Id of the deleted page'. It does not explain the approvalId follow-up flow, which the schema carries alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('puts a trashed page back on the map') and goes further by naming the scope of restoration — the connections and opportunities that the delete removed. An agent can distinguish this from compass_pages_delete and compass_pages_get without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it (user wants a deleted page back) and where the pageId comes from (the earlier delete call or the Compass trash). It also implies when not to use it via the not_found conditions, but never names an alternative tool or states an exclusion rule directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_pages_searchSearch Compass pagesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Search term. Use the most distinctive word or phrase for the subject ('Zendesk', 'invoice approval') — not full sentences. | |
| type | No | Narrow to one page type. | |
| limit | No | Results per page, 1-25. Default 10. | |
| offset | No | Pagination offset. Default 0. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe read-only, non-destructive, closed-world profile, so the bar is lower. The description adds genuinely useful behavior beyond that: match semantics, pagination, and the fact that results are truncated to a 300-char body snippet with a pointer to fetch full text.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the operation and its scope, then the primary use case, then the return-format caveat. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description steps in to describe the return shape (summaries with a 300-char snippet) and the path to full content. Combined with the annotations and fully-described schema, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters (including `workspace` auth nuance and `q` guidance). The description adds nothing parameter-specific beyond noting the search fields and pagination, which is the correct baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Keyword search over page titles, bodies, and tags') and precisely characterizes matching semantics (case-insensitive substring). It also distinguishes itself from the sibling `compass_pages_get`, so an agent can route without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear use case ('fast way to check whether a subject already has a page before creating or linking') and an explicit alternative for full text (`compass_pages_get`). It does not differentiate from the other sibling `compass_pages_list`, which is a plausible source of confusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_pages_updateUpdate a Compass pageADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | New Markdown body — replaces the whole body. | |
| tags | No | New tag set — replaces existing tags. | |
| title | No | New title (≤200 chars). | |
| pageId | Yes | Id of the page to edit. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| approvalId | No | Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call. | |
| visibility | No | Who can see it: PRIVATE (only the user), WORKSPACE (every member, the default), or SHARED (specific people, granted afterwards). Say 'make it private' → PRIVATE. | |
| description | No | New one-line gallery summary (≤2,000 chars). | |
| headerFields | No | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, but the description adds the crucial nuance that title/body/tags replace wholesale (data loss) while headerFields MERGES, plus the needs_confirmation/approvalId flow. This is real behavioral context beyond the annotation. Minor gap: no statement of required permissions/scopes for editing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action and field list; every clause is informative. Slightly dense with em-dashes and parentheticals, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no output schema, the description covers the workflow, field-replacement semantics, the confirmation return path, and prerequisite fetches. An agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds the replace-vs-merge distinction with a concrete example ('set the owner leaves status alone') and explains approvalId re-call semantics. It reinforces and slightly extends the schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Edits) and resource (an existing page), enumerates the editable fields, and explicitly distinguishes itself from compass_pages_create by telling the agent to fix rather than duplicate. An agent can select this over siblings without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing: use this to FIX mistakes instead of creating a duplicate, fetch current state with `compass_pages_get` first, and get page ids from `compass_pages_list`. It also names the alternative and the condition that selects it, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_priority_steps_findFind the steps behind a priority or valueAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The PRIORITY or VALUE page id. | |
| workspace | No | Workspace slug. Ignored for workspace API keys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavior beyond the annotations: proposals wait for a human unless a serves link ties the workflow (then kept at once), and dedup/idempotency ('steps already tied or proposed aren't proposed again, so it's safe to run as the map grows'). Annotations only cover read/write and destructiveness, so this human-confirmation workflow is genuinely new information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, but the long opening sentence is overloaded with nested parentheticals ('(or VALUE)', '(or where the business lives the value)') that hurt readability. The subsequent sentences are efficient, but it is denser than it needs to be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description covers the mutation semantics, the confirmation flow, and idempotency well enough for correct invocation. Return format is left implicit, which is the main remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters documented, so baseline 3 applies. The description clarifies that pageId is a PRIORITY or VALUE page, which is a marginal semantic addition already implied by the schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: reads every mapped workflow against one PRIORITY/VALUE and proposes the steps that move it. This is clearly distinguishable from generic page/step siblings, though the parenthetical hedging ('or VALUE', 'or where the business lives the value') slightly muddies the single core action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit preconditions: 'Use it after a priority is named and workflows are mapped, or when someone asks what moves a priority.' Clear when-to-use context, but it never names an alternative tool (e.g. why not compass_step_suggestions_build), so it stops short of full routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_process_diagram_ensureGive a workflow its steps diagramAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The WORKFLOW page id. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| approvalId | No | Approval id from a prior needs_confirmation response, after the user has approved. Omit on the first call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring readOnlyHint=false and destructiveHint=false, the description adds rich behavioral context: it creates the diagram when absent, moves any existing mermaid block verbatim into the diagram and leaves the page body, preserves node ids for step anchoring, enforces one diagram per workflow, and may return needs_confirmation. This goes well beyond the safety hints and explains side effects and approval flow.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and scope, then uses each subsequent sentence to add necessary edge-case rules, routing advice, and approval signaling. There is no filler or repetition; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description covers the essential return signals (diagram, diagramId, needs_confirmation), idempotent creation, mermaid migration, and multi-user consolidation. The only minor gap is that it does not describe the full return payload shape beyond the diagram and diagramId, but it provides enough for an agent to call and handle the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents pageId, workspace, and approvalId in detail. The description adds only indirect context for approvalId via 'May return `needs_confirmation`' and does not elaborate on workspace behavior, leaving this at the baseline level for high-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Returns the Napkin diagram that holds a WORKFLOW page's steps, creating it when the page has none.' It distinguishes itself from siblings by describing get-or-create semantics and explicitly routing edits to napkin_diagrams_update, so an agent can tell it apart from napkin_diagrams_create or compass_pages_get without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear when-to-use guidance: call this to obtain a workflow's steps diagram, then edit the returned diagramId with napkin_diagrams_update. It also names an alternative for checking existence ('compass_pages_get returns processDiagramId when one exists') and instructs adding steps to the single diagram rather than creating a second.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_roles_overviewRead how work is moving across every roleARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/non-destructive/non-open-world, so the description focuses on payload substance: what each row contains, that unchanged roles are included too, and that totals are appended. It doesn't cover ordering, pagination, or size behavior for very large workspaces, which is a real gap for an 'every role' read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core scope statement is front-loaded, and every clause carries information about the returned fields. The stage enumeration and attention-reason list make the sentence long and dense, but nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must carry the return shape and it does: per-role row fields, totals row, inclusion of unchanged roles, and the sibling for drill-down. What's missing is operational detail — result ordering, volume limits, and whether attention reasons are always populated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single workspace parameter is fully documented in the schema, so the description adds no syntax or format detail. The phrase 'in the workspace' only echoes scope already stated by the parameter. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the exact resource (every role in the workspace, one row each) and enumerates the metrics produced: documented hours vs. working month, saved hours, saved-hours by stage, judgment work before/now, new work, and attention reasons. It is immediately distinguishable from compass_role_story, which is explicitly named as the single-role alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative (compass_role_story) and the selection rule (one role's detail vs. all roles), and adds a framing constraint ('talk about roles, never about people'). It lacks an explicit when-not-to-use or prerequisite statement, but the routing guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_role_storyRead how a role's job is changingBRead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| rolePageId | Yes | The ROLE page's id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish a safe, closed-world read, so the description's job is to add interpretation context — and it does: it warns that saved hours are 'unproven' when under half the month is documented and it flags `hoursAssumed` as a full-time default rather than measured data. Those are real caveats an agent would otherwise get wrong. It says nothing about failure modes (unknown rolePageId, wrong page type) or the cost/size of the response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The scope statement is front-loaded, which is good, but the core is a single sprawling sentence built from semicolon-chained nested lists (kinds of work, new-work subtypes, stage values) that is hard to parse on first read. Every element is arguably load-bearing for a tool with no output schema, but the structure could be broken into scannable clauses or a short list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must describe returns, and it does so thoroughly — baseline vs current hours, event timing, adopted work and settlement, role sizing, documentation coverage, and analysis stages with their enum meanings. The main omission is error/edge behavior and confirmation of what identifies a valid ROLE page.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only two parameters at 100% schema description coverage, the schema already carries the semantics, including the personal-token/workspace rule. The description adds no meaning about rolePageId beyond the schema's 'The ROLE page's id.'. `hoursAssumed` is referenced but it is a response field, not a parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title plus opening phrase 'One ROLE page's story' gives a specific resource and scope, and the body enumerates exactly what data the page story contains (hours by work kind, what landed, new work, role size, latest analysis). An agent can tell this is a per-role read rather than a listing tool. It stops short of naming the near neighbors it differs from (compass_roles_overview, compass_pages_get, compass_transformations_read).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus compass_roles_overview, compass_pages_get, or compass_transformations_read, and no preconditions (e.g. that rolePageId must reference a ROLE-type page). The closing directives ('say so' when documentation is thin, 'talk about the role, never about a person') guide how to narrate the output, not when to select this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_scenario_changesList the changes that reach a workflowARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The WORKFLOW page id. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed-world), so the bar is lower. The description adds real behavioral content beyond them: results include changes affecting nested workflows and changes anchored to the workflow with no effects yet, and each entry carries its per-step effect. That materially shapes what the agent expects back.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with what is returned and followed by the actionable next step. The em-dash clause about nested workflows is slightly tangled but every sentence earns its place; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing return content, and it does so reasonably (changes with per-step effects, including nested and anchored ones). It omits ordering/pagination expectations and any workspace-param caveat, but for a two-parameter read tool this is close to sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so pageId and workspace are already fully documented in the schema. The description adds nothing about either parameter (no format hints for the workflow page id, no workspace behavior), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource (list changes reaching a workflow's steps) and adds scope detail about nested workflows and anchored-but-inert changes, so the agent knows this is a change-discovery query rather than a mutation. It differentiates from siblings partly through the rollup cross-reference, but does not contrast itself with nearby tools like compass_changes_upsert or compass_workflow_steps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a genuine downstream instruction (pass returned ids to compass_workflow_rollup's changeIds to project the workflow), which names a sibling and a concrete next action. However, it never states when to call this tool versus alternatives, nor any prerequisites for the workflow state, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_statuses_listList the workspace's change statusesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the read-only, non-destructive, closed-world profile, so the bar is lower. Beyond that, the description discloses genuinely useful behavior: the fixed group taxonomy (TRIAGE/BACKLOG/ACTIVE/DONE/CANCELED) and the key invariant that groups are stable across workspaces while names are customisable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is densely front-loaded: it states the resource, the return ordering, the group taxonomy, the stability caveat, and the routing pointer in a compact set of sentences. The parenthetical group codes are load-bearing rather than filler, though the sentence is fairly long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list with no output schema, the description supplies what an agent needs: what is returned (statuses, their names, their groups and ordering) and how to reason about the values. Nothing material is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single workspace parameter, so the schema already carries the semantics and baseline 3 applies. The description only alludes to workspace scoping indirectly ('this workspace's changes') without adding format or override details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource — listing the change statuses of a workspace — and clarifies that they come back in board order. It also distinguishes itself from the mutating sibling compass_opportunities_set_status, so an agent can pick this tool without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear operational guidance on how to interpret and use the returned values (names when talking to people, groups when reasoning about progress) and routes the agent to compass_opportunities_set_status for the mutating counterpart. It stops short of an explicit when-to-call-this-vs-another-list-tool exclusion, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_step_claims_listList what's been said about a workflow's stepsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| nodeId | No | Narrow to one step. | |
| pageId | Yes | The WORKFLOW page id. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed world), so the description correctly focuses on behavior instead: oldest-first ordering, coexistence of disagreeing claims, source retention, and the AI_PROPOSED review state. These are real traits beyond the annotations, with only pagination/result-size behavior left unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence plus a compact colon-delimited field list; every clause carries information about the returned shape. It is dense but not padded, and the ordering guarantee appears early.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description takes on the burden of describing the return shape, and it does so well (step, subject, relation, source, validity window, origin). Missing only minor operational detail such as result limits or pagination for large claim sets.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema lacks: nodeId of null means 'the workflow as a whole' rather than a specific step, which materially affects how the filter is used. The workspace parameter semantics are left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource – listing every claim about a WORKFLOW's steps – and the title reinforces it. It does not explicitly distinguish itself from the sibling compass_step_claims_propose, but the read/list scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the agent can infer this is the read path for claims, and the note that AI_PROPOSED claims await human review hints at where the data comes from. However there is no explicit when-to-use, no mention of the propose sibling as the alternative, and no guidance on when the nodeId filter should be applied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_step_claims_proposePropose who does a workflow's steps and what inAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| claims | Yes | ||
| pageId | Yes | The WORKFLOW page id. | |
| sourceId | No | The interview, email thread, Prism report or page id, for those kinds. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| sourceKind | No | Who says so: 'interview', 'email_thread', 'prism_report', 'page', or 'user' (the person you're talking with). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: claims land as proposals pending acceptance, except sourceKind 'user' in a map-questions conversation which is kept immediately, and re-proposing from the same source returns the existing claim (idempotency). This is strong behavioral detail, though it doesn't describe limits like maxItems=50 coupling to error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and highly information-dense; nearly every clause earns its place. The nested parenthetical enumerating relation meanings is dense and slightly run-on, but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, multi-parameter, no-output-schema mutation tool, the description covers attribution, idempotency, missing-step handling, and the 'user' exception, leaving nothing an agent needs in order to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, yet the description still adds real meaning: it decodes each relation, explains the subjectPageId type mapping per relation, and clarifies sourceKind/sourceId pairing and the 'user' special case. Substantially more than the schema alone conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (propose) and resource (step claims about who does what in a workflow), and the parenthetical detail about relations and subject page types makes it unmistakable against siblings like compass_step_claims_list or compass_step_measures_propose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use rules: one call per workflow for who and what together, add the step via napkin_diagrams_update first when a step is missing, record disagreements as their own claim rather than skipping, and prefer ROLE vs PERSON depending on context. Alternatives and exclusions are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_step_measures_proposePropose what a workflow's steps takeAInspect
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
frequencywith 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.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | ||
| pageId | Yes | The WORKFLOW page id. | |
| sourceId | No | The interview, email thread, Prism report or page id, for those kinds. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| sourceKind | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations establish this is a write (readOnlyHint=false) that is non-destructive and closed-world, and the description adds meaningful lifecycle context beyond that: proposals 'count once someone accepts them in Compass', i.e. they are staged rather than committed. It doesn't detail auth requirements, limits on item count beyond the schema, or error behavior, but the acceptance-gate disclosure is valuable extra context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded intent followed by dense, example-driven bullets that each carry new information (unit, currency, per period, returnRate range). It is long, but the length tracks real complexity of the item union; little is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter, nested-item, no-output-schema mutation tool, the description covers the semantics that matter most for correct invocation and even explains the acceptance lifecycle. Gaps remain on temporal fields (validFrom/validTo) and source attribution params, which prevents a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 60%, and the description compensates well: it defines the item union semantics (working, waiting, hardCost, frequency), the frequency-with-null-nodeId vs variantId distinction, and explains subjectPageId's pricing-through-role behavior, which the schema leaves undocumented. validFrom/validTo and sourceId/sourceKind get no extra explanation, keeping it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — proposing estimates (measures/gates) for a workflow's steps — and anchors it to `compass_workflow_steps` for nodeId, so an agent knows the object graph. It does not explicitly differentiate from near siblings like compass_step_claims_propose or compass_step_suggestions_build, which keeps it at a 4 rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real usage context: propose ranges (not point estimates), 'ask about waiting separately', pass subjectPageId when the time belongs to one role/person, and 'Always say who said it.' What's missing is explicit when-not or alternative-tool routing against sibling propose/build tools, so it lands at 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_step_suggestions_buildBuild what a step suggestion namesAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The WORKFLOW page id the suggestion is on. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| approvalId | No | ||
| suggestionId | Yes | The suggestion id, from compass_step_suggestions_list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=false and destructiveHint=false already declared, the description usefully adds that the tool fails if something is already built for the suggestion and that a flow draft may still need work. These are behavioral traits beyond the annotations. It does not mention permissions or auth requirements for a mutation, which keeps it at 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and reasonably sized, but the em-dash clause listing flow contents ('who does it, its times, systems, write-up, attachments, interview notes') is a slog and the 'the way Compass's Build button does' analogy assumes external product knowledge. Information density is good; parseability is not.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating tool with no output schema, the description covers the return ('what was built and, for a flow, what the draft still needs') and the failure condition. The one real gap is approvalId, which is undefined everywhere, plus no statement of what gets created/overwritten at the workspace level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%; suggestionId and pageId already carry descriptions, and the description adds no format or syntax detail beyond pointing at compass_step_suggestions_list (which the schema already does). approvalId remains undocumented in both places. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb ('Builds') and resource ('a step suggestion') and enumerates the three artifacts it can produce (a flow draft with checklist, a shim, or a task), which is far more than a restatement of the title. The middle clause is a tangled run-on that assumes familiarity with 'the Build button,' keeping it from being a crisp 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: 'Use this, not workbench_flows_scaffold, whenever the work came from a step suggestion.' That names the alternative and the selecting condition. It does not spell out when-not to use it beyond the failure precondition, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_step_suggestions_listList which of a workflow's steps something could doARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | No | The WORKFLOW page id. | |
| changeId | No | A change (opportunity) id: the suggestion it came from. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description goes beyond that by explaining what the returned data means — state OPEN waits for a person, APPLIED produced a change with an opportunityId, and `built` reflects what was constructed in Workbench. It omits pagination, result limits, and auth requirements, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every clause carries information, and the sibling routing is placed last where it is most actionable. The opening sentence is a long, heavily parenthesized run-on ('for each suggestion... (nodeIds, labels)... (proposal.doer)... (reach)... (checklist, each item met or not)') that is dense rather than front-loaded, costing some readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must carry the return-value burden, and it does: it enumerates the fields of each suggestion record (nodeIds, labels, proposal.doer, reach, rationale, checklist) and defines the state vocabulary. For a read-only, zero-required-parameter list tool, an agent has everything needed to call it and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds real routing semantics the schema does not convey: pageId and changeId are alternative modes that return different cardinality (all suggestions for a page vs. the single suggestion a change came from). The `workspace` parameter's token-dependent behavior is left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (step suggestions for a workflow), and the title/description both make the resource unambiguous. It explicitly distinguishes itself from the two nearest siblings, naming compass_step_suggestions_build and warning off workbench_flows_scaffold.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit alternate invocation mode: 'Pass changeId instead of pageId to get the one suggestion a change came from.' It also routes the agent to the correct tool for the follow-up action ('To build one, use compass_step_suggestions_build — not workbench_flows_scaffold'), which is a genuine when-not instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_transformations_getRead a priority's transformationsARead-onlyInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | Workspace slug. Ignored for workspace API keys. | |
| priorityPageId | Yes | The PRIORITY page id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds valuable content beyond annotations: it explains what the response contains (the five levels, whether each fits/is reached/what it needs, time freed, change made), names the recommended level, defines 'settled', and explains 'running' vs null state with the sibling that starts a read. This is rich disclosure about return content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence followed by a shorter state-explanation sentence. It is front-loaded with the core content, but the first sentence is very long and packs many clauses together, which reduces readability. It earns its length given the complexity, but structure could be clearer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must explain the return content, and it does so thoroughly: levels, per-level status, changes, time freed, the change made, and the recommended level. It also explains the state values and the companion tool. It is largely complete for a two-parameter read tool, though it could say a bit more about the overall object structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (workspace, priorityPageId) are already documented in the schema. The description adds no parameter-level syntax or semantics beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource (the workflows behind a PRIORITY) and the extracted structure (five levels with fit/reached/needs, changes, time freed, change made, recommended level). It is a read tool and the verb is implied by the title 'Read a priority's transformations'. It does not explicitly distinguish itself from compass_transformations_read, though it hints at the relationship via the state field.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by referencing compass_transformations_read as the tool that 'starts one', giving a hint about the ordering. But there is no explicit when-to-use-this-vs-alternatives guidance, nor any statement of exclusions or prerequisites beyond that one parenthetical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_transformations_make_changeMake a change from a transformation levelAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| level | Yes | 1 Assist, 2 Automate, 3 Re-form, 4 Invert, 5 Dissolve. | |
| workspace | No | Workspace slug. Ignored for workspace API keys. | |
| approvalId | No | Approval id from a prior needs_confirmation envelope. | |
| priorityPageId | Yes | The PRIORITY page id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-read-only, non-destructive, closed-world write. The description adds real context beyond that: it drafts up to three flows in Workbench ('builds', each 'drafting' until ready), enforces a once-per-level rule, and can return a needs_confirmation envelope. This goes well past what the annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Effectively a single dense sentence, front-loaded with the core action ('Creates a Change...'), followed by supporting detail. Compact and largely waste-free, though the run-on nature makes it slightly harder to parse at a glance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-destructive mutation tool with annotations present, no output schema, and fully documented params, the description covers the key behavioral outcomes (drafting flows, per-level constraint, confirmation return). Nothing critical for correct invocation appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters (level enum, workspace, approvalId, priorityPageId). The description reinforces that approvalId ties to a needs_confirmation result and that level drives which flows get built, but adds little syntax beyond the schema. Baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource — 'Creates a Change from one level of a priority's transformations' — with the source level and priority clearly identified. It is distinguishable in intent from siblings like compass_changes_upsert, but it never names or contrasts an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an implied usage constraint ('Only a level that fits, once per level') and notes that the tool 'May return needs_confirmation', which hints at the confirmation flow. However, it offers no explicit guidance on when to choose this versus compass_changes_upsert or the transformations_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_transformations_readRead a priority's transformations againAInspect
Starts reading the five levels for a PRIORITY in the background (a minute or two). Needs at least one kept step that impacts the priority. A read under way is left to finish. Check back with compass_transformations_get.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No | Workspace slug. Ignored for workspace API keys. | |
| priorityPageId | Yes | The PRIORITY page id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, which is surprising for a tool named "read"; the description reconciles this by explaining it kicks off an asynchronous background job. It further discloses the rough latency ("a minute or two") and dedupe behavior for in-flight reads, adding real value beyond the structured hints. It stops short of describing failure modes or what invalidates a run.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the action and its async nature, then the precondition, then the follow-up. No filler and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an async job-starter with no output schema, the description supplies what an agent actually needs: it's a background kickoff, it takes time, don't re-trigger an in-flight read, and poll with compass_transformations_get. Only error/edge-case behavior is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema. The description references the PRIORITY target that maps to priorityPageId but adds no format or semantics beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ("Starts reading the five levels for a PRIORITY in the background") that is distinct from the sibling compass_transformations_get, which it names as the polling counterpart. The terminology ("five levels", "transformations") is domain-specific but the verb+resource pairing is clear enough to identify intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete precondition ("Needs at least one kept step that impacts the priority") and explains the concurrency rule ("A read under way is left to finish"). It also names the follow-up tool explicitly, though it doesn't contrast itself against the mutation siblings like transformations_make_change.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_transformations_respondRecord what's true about a transformation levelAInspect
Records what someone told you about one level of a PRIORITY's current transformations, in their words or a faithful summary: that they already do it, what rules it out, a system that isn't ready, work still done on paper, and so on. Compass works out what it means in the background: a label for the level, facts kept on the steps they're about (every later reading of those workflows sees them), and open questions to confirm. Then it reads the priority again. Use it whenever a conversation settles something about a level, so it lands on the priority's page, not only in this chat.
| Name | Required | Description | Default |
|---|---|---|---|
| said | Yes | What's true about the level, as the person said it. | |
| level | Yes | 1 Assist, 2 Automate, 3 Re-form, 4 Invert, 5 Dissolve. | |
| workspace | No | Workspace slug. Ignored for workspace API keys. | |
| priorityPageId | Yes | The PRIORITY page id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare write/non-destructive/closed-world; the description goes well beyond by disclosing the actual side effects: Compass derives a level label, stores facts on the steps they concern (visible to every later reading of those workflows), raises open questions, and re-reads the priority. That is exactly the propagation and post-write behavior an agent needs to know before calling a mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, and the sentence structure separates input, background processing, and usage trigger. The middle list of examples ('work still done on paper, and so on') is slightly loose but each item aids recognition, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining what happens after the call, and it does: labels, step-attached facts, open questions, and a priority re-read. It stops short of stating return shape or error/permission conditions, but nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so params are already documented (level meaning, said, priorityPageId, workspace). The description adds only a light gloss on 'said' ('in their words or a faithful summary'), which is useful but not beyond the schema's own description. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: recording what a person said about one level of a PRIORITY's current transformations, and it enumerates the kinds of content (already do it, what rules it out, work on paper). It does not explicitly distinguish itself from near siblings like compass_transformations_make_change or compass_transformations_read, so an agent must infer the boundary, but the purpose itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear trigger: 'Use it whenever a conversation settles something about a level,' plus the rationale that the result lands on the priority's page rather than only the chat. It does not name alternatives or exclusions (e.g., when to use make_change instead), so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_workflow_learningWhat we've learned about a workflowARead-onlyInspect
Newest first: steps added to or dropped from the diagram (and by whom), and claims about who does what or what a step takes — said, corrected (with what they replaced), withdrawn, or accepted from a proposal — each with its source. This is when we LEARNED things; when they were true is each claim's validFrom/validTo. Use it to brief someone on what changed in the picture, or to see what an interview added.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | Only what was learned on or after this date. | |
| pageId | Yes | The WORKFLOW page id. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe-read profile, and the description adds genuinely non-structured behavior: newest-first ordering, the composition of the feed (step additions/removals plus claim events with replacement text), inclusion of source per item, and the key distinction that timestamps reflect when something was LEARNED versus when it was true (validFrom/validTo). It omits pagination/limit behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content and ordering lead, with only two sentences and no filler. The em-dash-heavy run-on in the first sentence is dense and slightly hard to parse, but every clause adds information rather than restating the name or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full burden of explaining return values, and it does so in reasonable detail (event types, sources, ordering, temporal framing). It is nearly complete; only absent details like pagination or the default behavior of `since` keep it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description earns above baseline by disambiguating the temporal semantics of the `since` filter—clarifying it bounds learning-time, not claim validity. That directly resolves the ambiguity the schema's one-line parameter description leaves open.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description concretely states what the tool returns: a newest-first feed of steps added/dropped and claim lifecycle events (said, corrected, withdrawn, accepted), each with its source. That is a specific resource and clearly more than a restatement of the name. It stops short of naming the overlapping siblings (compass_step_claims_list, compass_workflow_steps, compass_scenario_changes), so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives two concrete use cases—briefing someone on what changed, and seeing what an interview added—which implies when to reach for it. However it never contrasts with the natural alternatives (a plain step list or claims list), and there are no when-not-to-use notes. Usage is implied rather than dictated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_workflow_rollupRoll up what a workflow takesARead-onlyInspect
Per run and per month: hands-on minutes, waiting minutes, labor cost (hands-on time priced through each role's hourly rate), and hard costs, each as a low–high range, with every step's share and its gates (approvals, handoffs, re-keying, rework). A step that is itself a workflow uses that workflow's roll-up unless it has its own estimate. coverage says how many steps are timed — always say how much of the total rests on estimates before quoting it, and never present a range as one number. unpricedRoles are roles doing timed work with no hourly rate; their time counts and its cost doesn't. Where the waiting dwarfs the hands-on time, or a gate rarely sends anything back, is usually where the improvement is. at reads the estimates as of a date; variantId rolls up one variant.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | How things were on this date (YYYY-MM-DD). Default today. | |
| pageId | Yes | The WORKFLOW page id. | |
| knownAt | No | Count only what had been said by this date — the picture as we knew it then. | |
| changeIds | No | Project the workflow as these changes would leave it (ids from compass_scenario_changes). Compare with a call without them: before vs after, what stays human, overlapping changes. | |
| variantId | No | A variant id from compass_workflow_steps. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint/destructiveHint/openWorldHint already covering the safety profile, the description adds substantive behavior: nested-workflow recursion ('a step that is itself a workflow uses that workflow's roll-up unless it has its own estimate'), the meaning of coverage, and the unpricedRoles edge case where time counts but cost does not. These are non-obvious computation semantics an agent could not infer from annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The output spec is front-loaded and the caveats follow in a logical order, so an agent can parse intent from the first sentence. The prose is dense with em-dashes and parentheticals, but every sentence carries content (recursion, coverage, unpriced roles, interpretation). Slightly heavy, but no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the return-value burden and does so: it enumerates the metric families, the low-high range format, per-step shares, gates, coverage, and unpricedRoles. What it does not sketch is the top-level response shape or how per-run vs per-month sections are organized, a modest remaining gap for a six-parameter analytical tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description restates 'at' and 'variantId' in prose ('at reads the estimates as of a date; variantId rolls up one variant'), which is roughly equivalent to what the schema already documents, and adds no syntax or default detail beyond it. It does not compensate for anything, but nothing is missing either.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening clause gives a precise spec of the resource and its output: per run and per month, hands-on minutes, waiting minutes, labor cost, and hard costs as ranges with per-step shares and gates. It is unmistakably the cost/time rollup rather than the step list or learning tools. It never names a sibling explicitly, so it stops short of the 5 bar of differentiating itself from compass_workflow_steps or caliper_flow_performance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives reporting rules ('always say how much of the total rests on estimates before quoting it, and never present a range as one number') and interpretive direction ('where the waiting dwarfs the hands-on time... is usually where the improvement is'). What is missing is explicit routing: nothing says when to call this versus compass_workflow_steps, compass_flow_performance, or compass_workflow_learning. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compass_workflow_stepsList a workflow's steps and who does themARead-onlyInspect
Every step in a WORKFLOW page's steps diagram, in diagram order, with its phase, whether it is itself a workflow (subWorkflowPageId), and who the map says owns, does, approves, is consulted on, or doesn't do it, and uses: the systems or documents it's done in. unknown: true means nothing that counts says who does the step or what it's done in — those are the questions worth asking in an interview. A step with uses and nobody on it is one a system runs; don't ask who does it. disputed lists roles or people with conflicting claims; ask about those rather than picking a side. proposals counts claims waiting for review. variants are named subsets of the steps ("rush job", "enterprise client"); each step lists the variants it belongs to. Returns no steps when the workflow has no diagram yet (compass_process_diagram_ensure makes one).
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The WORKFLOW page id. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, destructiveHint=false, so safety is covered; the description adds the non-obvious behavior that it 'Returns no steps when the workflow has no diagram yet' and resolves subWorkflowPageId nesting. No mention of pagination or result-size limits, but for a scoped read-only list this is solid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the primary noun phrase (steps in diagram order) before field semantics, and each following sentence earns its place by decoding output fields. It is one dense run-on block rather than cleanly segmented, but with no output schema the field explanations are justified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so well, explaining unknown, uses, disputed, proposals, and variants. It stops short of describing the top-level response envelope, but an agent has enough to call and interpret the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters, so the schema already documents pageId and the workspace slug/default behavior. The description implies pageId ('a WORKFLOW page's steps diagram') but adds no syntax or format detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Every step in a WORKFLOW page's steps diagram') and enumerates exactly what each step carries: phase, subWorkflowPageId, ownership claims, and `uses`. Precise scope makes it distinguishable from compass_priority_steps_find or compass_step_claims_list, though it never explicitly contrasts itself with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete operational guidance on when/how to act on results: 'unknown: true ... those are the questions worth asking in an interview', 'A step with `uses` and nobody on it is one a system runs; don't ask who does it', and 'ask about disputed rather than picking a side'. It also names compass_process_diagram_ensure as the path when no diagram exists, though it doesn't frame a when-to-use-this-vs-that comparison among the listing siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entity_tags_browseBrowse the workspace's tagsARead-onlyInspect
Without a tag: every tag in use across the workspace with how many entities carry it, most-used first — the vocabulary the team already organizes by. With a tag: everything filed under it across every tool, each with its kind, id, title, and path. Use it to reuse existing labels instead of inventing near-duplicates, and to answer 'show me everything about X' when X is a label.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | A tag to expand into its items. Omit to list tags. | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds non-annotation behavior: result ordering ('most-used first') and the fields returned in each mode (tag name + count; kind, id, title, path), but says nothing about result limits or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the two modes that matter most before the usage advice. It is efficient, though 'the vocabulary the team already organizes by' is slight editorial padding for an agent-facing definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-shape burden and does so for both modes, which is the key gap an agent would otherwise face. It omits pagination/size limits, the only remaining incompleteness for a browse tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, and the schema already documents omitting the tag. The description goes beyond that by spelling out what each mode actually produces, which clarifies the semantics of the tag parameter's presence/absence rather than just restating it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource precisely and separates the two operating modes: no tag lists all workspace tags with usage counts, a tag expands to all items filed under it across every tool. That mode split makes it trivially distinguishable from entity_tags_get and entity_tags_set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete usage triggers: 'reuse existing labels instead of inventing near-duplicates' and answering 'show me everything about X' when X is a label. It stops short of naming alternatives (entity_tags_get, search_workspace) or stating when not to use it, so it is clear context without explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entity_tags_getRead the tags on entitiesARead-onlyInspect
Returns the tags on a batch of entities of one kind — the labels galleries organize by. Ids come from the kind's list/get tool or from search_workspace. Use it before entity_tags_set so you replace the full set knowingly, and to answer 'what is this filed under'. Entities the user can't see are omitted.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | ||
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| entityKind | Yes | Which kind the ids belong to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful behavior beyond that: results are batch-scoped to one entityKind and 'Entities the user can't see are omitted', i.e. permission-based filtering of results. It does not describe pagination or the shape of the returned tag set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences, front-loaded with the return value before the usage guidance. The gloss 'the labels galleries organize by' earns its place by disambiguating 'tags' in this domain. Slightly dense but no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the burden of describing the return, which it does at a high level ('returns the tags on a batch of entities'). Combined with the permission-omission note and the id-sourcing guidance, an agent has enough to call it correctly, though the exact tag object shape remains unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%: workspace and entityKind are documented in the schema, but ids is not. The description compensates by explaining where ids come from (the kind's list/get tool or search_workspace) and that they belong to a single kind, which is the key constraint linking ids and entityKind. It does not mention the 100-item batch ceiling, which the schema already enforces.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns the tags on a batch of entities of one kind') and immediately distinguishes itself from entity_tags_set, which it names explicitly. An agent can tell it apart from the sibling tag tools without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives strong context: ids come from the kind's list/get tool or from search_workspace, and it should be run before entity_tags_set so the full set is replaced knowingly. It also frames a concrete question it answers ('what is this filed under'). It stops short of naming when NOT to use it versus entity_tags_browse, so it is not a full when/when-not/alternative spec.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entity_tags_setSet an entity's tagsADestructiveInspect
Replaces the FULL tag set on one entity (an empty list clears it). Read the current tags with entity_tags_get first and pass the merged list — this is not additive. Tags are lowercase letters, numbers, spaces, and hyphens; prefer labels already in use (entity_tags_browse) so the workspace's vocabulary stays small. The id comes from the kind's list/get tool or search_workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | Yes | ||
| entityId | Yes | ||
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. | |
| approvalId | No | Approval id from a prior needs_confirmation response. Omit on the first call. | |
| entityKind | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description adds the crucial nuance annotations cannot: that this is a full replacement rather than an append, that an empty list clears tags, and how to avoid accidental data loss by reading first. It also discloses the tag format constraints and workspace-vocabulary preference, which are real behavioral characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the destructive replacement semantic that matters most. Every sentence carries distinct, non-redundant information: replacement behavior, read-then-merge workflow, format/vocabulary rules, and id sourcing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does not explain what the call returns (e.g. the resulting tag list), and it does not mention the needs_confirmation/approvalId flow that the schema implies for a destructive operation. Otherwise it is complete: mutation semantics, safety guidance, format constraints, and id sourcing are all covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40%, so the description must compensate, and it does so for the highest-risk parameter: tags format (lowercase/numbers/spaces/hyphens) and replace semantics. It also explains where entityId comes from. It does not explain entityKind's 20 enum values or workspace/approvalId semantics, which the schema carries on its own.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening clause 'Replaces the FULL tag set on one entity' gives an exact verb, resource, and scope, and the parenthetical '(an empty list clears it)' nails the edge case. It is clearly distinguished from the read-oriented siblings entity_tags_get and entity_tags_browse, which it names directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when and how to use it: read current tags with entity_tags_get first, merge, then pass the full list, and warns that the call is not additive. It also directs the agent to entity_tags_browse for vocabulary and to the kind's list/get tool or search_workspace for the id, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_docFetch ZeroWidth doc by slugARead-onlyInspect
Fetch the full Markdown body of a specific docs page by its slug. Use this after search_docs when the user needs the complete content of a page. No authentication required.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Page slug. Accepts 'compass/api', '/compass/api', or 'docs/compass/api'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds two things beyond that: the return payload is the 'full Markdown body' (valuable because there is no output schema) and that no authentication is required. It does not discuss rate limits or caching, hence not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with no filler; the core action is front-loaded and the sequencing hint and auth note each carry distinct information. Nothing could be removed without losing content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description supplies exactly the missing pieces: what is returned (full Markdown body), when to reach for it versus search, and the absence of an auth barrier. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and the schema documents it at 100% coverage including accepted slug formats ('compass/api', '/compass/api', 'docs/compass/api'). The description adds nothing about the slug beyond restating it, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (fetch) and resource (full Markdown body of a docs page) plus the retrieval key (slug). An agent can immediately distinguish this from search_docs (search) and list_docs (enumerate) without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly positions itself in a workflow: 'Use this after search_docs when the user needs the complete content of a page,' which names the alternative and the condition that selects this tool. It does not mention list_docs as the other plausible sibling, so it stops just short of exhaustive routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_docsList ZeroWidth docs pagesARead-onlyInspect
Enumerate all available docs pages, optionally filtered by product (e.g. 'compass', 'legal', 'overview'). Use this to discover what slugs exist before calling get_doc. No authentication required.
| Name | Required | Description | Default |
|---|---|---|---|
| product | No | Optional product slug filter (e.g. 'compass', 'legal', 'overview'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuinely new context beyond that: 'No authentication required.' It stops short of describing pagination or result shape, but that gap is minor for a simple read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the scoping/workflow guidance is front-loaded before the operational note about authentication.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does tell the agent what it will get conceptually (available pages, their slugs) and how it fits with get_doc. It omits return fields and pagination behavior, which an agent might want, but nothing prevents correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single optional 'product' parameter is already documented with the same example values in the schema. The description repeats the filter semantics and examples rather than adding new meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Enumerate all available docs pages') with scope and an optional filter named upfront. It is clearly distinguishable from sibling reads like get_doc, list_posts, and search_docs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the use case: 'discover what slugs exist before calling get_doc', which gives the agent a concrete workflow position. It names one downstream sibling but does not contrast against search_docs, which is the closest overlapping discovery tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_docsSearch ZeroWidth docsARead-onlyInspect
Search ZeroWidth product documentation. Returns matching pages with title, slug, public URL, and a query-relevant snippet. Use this when the user asks about a ZeroWidth product (Compass, Workbench, Caliper, Prism, Ledger, Napkin, the assistant), an API behavior, or a policy. No authentication required — the docs corpus is public.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max number of results. Defaults to 10. | |
| query | Yes | Search query — keywords or natural-language phrase. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real value beyond the annotations by disclosing that no authentication is required and that the corpus is public — something readOnlyHint/openWorldHint do not convey. However, it says nothing about result ordering, pagination, or behavior when nothing matches, leaving meaningful behavioral gaps for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with what it does, then return shape, then when to use it, then the auth fact. Zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only search with a fully described schema and annotations, this covers purpose, trigger conditions, return fields, and access requirements. Nothing an agent needs in order to call it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are documented inline, so the schema carries the load. The description adds no syntax, ranking, or limit guidance beyond what is already structured; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (search ZeroWidth product documentation) and scopes the corpus precisely — public product docs, not workspace content — which separates it from siblings like search_workspace, workbench_kb_search, and compass_pages_search without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly enumerates the triggering conditions: questions about a named ZeroWidth product, API behavior, or policy. It never names an alternative tool or a when-not-to-use case, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_workspaceSearch the whole workspaceARead-onlyInspect
Finds anything in the workspace in one call — uploaded files (searching the text inside them), folders, Workbench flows, shims, knowledge bases and tasks, Compass pages and changes, Caliper datasets, evals, rubrics, reviews, specs and sources, Ledger entries, Napkin sketches, decks, docs, sheets, diagrams and interfaces. The same search the person uses in Home. Use it FIRST whenever the user mentions something without saying where it lives ('the SOW', 'the dispatch interviews', 'that invoice'). The query is words in any order: each word must appear in the thing's name, its tags, the names of the folders it's filed under, or the text inside it — so 'northwind sow' finds the SOW filed in the Northwind folder, and 'dispatch interview' finds 'Dispatcher interview 1.md'. Results are ranked best first. Each hit carries its id, kind, path (for a link), folderPath (where it's filed, top-down), tags, and a snippet when the words were found inside it rather than in its name — say where a thing lives using folderPath. A file's id feeds workspace_files_read; other ids feed the kind's *_get tool. Pass folderId to search only inside one folder and everything under it. If nothing comes back, try fewer or different words before telling the user it doesn't exist. Results only include what the user can see, and only kinds this token may read.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Words, any order, case-insensitive. Fewer words find more. | |
| kinds | No | Restrict to these kinds (file, folder, flow, page, doc, dataset, …). Omit to search everything. | |
| limit | No | ||
| folderId | No | Only search inside this folder and the folders under it (ids from workspace_folders_browse or a folder hit). | |
| workspace | No | Workspace slug. Personal tokens with no default workspace MUST pass this; tokens with a default can override per call. Ignored for workspace API keys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although annotations already declare readOnly/non-destructive/closed-world, the description adds substantial behavior the annotations cannot express: AND-of-words matching across name, tags, folder names and body text, best-first ranking, per-hit fields (id, kind, path, folderPath, tags, snippet), recursive folderId scoping, and permission-based result filtering ('only what the user can see, and only kinds this token may read').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the 'use it FIRST' rule are front-loaded, and every later sentence adds either query semantics, return shape, or id-chaining guidance. The long enumeration of object kinds is the one place it runs heavy, though it doubles as scope documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description supplies what an agent needs about results (fields, ranking, snippet meaning, using folderPath to say where a thing lives) and how to chain ids into workspace_files_read or the kind's *_get tool. Permissions, empty-result handling, and workspace/scope limits are all covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, but the description still adds real meaning: it explains what the q words are matched against (name, tags, parent folder names, inner text) and gives worked examples ('northwind sow' finds the SOW in the Northwind folder). It also clarifies folderId is recursive, matching the schema, and leaves well-documented kinds/limit/workspace to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and scope: 'Finds anything in the workspace in one call', then enumerates the object kinds covered (files, folders, flows, shims, knowledge bases, tasks, pages, datasets, evals, rubrics, reviews, specs, sources, Ledger entries, Napkin artifacts). This clearly separates it from focused siblings like compass_pages_search, search_docs, workbench_kb_search, and rooms_search, which each cover one kind.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit trigger condition: 'Use it FIRST whenever the user mentions something without saying where it lives', backed by three concrete user-phrase examples. It also gives a recovery procedure when results are empty ('try fewer or different words before telling the user it doesn't exist'), which is when-to-use guidance beyond the happy path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- Changed
compass_opportunities_mark_implemented1 field changed- added
Input schema / properties / applyToMapAdded value: +{ + "description": "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 user first; it can't be undone.", + "type": "boolean" +}
- Added
compass_role_story - Added
compass_roles_overview - Changed
search_workspace1 field changed- changed
Input schema / properties / kinds / items / enumPrevious value: -[ - "flow", - "page", - "dataset", - "eval", - "entry", - "board", - "file", - "shim", - "knowledge_base", - "task", - "rubric", - "review", - "spec", - "source", - "doc", - "sheet", - "diagram", - "interface", - "change", - "folder" -]New value: +[ + "flow", + "page", + "dataset", + "eval", + "entry", + "board", + "file", + "shim", + "knowledge_base", + "task", + "rubric", + "review", + "spec", + "source", + "doc", + "sheet", + "diagram", + "interface", + "change", + "field", + "study", + "metric", + "folder" +]
Related MCP Connectors
Read and manage the competitors, signals, and weekly briefs in your probr workspace.
Read and update your Howwe strategy: initiatives, MIGs, milestones, activities and teams.
Read, edit and improve shared documents and knowledge with people and agents.
- SotoGoalOAuthcom.sotogoal
Goal-centered work: read and write goals, tasks, notes and attachments, and decide what to do next.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables read-only exploration of curated foresight signals, semantic graph, themes, and horizons, allowing agents to query the map, track theme trends, and identify weak signals without modifying any data.MIT
- AlicenseNot gradedqualityAmaintenanceLets a coding agent read and update a local-first roadmap over MCP, proposing actions, plans and checkpoints, reporting progress or blockers, and marking work complete only with evidence. Everything the agent sends stays a proposal until the user reviews and applies it in the app's planning screen.3MIT
- AlicenseNot gradedqualityCmaintenanceLets Claude read, search, create, update, and connect notes kept as plain local Markdown files, turning ideas, plans, and projects into an organized personal knowledge network. It can list and search notes, add new ones to the right area, change their status, and link related entries, without ever deleting them.266 npmMIT
- AlicenseBqualityAmaintenanceRead, cite, compose and remember over a Markdown knowledge Bundle, as MCP tools over stdio.702Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.