Skip to main content
Glama

FCoP — File-based Coordination Protocol

Let multiple agents work as a team. Keep tasks and deliveries in files.

New session, same project explanation? An agent says “done”, but where is the delivery record? FCoP keeps assignments, results, problems and reviews in your project's Markdown files, so people and the next agent can inspect the work and continue.

Multi-agent collaboration · Files as protocol · No complex infrastructure · Agent governance

协议原文:中文 · Specification: English · English · 简体中文 · Homepage

PyPI · fcop · MCP · fcop-mcp · MIT · Zenodo & citation

Run the minimal example · Connect Cursor / Codex · Installation FAQ

What do you get?

Your question

The record FCoP keeps

Who is doing what?

TASK: assignment, sender, recipient and current state

“Done”—where is the result?

REPORT: delivery description and evidence references

What is blocked?

ISSUE: problems, blockers and context

Who checked it? Is it ready to hand over?

REVIEW: review findings and decisions

These files live in your project. Open them in an editor, inspect them with tools, and track suitable records in Git. Coordination records need no separate Redis, message queue or database. Agents keep using familiar clients such as Cursor and Codex.

Even when an agent is gone, the work remains.

Related MCP server: ToolSmith Agent MCP Server

Understand it in 30 seconds: you set the goal, PM leads

You are ADMIN, working with PM. PM breaks down the goal and assigns tasks to DEV, QA and OPS. Members execute and deliver reports; PM consolidates the results and reports back to you. Agents do not chat with each other; they collaborate through files.

The filename identifies a task or report, its header names sender and recipient, and its directory expresses task state. Agents follow the protocol to find their work, read the task, execute and report. This illustrates a PM-led team workflow; see file formats and version differences when needed.

Run a minimal example

PM assigns a text conversion to DEV, QA checks the actual result, and PM reads both reports before summarizing for ADMIN. The script uses independent clients to simulate three roles sequentially. No model or API key required. You need Python 3.10+ and Git.

git clone https://github.com/joinwell52-AI/FCoP.git
cd FCoP
python -m pip install "fcop==4.0.5"
python examples/team_workflow.py --output ./demo-runs

Open the workspace path printed by the script. You will find:

Files retained

Who hands work to whom

3 TASKs

ADMIN → PM; PM → DEV; PM → QA

3 REPORTs

DEV → PM; QA → PM; PM → ADMIN

1 REVIEW

QA's assessment of the actual result

Open PM's summary and follow the files to the member deliveries and QA's check. The example completes delivery and keeps tasks in review, awaiting formal acceptance.

Full example code · Session handoff: English · 中文

Four questions before installation

1. Why should I install FCoP?

If you divide work among agents or often resume a project in a new session, FCoP gives tasks, deliveries and reviews a shared file record. The next person or agent can check progress with less manual reconstruction and retelling.

2. Do I import FCoP into my application code?

Usually no. Ordinary projects use the CLI and MCP; developers building their own integrations can use from fcop import Project.

3. Should I install it in Codex, Cursor or another agent client?

Yes. Configure fcop-mcp so your agent can create and claim tasks, submit reports, and record issues and reviews. It currently provides 25 Canonical MCP Tools / 6 read-only Core Resources.

4. What changes immediately after installation?

After connection, the client lists FCoP tools. Initialization creates <project>/fcop/. Execute a first task to get real TASK and REPORT files you can open. The example above also leaves QA's assessment and PM's summary.

Ask your AI to install FCoP

Paste this into Cursor Agent, Codex, or another coding agent with terminal and file access. The agent handles setup and checks the result.

Install FCoP for the coding client and project I am using. Follow:
https://github.com/joinwell52-AI/FCoP/blob/main/docs/ai-install.md
Run the environment checks, installation, configuration and verification yourself. Preserve my existing configuration and project state. Report what actually works; ask me only for a missing client/project choice or a required approval/reload.

MCP: give agents access to FCoP

python -m pip install "fcop==4.0.5" "fcop-mcp==4.0.5"
fcop tools

Configure a server in a client supporting local stdio MCP. This is a generic JSON example; see the AI installation guide for Codex-specific configuration.

{
  "mcpServers": {
    "fcop": {
      "command": "/absolute/path/to/python",
      "args": ["-m", "fcop_mcp"],
      "env": {
        "FCOP_PROJECT_DIR": "/absolute/path/to/my-project"
      }
    }
  }
}

Replace the absolute paths with your Python interpreter and project path; forward slashes work on Windows. Reconnect and check the tool list, then follow the installation guide to initialize the project, adopt team rules and execute a task.

Full installation and client configuration

Historical 4.0.3 Cursor connection: 49 tools, 12 resources. The current 4.0.5 catalog has 25 tools and 6 read-only resources.

In use: CodeFlowMu

CodeFlowMu uses FCoP in a PM, DEV, QA and OPS development team, providing client integration, execution and progress views. It is distributed as a proprietary preview; FCoP's protocol and tools are MIT open source and independently usable.

FCoP is one approach to multi-agent collaboration, for teams that want tasks and deliveries to stay in local files.

Want to try it in your next multi-agent project? Star FCoP to keep it handy.

CLI — Local Setup, Inspect & Diagnose

CLI = Setup + Observe + Diagnose; MCP = Work.

Command

Purpose

fcop init

Initialize an FCoP workspace

fcop status

View workspace status

fcop inspect

Inspect TASK / REPORT / ISSUE / REVIEW

fcop validate

Validate protocol structure

fcop tools

Inspect the installed MCP Tool Catalog

fcop doctor

Diagnose installation, environment and compatibility

fcop version

Show installed versions

fcop spec

Show specification / rule identity

fcop migrate

Explicitly migrate a legacy workspace; inspect the plan before apply

Install & Verify

In an activated Python 3.10+ environment:

python -m pip install fcop

fcop version
fcop doctor
fcop init --root ./my-project
fcop status --root ./my-project
fcop validate --root ./my-project

For the optional MCP Tool Catalog:

python -m pip install fcop-mcp

fcop tools
fcop tools merge_branches --json

Once installed, the CLI can initialize, inspect, validate and diagnose locally and offline. doctor does not access the network or modify Host configuration. Package installation itself may need a package index; offline installation requires locally available packages. The CLI does not perform create_task, approval, Branch, merge or authorization work operations; use MCP or the Python API for those. Installing fcop does not create Host instruction files. Normal v4 workspace state belongs in <project>/fcop/, never in project-root AGENTS.md, CLAUDE.md or Cursor rules. Existing atomic initialization staging and failed-initialization evidence are preserved; customer files are never cleaned up automatically. migrate is a separate explicit legacy operation, not an automatic package-upgrade step. tools requires the optional MCP package and never starts a server or installs it automatically.

CLI reference · 中文 CLI 参考.

Reference, when you need it

How do files carry the protocol?

Files have agreed types, identities, senders, recipients and contents. Agents use those conventions to identify their work. Filenames, directories and file headers have distinct responsibilities.

Surface

What it tells you

Filename

Record type and identity; legacy names also contain sender and recipient roles

Directory

Whether a task is in inbox, active, review, done or archive

File header

Workspace, sender, recipient, task relationships and evidence identity

Markdown body

Assignment, delivery, problems and review reasoning

An intuitive filename-routing example (Legacy v1–v3): TASK-20260915-001-PM-to-DEV.md is a task from PM to DEV; REPORT-20260915-001-DEV-to-PM.md is a report from DEV to PM. An agent with an assigned role can identify incoming files from the naming convention.

The current 4.0 implementation: new tasks live at fcop/_lifecycle/inbox/TASK-<uuid>.md, with sender: PM and recipient: DEV in the file header. The agent or caller reads the task fields and selects work for its established role. A filename-only search for to-DEV will not work because v4 names do not contain that segment. Reports live at fcop/reports/REPORT-<uuid>.md, with subject_ref and attempt_id linking the task and its execution attempt.

These placeholders explain layout; they are not complete runnable envelopes. Consult the 4.0 specification (English · 简体中文), current creation implementation and legacy filename grammar for the exact contracts.

Choose how to install

Use

Install

Purpose

Standalone CLI

fcop

Initialize, inspect, validate and diagnose a project

Python integration

fcop

Call the Project API from your own program

MCP in an agent client

fcop + fcop-mcp

Give agents in Codex, Cursor and other clients collaboration tools

Source development

This repository and its mcp/ subproject

Modify, debug or contribute to the reference implementation

CLI and Python: one package

python -m pip install "fcop==4.0.5"
fcop version
fcop doctor
fcop init --root ./my-project
fcop status --root ./my-project

Python developers can then use from fcop import Project; see the complete example in the manual reference. Ordinary users do not need to import FCoP into application code.

MCP: give agents access to FCoP

python -m pip install "fcop==4.0.5" "fcop-mcp==4.0.5"
fcop tools

Configure a server in a client supporting local stdio MCP. This is a generic JSON example; see the AI installation guide for Codex-specific configuration.

{
  "mcpServers": {
    "fcop": {
      "command": "/absolute/path/to/python",
      "args": ["-m", "fcop_mcp"],
      "env": {
        "FCOP_PROJECT_DIR": "/absolute/path/to/my-project"
      }
    }
  }
}

Replace command with the absolute path to the Python interpreter containing both packages, and set your project directory. Windows paths can use forward slashes. Reconnect the client to see 25 Canonical MCP Tools and 6 read-only Core Resources. Project initialization and team-rule adoption are separate steps; connecting MCP does not create a PM-led team or launch other agents.

Install from source

git clone https://github.com/joinwell52-AI/FCoP.git
cd FCoP
python -m pip install -e .
python -m pip install -e ./mcp
fcop version

The official installation route uses the Python packages above. This guide does not prescribe an unverified npm package or Node SDK. Node.js and other languages can integrate through an MCP client or implement the protocol themselves.

Implement the protocol yourself

You can build conforming tools from the formal specification (English · 简体中文) without using the Python reference implementation. Creating a few directories is not sufficient: field, transition, evidence, authorization, idempotency and recovery contracts must also be met. With the official toolkit, use fcop init to create the workspace.

macOS (Intel and Apple silicon): install CLI and MCP

FCoP supports macOS on both Intel and Apple silicon. The published wheels are platform-independent; Rosetta is not required. Use Python 3.10–3.13. The CLI works directly in Terminal, while MCP additionally requires a client that supports local stdio servers, such as Codex or Cursor.

Create a dedicated environment and install the matching Core/MCP pair:

