@brightbeamai/chap-coordinator-mcp
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CHAP_DB_PATH | No | Path to a SQLite file. Without it the coordinator runs in memory and workspaces are lost when the client restarts. | |
| CHAP_PROFILES | No | Comma-separated CHAP profiles for new workspaces. Defaults to Core plus review, whisper, deliberation, handoff, control, routing, modes and audit-scitt. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| chap.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. |
| chap.workspace.describeA | Report the current state of a workspace: its members, enabled profiles, audit length, and task and override counts. |
| chap.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. |
| chap.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. |
| chap.participant.leaveA | Remove a participant from a workspace. Entries they have already written stay in the audit log. |
| chap.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. |
| chap.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. |
| chap.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. |
| chap.audit.readA | Read entries from a workspace's audit log, optionally within a sequence range and filtered by method, sender or task. |
| chap.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. |
| chap.decide.approveA | Approve the artefact under review. The task completes once the review's rule is satisfied. |
| chap.decide.rejectA | Reject the artefact under review. The task is declined, or returns to in_progress if request_revision is set. |
| chap.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. |
| chap.abstain.declareB | Stand aside from a review, giving a reason and a category. The task moves to abstained. |
| chap.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. |
| chap.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. |
| chap.whisper.answerA | Answer an open whisper. Where the question carried options, the answer must name one of them. |
| chap.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. |
| chap.deliberate.commentA | Record a comment on an open deliberation, so the reasoning is on the audit log alongside the votes. |
| chap.deliberate.voteA | Cast a yea, nay or abstain in an open deliberation. Each participant votes once. |
| chap.deliberate.closeB | Close a deliberation and compute its outcome from the votes cast under its rule. |
| chap.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. |
| chap.handoff.acceptA | Accept a proposed handoff. The accepted tasks are reassigned to the accepting participant. |
| chap.handoff.declineB | Decline a proposed handoff, with a reason and optionally a suggestion of who should take it instead. |
| chap.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. |
| chap.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. |
| chap.control.cancelA | Cancel a task. Cancelled is terminal, and a task that has already settled cannot be cancelled. |
| chap.control.snapshotA | Capture the workspace state as an artefact and return its id, which chap.control.rollback takes as its target. |
| chap.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. |
| chap.control.supersedeA | Replace a task with a successor in one call. The original moves to superseded and stays linked to its replacement. |
| chap.control.set_mode_ceilingA | Set the highest operating mode tasks in this workspace may request. A task above the ceiling is refused. |
| chap.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. |
| chap.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. |
| chap.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. |
| chap.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. |
| chap.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. |
| chap.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. |
| chap.audit.verify_receiptB | Verify a SCITT receipt through the configured verifier. Verification fails closed where no verifier is configured. |
| chap.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. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 39 tools
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.
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.
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.
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.