Skip to main content
Glama
BrightbeamAI

@brightbeamai/chap-coordinator-mcp

Official

Collaborative Human-Agent Protocol (CHAP)



You have agents doing real work. Drafting code reviews, triaging tickets, suggesting settlements, reviewing contracts. A human approves, edits, or rejects each one. Right now, that decision lives in your application code, your chat threads, your ticket comments, and your head. When something goes wrong six weeks later, reconstructing what happened costs you forty-five minutes and is half guesswork.

CHAP gives you one place to put those decisions and one shape to put them in. The agent's draft is an artefact. The human's edit is a structured override with a diff, a rationale, and tags you control. The whole thing chains together by content hash. You query the chain instead of grepping logs across four UIs.

The chain survives key rotation, log expiry, and people leaving; one audit.read call returns the whole thing. The overrides your reviewers were already making accumulate into supervision data you'd otherwise have to commission. When approvals must be non-repudiable, security-signed/1.0 adds an Ed25519 signature to every envelope, bindable to a real identity with identity-oidc/1.0, and audit-scitt/1.0 anchors the chain in an external transparency log, verifiable without trusting your servers. And CHAP sits beside MCP and A2A rather than replacing them: MCP for tools, A2A for other agents, CHAP for the shared work with humans.

That's the whole pitch.

The 90-second tour

A solo developer using Cursor to review pull requests. The bot flags a "warning" the developer disagrees with. Here's the whole exchange, end to end. The clip below runs in about 23 seconds across six labelled steps; the matching code is right underneath.

And here's the code, every line of it. One continuous story in two languages; pick whichever stack you actually use.

1. Spin up a workspace. An embedded coordinator with SQLite persistence, two participants, a workspace:

import { Coordinator } from "@brightbeamai/chap-coordinator";
import { SqliteStore } from
  "@brightbeamai/chap-coordinator/storage/sqlite";

const coord = new Coordinator({
  store: new SqliteStore("./chap.db"),
});

coord.api.workspace.create({
  workspace: "wsp_pr_reviews",
  profiles:  ["core/1.0", "review/1.0"],
});

coord.api.participant.join({
  workspace: "wsp_pr_reviews",
  from:      "human:me@local",
  type:      "human",
});

coord.api.participant.join({
  workspace: "wsp_pr_reviews",
  from:      "agent:cursor#v1",
  type:      "agent",
});
from chap_coordinator import Coordinator
from chap_coordinator.storage.sqlite \
    import SqliteStore

coord = Coordinator(store=SqliteStore("./chap.db"))

def send(method, params):
    return coord.dispatch({
        "jsonrpc": "2.0", "id": method,
        "method": method, "params": params,
    })

send("workspace.create", {
    "workspace": "wsp_pr_reviews",
    "profiles":  ["core/1.0", "review/1.0"],
})

send("participant.join", {
    "workspace": "wsp_pr_reviews",
    "from":      "human:me@local",
    "type":      "human",
})

send("participant.join", {
    "workspace": "wsp_pr_reviews",
    "from":      "agent:cursor#v1",
    "type":      "agent",
})

2. The bot drafts, you override. Wire your existing Cursor integration to emit envelopes:

// The bot's review is the output of a task.
const { task_id } = coord.api.task.create({
  workspace: "wsp_pr_reviews",
  from:      "agent:cursor#v1",
  assignee:  "agent:cursor#v1",
  kind:      "code_review",
  input:     { pr_id: "PR-482" },
});

coord.api.task.complete({
  workspace: "wsp_pr_reviews",
  from:      "agent:cursor#v1",
  task_id,
  output:    cursorReview,
});

coord.api.review.request({
  workspace: "wsp_pr_reviews",
  from:      "agent:cursor#v1",
  task_id,
  artefact:  cursorReview,
  to:        "human:me@local",
});

// You disagree with one comment. Override it.
coord.api.decide.override({
  workspace:        "wsp_pr_reviews",
  from:             "human:me@local",
  task_id,
  intent_preserved: true,
  diff: [{ op: "replace",
           path: "/comments/0/severity",
           value: "info" }],
  rationale: "False positive. Framework " +
             "convention, not a bug.",
  tags: ["false-positive",
         "framework-pattern-misread"],
});
# The bot's review is the output of a task.
r = send("task.create", {
    "workspace": "wsp_pr_reviews",
    "from":      "agent:cursor#v1",
    "assignee":  "agent:cursor#v1",
    "kind":      "code_review",
    "input":     {"pr_id": "PR-482"},
})
task_id = r["result"]["task_id"]

send("task.complete", {
    "workspace": "wsp_pr_reviews",
    "from":      "agent:cursor#v1",
    "task_id":   task_id,
    "output":    cursor_review,
})

send("review.request", {
    "workspace": "wsp_pr_reviews",
    "from":      "agent:cursor#v1",
    "task_id":   task_id,
    "artefact":  cursor_review,
    "to":        "human:me@local",
})

# You disagree with one comment. Override it.
send("decide.override", {
    "workspace":        "wsp_pr_reviews",
    "from":             "human:me@local",
    "task_id":          task_id,
    "intent_preserved": True,
    "diff": [{"op":    "replace",
              "path":  "/comments/0/severity",
              "value": "info"}],
    "rationale": "False positive. Framework "
                 "convention, not a bug.",
    "tags": ["false-positive",
             "framework-pattern-misread"],
})

About the surfaces. TypeScript ships a typed facade (coord.api.*) so every method gets full autocomplete and compile-time checks. Python keeps the JSON-RPC envelope shape on the surface (coord.dispatch({...})) and consumers wrap it however suits the call site; a send() helper is the idiom the Python tests use. Both paths emit the same params and the same envelope shape, so the audit chain reads the same whichever client made the call.

3. Two months in, analyse what you've been doing. The reference repo ships an analytics script in both languages that reads the audit chain (over HTTP or straight from your SQLite file) and groups overrides:

# TypeScript reference, against the SqliteStore from step 1:
$ npm --prefix reference/core-plus-review run analyze -- --db ./chap.db wsp_pr_reviews

# Python reference, same idea:
$ python3 reference/python/analyze_overrides.py --db ./chap.db wsp_pr_reviews

Override Learning Report
========================
Total overrides: 47

By tag:
  false-positive             ████████████████  31  (66%)
  framework-pattern-misread  ███████████       22  (47%)
  cosmetic-pref              ████              8   (17%)

Top file paths:
  src/handlers/                                    18 overrides
  src/components/                                  9  overrides

Your next prompt revision for Cursor cites the pattern by name instead of guessing at it.


Related MCP server: Cordum_io

The override envelope, in detail

If you read one shape closely, make it the override envelope. Every field has a job:

The two fields most people miss on first read are intent_preserved and tags.