python3 --version
python3 -m venv ~/.local/share/fcop/venv
~/.local/share/fcop/venv/bin/python -m pip install --upgrade \
  "fcop>=4.0.5,<4.1.0" \
  "fcop-mcp>=4.0.5,<4.1.0"

Verify the CLI and installed MCP catalog:

~/.local/share/fcop/venv/bin/fcop version
~/.local/share/fcop/venv/bin/fcop doctor
~/.local/share/fcop/venv/bin/fcop tools --json

The installed CLI provides all nine commands listed below: init, status, inspect, validate, tools, doctor, version, spec, and migrate. CLI setup and inspection do not require an MCP-capable AI client.

For MCP, configure the client with absolute macOS paths; do not use ~ inside client configuration:

{
  "mcpServers": {
    "fcop": {
      "command": "/Users/YOUR_NAME/.local/share/fcop/venv/bin/python",
      "args": ["-m", "fcop_mcp"],
      "env": {
        "FCOP_PROJECT_DIR": "/Users/YOUR_NAME/path/to/your-project"
      }
    }
  }
}

Replace YOUR_NAME and the project path, then restart or reconnect the MCP client. FCOP_PROJECT_DIR points to the project that will use FCoP, not to this source repository.

4.0.1 introduced create_branch, inspect_family and merge_branches; 4.0.5 exposes 25 canonical MCP tools and 6 read-only Core resources. Core owns atomic convergence, durable idempotency and recovery. Unfinished families return family_digest: null, merge_ready: false and structured reasons. The caller supplies the semantic conclusion. See the Branch merge contract and example / 中文合同.

Try it: create once, read from another client

In an activated Python 3.10+ virtual environment, install the published library:

python -m pip install "fcop==4.0.5"

Save this as demo.py and run python demo.py. It writes a real TASK, opens the workspace through a fresh Project instance, then retries the original request.

from pathlib import Path
from tempfile import TemporaryDirectory

from fcop import Project

with TemporaryDirectory(prefix="fcop-demo-") as directory:
    root = Path(directory) / "workspace"
    project = Project(root)
    workspace = project.create_workspace(protocol_version="4.0")
    request = dict(
        workspace_id=workspace["workspace_id"],
        operation_id="demo-create-1",
        sender="author", recipient="worker",
        subject="Inspect this handoff",
        body="Read the task and check the evidence before accepting delivery.",
    )
    first = project.create_task(**request)

    next_client = Project(root)
    state = next_client.inspect_state(task_id=first["task_id"])
    retry = next_client.create_task(**request)

    assert Path(state["path"]).is_file()
    assert retry["existing"] and retry["task_id"] == first["task_id"]
    print("State read from disk:", state["stage"])
    print("Same task after retry:", retry["task_id"] == first["task_id"])
State read from disk: inbox
Same task after retry: True

The example cleans up its temporary directory when it exits. Use your own project directory to retain the files. Retrying create_task with the same operation_id and normalized payload reuses its durable result; changing the payload is a conflict. This guarantee is specifically for task creation.

Continue with the 4.0 setup and version guide for a lasting workspace, lifecycle operations and the authorization needed to complete a task.

Give your agent the same operations through MCP

The optional adapter exposes FCoP to an MCP-capable client over stdio. Install it in the same activated environment:

python -m pip install "fcop==4.0.5" "fcop-mcp==4.0.5"

Add this entry to the client's MCP configuration. Replace both absolute paths; on Windows the command ends in .venv/Scripts/fcop-mcp.exe.

{
  "mcpServers": {
    "fcop": {
      "command": "/absolute/path/to/.venv/bin/fcop-mcp",
      "env": {"FCOP_PROJECT_DIR": "/absolute/path/to/new-workspace"}
    }
  }
}

In 4.0.5, initialize a new workspace with init_workspace(). Use its workspace_id and a unique operation_id with create_task, then inspect the TASK with inspect_task(task_id=...). Team/Solo/ME, seats, and Host session assignment are outside Base Protocol.

25 Canonical MCP Tools + 6 read-only Core Resources. The adapter routes to the same Python Core. Default initialization has no trusted authorization Profile: creation, claim and submission are available, but acceptance, rejection, reopening and archival need an explicitly adopted Profile and an issuer evaluator registered by the trusted host. A role name typed into a request cannot supply that authority. See the 49-to-25 migration guide for older clients.

MCP tool reference · Stable external Python example · Stable external MCP example. The full examples include an educational Profile; a real deployment must supply its own trust policy.

The 4.0 specification defines FCoP as a file-native agent behavior-governance protocol: files carry protocol, paths express current state, and events record transition history.

Roles such as PM, DEV, QA and OPS in dev-team come from a Team/Profile. The host adopts team rules; MCP supplies tools while the host runs and schedules models. Formal acceptance, rejection, reopening and archiving require an adopted Profile and trusted host authorization. Concurrent application-code changes need workspace isolation and integration review.

From a delivery claim to an accepted result

Each TASK follows an ordered lifecycle. In 4.0, entering active starts a new attempt, and submission links that attempt's REPORT. Acceptance then binds the review and authorization to the current evidence.

active → done is absent from 4.0. Reopening through reopen_task creates a new attempt for ordinary tasks as well as Branches. An old REPORT cannot satisfy a new attempt's submission gate. See the complete lifecycle and C1–C8 contracts · 中文规范.

Parallel work, with an explicit way to finish

Multiple ordered workflows can advance concurrently. A Branch is an ordinary TASK linked to one Root by branch_of; sibling Branches keep their own attempts, reports and reviews. Your Runtime decides who runs them and when.

Before a Root with Branches can be archived, FCoP checks completed Branches, their current REPORTs, a matching family_digest, a convergence REVIEW and separate Root archive authorization. A reopened Branch or changed REPORT invalidates stale convergence. Related writes share a short commit boundary; agents do not hold that lock while doing their work. This closes an evidence set; code integration remains the application's responsibility.

A small protocol inside a larger agent system

Another implementation should be able to preserve the same work semantics without copying a particular Python library, MCP tool list or product.

Layer

Responsibility

Core

C1–C8: identity, envelopes, lifecycle, relations, convergence, authorization, create idempotency and atomic recovery.

Specification

Define the fields, state transitions, errors and observable behavior.

Conformance

Check implementations against those contracts using fixtures, vectors and behavioral tests.

Toolkit

Implement and expose the protocol; this repository supplies Python and the MCP adapter.

Profile

Supply organizational policy and issuer authority; fixed PM/DEV/QA roles are not universal Core rules.

Runtime

Run models and tools, manage sessions, schedule work and provide the user interface.

Read the design explanation: English · 简体中文. It develops the reasoning behind files, separate delivery and acceptance, parallel work, and the boundaries between FCoP, MCP and a Runtime.

Architecture principles: five full essays in Chinese, published September 10, 2026 and revised against 4.0:

  1. Work beyond the model context: why files?

  2. Extracting the minimal FCoP Core

  3. Separating Core, Specification, Toolkit, Profile and Runtime

  4. Parallel work through ordered task lifecycles

  5. How FCoP, MCP, A2A and CodeFlowMu fit together

Series guide (中文) · All five essays (中文)

4.0.5 distributes nine bilingual rule modules through package-owned and MCP resources, with strict manifests and sequential, parallel and separate repository-development assemblies. Install → connect MCP → initialize workspace → use FCoP. FCoP owns <project>/fcop/, not project-root Host instruction files. Host projection, adoption, deployment and rollback are retired; redeploy_rules is Legacy v1–v3 only and rejects v4 with zero writes. Existing customer files stay unchanged. Rule resources / 规则资源.

Current Python packages: 4.0.5. Latest GitHub Release: 4.0.3. — 4.0.3 release. This repository contains the open protocol, the fcop Python implementation and the optional fcop-mcp adapter. Python 3.10+; no model API key is needed for the local example.

Discover FCoP: MCPServers introduction (简体中文) — a third-party directory for discovering and learning about FCoP. Registration details: Official MCP Registry — the server identifier, version and package metadata.

Papers, evidence and citation

These resources are directly accessible; reading the essay collection is optional.

Resource

Read or cite

4.0.5 software archive

Zenodo DOI 10.5281/zenodo.23051275 · Citation metadata — source commit c9ac1ef0717309d45df4c1a3be76498f6818d530

FCoP 4.0 preprint (1.0)

FCoP: A File-Based Coordination Protocol for Governed Multi-Agent Systems — experiments and supplement use the frozen 4.0.3 implementation

4.0.3 software archive

Zenodo DOI 10.5281/zenodo.22746175 — historical version

Architecture whitepaper

English · 中文 — historical research context

3.2.5 archive

Zenodo DOI 10.5281/zenodo.20457285 · OSF DOI 10.17605/OSF.IO/92NWM

April 2026 research snapshot

Zenodo DOI 10.5281/zenodo.19886036

17 field reports and design essays

Complete index · 中文目录, including original publication and evidence links

Choose the archive matching the version you studied. The 4.0.5 software DOI identifies the current source archive; the preprint DOI identifies the paper and its frozen 4.0.3 evidence. The software update does not imply that the paper's experiments were rerun on 4.0.5.

Three repositories, three entry points

Repository

Start here for

FCoP

Flagship open-source project: protocol, Python library and MCP server; use, implement or contribute to the coordination layer.

joinwell52

Research and communication: AI Agents, digital employees and engineering studies.

CodeflowMu-Distribution

Product experience: packaged application and downloads; check its release notes for supported versions.

FCoP is independently usable under the MIT license. The product distribution has its own licensing and release schedule.

Star FCoP to bookmark the protocol and its implementation. To help it improve, share a reproducible integration issue, an example from your host, or a test of the protocol's public behavior through Issues or a pull request.

Versions and existing installations

  • 4.0.0: Release notes · Changelog · Architecture decisions. Publication followed the recorded FCOP_4_STABLE_RELEASE_READY gate; users install the stable PyPI pair above.

  • Release candidate: 4.0.0rc1 — retained as a historical prerelease.

  • 3.x workspaces: retain their original semantics until explicit migration. Legacy specification EN · ZH. finish_task and legacy history tools remain discoverable but reject v4 workspaces.

  • Legacy installation prompts: EN · ZH, also available at fcop://prompt/install. These are historical setup material; use the 4.0 guide above for the current version.

Available Tools

25 tools
approve_taskD

Request Core T4 review to done using independently validated review and authorization evidence.

NameRequiredDescriptionDefault
actorYes
task_idYes
report_refYes
review_refYes
profile_refYes
authorization_refYes

TDQS

D1.7/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden. The phrase 'review to done' weakly implies a state transition, but the description does not disclose side effects, required permissions, idempotency, irreversibility, error behavior, or what 'independently validated' means operationally.

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

Conciseness2/5

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

The definition is a single sentence, but it is front-loaded with undefined jargon ('Core T4') and an ambiguous phrase ('review to done'). Brevity is not helpful here because the sentence is too opaque to orient the agent.

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

Completeness1/5

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

For a six-required-parameter approval operation with no annotations, no output schema, and zero schema descriptions, the description is drastically incomplete. It leaves the agent without the workflow, parameter meanings, or behavioral expectations needed to invoke the tool safely.

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

Parameters2/5

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

Schema description coverage is 0% across six required parameters. The description vaguely connects to review_ref and authorization_ref via 'review and authorization evidence,' but it leaves actor, task_id, report_ref, and profile_ref completely unexplained, so it does not compensate for the schema gap.

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

Purpose2/5

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

The description says 'Request Core T4 review to done,' which is jargon-heavy and never plainly states that this tool approves a task or transitions it to a done state. It references review and authorization evidence but does not clearly distinguish this action from siblings like reject_task, submit_task, or mark_human_approved.

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

Usage Guidelines1/5

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

There is no guidance on when to use approve_task versus reject_task, submit_task, mark_human_approved, or any other sibling. No prerequisites, exclusions, or workflow context are provided.

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

archive_taskD

Request Core T7 done to archive; Core enforces authorization and family convergence.

NameRequiredDescriptionDefault
actorYes
task_idYes
review_refNo
profile_refYes
family_digestNo
authorization_refYes

TDQS

D1.9/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 behavioral burden. It discloses that Core enforces authorization and family convergence, but it does not explain what archiving actually does, whether it is reversible, what permissions are required, or what happens to related family/workflow state.

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

Conciseness2/5

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

The description is a single sentence but is cryptic and under-specified rather than efficient. Crucial details are compressed into jargon like 'Core T7 done' that an agent cannot reliably interpret.

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

Completeness1/5

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

This is a complex mutation tool with 6 parameters, no annotations, and no output schema. The description does not provide enough information about purpose, preconditions, parameter meanings, or behavior for an agent to invoke it correctly.

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

Parameters2/5

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

Schema description coverage is 0% for 6 parameters, so the description must compensate heavily. It only loosely hints at authorization and family convergence, leaving task_id, actor, profile_ref, and review_ref unexplained.

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

Purpose2/5

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

The name says archive_task, but the description's phrasing 'Request Core T7 done to archive' is opaque jargon rather than a clear statement that this archives a task. It does not distinguish the operation from sibling task lifecycle tools such as approve_task, reject_task, or submit_task.

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 explicit guidance on when to use this tool, when not to, or which sibling tools are alternatives. The mention of authorization and family convergence hints at preconditions but does not tell an agent when archiving is appropriate.

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

claim_taskC

Request Core T2 inbox to active; actor records attribution and grants no authority.

NameRequiredDescriptionDefault
actorYes
task_idYes

TDQS

C2.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 behavioral burden. It discloses that the actor records attribution and that the action 'grants no authority', which is useful, but it does not explain mutation side effects, permissions, idempotency, failure behavior, or what happens to the task state.

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

Conciseness3/5

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

The definition is a single sentence and front-loads the transition phrase, so it is not bloated. However, the concise wording is cryptic and under-specifies key details rather than making every clause maximally useful.

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 two-parameter task-lifecycle tool with no annotations, no output schema, and 0% parameter description coverage, the description is too thin. It adds one safety-related behavioral note but leaves parameter roles, return behavior, and operational context largely unexplained.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for both parameters. It gives some meaning for 'actor' by saying attribution is recorded and authority is not granted, but it says nothing about 'task_id' beyond the vague 'Core T2 inbox to active' phrase.

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

Purpose3/5

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

The description indicates a transition from 'inbox to active' for 'Core T2', which hints at claiming a task, but the phrase 'Core T2' is undefined jargon and the plain action 'claim a task' is never stated. It is specific enough to suggest a lifecycle transition but vague enough that an agent must infer the core purpose.

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 gives no explicit guidance about when to use this tool versus siblings such as submit_task, approve_task, or create_task. There are no when-to-use, when-not-to-use, or alternative-selection cues.

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

create_branchC

Create a branch TASK through Core T1 with an explicit branch_of relation.

NameRequiredDescriptionDefault
bodyYes
senderYes
subjectYes
priorityNoP2
recipientYes
operation_idYes
root_task_idYes
workspace_idYes

TDQS

C2.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 for a mutation tool, yet it discloses nothing about permissions, idempotency (despite an operation_id parameter), side effects on the root task, or whether the branch can later be merged.

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

Conciseness3/5

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

A single front-loaded sentence with no filler, but 'through Core T1' is unexplained jargon that consumes space without adding actionable meaning.

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

Completeness1/5

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

For a 7-required-parameter mutation with no annotations, no output schema, and zero parameter documentation, one sentence is far short of what an agent needs to invoke this correctly.

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

Parameters1/5

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

Schema coverage is 0% across 8 parameters, so the description must compensate and does not: it never explains root_task_id, workspace_id, operation_id, sender/recipient/subject/body, or the P2 priority default. Worse, it references a 'branch_of relation' that has no corresponding parameter in the schema, which misleads more than it informs.

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?

States a specific verb and resource ('Create a branch TASK') and distinguishes itself from the plain create_task sibling by calling out the branch_of relation. The jargon 'Core T1' is undefined, but the core action is still identifiable.

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 guidance on when to use this instead of create_task or merge_branches, and no prerequisites such as whether root_task_id must reference an existing task or what distinguishes a branch task from a root task.

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

create_taskC

Create a TASK using Core T1 and its workspace-scoped operation identity. Repeated requests retain Core idempotency semantics.

NameRequiredDescriptionDefault
bodyYes
parentNo
senderYes
subjectYes
priorityNoP2
branch_ofNo
recipientYes
referencesNo
risk_levelNo
thread_keyNo
operation_idYes
workspace_idYes

TDQS

C2.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. It hints at idempotency ("Repeated requests retain Core idempotency semantics") but never says what that means concretely — does the same operation_id return the same task, or error? Nothing on permissions, side effects, or whether parent/branch_of create implicit relationships.

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

Conciseness3/5

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

Two short sentences with no padding, and the action is front-loaded. But the brevity comes at the cost of substance: both sentences are jargon-dense placeholders rather than information an agent can act on.

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?

A 12-parameter mutation tool with no annotations, no output schema, and 0% schema description coverage needs far more than two sentences. Key gaps: relationship semantics for parent/branch_of, valid values for priority/risk_level, and what success returns.

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

Parameters2/5

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

Schema coverage is 0% across 12 parameters, so the description must compensate and largely fails. It only gestures at workspace_id scoping and operation_id idempotency, leaving parent, branch_of, thread_key, references, risk_level, and the meaning of priority "P2" completely unexplained.

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

Purpose3/5

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

The verb+resource ("Create a TASK") is stated, but "Core T1" and "workspace-scoped operation identity" are undefined jargon rather than a description of what a task is or how it differs from siblings like write_issue or write_report, which also appear to create work items.

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 indication of when to use create_task versus write_issue, write_report, write_review, or create_branch, all of which sit in the same family of creation tools. No prerequisites, no preconditions (e.g., does the workspace need to be initialized/validated first?).

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

init_workspaceB

Create only a canonical FCoP 4.0 workspace at the server-bound root. An optional explicit profile is a reference, never executable authority.

NameRequiredDescriptionDefault
profileNo

TDQS

B3.1/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 does disclose two non-obvious behaviors: the workspace is always created at the server-bound root (no path parameter, no user-chosen location), and the profile is a reference only and confers no executable authority — a meaningful safety note for a creation tool. It omits idempotency/conflict behavior, required permissions, and what artifacts get created.

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

Conciseness4/5

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

Two sentences, front-loaded with the action and scope; the second sentence adds a distinct security-relevant caveat rather than padding. Slightly dense phrasing ('reference, never executable authority') costs a bit of immediate readability.

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 mutation tool with no annotations, no output schema, and an entirely undocumented parameter, the description should cover failure modes, idempotency, and what a successful initialization produces. It covers root binding and profile authority but leaves the agent unable to predict behavior on re-invocation or on error.

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 0% for the single 'profile' parameter, so the description must compensate. It clarifies that profile is optional and is a non-authoritative reference, but says nothing about its expected form (path, name, identifier) or what happens when it is null versus supplied.

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 gives a specific verb (create) and resource (canonical FCoP 4.0 workspace), and the word 'only' constrains scope so the agent knows this is not a general-purpose initializer. It implies a separation from inspect_workspace/validate_workspace but never names them or states the difference explicitly.

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 to call this versus inspect_workspace or validate_workspace, nor any prerequisite or exclusion (e.g., whether it fails if a workspace already exists, or when re-initialization is appropriate). The only implicit signal is 'only ... at the server-bound root', which constrains scope but not usage timing.

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

inspect_familyC

Read Core family membership, REPORT heads, digest and convergence readiness.

NameRequiredDescriptionDefault
root_task_idYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations exist, so the description carries the full burden. 'Read' implies read-only, but it says nothing about permissions, whether the digest or convergence readiness is computed versus stored, how expensive the call is, or what happens when the root has no family.

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

Conciseness4/5

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

One compact sentence with the verb and the returned artifacts front-loaded; nothing is padded. It is terse to the point of under-specification, but that is a completeness problem rather than verbosity.

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?

With no annotations, no output schema, and an undocumented required parameter, the description should explain the return shape and the meaning of root_task_id. As written it leaves an agent unable to predict either the input or the output.

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

Parameters2/5

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

Schema coverage is 0% and the single required parameter root_task_id is never mentioned in the description. It is unclear whether this is the root of a task tree, a family identifier, or a task whose descendants are inspected.

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

Purpose3/5

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

The verb 'Read' and the resource 'Core family membership' are stated, along with three further things returned (REPORT heads, digest, convergence readiness). But 'Core family', 'REPORT heads' and 'convergence readiness' are unexplained domain jargon, and nothing distinguishes this from sibling readers like inspect_task or read_report.

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 statement of when to call this versus inspect_task, read_task, or inspect_workspace, and no prerequisites or exclusions. The agent must guess that this is the aggregate/family-level view rather than a single-task view.

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

inspect_taskC