intent_preserved distinguishes a refining override (the human agreed with the agent's decision but rewrote how it was expressed) from a substituting override (the human reached a different decision). These are two different failure modes and they want different fixes. A high refining rate around one policy clause means the agent's retrieval is off; a high substituting rate on the same clause means the policy itself is ambiguous, or the agent's task context is wrong.

tags is the controlled vocabulary your team agrees on. Keep it small. Whatever you put there is the dimension you'll aggregate on three months from now, when you're answering questions like which prompts need work? or which paths is the bot getting consistently wrong?

Install

TypeScript / Node:

npm install @brightbeamai/chap-coordinator

Python:

pip install chap-coordinator

Either path gets you Core plus the review/1.0 profile and a runnable reference. The TypeScript reference is in reference/; the Python reference is in reference/python/. The TypeScript library lives at packages/coordinator/; the Python library at packages/coordinator-py/.

New here? START_HERE.md gets you to one real decision in about two minutes, with Python and nothing else:

git clone https://github.com/BrightbeamAI/chap.git && cd chap
python3 start-here/start.py

Five-minute hands-on walkthrough with the envelopes in view: examples/00-five-minute-start.md.

Status

CHAP 0.2 is a public draft. The specification is seven Core methods plus eleven optional profiles (SPECIFICATION.md), with two reference implementations, TypeScript and Python, that cover every profile and pass the conformance harness on the same JSON-RPC 2.0 wire. A coordinator can present itself as an MCP server or an A2A agent, and five framework bridges put LangGraph, Pydantic AI, AG2, LlamaIndex Workflows, and Google ADK human-in-the-loop decisions on the audit chain. The full inventory, the repository layout, and how CHAP relates to MCP and A2A are in ABOUT.md.

Breaking changes follow Semantic Versioning. Profile surfaces move faster than Core, so if you need strict stability, wait for 1.0.

Read this next

If you have not run anything yet, START_HERE.md takes about two minutes. After that, IN_PRACTICE.md, twelve scenarios from a solo developer with Cursor up to GMP-regulated manufacturing; it's the most useful next read. ABOUT.md covers what's in the repo, how CHAP relates to MCP and A2A, the standards it reuses, and how to contribute. core/SPEC.md fits the entire protocol surface on one screen. And the technical report on arXiv grounds the design choices: architecture, profile semantics, threat model, and the twelve scenarios as JSON traces in a worked appendix.

Cite

If you reference CHAP in academic or technical work, please cite the technical report:

@techreport{chap2026,
  author      = {Shahid, Arsalan and Suttie, Gordon and Black, Philip},
  title       = {Collaborative Human-Agent Protocol (CHAP): An open protocol for auditable, structured multi-human and multi-agent collaboration},
  institution = {Brightbeam AI},
  year        = {2026},
  type        = {Technical Report},
  number      = {arXiv:2606.09751},
  url         = {https://arxiv.org/abs/2606.09751}
}

CC-BY 4.0 (specification) · Apache 2.0 (code) · Royalty-free, any language, any deployment.

Available Tools

39 tools
chap.abstain.declarechap.abstain.declareB

Stand aside from a review, giving a reason and a category. The task moves to abstained.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
reasonYesWhy this reviewer is standing aside. Recorded in the audit entry.
task_idYesTask identifier returned by chap.task.create.
categoryNoThe kind of abstention. Recorded in the audit entry.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It does disclose one concrete behavioral consequence: the task moves to abstained. However, it does not mention whether the action is reversible, what permissions are needed, whether the reason/category are persisted in an audit trail, or what happens if the abstaining reviewer was the sole reviewer.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, no filler, with the action and its outcome placed directly and efficiently. Every phrase earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is minimally workable: it names the action and the immediate state change. But for a mutation tool with no annotations and no output schema, it lacks enough surrounding context about the review lifecycle, reversibility, and alternative behaviors to be fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description does not need to repeat parameter details. It adds little beyond the schema, and its phrase 'giving a reason and a category' slightly overstates category as required when the schema marks it optional.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('stand aside from a review'), what is supplied (reason and category), and the resulting state ('the task moves to abstained'). It does not name or contrast with siblings such as chap.decide.reject or chap.escalate.raise, so it stops short of explicit sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when abstention is appropriate versus rejecting, escalating, or handing off a review, and no prerequisites or exclusions are stated. The use case is only implied by the action itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.audit.readchap.audit.readA

Read entries from a workspace's audit log, optionally within a sequence range and filtered by method, sender or task.

ParametersJSON Schema
NameRequiredDescriptionDefault
rangeNoSequence window to return. Omit for the whole log.
filterNoNarrows the entries returned. Conditions combine with AND, and are applied within the sequence window rather than before it.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full responsibility for behavioral disclosure. 'Read' clearly indicates a read-only operation, and the optional range/filter scope is useful. However, it does not disclose ordering, return shape, pagination, permission requirements, or failure conditions, so the disclosure is only partial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. The core verb and object come first, and the optional modifiers are compressed into one clear clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a basic call, the description plus rich schema is sufficient: workspace is required, range and filter are optional, and their semantics are documented. But because there is no output schema and no annotations, the description does not cover return ordering, pagination, or error conditions, leaving some uncertainty for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3 even without extra description. The description adds convenient labels like 'sender' for filter.from and 'task' for task_id, but it mostly restates what the schema already documents without adding new semantic depth.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Read') and a specific resource ('entries from a workspace's audit log'), and it names the optional range and filter dimensions. This makes it clearly distinguishable from audit siblings like submit_to_scitt, verify_receipt, and verify_chain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage is implied: this is the tool for reading an audit log. However, it does not explicitly say when to prefer this over related audit tools, nor does it mention any exclusions such as 'use verify_chain for chain verification.' The sibling list provides context, but the description itself gives no routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.audit.submit_to_scittchap.audit.submit_to_scittA

Build COSE_Sign1-shaped statements for a range of audit entries and submit them to the configured SCITT transparency service. Where none is configured the statements are returned for submission out of band.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
rangeNoSequence window to anchor. Omit to submit the whole chain.
issuerNoIssuer identifier placed on each SCITT signed statement, naming who vouches for the chain. Defaults to 'service:coordinator'. Where no submitter is configured the statements are returned unsigned for the deployment to submit out of band.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the transparency burden. It clearly discloses the two-mode behavior: submit when a SCITT service is configured and return statements for out-of-band submission when it is not. It does not, however, describe side effects like receipts, idempotency, or errors, so it is 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One efficient sentence carries the main path and the important fallback behavior without redundancy. It is easy to scan and front-loads the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, so the description should clarify expected return values; it only specifies the out-of-band return path. For the configured-submission path, it leaves the outcome and response shape unstated, so an agent cannot fully predict the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline applies. The description adds only a general framing of the range-of-audit-entries concept and does not need to compensate for missing parameter docs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a concrete action (build and submit) on a specific resource (audit entries / SCITT transparency service), distinguishing it from sibling audit tools like read or verify. The fallback phrase also clarifies the tool's exact role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended context is implied: use when you need to anchor or submit audit entries to SCITT. However, there is no explicit when-not-to-use guidance nor any mention of alternatives such as chap.audit.read or verify tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.audit.verify_chainchap.audit.verify_chainA

Replay a workspace's prev-hash chain. Only status verified with ok true means the log was checked and is intact. Status not_evaluated with ok false means part of the log was never checked, so its integrity is unknown and must not be reported as verified; entries_unchecked says how much. An error means the chain is broken or absent.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full responsibility, and it delivers strong transparency: it explains what verified/ok true means, warns that not_evaluated/ok false must not be reported as verified, references entries_unchecked, and defines error as a broken or absent chain. This goes well beyond a simple 'verifies the chain' statement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no filler. The action is front-loaded, and the following sentences earn their place by explaining output semantics and edge cases. It is compact without losing essential meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a verification tool with no output schema and no annotations, the description explains the relevant result states, their integrity implications, the meaning of entries_unchecked, and error semantics. An agent has enough information to invoke it and interpret the outcome correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters workspace and from are already documented. The description adds no new parameter-level meaning, which matches the baseline of 3 for fully covered schema parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Replay a workspace's prev-hash chain.' It clearly conveys that this tool verifies chain integrity, and the focus on prev-hash chain distinguishes it from sibling tools like chap.audit.read, chap.audit.verify_receipt, and chap.audit.submit_to_scitt.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies its use through the action 'Replay a workspace's prev-hash chain' and gives interpretive guidance about statuses, but it does not explicitly state when to prefer this tool over alternatives or when not to use it. The guidance is contextual rather than decisional.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.audit.verify_receiptchap.audit.verify_receiptB

Verify a SCITT receipt through the configured verifier. Verification fails closed where no verifier is configured.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
receiptYesThe SCITT receipt to check, as returned by the transparency service. Verification is delegated to a hook supplied by the deployment, and fails closed with -32082 where no hook is configured.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It usefully discloses fail-closed behavior when no verifier is configured, which is a meaningful operational trait. However, it does not clarify side effects, return/error behavior for invalid receipts, or any permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, both meaningful and front-loaded. The primary action is stated first, and the fail-closed caveat is added efficiently without redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a verification tool with no output schema and no annotations, the description is minimally viable but incomplete. It covers the core purpose and one edge case, yet lacks an explanation of success/failure outputs, how errors surface beyond the missing-verifier case, and how it relates to the sibling 'chap.audit.verify_chain'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline of 3 applies. The description adds little about parameters themselves; its mention of 'configured verifier' is related to environment behavior rather than to the 'receipt' or 'workspace' parameters. The schema already documents the parameters sufficiently.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Verify') and the resource ('a SCITT receipt') via 'the configured verifier', which is specific enough to convey the core purpose. It does not explicitly distinguish itself from the sibling tool 'chap.audit.verify_chain', but the 'receipt' wording partially differentiates it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not state when to use this tool versus the related sibling 'chap.audit.verify_chain', nor does it mention any alternatives or exclusions. The only contextual hint is fail-closed behavior, which is about failure handling, not usage selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.control.cancelchap.control.cancelA

Cancel a task. Cancelled is terminal, and a task that has already settled cannot be cancelled.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
reasonNoWhy the task was cancelled. Recorded in the audit entry.
task_idYesThe task to cancel. A task that is completed, declined, cancelled or superseded is refused with -32061.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden. It clearly discloses that cancellation is terminal and irreversible, and that settled tasks are rejected. It does not mention audit recording, permission requirements, or side effects, but the core state-transition behavior is transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two crisp sentences with no filler. The action is front-loaded, and the terminality constraint follows immediately. Every word contributes meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a control action with fully described parameters, the description provides the key domain constraint (terminality and settled-task refusal). There is no output schema, but the absence of return-value detail is a minor gap for an action like cancel. The description is sufficiently complete for selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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. The description adds no parameter-level detail beyond the 'settled' constraint, which is also reflected in the task_id schema description. Baseline 3 is appropriate for full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the specific action ('Cancel a task') and the resource it acts on, and immediately distinguishes cancellation from non-terminal states by noting 'Cancelled is terminal.' This differentiates it from siblings like pause, resume, and supersede.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear exclusion signal: a task that has already settled cannot be cancelled. However, it does not explicitly say when to prefer cancellation over related alternatives such as supersede or rollback, so usage guidance is mostly implied rather than fully stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.control.pausechap.control.pauseA

Pause work. Scoped to a task it moves that task to paused; to a participant it stops new tasks being assigned to them; to the workspace it refuses every method except describing, reading the audit log, joining, leaving and resuming.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
scopeNoWhat the pause applies to. 'task' moves one task to 'paused'; a task that is completed, declined, cancelled or superseded is refused with -32061. 'participant' stops new tasks being assigned to that member and leaves their existing work running. 'workspace' refuses every method except workspace.create, workspace.describe, control.resume, audit.read, participant.join and participant.leave.task
reasonNoWhy the pause was applied. Recorded in the audit entry.
task_idNoTask identifier returned by chap.task.create.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.
participant_uriNoWhose work to pause, when scope is 'participant'. Must be a workspace member.
in_flight_policyNoRecorded with the request, and echoed back when scope is 'participant'. The coordinator does not act on it: under either value, work already under way is left alone.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the full burden is on the description. It transparently discloses side effects: moving tasks to paused, stopping new assignments for participants, and restricting workspace methods. It also honestly states in_flight_policy is recorded but ignored, which is important behavioral information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with 'Pause work.' followed by a clear breakdown of the three scopes. It avoids unnecessary detail and is easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers all scopes, explains the in_flight_policy behavior, and mentions the workspace method restrictions. Given the tool's complexity and the detailed parameter schema, this is complete enough for an agent to understand when and how to use it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each parameter already has a detailed description. The tool description summarizes the scope parameter but does not add substantive new information beyond what is already in the schema, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool pauses work and explains the three scoped behaviors (task, participant, workspace). It distinguishes from sibling control tools like resume and cancel by specifying exactly what pause does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly defines when to use pause based on scope, and even notes the in_flight_policy is not acted upon, preventing misuse. It implicitly contrasts with resume/cancel by clarifying pause's effects.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.control.resumechap.control.resumeA

Resume work paused at the same scope: a task returns to in_progress, a participant can be assigned tasks again, a workspace returns to active.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
scopeNoWhat the resume applies to. 'task' returns a paused task to 'in_progress'; a task that is not paused is refused with -32061. 'participant' allows that member to be assigned tasks again. 'workspace' returns the workspace to active.task
task_idNoTask identifier returned by chap.task.create.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.
participant_uriNoWhose work to resume, when scope is 'participant'. Must be a workspace member.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of explaining side effects. It does this well by enumerating the exact state transitions: task to in_progress, participant assignable again, workspace active. It omits details like authorization requirements and return shape, but the core mutation behavior is clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, well-structured sentence front-loads the verb and scope, then uses a colon to enumerate the three concrete outcomes. There is no filler or redundant restatement of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With five parameters but full schema coverage, the combination of description and schema gives an agent enough to call the tool correctly and understand the three scope behaviors. The lack of an output schema means return behavior is not described, but this is not essential for selection or invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents every parameter including examples, defaults, and the -32061 refusal case. The tool description adds no parameter-level information beyond restating the scope outcomes, so it meets the baseline but does not go further.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action ('resume') and a resource ('work paused at the same scope'), then precisely defines the outcome for each of the three scopes: task, participant, and workspace. It is not a tautology and is clearly differentiated from sibling control tools like pause, cancel, and supersede.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Resume work paused at the same scope' clearly limits the tool to previously paused entities, which helps an agent avoid using it on active or canceled work. It does not explicitly name alternatives or say 'do not use when X', but the intended condition is strongly implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.control.rollbackchap.control.rollbackA

Restore workspace state from a snapshot. The mode ceiling and member roles are restored; the rollback is appended to the audit log rather than rewriting it.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
reasonNoWhy the rollback was performed. The rollback is itself an audit entry; earlier entries are not rewritten.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.
what_to_restoreNoWhich captured aspects to apply. Only 'mode_ceiling' and 'members' are restored; the others are held in the snapshot and not reapplied. Restoring members resets role and scopes on members still present, and does not re-add members who have left. Defaults to the snapshot's include list.
to_snapshot_artefact_idYesArtefact id returned by chap.control.snapshot. An id with no matching snapshot is refused with -32062.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral disclosure burden. It discloses a key side effect—'the rollback is appended to the audit log rather than rewriting it'—and states which snapshot aspects are reapplied. It does not mention authorization requirements or explicitly warn that current state is overwritten, but the core behavioral traits are disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The primary action is front-loaded, followed by the most important behavioral caveats. Every clause adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the full schema coverage and the description's clear high-level behavior, this is largely complete for correct invocation. It would benefit from stating what the rollback returns or what happens on failure beyond the schema's -32062 note, but the essential behavioral context is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter already has a meaningful description. The tool description adds no parameter-level detail, but the baseline of 3 is appropriate because the schema fully carries that responsibility.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Restore workspace state from a snapshot.' It also names the precise aspects that are restored (mode ceiling and member roles), which differentiates it from snapshot creation and other control operations. The purpose is immediately clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied: use this when you need to restore a workspace from a previously captured snapshot. However, it does not explicitly state when to choose this over alternatives such as chap.control.supersede or chap.control.cancel, nor does it mention when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.control.set_mode_ceilingchap.control.set_mode_ceilingA

Set the highest operating mode tasks in this workspace may request. A task above the ceiling is refused.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
reasonNoWhy the ceiling is being changed. Recorded in the audit entry.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.
new_ceilingYesThe highest mode tasks in this workspace may request from now on. Existing tasks keep the mode they were created with. Where the coordinator is configured to enforce step-up authentication this method is one of the privileged ones and a call without step-up is refused with -32402.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses one meaningful behavior: tasks above the ceiling are refused. However, with no annotations provided, it does not surface other important behavioral traits such as whether existing tasks are affected, whether step-up authentication may be required, or whether the change is audited/reversible.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler. The core action is front-loaded, and the behavioral consequence is stated immediately after in a compact way.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich parameter schema that already documents existing-task behavior and step-up authentication, the description plus schema is largely adequate for invoking the tool correctly. It is slightly incomplete at tool level because it does not mention the privileged/authentication caveat or explicitly define the mode hierarchy, but those gaps are partially covered by the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter already has a meaningful description. The tool description adds no parameter-level detail beyond what the schema provides, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Set'), a specific resource ('the highest operating mode tasks in this workspace may request'), and a concrete consequence ('A task above the ceiling is refused'). This clearly differentiates it from sibling control and workspace tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this tool is used to raise or lower the allowed operating-mode ceiling for a workspace. However, the description does not mention when to prefer this over alternatives such as workspace.set_profiles or control.cancel/supersede, nor does it state any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.control.snapshotchap.control.snapshotA

Capture the workspace state as an artefact and return its id, which chap.control.rollback takes as its target.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
labelNoName for this snapshot, recorded on the artefact. chap.control.rollback identifies a snapshot by its artefact id, not by label.
includeNoWhich aspects of the workspace to capture. Recognised values are 'members', 'open_tasks', 'mode_ceiling', 'policy' and 'audit'. Defaults to members, open_tasks and mode_ceiling.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral disclosure. It states that a snapshot artefact is created and an id is returned, which covers the primary side effect, but it does not mention permissions, storage implications, or whether the workspace is modified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, concise sentence that conveys the essential purpose and output without redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description mentions the return value and its use in rollback, which is important, but it omits broader context such as when to snapshot, output format details (beyond 'id'), and any related caveats. Given the simple nature of the tool, this is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides full field descriptions, including the recognized values for 'include'. The tool description adds no extra parameter meaning, so the baseline score of 3 is appropriate given the high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it captures the workspace state as an artefact and returns an id, with the explicit link to chap.control.rollback as the target. This distinguishes it from related control tools and makes its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. It only implies a relationship to rollback by noting the returned id is used as a rollback target, but does not state prerequisites or situations where a snapshot is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.control.supersedechap.control.supersedeA

Replace a task with a successor in one call. The original moves to superseded and stays linked to its replacement.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
reasonNoWhy the original is being replaced. Recorded in the audit entry.
task_idYesThe task being replaced. It moves to 'superseded' and is linked to the successor rather than deleted.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.
successor_taskYesThe replacement task.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden. It explicitly discloses a non-obvious side effect: the original task is not deleted; it moves to 'superseded' and remains linked to its replacement. This is valuable, though it does not mention permissions, reversibility, or audit-related side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one sentence with no filler. It front-loads the action and then gives the key postcondition, making it easy to scan and understand.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich schema, the description covers the core semantics of the operation and the most important postcondition. It does not explain return values or failure behavior, but there is no output schema, and the schema already covers the payload. Additional guidance on when not to supersede would make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents all five parameters with detailed descriptions, including the nested successor_task object and the audit behavior of reason. Since schema description coverage is 100%, the description adds no additional parameter-level meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a concrete verb phrase, 'Replace a task with a successor in one call,' and clearly states the resulting state: the original moves to 'superseded' and stays linked to the replacement. This distinguishes it from related tools like task.update, task.complete, or control.cancel.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The purpose strongly implies when to use this tool: when a task should be replaced by a successor rather than completed or cancelled. However, the description does not explicitly state when not to use it or name the alternatives, leaving some selection reasoning to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.decide.approvechap.decide.approveA

Approve the artefact under review. The task completes once the review's rule is satisfied.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
tagsNoWorkspace-defined labels for this decision, e.g. ['tone', 'unsupported-claim']. Recorded in the audit entry. chap.audit.read does not filter on tags, so grouping by tag is done by the reader.
commentNoThe reviewer's note on this decision. Recorded in the audit entry for the decision.
task_idYesTask identifier returned by chap.task.create.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.
approved_artefact_digestNoOptional. SHA-256 over the JCS canonicalisation of the artefact under review, in the form `sha256:<hex>`. When present it binds the decision to the exact content reviewed, and a mismatch is refused with -32074.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description must carry behavioral disclosure. It reveals a key side effect – the task completes on approval – but does not disclose audit recording, irreversibility, state prerequisites, or failure behavior beyond what parameter descriptions already state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the verb and object, with 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.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is serviceable for a straightforward decision action but leaves gaps: no output schema, no mention of required prior state (e.g., an active review request or task), and no return or error behavior beyond the digest mismatch note in the schema. Enough for simple invocation, not for nuanced use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 with types and guidance. The description adds no parameter-level meaning beyond what the schema provides, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action (approve) and resource (the artefact under review), and clarifies a distinguishing consequence (task completes when rule satisfied). This differentiates it from siblings like chap.decide.reject or chap.decide.override by the action verb itself, even though those siblings are not named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence implies the primary use case: call this when the review's rule has been satisfied. It gives no explicit guidance on when not to use it or which sibling tool (e.g., chap.decide.reject) is appropriate when the rule is not satisfied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.decide.overridechap.decide.overrideA

Correct the artefact under review with an RFC 6902 JSON Patch and accept the result. The patch, the rationale and any tags are recorded together, so the audit log holds what was changed and why, rather than only that the work was not accepted as written.

ParametersJSON Schema
NameRequiredDescriptionDefault
diffYesRFC 6902 JSON Patch operations applied to the artefact under review. The patched artefact becomes the task output; a patch that does not apply is refused with -32012.
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
tagsNoWorkspace-defined labels for this decision, e.g. ['tone', 'unsupported-claim']. Recorded in the audit entry. chap.audit.read does not filter on tags, so grouping by tag is done by the reader.
task_idYesTask identifier returned by chap.task.create.
rationaleYesWhy the correction was made. Required on every override and recorded in the audit entry, since the diff shows what changed but not why.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.
logical_idNoCaller-chosen identifier for the item being decided, stable across revisions and overrides of the same underlying content. Recorded in the audit entry.
policy_refsNoIdentifiers of the policies or guidelines this correction applies, e.g. ['policy:no-delivery-promises']. Recorded in the audit entry.
intent_preservedNoTrue when the edit refines the decision the draft was making, false when it substitutes a different one. Recorded in the audit entry.
approved_artefact_digestNoOptional. SHA-256 over the JCS canonicalisation of the artefact under review, in the form `sha256:<hex>`. When present it binds the decision to the exact content reviewed, and a mismatch is refused with -32074.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that the patch, rationale, and tags are recorded together in the audit log, and that the action accepts the result. However, it does not mention permission requirements, reversibility, or other side effects beyond audit logging.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two focused sentences with no filler. The core action is front-loaded, and the audit rationale is explained efficiently in the second sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The rich parameter schema covers operation semantics, error behavior, and audit recording, while the description adds the cross-cutting audit rationale. The lack of an output schema is not a major gap because success semantics are largely inferable from the schema and description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 10 parameters already have descriptive meaning. The description adds little beyond the schema; it reinforces that rationale and tags are auditable but does not provide new parameter-level information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Correct'), a resource ('the artefact under review'), and the mechanism ('RFC 6902 JSON Patch'), and clarifies that the result is accepted. This clearly distinguishes the tool from sibling decision tools like chap.decide.approve and chap.decide.reject.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description conveys when to use the tool: when the artefact needs correction rather than outright rejection. The phrase 'rather than only that the work was not accepted as written' contrasts with reject-style decisions, giving useful context even though it does not name sibling tools explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.decide.rejectchap.decide.rejectA

Reject the artefact under review. The task is declined, or returns to in_progress if request_revision is set.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
tagsNoWorkspace-defined labels for this decision, e.g. ['tone', 'unsupported-claim']. Recorded in the audit entry. chap.audit.read does not filter on tags, so grouping by tag is done by the reader.
commentNoThe reviewer's note on this decision. Recorded in the audit entry for the decision.
task_idYesTask identifier returned by chap.task.create.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.
request_revisionNoWhen true the task returns to 'in_progress' rather than 'declined', so the assignee can revise and resubmit.
approved_artefact_digestNoOptional. SHA-256 over the JCS canonicalisation of the artefact under review, in the form `sha256:<hex>`. When present it binds the decision to the exact content reviewed, and a mismatch is refused with -32074.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral transparency burden and does disclose a key state transition: the task is either declined or returns to in_progress if request_revision is set. It does not mention audit logging, irreversibility, or permission requirements, but the core effect on the task lifecycle is clearly stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, with the primary action front-loaded and the conditional nuance following immediately. Every word earns its place, and the structure is easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 7 parameters and no output schema, the description is minimal. It covers the core state change but does not mention the audit entry, the approved_artefact_digest binding, or what the caller should expect as a response. The schema fills many gaps, but the description alone would leave a user uncertain about side effects and return behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 no new parameter-level meaning beyond what the schema already provides; the request_revision explanation essentially mirrors the schema's description. No points lost, but no extra value gained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource, 'Reject the artefact under review', making the tool's purpose immediately clear. It also distinguishes the two possible outcomes (declined vs. returns to in_progress), which separates it from siblings like chap.decide.approve or chap.decide.override.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than explicit: the phrase 'Reject the artefact under review' suggests when it should be used, but there is no explicit guidance on when to choose this over approve/override/abstain, nor any when-not-to-use caveat. The conditional behavior of request_revision is explained, but no alternative tools are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.deliberate.closechap.deliberate.closeB

Close a deliberation and compute its outcome from the votes cast under its rule.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.
deliberation_idYesIdentifier returned by chap.deliberate.open. Closing computes the outcome from the votes cast; closing an already closed deliberation returns the outcome unchanged.

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of disclosing side effects, but it only states that closing computes an outcome from votes. It does not mention whether the deliberation becomes locked, whether the action is reversible, what permissions are required, or what the return value is. The idempotency behavior for already-closed deliberations exists only in the parameter schema, not in the tool description, leaving a critical behavioral trait undocumented in the description itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that leads with the action verb and includes the key result of the operation. There is no filler, redundant restatement of the tool name, or unnecessary detail. It is optimally concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, so the description should explain what the caller receives or how the outcome is presented, but it never specifies the return value or format. It also omits the idempotency behavior for already-closed deliberations, which appears only in the parameter schema. While input parameter coverage is strong, the absence of output and post-condition context leaves the definition incomplete for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with descriptions for all three parameters (workspace, from, deliberation_id), including the important note that an already-closed deliberation id will return the outcome unchanged. The tool description adds no new parameter-level meaning beyond restating the voting basis. This matches the baseline of 3 for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Close' and resource 'deliberation', and adds the distinct outcome-computation behavior. It clearly differentiates from sibling tools like chap.deliberate.open, chap.deliberate.comment, and chap.deliberate.vote, which represent different lifecycle actions. The phrase 'under its rule' further clarifies that vote tallying follows a specific rule.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly name alternative tools or state when not to use this one. However, the schema description for deliberation_id implies pairing with chap.deliberate.open and notes idempotency for already-closed deliberations, giving some contextual guidance. The primary description only implies usage around the voting lifecycle without explicit exclusions or alternatives such as chap.control.cancel or chap.decide.approve.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.deliberate.commentchap.deliberate.commentA

Record a comment on an open deliberation, so the reasoning is on the audit log alongside the votes.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
commentYesThe contribution to record. Comments are kept with the deliberation and in the audit log, so the reasoning survives the vote.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.
deliberation_idYesIdentifier returned by chap.deliberate.open. A closed deliberation is refused with -32032.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does add useful context: comments are retained with the deliberation and in the audit log, so reasoning survives the vote. However, it does not disclose permissions, mutability, response behavior, or the closed-deliberation error beyond what the schema already states.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the action and resource while immediately explaining why the tool exists. There is no wasted wording or redundant repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the operation and the rich 100%-coverage schema, the description plus schema provide enough context for correct invocation. The only notable omission is any statement about the return value, but for a record-comment operation, that is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the param descriptions are already detailed, including the source of deliberation_id and the -32032 refusal for closed deliberations. The main description adds no new parameter-level meaning, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Record') and a specific resource ('comment on an open deliberation'), then clarifies the purpose: putting reasoning on the audit log alongside votes. This clearly distinguishes it from siblings like chap.deliberate.vote, chap.deliberate.open, and chap.deliberate.close.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied: use it when a participant wants to attach reasoning to an open deliberation that should be preserved in the audit log. The restriction to open deliberations is present, but the description does not explicitly contrast this with alternatives such as whisper.ask/answer or explain when comment is the right tool versus vote.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.deliberate.openchap.deliberate.openB

Open a deliberation among several participants under a stated voting rule: any_one_approves, all_approve, quorum:N, weighted_vote:T or weighted_vote_with_veto:T.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesThe participants entitled to vote. A vote from anyone else is refused with -32030.
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
ruleYesHow the outcome is decided when the deliberation closes: any_one_approves, all_approve, quorum:N, weighted_vote:T or weighted_vote_with_veto:T. An unrecognised rule is refused at open with -32033.
vetoNoVoter to can-veto map. A veto is honoured only under weighted_vote_with_veto, and only from a voter listed true here.
task_idNoTask identifier returned by chap.task.create.
weightsNoVoter to weight map, read by the weighted rules. A voter with no entry counts as 1. Weights must be integers: a JSON number with a fractional part is refused with -32602.
deadlineNoWhen voting is intended to close, as an ISO 8601 timestamp. Recorded on the deliberation; closing is done by chap.deliberate.close and the coordinator does not close on the deadline.
questionNoWhat the group is deciding. State it so that a yea or a nay is unambiguous.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of disclosing behavioral traits. It states that a deliberation is opened and enumerates rule values, but it does not mention side effects, return values, permissions, or what happens after opening. The schema descriptions add error and deadline details, but the description field itself does not provide this context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler. It immediately names the action and compacts the accepted voting rules into a short, useful list, making it easy to scan and parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter tool, the schema descriptions are rich and cover all parameters, including error codes and deadline behavior. However, the definition lacks an output schema or any description of the return value, and it does not explain how this tool connects to later steps like chap.deliberate.vote or chap.deliberate.close. These are meaningful gaps for an action that initiates a workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 even without parameter information in the description. The description itself does not add meaning beyond the schema; the schema already documents each parameter with examples, error codes, and special semantics. No additional parameter insight is provided by the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action, 'Open a deliberation among several participants', and lists the accepted voting rules, making the tool's purpose immediately clear. It is distinct from sibling continuation tools like chap.deliberate.vote, chap.deliberate.close, and chap.deliberate.comment because it names the initiation step rather than a later action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool versus alternatives such as chap.deliberate.vote or chap.deliberate.close. No prerequisites, exclusions, or decision criteria are given, so an agent must infer usage solely from the tool name and parameter schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.deliberate.votechap.deliberate.voteA

Cast a yea, nay or abstain in an open deliberation. Each participant votes once.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
voteYesThis voter's position. An abstention is recorded but counts as neither a yea nor a nay, so under all_approve or quorum:N it withholds the approval those rules need.
weightNoRecorded with the vote. The tally uses the weights map given at chap.deliberate.open, not this value.
commentNoWhy the vote went this way. Recorded with it.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.
veto_invokedNoBlocks the outcome regardless of the tally. Honoured only under weighted_vote_with_veto, and only when the voter is listed true in the veto map given at open.
deliberation_idYesIdentifier returned by chap.deliberate.open. A closed deliberation is refused with -32032, and a second vote from the same voter with -32031.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral disclosure. It states the basic action and hints at single-vote semantics, but it does not explicitly describe side effects such as veto behavior, vote tallying, or failure modes beyond what appears in the parameter descriptions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short, purposeful sentences with no redundant wording or filler. It delivers the core purpose and a key constraint directly and efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema descriptions cover all parameters, including important edge-case behavior such as closed-deliberation refusal and duplicate-vote refusal. The description is concise but, together with the rich schema, provides enough context for this simple voting action.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and every parameter has a meaningful description, so the baseline for this dimension is 3. The tool description itself does not add additional parameter-level meaning beyond the schema, but it does not need to because the schema is already detailed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Cast a yea, nay or abstain') and the target resource ('an open deliberation'), and it adds the distinguishing rule that each participant votes once. This is sufficient to separate it from sibling tools like chap.deliberate.comment or chap.abstain.declare.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'in an open deliberation' and 'Each participant votes once' imply usage constraints: the deliberation must be open and the voter must not have voted before. However, it does not explicitly mention when to prefer this tool over alternatives or describe conditions like closed deliberations or duplicate-vote errors.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.escalate.autochap.escalate.autoA

Evaluate a task's routing hints against the escalation policy and report whether it should be escalated, and to whom. Records a route_decision artefact.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
task_idYesTask identifier returned by chap.task.create.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.
default_escalation_targetNoWho to escalate to when the policy decides to escalate and names no target of its own. It must be a workspace member or a group URI; if the policy escalates with no usable target the call is refused with -32516.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the disclosure burden. It usefully reveals a non-obvious side effect ('Records a route_decision artefact') and clarifies that the tool does not actually escalate, only reports. However, it does not disclose permissions required, reversibility, or other potential side effects, and no annotation context is available to fill these gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, primary action and outcome front-loaded. The second sentence about the route_decision artefact earns its place because it discloses an important side effect.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no annotations and no output schema, so the description must carry more contextual weight. It explains the purpose and the recorded artefact, but it does not describe the return shape, broader failure cases, or how this tool relates to escalation-action siblings. The detailed parameter schema partially compensates, but the absence of output schema and annotations leaves some gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 little parameter-level meaning beyond what the schema already provides; the schema itself is detailed, including examples and a specific refusal code (-32516), so the description does not need to compensate much.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (Evaluate), a specific resource (a task's routing hints against the escalation policy), and a concrete outcome (report whether it should be escalated and to whom). It also distinguishes this from actual escalation actions like chap.escalate.raise by framing it as an evaluation/report rather than an escalation itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is the assessment/reporting tool for escalation decisions, but it does not explicitly state when to prefer it over sibling tools such as chap.escalate.raise or chap.task.route. There are no when-not-to-use conditions or alternative routing hints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.escalate.raisechap.escalate.raiseA

Hand a task upwards. The original moves to escalated and is linked to a new task opened for whoever takes it on. The successor starts with an empty input unless one is supplied.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
new_taskYesThe successor task to open for the escalation target.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.
original_task_idYesThe task being escalated. It moves to 'escalated' and is linked to the successor. A completed, cancelled or superseded task cannot be escalated.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It discloses the key state change (original moves to 'escalated'), the creation and linking of a successor task, and the non-obvious empty-input default. Permission requirements or reversibility are not mentioned, but the core behavioral traits are transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler: the first introduces the concept, the second specifies the important behavioral twist about empty input. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter nested mutation tool with 100% schema coverage and no output schema, the description plus schema gives sufficient context to invoke the tool correctly. It lacks explicit alternatives or side-effect details like linking semantics, but nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 reinforces the empty-input default already documented in new_task.input but does not add meaning beyond what the schema provides for any parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Hand a task upwards') and concrete effects: the original task moves to 'escalated' and a new linked successor task is opened. This clearly distinguishes it from generic update or route tools, though it does not explicitly name or contrast sibling tools like chap.handoff.propose or chap.task.route.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of alternatives, and no exclusions. The description implies use for manual escalation, but with many overlapping siblings (handoff, route, escalate.auto) it fails to help an agent choose correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.handoff.acceptchap.handoff.acceptA

Accept a proposed handoff. The accepted tasks are reassigned to the accepting participant.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
commentNoAnything the recipient wants recorded when taking the work on.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.
handoff_idYesIdentifier returned by chap.handoff.propose. A handoff already accepted or declined is refused with -32051.
accepted_task_idsNoWhich of the proposed tasks are being accepted. If omitted, all of them are.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral disclosure. It reveals the core mutation—tasks are reassigned—but does not mention outcome reporting, error cases, or permissions. The handoff_id parameter description adds some error context, but the main description is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, direct sentences with no filler. The action and consequence are front-loaded, making the description immediately scannable for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward handoff-acceptance action, the description plus the fully covered parameter schema is largely sufficient. It lacks explicit usage alternatives and output details, but the core semantics are clear and no critical missing piece prevents correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 parameters in detail, including defaults for accepted_task_ids and the -32051 error for already-accepted handoffs. The description contributes only the general notion of accepting tasks, adding little beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Accept') and resource ('a proposed handoff'), and clarifies the effect: accepted tasks are reassigned to the accepting participant. This clearly distinguishes the tool from its siblings chap.handoff.propose and chap.handoff.decline.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: use this when a handoff has been proposed and the participant is accepting it. It does not explicitly name alternatives or state when not to use it, but the acceptance wording makes the intended condition obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.handoff.declinechap.handoff.declineB

Decline a proposed handoff, with a reason and optionally a suggestion of who should take it instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
reasonNoWhy the handover is refused. Recorded so the proposer can route it elsewhere.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.
handoff_idYesIdentifier returned by chap.handoff.propose. A handoff already accepted or declined is refused with -32051.
suggested_targetNoWho should take it instead, if the decliner knows.

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Decline a proposed handoff' and mentions the reason/suggestion fields, but does not disclose side effects, that the reason is recorded for the proposer, whether the action is reversible, or that already-finalized handoffs produce error -32051. This is a meaningful gap for a state-changing tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the core action and covers the two key semantic points: a reason is expected and a suggestion is optional. There is no wasted wording or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a handoff-decline mutation with no annotations and no output schema, the description is too sparse. It omits behavioral context, error states, and what happens after declining. An agent is left without enough information to predict side effects or handle edge cases like already-accepted handoffs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already well documented. The description adds mild value by emphasizing that the reason is central and the suggested_target is optional, but it does not add meaning beyond what the schema already provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Decline') and resource ('a proposed handoff'), with clear modifiers explaining that a reason is required and a suggestion is optional. This unambiguously differentiates it from sibling tools like chap.handoff.propose and chap.handoff.accept.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage context is implied: use this when declining a proposed handoff. However, the description does not explicitly state when not to use it, nor does it mention alternatives such as chap.handoff.accept or chap.decide.reject. The guidance is adequate but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.handoff.proposechap.handoff.proposeA

Propose handing one or more tasks to another participant or a group, with the context needed to pick them up. Every task must currently be assigned to the proposer.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesRecipient, as a participant URI or a group URI such as 'group:support-team'. A recipient who is not a workspace member is refused with -32052.
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
tasksYesThe work being handed over, one entry per task. Every task must currently be assigned to the proposer; otherwise the proposal is refused with -32050.
summaryNoCovering note for the handover as a whole, above the per-task detail.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.
context_linksNoURLs to threads, tickets or documents the recipient will need.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It clearly frames the action as a *proposal* rather than a direct transfer, and it discloses the task-assignment constraint. It does not detail the downstream proposal lifecycle, but the sibling tools and the word 'propose' make the core behavior reasonably transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loads the main action, and adds only the essential constraint. Every sentence earns its place with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a handoff-proposal tool, the description plus 100%-covered schema provide enough to call it correctly: recipient, proposer, tasks, and context fields are all documented. It could be more complete by explaining what happens after the proposal is submitted, but the core invocation context is well covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 no new parameter-level detail beyond framing the task metadata as 'context needed to pick them up'; the schema already documents each field, including error codes and examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Propose handing') and identifies the resource (one or more tasks to another participant or group). It also includes the key constraint that every task must currently belong to the proposer, which helps distinguish it from related tools like chap.task.route or chap.handoff.accept.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: use this to propose a handoff with enough context for pickup. It states a strong precondition (tasks must be assigned to the proposer), but it does not explicitly mention alternatives or when-not-to-use cases relative to siblings like chap.handoff.accept, chap.handoff.decline, or chap.task.route.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.participant.joinchap.participant.joinA

Add a participant to a workspace. The type given, human, agent, service, group or workspace, decides whether they are eligible to review work that requires it.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
roleNoOperator-defined role, e.g. 'reviewer' or 'drafter'. One value is read by the coordinator: 'admin' permits revoking another member's key.
typeYesThe kind of participant. Only members of type 'human' are eligible for the review that chap.task.complete opens on a task marked review_required, and a completion with no eligible human is refused with -32011.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.
display_nameNoHuman-readable name for interfaces. Not used in authorisation.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of disclosing side effects. It does disclose a genuine behavioral consequence: the participant type controls eligibility for review work. However, it omits other behavioral context such as the admin role's key-revocation power, permissions needed to join a participant, and failure modes like -32011.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The first sentence states the verb and resource, and the second front-loads the important eligibility caveat. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a five-parameter mutation tool, the schema documents every parameter including role semantics and type eligibility, so the description can stay lean. It provides the key operational consequence and no output schema is required. The only missing piece is explicit alternative routing, which is already penalized in usage guidelines.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 repeats the type enum and its eligibility effect, but the schema already documents this and even adds the -32011 error detail. The description adds no meaning beyond the structured parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource ('Add a participant to a workspace'), so the core action is unambiguous. The mention of participant types and review eligibility adds semantic precision that distinguishes add/join from sibling tools like chap.participant.leave or chap.participant.rotate_key.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is the tool to use when adding a participant, and it gives type-selection guidance (type determines review eligibility), but it never states when to prefer this over alternatives or when not to use it. No exclusions or alternative routing are provided, so this is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.participant.leavechap.participant.leaveA

Remove a participant from a workspace. Entries they have already written stay in the audit log.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full transparency burden. It does disclose a non-obvious side effect: 'Entries they have already written stay in the audit log.' Yet it omits other potentially important behavior such as whether the removal is reversible, whether permissions are revoked, or what happens if the last participant leaves.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short, carefully placed sentences. The first states the main action and the second adds the most consequential side effect with no filler, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a low-complexity tool with only two required parameters, no nested objects, and no output schema. The description is adequate for a basic call, but it leaves out important expected behavior, such as error conditions, irreversibility, and whether removal is administrative, which the lack of annotations cannot otherwise convey.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already explains 'from' with examples like 'human:alice@example.org' and 'workspace' with examples. The description adds no additional parameter meaning, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action and resource: 'Remove a participant from a workspace.' This is specific and sets it apart from sibling tools like chap.participant.join and chap.participant.rotate_key, so an agent can tell what this tool does 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage is implied: use this when a participant should be removed from a workspace. However, there is no explicit guidance about when not to use it, nor a comparison to related participant-removal or key-management tools, so the agent must infer alternatives from the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.participant.revoke_keychap.participant.revoke_keyA

Revoke a signing key, for example after a device is lost. Signatures presented with it are refused from then on. Revoking another participant's key requires the admin role.

ParametersJSON Schema
NameRequiredDescriptionDefault
kidYesKey id to revoke. It is marked revoked with a timestamp and a reason, and signatures presented with it are refused from then on. A key id that is unknown is refused with -32071.
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
reasonNoWhy the key was revoked, e.g. 'laptop lost'. Recorded on the key and in the audit entry.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.
target_uriYesWhose key is being revoked. Revoking another member's key requires the caller to hold the role 'admin'; otherwise the call is refused with -32011.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden. It discloses the permanent effect ('refused from then on') and the admin role requirement for revoking another participant's key. It could add that revocation is irreversible or that the action is audit-logged, but the provided behavior is solid and non-misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each earning its place: purpose and example, behavioral consequence, and permission requirement. The most important information is front-loaded and there is no verbose filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema covers parameter semantics and error codes, while the description covers purpose, behavior, and authorization. It is complete enough for an agent to call the tool correctly; a minor gap is not explicitly contrasting revocation with key rotation, but this is not essential to correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 parameters in detail. The description adds only one piece of contextual glue ('after a device is lost') and otherwise relies on the schema, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Revoke a signing key') and resource, with a concrete example ('after a device is lost'). It also distinguishes itself from the sibling rotate_key by focusing on permanent invalidation of signatures.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when revocation is appropriate, such as a lost device, and explains the consequence that signatures will be refused. It does not explicitly compare against the sibling rotate_key, but the scenario-based guidance is sufficient for an agent to understand the primary use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.participant.rotate_keychap.participant.rotate_keyA

Retire a participant's signing key and register its replacement. The old key stays in the key history with a valid_until timestamp, so envelopes it signed still verify.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
new_jwkYesThe replacement public key as a JWK. It must carry a 'kid'. Whether the request itself has to be signed with the old key is decided at dispatch, and only where the coordinator is configured to require signatures.
old_kidYesKey id being retired. It is given a valid_until timestamp and stays in the member's key history, so signatures made before the rotation still verify. A key id that is unknown is refused with -32071, and one already revoked with -32072.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral disclosure burden. It explicitly discloses an important side effect: the old key is not deleted; it stays in key history with a valid_until timestamp and old envelopes still verify. This is meaningful beyond the basic 'rotate' framing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences deliver the core action and the most important behavioral consequence without wasted words. The description is front-loaded with the main purpose and immediately adds the key retention detail that clarifies why this is rotation and not revocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema richly documents all four required parameters, including an example format and error codes for unknown or already-revoked key ids. The description covers the essential post-condition. The main gap is the lack of an explicit output or return behavior, but this is not required for a tool whose completion is primarily its side effect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers all parameters, including descriptions for workspace, from, old_kid, and new_jwk, so the baseline is 3. The main description adds no extra parameter-level detail beyond naming the old key and replacement, but the schema already provides sufficient semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action: 'Retire a participant's signing key and register its replacement.' This distinguishes rotation from the sibling revoke_key tool by noting that the old key remains in history with a valid_until timestamp, so the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when rotation is appropriate: replacing a signing key while preserving verifiability of past signatures. It does not explicitly name alternatives or state when not to use the tool, but the behavior described gives enough guidance to select this over a plain revoke.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.review.depthchap.review.depthA

Decide how much review a task warrants, skip, spot_check or full, from its routing hints. Records a route_decision artefact giving the rule that produced the answer.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
task_idYesTask identifier returned by chap.task.create.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.
artefact_routing_hintsNoPer-artefact signals such as confidence, model_id and cost_consumed_usd, merged over the task's routing_hints for this call. The default policy reads criticality and confidence. If the merged set is empty the call is refused with -32514. Fractional values are written as decimal strings, e.g. "confidence": "0.86".

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does useful work: it discloses an output choice set (skip/spot_check/full), a side effect (recording a route_decision artefact), and that the answer is rule-derived. The schema property additionally covers the refusal condition and decimal-string convention, so behavior is not opaque.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and decision outcomes, then the artefact side effect. No filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The combination of description and schema covers purpose, decision inputs, optional hints object, error on empty hints, and the recording side effect. The main minor gap is the lack of an explicit return/response shape, though no output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 and the artefact_routing_hints object in detail. The tool description does not add parameter-level information beyond mentioning routing hints, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Decide'), a concrete resource (review depth for a task), and the three possible outcomes (skip, spot_check, full), with the input signal (routing hints). This clearly separates it from siblings such as chap.review.request or chap.decide.approve/reject, which perform different review lifecycle actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Decide how much review a task warrants' gives clear context for when to call it, and 'from its routing hints' tells the agent what data drives the decision. It does not explicitly name alternatives or state when not to use it, but the purpose is distinctive enough among the siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.review.requestchap.review.requestA

Open a review on a task and address it to one or more reviewers. They then call chap.decide.approve, chap.decide.reject, chap.decide.override or chap.abstain.declare. Repeating the request with the same artefact adds reviewers to the open review.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesOne or more reviewers, as a single URI string or an array of URI strings. Only a workspace member can go on to decide, so a review addressed elsewhere cannot be closed by its recipient.
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
ruleNoHow many of the addressed reviewers must approve before the task completes. quorum:N is accepted for any N of 1 or more. The rule is fixed once the review is open: a later request naming a different one is refused with -32014. Omitting it on a later request leaves the rule alone, which is how reviewers are added to an open review.any_one_approves
task_idYesTask identifier returned by chap.task.create.
artefactYesThe draft being submitted for review. Pass a JSON object or array. A JSON-encoded string is parsed back to the structured value before dispatch, so patches in chap.decide.override apply against a real object. Re-requesting with the same artefact widens the reviewer set; a different artefact on an open review is refused with -32014.
deadlineNoWhen the review is needed by, as an ISO 8601 timestamp. Recorded on the review; the coordinator does not act on it.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description must carry the behavioral disclosure burden. It does disclose the state-changing nature of the call ('Open a review') and the additive behavior of repeating the request with the same artefact. However, it does not mention failure modes, such as refusing a changed rule or a different artefact on an open review, nor what the call returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short sentences, each earning its place: the core action, the downstream reviewer workflow, and the repeat-with-same-artefact behavior. It is front-loaded with the most important information and contains no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has seven parameters and no output schema, but the schema covers all parameters completely. The description supplies the high-level workflow, the lifecycle expectation, and the idempotent reviewer-addition behavior. The main missing piece is a statement about the return value or error semantics, but this is not critical for selecting and invoking the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 a little context about the artefact and reviewer relationship, but most parameter-specific meaning is already fully documented in the input schema, so the description does not need to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action and resource: 'Open a review on a task and address it to one or more reviewers.' It also separates this tool from the downstream decision tools by naming them explicitly, so an agent can distinguish opening a review from approving, rejecting, overriding, or abstaining.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context about when to use the tool: to open a review and assign reviewers, with the expectation that reviewers then use chap.decide.* or chap.abstain.declare. It also gives the useful repeat-request guidance for adding reviewers. It does not explicitly state when not to use it or compare it to similar open/deliberate tools, 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.

chap.task.completechap.task.completeA

Submit a task's output. A task that requires review does not complete: the output is held as the artefact under review, the task moves to review_requested, and a reviewer decision completes it. Any other task completes immediately.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
outputNoThe task's output artefact. Pass a JSON object or array. A JSON-encoded string is parsed back to the structured value before dispatch, so patches in chap.decide.override apply against a real object.
task_idYesTask identifier returned by chap.task.create.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.
confidenceNoSelf-reported confidence in the output, between 0 and 1. Written as a decimal string, e.g. "0.86". CHAP canonicalisation accepts integers only, so a JSON number with a fractional part is refused with -32602.
routing_hintsNoSignals recorded on the task and read by the routing/1.0 methods: task.route, review.depth and escalate.auto. Recording a hint has no effect on its own; it is consulted only when one of those methods is called.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden. It discloses non-obvious state transitions: the output is held as the artefact under review, the task moves to review_requested, and a reviewer decision is what completes it. This is precise, actionable behavioral information rather than a vague 'submits output' statement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two compact sentences that front-load the core action and then clarify the important review-related exception. There is no filler, redundancy, or repetition of schema information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema fully documents all six parameters and required fields, while the description covers the conditional completion behavior and review path. An agent has enough information to select and invoke the tool correctly; the lack of an output schema is not a blocking gap because the description focuses on the state change, which is the key outcome.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline of 3 applies. The tool description itself does not add parameter-level meaning; all parameter semantics are carried by the rich input schema, which already explains output parsing, confidence formatting, and routing hints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Submit a task's output.' It also clearly distinguishes the tool from the review/decision workflow by explaining that review-required tasks are not completed by this call, setting it apart from siblings like chap.task.create, chap.task.update, and chap.decide.approve/reject.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear conditional: tasks requiring review are held as the artefact under review, move to review_requested, and are only completed by a reviewer decision; any other task completes immediately. This strongly implies when to use the tool, though it does not explicitly name the alternative decision tools such as chap.decide.approve or chap.decide.reject.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.task.createchap.task.createA

Create a task: a unit of work assigned to one participant. Set review_required to make the task's completion depend on a reviewer decision rather than on the assignee.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesThe delegator. Must be a workspace member.
kindYesTask kind, e.g. 'draft_response' or 'review'. Free text; the coordinator records it without interpreting it.
modeNoMode for this task, defaulting to the workspace mode. A mode above the workspace ceiling is refused with -32040.
inputYesTask-specific input payload.
assigneeYesWho the task is assigned to. Must be a workspace member, and must not be paused: assigning to a paused member is refused with -32063.
deadlineNoWhen the task is due, as an ISO 8601 timestamp. Recorded on the task; the coordinator does not act on it.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.
routing_hintsNoSignals recorded on the task and read by the routing/1.0 methods: task.route, review.depth and escalate.auto. Recording a hint has no effect on its own; it is consulted only when one of those methods is called.
idempotency_keyNoCaller-chosen key for safe retries. A second create carrying a key already seen in this workspace returns the original task and records nothing further. The workspace retains the 10,000 most recent keys.
review_requiredNoWhen true, chap.task.complete opens a review instead of completing: the output becomes the artefact under review, and the task reaches 'completed' only on a reviewer decision. chap.task.update cannot complete such a task. Under modes/1.0 a trial-mode task has this set to true whatever is passed here.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It does disclose one meaningful trait: setting review_required makes completion depend on a reviewer decision rather than on the assignee. However, it does not mention idempotency-key retention, mode-ceiling refusals, or what happens after creation, so transparency is only partial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, with the core action front-loaded and the second sentence reserved for the most important behavioral switch. There is no filler or redundancy, and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The input schema is unusually rich and compensates for the terse description, but there is no output schema and no annotations. The definition still lacks a high-level statement of the task lifecycle, return value, and side effects such as idempotent retries, making it adequate but not fully complete for a 10-parameter creation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline of 3 applies. The description's review_required sentence restates a simplified version of the schema's detailed behavior without adding new semantic information beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the operation with a specific verb and resource: 'Create a task: a unit of work assigned to one participant.' This makes it easy to distinguish from lifecycle siblings like chap.task.update and chap.task.complete, whose verbs indicate different stages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not state when to choose this tool over alternatives such as chap.task.update or chap.task.complete, and it offers no when-not-to-use guidance. The only guidance is the review_required parameter advice, which concerns a single option rather than tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.task.routechap.task.routeA

Choose an assignee for a task from a list of candidates and record a route_decision artefact naming the policy, the candidate chosen, and the alternatives it passed over.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
task_idYesTask identifier returned by chap.task.create.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.
candidatesYesCandidate assignees. An empty list is refused with -32513. Candidates that are not workspace members are dropped, and if none remain the call is refused with -32510. The default policy selects the first remaining candidate; an operator-supplied routing policy may select on any basis.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the behavioral burden. It does disclose that the tool records a route_decision artefact and what that artefact names, which signals a side-effecting operation. However, it omits permissions, reversibility, and response behavior, though some error conditions are documented in the candidates schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence with no filler. It front-loads the core action and then specifies the artefact contents, making it quick for an agent to parse and apply.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description plus the detailed schema cover the basic call, but the return value is unspecified and there is no output schema. The relationship between the 'policy' mentioned in the description and the actual input parameters is unclear, and there is no guidance on when to prefer this tool over sibling routing-related tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are already well documented. The description adds context about candidates being alternatives and a policy being recorded, but it does not explain parameter-specific syntax beyond the schema. The mention of 'policy' is not mapped to any input parameter, which introduces slight ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Choose an assignee') and a concrete output ('record a route_decision artefact naming...'), clearly identifying the resource and distinguishing it from generic task operations. It does not explicitly contrast with sibling tools like chap.task.update or chap.handoff.propose, so it falls just 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case—assigning a task from a candidate list—but provides no explicit when-to-use or when-not-to-use guidance. It does not mention alternatives such as chap.handoff.propose or chap.task.update, leaving the agent to infer the appropriate context from the operation name and schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.task.updatechap.task.updateA

Move a task to a new state. Only the transitions in the specification's lifecycle table are accepted, and a task that requires review cannot be completed here.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
stateYesThe state to move the task to. Only the transitions in SPECIFICATION.md 8.1 are legal from the task's current state; others are refused with -32602. A task marked review_required cannot be moved to 'completed' here: submit the output with chap.task.complete, which opens the review.
task_idYesTask identifier returned by chap.task.create.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.
progress_noteNoShort note on what changed, kept in the task's history.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and it does disclose two non-obvious behaviors: legal transitions are enforced from the lifecycle table and review-required tasks cannot be completed through this tool. However, it does not state what a successful call returns, whether the operation is logged in task history (the progress_note schema hints at it), or permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, under 30 words, with the core purpose stated first and the most important constraint immediately after. Every clause earns its place and the wording avoids restating the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema fills in parameter details, transition legality, error code -32602, and the chap.task.complete alternative, so much of the context is covered. Still, with no output schema and no annotations, the definition never describes the success response, side effects, or prerequisites, leaving an agent to guess what happens after a valid transition.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline of 3 applies: every parameter already has a meaningful description in the schema. The description text itself adds no parameter semantics, but it does not need to because state, task_id, workspace, from, and progress_note are all documented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb-resource pair: 'Move a task to a new state,' and immediately narrows scope with the lifecycle-table constraint. The added clause that review-required tasks cannot be completed here differentiates chap.task.update from chap.task.complete without requiring an agent to open another tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The lifecycle-table constraint tells the agent when calls will be accepted (legal transitions only) and the review-required sentence is a clear when-not. The state parameter's description names chap.task.complete as the alternative for review-required completion, but the main description does not give broader routing guidance among the many sibling task/control tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.whisper.answerchap.whisper.answerA

Answer an open whisper. Where the question carried options, the answer must name one of them.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
answerNoFree-text answer, for a whisper with no options.
commentNoAnything else the answerer wants recorded alongside the answer.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.
whisper_idYesIdentifier returned by chap.whisper.ask. A whisper that has already been answered is refused with -32020, and one past its deadline with -32021.
answer_optionNoThe id of the chosen option. Required when the whisper carried options.

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It indicates a state-changing action ('answer') but does not mention permissions, irrevocability, side effects, or what a successful response looks like. The only behavioral nuance it adds is the option-naming rule, which is largely redundant with the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The core purpose is front-loaded, and the conditional constraint follows logically. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema is rich, covering all parameter semantics and two common refusal conditions. However, the description itself is minimal and does not address return values or postconditions, and there are no annotations to fill that gap. For a state-changing tool, this leaves some ambiguity, though the schema carries enough weight to keep it adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 a slight reinforcement that 'the answer must name one of them' when options exist, echoing the schema's 'answer_option' requirement. It does not introduce new parameter details beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Answer an open whisper.' This clearly identifies the operation and distinguishes it from the sibling tool chap.whisper.ask, which would be for creating a whisper. The added constraint about naming one option when the question carried options further sharpens the purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly frames when to use the tool: when an open whisper needs an answer. It does not explicitly name alternatives or exclusion conditions, but the context is straightforward and the 'open whisper' phrasing implies it should not be used for already-answered or expired whispers, which are also covered by error codes in the schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.whisper.askchap.whisper.askA

Put one question to one or more participants, with a deadline and a default. If the deadline passes unanswered the default applies, so a task is never blocked waiting on a reply.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesWho is being asked.
fromYesParticipant URI, e.g. 'human:alice@example.org' or 'agent:bot@local'.
optionsNoMultiple-choice options. When present, an answer must name one of these ids in answer_option; any other id is refused with -32022.
task_idYesTask identifier returned by chap.task.create.
urgencyNoHow urgent the question is. Recorded and passed on to the client; it does not change the deadline or the lapse behaviour.low
questionYesThe question being put. A whisper is answered on its own, without the recipient opening the task.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.
deadline_msYesHow long the whisper stays open, in milliseconds from now. Once it passes, the whisper lapses and default_if_lapsed is applied.
default_if_lapsedYesThe value applied if the deadline passes with no answer. Required, so that a lapsed whisper still has a defined outcome.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It does disclose a key behavior: if the deadline passes unanswered, the default applies, preventing blockage. But it does not explain what happens when only some of multiple recipients answer, whether a whisper record is created, or how the response is returned, leaving important behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action, and every clause adds useful information. The non-blocking rationale is included with no waste or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is minimally adequate for a 9-parameter tool with no output schema and no annotations. It covers the core ask-with-deadline behavior, but omits multi-participant answer semantics, what the response/return value is, and any side effects. An agent could invoke it correctly from the schema but may be uncertain about follow-up behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 parameters. The description adds the general semantics of deadline/default ('a task is never blocked'), but it does not add meaning for individual parameters beyond what the schema already provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action: putting one question to one or more participants, with a deadline and a default. This clearly separates 'ask' from sibling tools like 'chap.whisper.answer' and 'chap.deliberate.open', and the resource being acted on is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear context for use: when a question needs a deadline and a fallback default so work is not blocked. However, it does not name alternatives or state when not to use this tool, leaving the agent to infer the boundary against sibling collaboration tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.workspace.createchap.workspace.createA

Create a workspace: the container for the participants, tasks and audit log of one piece of collaborative work. Returns the workspace id, which every later call carries.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoDefault mode for tasks created here. Under modes/1.0 a trial-mode task has review_required set to true whatever the caller passes. 'shadow' and 'production' are recorded on the task and carry no further behaviour in this implementation.trial
profilesNoProfile identifiers to enable, e.g. ['core/1.0', 'review/1.0']. Recorded on the workspace. Two profiles change behaviour by being present: modes/1.0, under which a trial-mode task requires review, and audit-scitt/1.0, which turns on the hash-linked chain.
workspaceNoWorkspace id to create. If omitted, one is generated.
mode_ceilingNoHighest mode a task in this workspace may request. A task.create above the ceiling is refused with -32040. The ceiling can be changed afterwards with chap.control.set_mode_ceiling.production

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral transparency burden. It usefully discloses that the call returns a workspace id used by later calls, and 'create' implies a mutating/persistent side effect. However, it does not mention idempotency, error behavior, or any consequences of overwriting an existing workspace id, which are relevant for a creation operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single well-structured sentence that communicates the resource being created, its conceptual role, and the important return value. There is no fluff or repetition; every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the core return value and conceptual role, and the schema richly documents all parameters and defaults. For a creation tool with no output schema, the main ingredient—what it returns and why that matters—is present. It is slightly shy of a 5 because it does not address edge behaviors such as what happens when an explicit workspace id already exists, but the overall context is sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and every parameter, including defaults and mode-specific behavior, is documented in the input schema. The description adds no parameter-level details, but with full schema coverage the baseline of 3 is appropriate; it does not need to compensate for missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Create a workspace.' It further clarifies what a workspace is—the container for participants, tasks, and audit log—and distinguishes this creation tool from siblings like chap.workspace.describe or chap.workspace.set_profiles. The return value is also identified, making the purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear contextual guidance by framing a workspace as the container for collaborative work, so an agent can infer this tool is for starting a new piece of collaborative work. It does not explicitly name conditions or alternatives, but among the siblings this is the only creation call for workspaces, so the usage context is clear with no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.workspace.describechap.workspace.describeA

Report the current state of a workspace: its members, enabled profiles, audit length, and task and override counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral disclosure. The non-mutating verb 'Report' and the phrase 'current state' signal that this is a read-only inspection operation, and the enumerated data items communicate what the agent should expect. It does not explicitly state 'does not modify' or describe error conditions, but the read-only nature is strongly conveyed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence that front-loads the action and then lists the report contents. Every clause contributes useful information, and there is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter inspection tool, the description covers the input and the substance of the report, which partially compensates for the lack of an output schema. It does not specify the return format or failure behavior, but the enumerated contents give an agent a clear idea of what will be returned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully describes the single 'workspace' parameter with a format example, so schema coverage is 100%. The description's reference to 'a workspace' adds no additional meaning beyond what the schema already provides, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Report' and clearly names the resource: the current state of a workspace. It enumerates the report contents (members, enabled profiles, audit length, task and override counts), which distinguishes it from mutating workspace siblings like chap.workspace.create and chap.workspace.set_profiles.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not state when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. The read-only nature is implied by 'Report', but there is no explicit guidance such as 'use this to inspect a workspace before modifying it' or references to sibling tools that make changes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chap.workspace.set_profileschap.workspace.set_profilesA

Replace the set of profiles enabled on a workspace. Enabling audit-scitt/1.0 on a workspace that already has entries leaves those entries outside the hash chain.

ParametersJSON Schema
NameRequiredDescriptionDefault
profilesYesThe complete profile set to enable, replacing the current one. Adding audit-scitt/1.0 to a workspace that already has entries leaves those entries unchained and outside chain verification.
workspaceYesWorkspace identifier, e.g. 'wsp_techcorp_support'.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does explain the core mutating behavior and a side-effect caveat about existing entries becoming unchained. It does not disclose return behavior, permissions, or idempotency, but enough of the main behavior is visible.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the main operation and immediately followed by the key caveat. No redundant or vague wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description provides the essential operation, parameter semantics, and a crucial side effect. It does not cover failure modes or expected response, but the tool is simple enough that this is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters are documented in the schema, and the profiles description adds the important semantic that it is a complete replacement set, not an incremental update. The warning about audit-scitt/1.0 also clarifies a consequence of setting that profile.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states a specific action (replace) on a specific resource (workspace profiles), with the scope of the operation. It does not explicitly name a sibling tool as an alternative, so it misses the highest bar.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Does not state when to use this tool versus alternatives such as workspace create or other profile-related operations. The only additional guidance is a warning about audit-scitt/1.0, not usage conditions.

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.

  1. 39 tool updatesv0.2.13
    • First observedchap.abstain.declare
    • First observedchap.audit.read
    • First observedchap.audit.submit_to_scitt
    • First observedchap.audit.verify_chain
    • First observedchap.audit.verify_receipt
    • First observedchap.control.cancel
    • First observedchap.control.pause
    • First observedchap.control.resume
    • First observedchap.control.rollback
    • First observedchap.control.set_mode_ceiling
    • First observedchap.control.snapshot
    • First observedchap.control.supersede
    • First observedchap.decide.approve
    • First observedchap.decide.override
    • First observedchap.decide.reject
    • First observedchap.deliberate.close
    • First observedchap.deliberate.comment
    • First observedchap.deliberate.open
    • First observedchap.deliberate.vote
    • First observedchap.escalate.auto
    • First observedchap.escalate.raise
    • First observedchap.handoff.accept
    • First observedchap.handoff.decline
    • First observedchap.handoff.propose
    • First observedchap.participant.join
    • First observedchap.participant.leave
    • First observedchap.participant.revoke_key
    • First observedchap.participant.rotate_key
    • First observedchap.review.depth
    • First observedchap.review.request
    • First observedchap.task.complete
    • First observedchap.task.create
    • First observedchap.task.route
    • First observedchap.task.update
    • First observedchap.whisper.answer
    • First observedchap.whisper.ask
    • First observedchap.workspace.create
    • First observedchap.workspace.describe
    • First observedchap.workspace.set_profiles

TDQS

A3.7/5.0

Scored across 39 tools

Disambiguation5/5

Each tool is namespaced by domain (workspace, participant, task, review, deliberate, audit) and targets a distinct action; even the several state-changing task tools are separated by explicit verbs like complete, update, cancel, and supersede. The few routing/decision tools (route, depth, auto) have clearly different outputs despite all recording route_decision artefacts.

Naming Consistency5/5

All tool names follow the same chap.<domain>.<verb> pattern with consistent snake_case and verb-final naming. Verbs are descriptive and domain prefixes make the action hierarchy predictable, so an agent can infer where a tool belongs.

Tool Count2/5

At 39 tools, the surface is well beyond the 16-25 heavy range and even past the 25+ threshold for too many. Although the broad coordination/audit domain justifies many operations, the sheer number will make tool selection costlier and suggests some consolidation could be considered.

Completeness4/5

The surface covers nearly the full lifecycle: workspace creation/describing, participant management, task creation/state transitions, review, escalation, deliberation, handoff, control/snapshot, and SCITT audit verification. Minor gaps exist (no direct task/workspace listing or deletion), but agents can work around them via describe and audit.read.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    Governance Intelligence Architecture (GIA) is a governance-first MCP server that provides approval gates, auditable decision logs, compliance mapping, and operational safety controls for Claude agents. It connects Claude Desktop and Claude Code to a hosted governance control plane for secure, production-grade AI workflows.
    53
    49
    5
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    A human-in-the-loop governance interlock for AI agents. Agents propose changes, a human countersigns the exact plan, and then it executes stage by stage with precondition checks, verification, and auditing.
    Apache 2.0