Read Core lifecycle, current attempt and transition evidence for a TASK.

NameRequiredDescriptionDefault
task_idYes

TDQS

C2.9/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. It implies a read-only operation and hints at the data returned, but says nothing about permissions, whether the attempt/transition data can be absent or empty, cost, or any failure mode for a lifecycle-inspection tool.

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

Conciseness4/5

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

A single front-loaded sentence with no filler. It is efficiently sized, though the jargon ('Core lifecycle', 'transition evidence') slightly reduces parsing speed without adding precision.

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?

With no annotations and no output schema, the description must explain what inspection actually returns. 'Transition evidence' and 'current attempt' are never unpacked, so an agent cannot predict the response shape or know how it differs from read_task.

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 0%, but the single parameter is task_id, whose name and required status make its meaning self-evident, and 'for a TASK' loosely ties it to the parameter. The description adds no format, ID-source, or scoping detail beyond the schema.

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?

Names a specific verb (Read) and a specific resource (Core lifecycle, current attempt and transition evidence for a TASK), so the agent knows this is a diagnostic/inspection read rather than a plain fetch. However, it never distinguishes itself from the sibling read_task, which an agent could plausibly pick instead.

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 to use this tool versus read_task, list_tasks, or inspect_workspace. Terms like 'Core lifecycle' and 'transition evidence' hint at a debugging use case but never state the condition that selects this tool.

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

inspect_workspaceA

Inspect protocol identity, envelopes, lifecycle, families and recovery facts without repair.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations at all, the description carries the full behavioral burden. 'Without repair' is a genuine disclosure that the call is non-mutating and safe to run, but nothing is said about whether it requires an initialized workspace, how expensive it is, or whether results are cached or live.

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

Conciseness4/5

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

A single front-loaded sentence with no filler, which is the right size for a no-argument tool. The only weakness is that the noun list relies on undefined domain terms, so density comes at the cost of readability.

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?

There is no output schema and no annotations, so the description is the only source of truth about what comes back. Enumerating the inspected facets is a partial answer, but an agent still cannot tell the shape of the result (per-family? per-envelope? a single blob?) or what 'recovery facts' entails.

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?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly implies no inputs are needed.

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?

Specific verb ('inspect') with an enumerated set of facets (protocol identity, envelopes, lifecycle, families, recovery facts) and a scope qualifier ('without repair') that separates it from repair-oriented siblings. It falls short of 5 because the facet terms are domain jargon and no sibling (e.g. validate_workspace, inspect_family) is explicitly contrasted.

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?

'Without repair' implies use this when you only want to look, not fix, which is useful implied guidance. However, it never states when to pick this over validate_workspace or inspect_family, nor any precondition for calling it.

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

list_issuesC

List validated canonical ISSUE facts, with deterministic filtering and pagination.

NameRequiredDescriptionDefault
limitNo
offsetNo
senderNo
severityNo
subject_refNo

TDQS

C2.7/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. 'Deterministic filtering and pagination' hints at stable ordering, but it doesn't specify default ordering, maximum limit, whether omitted filters mean 'all', or what 'validated canonical' implies about data freshness.

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

Conciseness4/5

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

A single front-loaded sentence with no wasted clauses. It is efficiently sized, though its brevity is partly the source of the other gaps.

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?

Five undocumented parameters, no annotations, and no output schema leave the agent with little operational detail. For a filtered list endpoint, the description should at minimum clarify filter semantics and pagination defaults.

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

Parameters2/5

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

Schema description coverage is 0% for all five parameters, so the description must compensate. It only implies that sender/severity/subject_ref are filters and limit/offset are pagination, without explaining matching semantics, accepted severity values, or default behavior when filters are null.

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?

States a specific verb (List) and resource (ISSUE facts), which distinguishes it from the task/report/review list siblings. 'Validated canonical facts' is jargon that adds little, but the core purpose is unmistakable.

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 guidance on when to use this versus list_tasks, list_reports, or list_reviews, and no prerequisites or exclusions. The agent must infer usage purely from the resource name.

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

list_reportsC

List REPORTs through Core, including exact attempt and head selection semantics.

NameRequiredDescriptionDefault
limitNo
offsetNo
senderNo
head_onlyNo
attempt_idNo
subject_refNo

TDQS

C2.6/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 and doesn't meet it. It says nothing about pagination behavior, ordering, default filtering when sender/attempt_id/subject_ref are null, or what 'head selection' actually means operationally.

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

Conciseness3/5

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

It is a single front-loaded sentence, so it isn't verbose, but the phrase 'including exact attempt and head selection semantics' spends words on unhelpful jargon rather than conveying information.

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?

With 6 mostly optional filter/pagination parameters, zero schema description coverage, no annotations, and no output schema, one sentence is insufficient to call this tool correctly. Nothing explains default result sets or the meaning of the head/attempt selection modes.

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

Parameters2/5

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

Schema description coverage is 0% across 6 parameters, and the description only makes a vague gesture toward 'attempt' and 'head' semantics without explaining limit, offset, sender, attempt_id, subject_ref, or head_only. An agent still cannot tell what head_only=true does or how the filter parameters interact.

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?

States a specific verb and resource ('List REPORTs'), which clearly distinguishes it from read_report and write_report among the siblings. However, 'through Core' and 'exact attempt and head selection semantics' are unexplained jargon that doesn't sharpen 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 Guidelines2/5

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

No guidance on when to use this versus read_report or list_issues/list_reviews, and no prerequisites or exclusions stated. The agent must infer usage purely from the name.

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

list_reviewsC

List validated canonical REVIEW facts; listing grants no authorization.

NameRequiredDescriptionDefault
limitNo
offsetNo
senderNo
decisionNo
review_kindNo
subject_refNo

TDQS

C2.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 full burden, and it does disclose two real traits: results are limited to validated/canonical records, and the act of listing confers no authorization. It still omits whether this is strictly read-only, pagination/ordering behavior, and how multiple filters combine, leaving material gaps for an unannotated tool.

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

Conciseness4/5

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

A single tightly written clause pair with the resource scope front-loaded ahead of the authorization caveat. No filler, though the compressed phrasing borders on cryptic.

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?

Six undocumented filter parameters, no annotations, and no output schema leave the agent without enough information to use filters correctly or understand what comes back. The description should at minimum explain the filter dimensions and the result shape/pagination.

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

Parameters2/5

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

Schema description coverage is 0% across six parameters (limit, offset, sender, decision, review_kind, subject_ref), and the description mentions none of them. An agent gets no help on what `decision` values look like, what `subject_ref` points at, or what defaults mean; only the phrase "REVIEW facts" vaguely hints at the domain.

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?

Uses a specific verb ("List") bound to a specific resource ("validated canonical REVIEW facts"), which separates it from the singular reader read_review and from list_reports/list_issues. The jargon "canonical facts" is unusual but the intent (enumerate validated review records) is inferable. It does not explicitly contrast itself with read_review.

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 only guidance is the caveat "listing grants no authorization," which says what the output does NOT do but never says when to choose this tool over read_review or how to pick among filters. An agent must guess the intended use case and retrieval strategy.

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

list_tasksC

List validated canonical TASK facts, optionally filtered by stage or relations.

NameRequiredDescriptionDefault
limitNo
stageNo
offsetNo
parentNo
senderNo
branch_ofNo
recipientNo

TDQS

C2.6/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 behavioral burden. It implies a read operation but does not disclose pagination behavior, default ordering, authentication/permission requirements, or what a 'validated canonical' fact means in practice, leaving significant 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.

Conciseness3/5

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

The single sentence is front-loaded and free of filler, but it is under-specified rather than appropriately concise. It earns its place as a summary but omits information the agent needs.

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?

With no annotations, no output schema, and seven parameters at 0% schema coverage, the one-sentence description is not complete enough. An agent lacks guidance on filtering semantics, pagination, ordering, and result shape.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for all seven parameters. It mentions only 'stage' and vaguely references 'relations,' leaving limit, offset, parent, sender, branch_of, and recipient completely unexplained in both schema and description.

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?

States a specific verb ('List') and resource ('canonical TASK facts'), so an agent knows this is a read/list operation over tasks. It does not distinguish itself from sibling list tools like list_reports or list_issues beyond the resource name, leaving some ambiguity.

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?

Only says results can be 'optionally filtered by stage or relations,' which is a capability statement rather than guidance on when to choose this tool over list_reports/list_issues or inspect_task/read_task. No exclusions, prerequisites, or alternatives are named.

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

mark_human_approvedC

Ask Core to append independent authorization evidence. Caller-supplied approver text alone is never authority; expires_at must be explicit.

NameRequiredDescriptionDefault
commentNo
approverYes
decisionYes
to_stageYes
issued_atYes
review_idYes
attempt_idNo
expires_atYes
from_stageYes
profile_refYes
issuer_proofNo
family_digestNo

TDQS

C2.7/5.0
Behavior3/5

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

With no annotations, the description usefully discloses a security-critical behavior: caller-supplied approver text alone is never authority, and expires_at must be explicit. However, it does not describe whether this is a write operation, what permissions or issuer evidence are required, what side effects occur, or what 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.

Conciseness4/5

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

The description is compact and front-loads the action before adding two critical constraints. Both sentences carry weight, though the second is terse and somewhat cryptic for a tool with 8 required parameters.

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 12-parameter, 8-required mutation-style tool with no annotations and no output schema, the description is far too incomplete. It highlights authority and expiry semantics but leaves most required parameters and the overall approval workflow unexplained.

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

Parameters2/5

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

Schema description coverage is 0% across 12 parameters, so the description must carry parameter semantics. It only adds meaning for two fields, approver and expires_at, and gives no explanation of required fields such as review_id, decision, profile_ref, from_stage, to_stage, or issued_at.

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

Purpose3/5

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

The description gives a specific but unusually abstract action: 'Ask Core to append independent authorization evidence.' It is not a tautology, but it never plainly says this marks a human approval or explains how it differs from sibling tools like approve_task, so the agent must infer the core purpose.

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 explicit when-to-use guidance and no mention of alternatives such as approve_task or reject_task. The description provides constraints on authority and expiry, but it does not tell the agent when this tool should be selected over its siblings.

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

merge_branchesC

Record the caller's convergence decision atomically in Core; never choose winners or archive the root.

NameRequiredDescriptionDefault
senderYes
recipientYes
conclusionYes
operation_idYes
root_task_idYes
workspace_idYes
branch_report_headsYes
conflict_resolutionYes
expected_family_digestYes

TDQS

C2.2/5.0
Behavior2/5

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

With no annotations, the description must carry the full behavioral burden. It discloses atomicity and clarifies that the tool does not choose winners or archive the root, which is valuable. But for a 9-parameter mutation it omits idempotency, permission/authorization requirements, failure behavior (e.g., expected_family_digest mismatch), and what gets persisted or returned.

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

Conciseness4/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 states the atomic record action and the key non-actions. It is appropriately concise, though its brevity is also a cause of missing information captured in other dimensions.

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

Completeness1/5

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

Given 9 required parameters, 0% schema coverage, a nested object, no output schema, and no annotations, the description is far from complete enough for an agent to invoke this correctly. It leaves nearly every parameter and all result/error semantics undefined.

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

Parameters1/5

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

Schema description coverage is 0% across 9 required parameters, including a nested object (branch_report_heads). The description provides no meaning for any parameter — not root_task_id, expected_family_digest, conclusion, conflict_resolution, operation_id, sender, or recipient — leaving an agent unable to fill the schema correctly.

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

Purpose3/5

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

The description states a specific action ('Record ... convergence decision atomically in Core') and adds exclusions ('never choose winners or archive the root'), which helps distinguish it from a true merge or archive operation. However, terms like 'convergence decision' and 'Core' are jargon-heavy and the purpose remains somewhat vague without schema context.

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 implies usage after a convergence decision but gives no explicit when-to-use conditions, prerequisites, or named alternatives. The exclusions ('never choose winners or archive the root') are useful but do not tell an agent which sibling tool to use instead.

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

read_reportC

Read a canonical REPORT through Core identity resolution.

NameRequiredDescriptionDefault
filename_or_idYes

TDQS

C2.6/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 behavioral-disclosure burden. It states only 'read' and an opaque 'Core identity resolution' process, without explaining permissions, resolution behavior, error conditions, or response characteristics.

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

Conciseness3/5

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

The description is a single front-loaded sentence with no wasted preamble. However, the dense jargon in 'canonical REPORT through Core identity resolution' reduces clarity rather than earning its place as useful detail.

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?

With no annotations, no output schema, and 0% parameter description coverage, the description is too thin for an agent to know how this tool behaves beyond the bare action. It does not explain what a 'canonical' report is or how identity resolution affects the result.

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

Parameters2/5

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

The only parameter is filename_or_id, but schema description coverage is 0% and the description provides no additional explanation of accepted formats, ID resolution rules, or ambiguity handling. The parameter name itself is somewhat self-explanatory, but the description adds no semantic value.

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 identifies a read operation on a REPORT resource, so the basic action is identifiable. However, terms like 'canonical' and 'Core identity resolution' are unexplained jargon, and the description does not differentiate read_report from siblings such as list_reports or read_task.

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 gives no guidance on when to use this tool versus list_reports, read_task, or read_review. There are no stated prerequisites, exclusions, or alternative-selection rules.

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

read_reviewB

Read a validated REVIEW from its canonical bucket without changing its decision.

NameRequiredDescriptionDefault
review_idYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description partially discloses behavior: it is non-mutating ('without changing its decision') and limited to validated reviews. It does not cover permissions, failure behavior for unvalidated or missing IDs, or what the response contains.

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

Conciseness4/5

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

A single front-loaded sentence with no filler. The phrasing 'canonical bucket' is slightly obscure, but overall it is efficient and appropriately sized.

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 simple one-parameter read tool with no output schema, the description covers the core action and read-only nature. It remains incomplete on how to obtain or format the review_id and what the read returns.

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

Parameters2/5

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

The single parameter, review_id, has 0% schema description coverage and the description says nothing about its format, source, or examples. The parameter name is self-explanatory but the description fails to compensate for the schema gap.

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?

States a specific verb ('Read') and resource ('REVIEW'), and adds qualifying scope ('validated', 'canonical bucket'). It is clearly distinct from write_review and list_reviews, though it does not explicitly name those siblings.

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 'without changing its decision' implies read-only usage, and 'validated' implies a constraint on which reviews can be read. However, it never states when to choose read_review versus list_reviews or inspect tools, nor any preconditions for obtaining a review_id.

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

read_taskC

Read a canonical TASK by its typed identity through Core.

NameRequiredDescriptionDefault
task_idYes

TDQS

C2.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 disclosure burden, yet it says nothing about what happens when the task_id is unknown, whether the result is a snapshot or live state, or permission requirements. "Canonical" weakly hints that the returned record is authoritative but is not elaborated.

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

Conciseness4/5

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

A single front-loaded sentence with the verb first and no filler sentences. It is efficient, though the brevity comes at the cost of the missing guidance noted elsewhere.

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?

With no annotations, no output schema, and an undocumented parameter, the description leaves too much unsaid for an agent to call this correctly. It omits both the identifier format and the shape of the returned task record.

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

Parameters2/5

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

There is one required parameter with 0% schema description coverage, so the description must compensate. "Typed identity" gestures at the meaning of task_id but gives no format, source, or example of what a typed task identity looks like versus other identifiers used by sibling tools.

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

Purpose3/5

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

The verb+resource pair ("read a canonical TASK") is clear enough, but the qualifiers "typed identity" and "through Core" are internal jargon that add no discriminating information. It also fails to distinguish itself from the sibling inspect_task, which plausibly does the same thing, so an agent cannot choose between them from the text.

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 statement of when to use this versus inspect_task or list_tasks, and no prerequisites or error conditions. The description only implies usage through the word "Read".

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

reject_taskD

Request Core T5 review to active; Core validates evidence and advances the attempt.

NameRequiredDescriptionDefault
actorYes
task_idYes
report_refYes
review_refYes
profile_refYes
authorization_refYes

TDQS

D1.6/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 behavioral burden, but it only vaguely references a Core T5 review workflow. It does not explain what rejection does, whether it is final, what permissions or authorization are required, or what side effects occur.

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

Conciseness2/5

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

The description is short but cryptic rather than concise. Jargon such as 'Core T5', 'active', and 'attempt' is not front-loaded or explained, so the single sentence does not earn its place.

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

Completeness1/5

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

For a six-parameter, fully required mutation-style tool with no annotations and no output schema, the description is completely inadequate. It does not explain the operation, the parameters, the authorization model, or the outcome.

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

Parameters1/5

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

The schema has six required parameters with 0% description coverage, and the description explains none of them. Terms like report_ref, review_ref, authorization_ref, and profile_ref remain completely undefined.

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

Purpose2/5

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

The tool name says reject_task, but the description instead talks about requesting 'Core T5 review to active' and Core advancing the attempt. It does not clearly state that this tool rejects a task, nor does it distinguish the operation from sibling tools like approve_task or reopen_task.

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

Usage Guidelines1/5

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

There is no guidance on when to use this tool instead of approve_task, reopen_task, or other task-state tools. The description gives no conditions, prerequisites, or exclusions, so an agent cannot confidently choose it over alternatives.

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

reopen_taskC

Request Core T6 done to active with explicit reopen evidence and authorization.

NameRequiredDescriptionDefault
actorYes
task_idYes
review_refYes
profile_refYes
authorization_refYes

TDQS

C2.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 disclosure burden. It hints that authorization and evidence are required, but says nothing about side effects, whether the transition is reversible, what happens to prior approvals/reviews, or failure modes—significant gaps for a mutation tool with zero annotation coverage.

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

Conciseness3/5

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

It is a single front-loaded sentence with no wasted clauses, but efficiency is undercut by opaque jargon ('Core T6', 'done to active') that consumes the sentence without adding comprehensible meaning.

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 five-parameter, all-required mutation tool with no annotations and no output schema, the description is far too thin. It neither explains the parameters nor the operational consequences of the transition, leaving the agent under-equipped to invoke it correctly.

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

Parameters2/5

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

Schema coverage is 0% across five required parameters, and the description only loosely gestures at 'evidence' and 'authorization' without mapping them to review_ref, authorization_ref, profile_ref, actor, or task_id. The agent gets no field-level meaning beyond what the bare property names suggest.

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

Purpose3/5

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

The name and description together convey a state transition (done -> active) on a task, which distinguishes it from siblings like claim_task or submit_task. However, the phrase 'Core T6' is unexplained internal jargon that blocks a clean reading of what the tool actually does, so the purpose is only partially clear.

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 explicit guidance on when to use this tool versus alternatives (approve_task, reject_task, claim_task), nor any stated preconditions or when-not-to-use cases. 'Explicit reopen evidence and authorization' implies prerequisites exist but never spells out the conditions that should trigger a reopen.

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

submit_taskD

Request Core T3 active to review with the explicit current-attempt REPORT.

NameRequiredDescriptionDefault
actorYes
task_idYes
report_refYes

TDQS

D1.7/5.0
Behavior1/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 and fails. It does not say whether this mutates task state, what 'Core T3 active' review means, what happens if the report is stale or missing, whether the call is idempotent, or what permissions the actor needs.

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

Conciseness2/5

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

One short sentence, but the brevity comes from under-specification rather than efficiency; the most important information is compressed into opaque terms like 'Core T3 active' and 'explicit current-attempt'.

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

Completeness1/5

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

For a three-required-parameter state-changing tool with no annotations and no output schema, the description supplies essentially none of the operational context an agent needs. Nothing explains the review lifecycle, preconditions, or outcome.

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

Parameters2/5

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

Schema description coverage is 0% for three required parameters, so the description must compensate and does not. 'REPORT' loosely maps to report_ref, but task_id and actor are never explained, nor is the expected format of any identifier.

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

Purpose2/5

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

The phrase 'Request Core T3 active to review' gestures at submitting something for review, but 'Core T3 active' is unexplained internal jargon that an agent cannot decode. The object 'the explicit current-attempt REPORT' hints the resource is a report, yet the tool name (submit_task) and the description don't converge on a plain verb+resource statement.

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 indication of when to use this versus write_report, approve_task, or the other task-lifecycle siblings. The word 'explicit' and 'current-attempt' imply preconditions (a report must already exist and be current) but never state them as rules.

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

validate_workspaceA

Deterministically validate canonical workspace facts through Core validators; never repair or consult host/runtime state.

NameRequiredDescriptionDefault

No parameters

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 full burden, and it does disclose two meaningful traits: the validation is deterministic and it does not touch host/runtime state or perform repairs (implying a non-mutating, sandboxed read). It omits what happens on failure, whether it raises errors or returns findings, and whether it requires a prior init.

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

Conciseness4/5

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

A single front-loaded sentence with the action first and the constraints second; every clause carries information. Mild jargon ('Core validators', 'canonical workspace facts') costs a little immediate comprehension but no words are wasted.

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 zero-parameter tool with no output schema and no annotations, the description covers what it validates and what it refuses to do, but leaves the agent guessing about the result shape (pass/fail? list of violations?) and about prerequisites. Adequate but with a real gap in how to interpret the outcome.

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?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The sentence correctly implies the workspace is identified implicitly by context rather than by arguments.

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?

States a specific verb ('validate') and resource ('canonical workspace facts') plus the mechanism ('Core validators'), which is enough to distinguish it from siblings like init_workspace or inspect_workspace. It stops short of explicitly naming the sibling it is not, so it lands at clear-but-undifferentiated.

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?

'Never repair or consult host/runtime state' provides useful exclusionary guidance about what this tool is not for, implying it should be used for static canonical-fact checking. However, it never says when to prefer it over inspect_workspace or what precondition (e.g., after init_workspace) makes it appropriate.

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

write_issueC

Append a Core ISSUE with explicit workspace and subject identity.

NameRequiredDescriptionDefault
bodyYes
senderYes
severityYes
recipientYes
referencesNo
subject_refYes
workspace_idYes

TDQS

C2.7/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 behavioral disclosure, but it only says 'append' and mentions workspace/subject identity. It omits permissions, idempotency or duplicate behavior, severity semantics, and side effects for a six-required-parameter write tool.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no filler. Brevity is structurally appropriate, though it leaves other dimensions underdeveloped.

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?

Given seven parameters, six required, no annotations, no output schema, and 0% schema descriptions, the definition is far from complete. It does not explain valid formats, required identity relationships, severity values, or expected results.

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

Parameters2/5

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

Schema description coverage is 0%, so the description should explain all seven parameters. It adds only vague meaning for workspace_id and subject_ref, leaving sender, recipient, body, severity, and references undocumented in both schema and description.

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 verb 'Append' plus the resource 'Core ISSUE' makes the action identifiable and distinguishes it from list_issues and read_review siblings. 'Core ISSUE' is domain jargon that is not explained, so it is clear but not fully self-contained.

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 to use this tool versus list_issues or other write tools, and no prerequisites or exclusions are stated. The sentence only implies that this is a write operation.

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

write_reportC

Append a Core REPORT for the explicit TASK attempt; reporting does not accept or archive work.

NameRequiredDescriptionDefault
bodyYes
resultYes
senderYes
recipientYes
attempt_idYes
referencesNo
report_kindNofinal
subject_refYes
workspace_idYes

TDQS

C2.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 full burden; it does disclose the append-only nature and that the call does not accept or archive work, which is the key safety distinction. It says nothing about prerequisites (must the attempt exist?), permissions, idempotency of repeated appends, or failure modes for a 9-parameter mutation.

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

Conciseness4/5

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

A single front-loaded sentence with no filler; the scope ('Append') and the key constraint (not accept/archive) come first. Its brevity is efficient, though it borders on under-specified for the parameter surface.

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?

Nine parameters, seven required, zero schema descriptions, no annotations, no output schema — this is exactly where the description needs depth, and it provides one sentence. An agent cannot tell what belongs in body versus result or what report_kind values mean.

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

Parameters1/5

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

Schema description coverage is 0% across 9 parameters, so the description must compensate, yet it names no parameters. 'attempt' hints at attempt_id and 'TASK' hints at subject_ref, but body, result, sender, recipient, report_kind, references, and workspace_id are entirely unexplained.

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?

States a specific verb and resource ('Append a Core REPORT') scoped to a TASK attempt, and distinguishes itself from state-changing siblings by saying reporting 'does not accept or archive work'. The jargon 'Core REPORT' and 'explicit TASK attempt' keep it from being fully 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?

Provides one useful exclusion ('does not accept or archive work'), implicitly pointing at submit_task/approve_task/archive_task as the alternatives for state change. It never positively says when to choose write_report over write_issue or write_review, so guidance remains inferred.

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

write_reviewC

Append a typed Core REVIEW. Authority is evaluated only by trusted startup Profile evaluators.

NameRequiredDescriptionDefault
bodyYes
senderYes
decisionYes
issued_atNo
recipientYes
attempt_idNo
expires_atNo
referencesNo
transitionNo
profile_refNo
review_kindYes
subject_refYes
issuer_proofNo
workspace_idYes
family_digestNo
operation_kindNo
authorization_refNo
authorization_scopeNo

TDQS

C2.1/5.0
Behavior2/5

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

No annotations exist, so the description carries the full burden. It notes that authority is evaluated by trusted startup Profile evaluators, which is a useful behavioral clue about authorization, but says nothing about mutation effects, required permissions, whether appends are idempotent, or what happens on failure. For a write tool with 18 parameters, this is far too thin.

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

Conciseness3/5

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

Short and front-loaded with the verb+resource, so it is not padded. However, the brevity is under-specification rather than conciseness: the second sentence introduces an important authorization concept without explaining it.

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

Completeness1/5

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

No annotations, no output schema, 18 parameters with 0% schema description coverage, and a two-sentence description. The agent lacks what it needs to invoke this tool correctly: parameter meaning, review_kind/decision values, and the relationship between sender, recipient, subject_ref, and profile_ref are all unexplained.

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

Parameters1/5

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

Schema description coverage is 0% and the description explains no parameters at all. With 18 parameters including ambiguous fields like review_kind, decision, subject_ref, transition, family_digest, and issuer_proof, the absence of any semantic guidance is a severe gap.

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

Purpose3/5

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

States a specific verb ("Append") and resource ("Core REVIEW"), which is better than tautology. But "typed Core REVIEW" is jargon that doesn't clarify what a review is versus a report or issue, and the description never distinguishes this tool from siblings like write_report, write_issue, or list_reviews.

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 guidance on when to use write_review instead of write_report or write_issue, no prerequisites, no workflow context. The authority sentence hints at a gate but doesn't tell the agent when this tool is appropriate.

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. 52 tool updatesv4.0.5
    • Changedapprove_task10 fields changed
      • removedInput schema / properties / actor / default
        Removed value: -"ADMIN"
      • removedInput schema / properties / actor / description
        Removed value: -"Role code of the approver (default ``\"ADMIN\"``)."
      • addedInput schema / properties / authorization_ref
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / note
        Removed value: -{
        -  "default": "",
        -  "description": "Optional approval note appended to the transition event.",
        -  "type": "string"
        -}
      • addedInput schema / properties / profile_ref
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / report_ref
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / review_ref
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / task_id / description
        Removed value: -"Task ID or full filename."
      • changedInput schema / required
        Previous value: -[
        -  "task_id"
        -]New value: +[
        +  "task_id",
        +  "actor",
        +  "report_ref",
        +  "review_ref",
        +  "authorization_ref",
        +  "profile_ref"
        +]
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "type": "object",
        -  "x-fastmcp-wrap-result": true
        -}New value: +null
    • Changedarchive_task9 fields changed
      • addedInput schema / properties / actor
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / authorization_ref
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / family_digest
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • removedInput schema / properties / lang
        Removed value: -{
        -  "default": "",
        -  "description": "Kept for 0.5.4 parity; currently unused because the\nlibrary does not need locale for this operation.",
        -  "type": "string"
        -}
      • addedInput schema / properties / profile_ref
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / review_ref
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • removedInput schema / properties / task_id / description
        Removed value: -"Task ID (e.g. ``TASK-20260423-001``) or full filename."
      • changedInput schema / required
        Previous value: -[
        -  "task_id"
        -]New value: +[
        +  "task_id",
        +  "actor",
        +  "authorization_ref",
        +  "profile_ref"
        +]
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "type": "object",
        -  "x-fastmcp-wrap-result": true
        -}New value: +null
    • Removedarchive_to_history
    • Removedbulk_archive_to_history
    • Removedcheck_update
    • Changedclaim_task5 fields changed
      • removedInput schema / properties / actor / default
        Removed value: -"agent"
      • removedInput schema / properties / actor / description
        Removed value: -"Role code of the agent claiming the task (default ``\"agent\"``)."
      • removedInput schema / properties / task_id / description
        Removed value: -"Task ID (e.g. ``TASK-20260423-001``) or full filename."
      • changedInput schema / required
        Previous value: -[
        -  "task_id"
        -]New value: +[
        +  "task_id",
        +  "actor"
        +]
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "type": "object",
        -  "x-fastmcp-wrap-result": true
        -}New value: +null
    • Addedcreate_branch
    • Removedcreate_custom_team
    • Changedcreate_task23 fields changed
      • removedInput schema / properties / body / description
        Removed value: -"Task body in Markdown."
      • addedInput schema / properties / branch_of
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / operation_id
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / parent
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • removedInput schema / properties / priority / description
        Removed value: -"``P0`` / ``P1`` / ``P2`` / ``P3`` (or legacy aliases).\n        Default: ``P2``."
      • removedInput schema / properties / recipient / description
        Removed value: -"Recipient role code (uppercase). May use the slot\n        form ``ROLE.D1`` or ``TEAM`` for broadcast."
      • addedInput schema / properties / references / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / references / default
        Previous value: -""New value: +null
      • removedInput schema / properties / references / description
        Removed value: -"Comma-separated task filenames for ``references:`` field."
      • removedInput schema / properties / references / type
        Removed value: -"string"
      • addedInput schema / properties / risk_level / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / risk_level / default
        Previous value: -""New value: +null
      • removedInput schema / properties / risk_level / description
        Removed value: -"``low`` / ``medium`` / ``high`` / ``irreversible``.\n        Leave empty to accept the default (``medium``)."
      • removedInput schema / properties / risk_level / type
        Removed value: -"string"
      • removedInput schema / properties / sender / description
        Removed value: -"Sender role code (uppercase)."
      • removedInput schema / properties / subject / description
        Removed value: -"One-line subject for the ``subject:`` frontmatter field."
      • addedInput schema / properties / thread_key / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / thread_key / default
        Previous value: -""New value: +null
      • removedInput schema / properties / thread_key / description
        Removed value: -"Optional thread identifier."
      • removedInput schema / properties / thread_key / type
        Removed value: -"string"
      • addedInput schema / properties / workspace_id
        Added value: +{
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "sender",
        -  "recipient",
        -  "subject",
        -  "body"
        -]New value: +[
        +  "workspace_id",
        +  "operation_id",
        +  "sender",
        +  "recipient",
        +  "subject",
        +  "body"
        +]
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "type": "object",
        -  "x-fastmcp-wrap-result": true
        -}New value: +null
    • Removeddeploy_role_templates
    • Removeddrop_suggestion
    • Removedfcop_audit
    • Removedfcop_check
    • Removedfcop_create_alert
    • Removedfcop_list_alerts
    • Removedfcop_report
    • Removedfinish_task
    • Removedget_available_teams
    • Removedget_governance_summary
    • Removedget_team_status
    • Removedinit_project
    • Removedinit_solo
    • Addedinit_workspace
    • Addedinspect_family
    • Changedinspect_task4 fields changed
      • removedInput schema / properties / filename
        Removed value: -{
        -  "description": "Task filename or ID (same forms as ``read_task``).",
        -  "type": "string"
        -}
      • addedInput schema / properties / task_id
        Added value: +{
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filename"
        -]New value: +[
        +  "task_id"
        +]
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "type": "object",
        -  "x-fastmcp-wrap-result": true
        -}New value: +null
    • Addedinspect_workspace
    • Removedlist_governance_events
    • Removedlist_history
    • Changedlist_issues14 fields changed
      • removedInput schema / properties / lang
        Removed value: -{
        -  "default": "",
        -  "description": "Kept for 0.5.4 parity; currently unused.",
        -  "type": "string"
        -}
      • addedInput schema / properties / limit / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / limit / default
        Previous value: -0New value: +null
      • removedInput schema / properties / limit / description
        Removed value: -"Maximum number of rows (0 = no limit)."
      • removedInput schema / properties / limit / type
        Removed value: -"integer"
      • removedInput schema / properties / offset / description
        Removed value: -"Number of rows to skip."
      • removedInput schema / properties / reporter
        Removed value: -{
        -  "default": "",
        -  "description": "Filter by reporter role code (case-insensitive).",
        -  "type": "string"
        -}
      • addedInput schema / properties / sender
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / severity / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / severity / default
        Previous value: -""New value: +null
      • removedInput schema / properties / severity / description
        Removed value: -"Filter by severity (``critical`` / ``high`` /\n``medium`` / ``low``). Empty = all."
      • removedInput schema / properties / severity / type
        Removed value: -"string"
      • addedInput schema / properties / subject_ref
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "type": "object",
        -  "x-fastmcp-wrap-result": true
        -}New value: +null
    • Changedlist_reports13 fields changed
      • addedInput schema / properties / attempt_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / head_only
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
      • addedInput schema / properties / limit / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / limit / default
        Previous value: -0New value: +null
      • removedInput schema / properties / limit / description
        Removed value: -"Maximum number of rows (0 = no limit)."
      • removedInput schema / properties / limit / type
        Removed value: -"integer"
      • removedInput schema / properties / offset / description
        Removed value: -"Number of rows to skip."
      • removedInput schema / properties / reporter
        Removed value: -{
        -  "default": "",
        -  "description": "Filter by reporter role code (case-insensitive).",
        -  "type": "string"
        -}
      • addedInput schema / properties / sender
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • removedInput schema / properties / status
        Removed value: -{
        -  "default": "open",
        -  "description": "``open`` (default), ``archived``, or ``all``.",
        -  "type": "string"
        -}
      • addedInput schema / properties / subject_ref
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • removedInput schema / properties / task_id
        Removed value: -{
        -  "default": "",
        -  "description": "Filter by source task ID.",
        -  "type": "string"
        -}
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "type": "object",
        -  "x-fastmcp-wrap-result": true
        -}New value: +null
    • Changedlist_reviews16 fields changed
      • addedInput schema / properties / decision / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / decision / default
        Previous value: -""New value: +null
      • removedInput schema / properties / decision / description
        Removed value: -"Filter by decision value (``approved`` / ``rejected``\n/ ``needs_changes`` / ``abstained`` / ``needs_human``)."
      • removedInput schema / properties / decision / type
        Removed value: -"string"
      • addedInput schema / properties / limit / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / limit / default
        Previous value: -0New value: +null
      • removedInput schema / properties / limit / description
        Removed value: -"Maximum number of rows (0 = no limit)."
      • removedInput schema / properties / limit / type
        Removed value: -"integer"
      • removedInput schema / properties / offset / description
        Removed value: -"Skip this many rows."
      • addedInput schema / properties / review_kind
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • removedInput schema / properties / reviewer_role
        Removed value: -{
        -  "default": "",
        -  "description": "Filter by reviewer role code.",
        -  "type": "string"
        -}
      • addedInput schema / properties / sender
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • removedInput schema / properties / status
        Removed value: -{
        -  "default": "open",
        -  "description": "``open`` (default) / ``archived`` / ``all``.",
        -  "type": "string"
        -}
      • addedInput schema / properties / subject_ref
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • removedInput schema / properties / subject_type
        Removed value: -{
        -  "default": "",
        -  "description": "Filter by subject type (``task`` / ``report`` /\n``role_switch`` / ``code_change``).",
        -  "type": "string"
        -}
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "type": "object",
        -  "x-fastmcp-wrap-result": true
        -}New value: +null
    • Changedlist_tasks19 fields changed
      • addedInput schema / properties / branch_of
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • removedInput schema / properties / date
        Removed value: -{
        -  "default": "",
        -  "description": "Filter by YYYYMMDD date stamp.",
        -  "type": "string"
        -}
      • addedInput schema / properties / limit / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / limit / default
        Previous value: -0New value: +null
      • removedInput schema / properties / limit / description
        Removed value: -"Maximum number of rows to return (0 = no limit)."
      • removedInput schema / properties / limit / type
        Removed value: -"integer"
      • removedInput schema / properties / offset / description
        Removed value: -"Number of rows to skip before returning."
      • addedInput schema / properties / parent
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / recipient / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / recipient / default
        Previous value: -""New value: +null
      • removedInput schema / properties / recipient / description
        Removed value: -"Filter by recipient role code. Matches ``to-ROLE``,\n``to-ROLE.SLOT``, and ``to-TEAM`` broadcasts."
      • removedInput schema / properties / recipient / type
        Removed value: -"string"
      • addedInput schema / properties / sender / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / sender / default
        Previous value: -""New value: +null
      • removedInput schema / properties / sender / description
        Removed value: -"Filter by sender role code (case-insensitive)."
      • removedInput schema / properties / sender / type
        Removed value: -"string"
      • addedInput schema / properties / stage
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • removedInput schema / properties / status
        Removed value: -{
        -  "default": "open",
        -  "description": "``open`` (default), ``archived``, or ``all``.",
        -  "type": "string"
        -}
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "type": "object",
        -  "x-fastmcp-wrap-result": true
        -}New value: +null
    • Removedlist_workspaces
    • Changedmark_human_approved15 fields changed
      • removedInput schema / properties / approver / description
        Removed value: -"Role code of the human approver. MUST be an agent\nwith ``layer: admin`` (e.g. ``ADMIN``)."
      • addedInput schema / properties / attempt_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • removedInput schema / properties / channel
        Removed value: -{
        -  "default": "cli",
        -  "description": "Channel through which the approval was submitted.\nOne of ``mobile`` / ``cli`` / ``web`` / ``manual_file_edit``.\nDefault: ``cli``.",
        -  "type": "string"
        -}
      • removedInput schema / properties / comment / description
        Removed value: -"Optional free-text comment from the approver."
      • removedInput schema / properties / decision / description
        Removed value: -"Human's binary decision: ``approve`` or ``reject``."
      • addedInput schema / properties / expires_at
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • addedInput schema / properties / family_digest
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / from_stage
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / issued_at
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / issuer_proof
        Added value: +{
        +  "default": null,
        +  "title": "Issuer Proof"
        +}
      • addedInput schema / properties / profile_ref
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / review_id / description
        Removed value: -"The stable review ID — filename stem without ``.md``\n(e.g. ``REVIEW-20260510-001-ADMIN-on-some-task``)."
      • addedInput schema / properties / to_stage
        Added value: +{
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "review_id",
        -  "approver",
        -  "decision"
        -]New value: +[
        +  "review_id",
        +  "decision",
        +  "approver",
        +  "profile_ref",
        +  "from_stage",
        +  "to_stage",
        +  "issued_at",
        +  "expires_at"
        +]
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "type": "object",
        -  "x-fastmcp-wrap-result": true
        -}New value: +null
    • Addedmerge_branches
    • Removednew_workspace
    • Removedread_history_task
    • Changedread_report4 fields changed
      • removedInput schema / properties / filename
        Removed value: -{
        -  "description": "Report filename or the ``task_id`` the report was\nfiled against.",
        -  "type": "string"
        -}
      • addedInput schema / properties / filename_or_id
        Added value: +{
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filename"
        -]New value: +[
        +  "filename_or_id"
        +]
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "type": "object",
        -  "x-fastmcp-wrap-result": true
        -}New value: +null
    • Changedread_review4 fields changed
      • removedInput schema / properties / filename
        Removed value: -{
        -  "description": "Review filename or review ID\n(``REVIEW-YYYYMMDD-NNN-{reviewer}-on-{slug}[.md]``).",
        -  "type": "string"
        -}
      • addedInput schema / properties / review_id
        Added value: +{
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filename"
        -]New value: +[
        +  "review_id"
        +]
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "type": "object",
        -  "x-fastmcp-wrap-result": true
        -}New value: +null
    • Changedread_task4 fields changed
      • removedInput schema / properties / filename
        Removed value: -{
        -  "description": "Task filename (e.g. ``TASK-20260423-001-PM-to-DEV.md``)\nor plain task ID (e.g. ``TASK-20260423-001``). Both open\nand archived tasks are searched.",
        -  "type": "string"
        -}
      • addedInput schema / properties / task_id
        Added value: +{
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "filename"
        -]New value: +[
        +  "task_id"
        +]
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "type": "object",
        -  "x-fastmcp-wrap-result": true
        -}New value: +null
    • Removedredeploy_rules
    • Changedreject_task10 fields changed
      • removedInput schema / properties / actor / default
        Removed value: -"ADMIN"
      • removedInput schema / properties / actor / description
        Removed value: -"Role code of the rejector (default ``\"ADMIN\"``)."
      • addedInput schema / properties / authorization_ref
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / note
        Removed value: -{
        -  "default": "",
        -  "description": "Mandatory rejection reason (strongly recommended).",
        -  "type": "string"
        -}
      • addedInput schema / properties / profile_ref
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / report_ref
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / review_ref
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / task_id / description
        Removed value: -"Task ID or full filename."
      • changedInput schema / required
        Previous value: -[
        -  "task_id"
        -]New value: +[
        +  "task_id",
        +  "actor",
        +  "report_ref",
        +  "review_ref",
        +  "authorization_ref",
        +  "profile_ref"
        +]
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "type": "object",
        -  "x-fastmcp-wrap-result": true
        -}New value: +null
    • Addedreopen_task
    • Removedset_project_dir
    • Changedsubmit_task6 fields changed
      • removedInput schema / properties / actor / default
        Removed value: -"agent"
      • removedInput schema / properties / actor / description
        Removed value: -"Role code of the agent submitting the task."
      • addedInput schema / properties / report_ref
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / task_id / description
        Removed value: -"Task ID or full filename."
      • changedInput schema / required
        Previous value: -[
        -  "task_id"
        -]New value: +[
        +  "task_id",
        +  "actor",
        +  "report_ref"
        +]
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "type": "object",
        -  "x-fastmcp-wrap-result": true
        -}New value: +null
    • Removedupgrade_fcop
    • Removedvalidate_team_config
    • Addedvalidate_workspace
    • Changedwrite_issue12 fields changed
      • removedInput schema / properties / body / description
        Removed value: -"Detailed issue body in Markdown."
      • addedInput schema / properties / recipient
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / references
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • removedInput schema / properties / reporter
        Removed value: -{
        -  "description": "Reporter role code (uppercase).",
        -  "type": "string"
        -}
      • addedInput schema / properties / sender
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / severity / default
        Removed value: -"medium"
      • removedInput schema / properties / severity / description
        Removed value: -"``critical`` / ``high`` / ``medium`` / ``low``.\nAliases: ``P0`` → critical, ``P1`` → high, ``P2`` →\nmedium, ``P3`` → low."
      • addedInput schema / properties / subject_ref
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / summary
        Removed value: -{
        -  "description": "One-line summary written into the filename and\nfrontmatter.",
        -  "type": "string"
        -}
      • addedInput schema / properties / workspace_id
        Added value: +{
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "reporter",
        -  "summary",
        -  "body"
        -]New value: +[
        +  "workspace_id",
        +  "sender",
        +  "recipient",
        +  "subject_ref",
        +  "body",
        +  "severity"
        +]
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "type": "object",
        -  "x-fastmcp-wrap-result": true
        -}New value: +null
    • Changedwrite_report15 fields changed
      • addedInput schema / properties / attempt_id
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / body / description
        Removed value: -"Report body in Markdown."
      • removedInput schema / properties / priority
        Removed value: -{
        -  "default": "P2",
        -  "description": "FCoP priority; accepts ``P0``–``P3`` and aliases.",
        -  "type": "string"
        -}
      • removedInput schema / properties / recipient / description
        Removed value: -"Recipient role code (typically the PM)."
      • addedInput schema / properties / references
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / report_kind
        Added value: +{
        +  "default": "final",
        +  "type": "string"
        +}
      • removedInput schema / properties / reporter
        Removed value: -{
        -  "description": "Reporter role code (uppercase).",
        -  "type": "string"
        -}
      • addedInput schema / properties / result
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sender
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / status
        Removed value: -{
        -  "default": "done",
        -  "description": "``done`` / ``in_progress`` / ``blocked``.",
        -  "type": "string"
        -}
      • addedInput schema / properties / subject_ref
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / task_id
        Removed value: -{
        -  "description": "Source task ID (e.g. ``TASK-20260423-001``).",
        -  "type": "string"
        -}
      • addedInput schema / properties / workspace_id
        Added value: +{
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "task_id",
        -  "reporter",
        -  "recipient",
        -  "body"
        -]New value: +[
        +  "workspace_id",
        +  "sender",
        +  "recipient",
        +  "subject_ref",
        +  "attempt_id",
        +  "body",
        +  "result"
        +]
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "type": "object",
        -  "x-fastmcp-wrap-result": true
        -}New value: +null
    • Changedwrite_review27 fields changed
      • addedInput schema / properties / attempt_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / authorization_ref
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / authorization_scope
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • removedInput schema / properties / body / default
        Removed value: -""
      • removedInput schema / properties / body / description
        Removed value: -"Additional Markdown body after the frontmatter."
      • removedInput schema / properties / decision / description
        Removed value: -"Review decision. One of:\n``approved`` — artefact is accepted;\n``rejected`` — artefact is rejected (cannot proceed);\n``needs_changes`` — must be revised (requires ``required_changes``);\n``abstained`` — reviewer recuses;\n``needs_human`` — reviewer escalates to human (ADR-0025,\nv1.1). The review stays pending until ``mark_human_approved``\nis called to close the loop."
      • addedInput schema / properties / expires_at
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / family_digest
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / issued_at
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / issuer_proof
        Added value: +{
        +  "default": null,
        +  "title": "Issuer Proof"
        +}
      • addedInput schema / properties / operation_kind
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / profile_ref
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • removedInput schema / properties / rationale
        Removed value: -{
        -  "default": "",
        -  "description": "Free-text rationale for the decision. Recommended\nfor all non-``approved`` decisions.",
        -  "type": "string"
        -}
      • addedInput schema / properties / recipient
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / references
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • removedInput schema / properties / required_changes
        Removed value: -{
        -  "default": "",
        -  "description": "Newline- or comma-separated list of required\nchanges. Mandatory when ``decision=needs_changes``.",
        -  "type": "string"
        -}
      • addedInput schema / properties / review_kind
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / reviewer_agent
        Removed value: -{
        -  "default": "",
        -  "description": "Optional agent/session identifier on top of\nthe role code.",
        -  "type": "string"
        -}
      • removedInput schema / properties / reviewer_role
        Removed value: -{
        -  "description": "Role code of the reviewer (must have\n``review_decision`` capability; typically ``layer: governance``\nor ``layer: admin``).",
        -  "type": "string"
        -}
      • addedInput schema / properties / sender
        Added value: +{
        +  "type": "string"
        +}
      • removedInput schema / properties / subject_ref / description
        Removed value: -"Reference to the artefact under review —\nfile path for task/report/code_change; fcop.json diff range\nfor role_switch."
      • removedInput schema / properties / subject_short
        Removed value: -{
        -  "default": "",
        -  "description": "Override the ``-on-{slug}`` segment of the\nfilename. Auto-derived from ``subject_ref`` when omitted.",
        -  "type": "string"
        -}
      • removedInput schema / properties / subject_type
        Removed value: -{
        -  "description": "What is being reviewed. One of\n``task`` / ``report`` / ``role_switch`` / ``code_change``.",
        -  "type": "string"
        -}
      • addedInput schema / properties / transition
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / workspace_id
        Added value: +{
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "reviewer_role",
        -  "subject_type",
        -  "subject_ref",
        -  "decision"
        -]New value: +[
        +  "workspace_id",
        +  "sender",
        +  "recipient",
        +  "subject_ref",
        +  "review_kind",
        +  "decision",
        +  "body"
        +]
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "type": "object",
        -  "x-fastmcp-wrap-result": true
        -}New value: +null
    • Removedwrite_task
  2. 45 tool updatesv3.2.4
    • First observedapprove_task
    • First observedarchive_task
    • First observedarchive_to_history
    • First observedbulk_archive_to_history
    • First observedcheck_update
    • First observedclaim_task
    • First observedcreate_custom_team
    • First observedcreate_task
    • First observeddeploy_role_templates
    • First observeddrop_suggestion
    • First observedfcop_audit
    • First observedfcop_check
    • First observedfcop_create_alert
    • First observedfcop_list_alerts
    • First observedfcop_report
    • First observedfinish_task
    • First observedget_available_teams
    • First observedget_governance_summary
    • First observedget_team_status
    • First observedinit_project
    • First observedinit_solo
    • First observedinspect_task
    • First observedlist_governance_events
    • First observedlist_history
    • First observedlist_issues
    • First observedlist_reports
    • First observedlist_reviews
    • First observedlist_tasks
    • First observedlist_workspaces
    • First observedmark_human_approved
    • First observednew_workspace
    • First observedread_history_task
    • First observedread_report
    • First observedread_review
    • First observedread_task
    • First observedredeploy_rules
    • First observedreject_task
    • First observedset_project_dir
    • First observedsubmit_task
    • First observedupgrade_fcop
    • First observedvalidate_team_config
    • First observedwrite_issue
    • First observedwrite_report
    • First observedwrite_review
    • First observedwrite_task

TDQS

C2.7/5.0

Scored across 25 tools

Disambiguation4/5

Most tools target distinct resources or lifecycle transitions, and the descriptions clarify stage-specific actions. However, inspect_task versus read_task and inspect_workspace versus validate_workspace have subtle boundaries that could cause misselection, and the many lifecycle verbs require careful reading.

Naming Consistency5/5

All tool names use consistent snake_case verb_noun phrasing, such as create_task, inspect_family, write_review, and mark_human_approved. The convention is predictable across lifecycle operations, artifact operations, and workspace operations.

Tool Count3/5

Twenty-five tools is heavy for the apparent scope, sitting at the upper boundary before the surface feels excessive. The complex protocol justifies many lifecycle operations, but several read/inspect/list variants push the set beyond an ideal well-scoped size.

Completeness4/5

The surface covers workspace setup and validation, full task lifecycle transitions, branch/family convergence, reports, reviews, issues, and human approval evidence. Minor gaps remain, notably no read_issue equivalent despite write_issue and list_issues, but core workflows are otherwise covered.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    MCP server that combines Read+Edit file operations into single tool calls. 80-95% fewer tool calls formulti-file refactoring across Claude, Cursor, Windsurf, and more.
    3
    10 npm
    3
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A multi-tool task agent MCP server with file search, SQLite query, calculator, and report writing tools. Enables Claude Code, Claude Desktop, or Cursor to control the same tools used by the agent, with guardrails for safety.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides 300+ MCP tools for orchestrating AI agents — including swarm coordination, self-learning memory, and task management — enabling MCP clients like Claude Code and Cursor to spawn, coordinate, and learn from specialist agents across sessions.
    19,558 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Exposes specialized agents as MCP tools so users can manage and triage Jira tasks, analyze repositories for health and conventions, generate commit/PR/DevOps patterns, assemble reports, produce slides and infographics, and run semantic search over a knowledge base. Everything is invokable directly from inside a coding session in Claude Code, Cursor, or Claude Desktop.
    1
    MIT