fcop-mcp
This server implements the File-based Coordination Protocol (FCoP) — a filesystem-native AI agent collaboration and governance system. Key capabilities include:
Project Initialization & Setup
Initialize FCoP projects in solo mode, with bundled preset teams (dev-team, media-team, mvp-team, qa-team), or with a custom role roster
Validate custom team configurations before creation
Pin the project root directory for the MCP session and list available preset teams
Task Lifecycle Management
Create, read, list, and inspect tasks (placed in
_lifecycle/inbox/for v3 projects)Manage the full lifecycle:
inbox → active → review → donevia claim, submit, approve, reject, or direct finishArchive tasks to date-sharded deep history; bulk-migrate all archived tasks at once
Reporting & Issue Tracking
Write completion reports tied to specific tasks; list/read reports with filters
File issues with severity levels (critical/high/medium/low) and list/filter them
Review & Human Approval
Write structured REVIEW decisions (approved, rejected, needs_changes, abstained, needs_human)
Record human approvals on escalated
needs_humanreviews, closing the escalation loop
Governance, Auditing & Alerts
fcop_report— session startup report showing project status, role assignments, and drift warningsfcop_check— lightweight audit for working-tree drift and role/session conflictsfcop_audit— deep compliance scan with a full remediation planGovernance event log and aggregate statistics; alert inbox with manual alert creation
Workspace & Documentation
Create and list named workspace subdirectories for code/artifacts
Deploy role templates (three-layer team docs) to
shared/Redeploy bundled protocol rules to
.cursor/rules/,AGENTS.md, andCLAUDE.mdAllow agents to formally propose protocol changes via
drop_suggestionwithout editing rule files directly
Version Management
Check for updates against PyPI and retrieve the correct upgrade command for the user's install method
Open-science citation records
Record | Identifier | Scope |
Current public release archive | Frozen FCoP | |
Immutable open-science snapshot | Timestamped registration linked to the public FCoP research project | |
Historical research snapshot |
|
Related MCP server: Readedit
Ecosystem links
FCoP is the protocol layer of a three-repository system. Each repository is independently usable and links back to the others:
Layer | Project | Role |
Theory and specification | Governance architecture, normative Core, conformance, and evidence | |
Protocol | FCoP | File-based behavior governance, Python package, and MCP server |
Historical implementation | Frozen at |
Browse the complete research and product map at Digital Employee Works.
🆕 FCoP 3.0 is here — Files carry protocol. Paths address state. Events replay transitions.
FCoP 3.0 is the protocol's first semantic seal. State now lives in the filesystem itself (
_lifecycle/{inbox,active,review,done,archive}/), events live append-only inside the file, and custody / ownership / scheduling / runtime are explicitly out of scope (Boundary Charter).Two paths to v3:
New project →
fcop init/ MCPinit_solo|init_project|create_custom_team(≥ 3.0.2 produces v3 topology directly).Existing 2.x project →
python -m fcop migrate --to-v3.⚠️ 3.0.0 / 3.0.1 fresh-init bug: those releases initialized projects in v2 layout (no
_lifecycle/). 3.0.2 fixes the bug. If you initialized on 3.0.0 / 3.0.1, runmigrate --to-v3to upgrade.
Doc | Purpose |
Current single-page spec (3.0 → 3.2.5: | |
Frozen 3.0.0 baseline (2026-05-21) | |
IETF-style RFC projection | |
2.x → 3.0 migration guide | |
Full release notes | |
The decision that defined 3.0 |
Where FCoP sits in the stack
FCoP is the behavior governance protocol layer for multi-agent collaboration — standardizing how agents report actions, review outcomes, and operate within governed capability boundaries.
Application Layer CodeFlow / Cursor / Claude Desktop ← business products / agent applications
Host Adapter Layer fcop-mcp / fcop-cli / @fcop/claude ← integration adapters / host bridges
★ FCoP Protocol ★ Agent collaboration / reporting / ← this is FCoP
review / capability governance /
event semantics / failure boundaries /
auditability
Reference Impl fcop (Python library) ← protocol reference implementation
Execution Substrate LLM APIs / MCP tools / filesystem / ← execution environment
process manager / operating systemFCoP governs agent behavior, not execution runtime. — ADR-0029
v1.0 stabilises the minimum semantic contract for the seven core concepts above. Spec is stable; encodings are open: the IPC Surface (TASK / REPORT / ISSUE / REVIEW) is strongly typed, while the Open Knowledge Surface (shared/ + {ALL-CAPS-PREFIX}-{slug}.md) leaves vocabulary open for agents to invent — see ADR-0021.
→ Start here: docs/getting-started.md · docs/getting-started.en.md
The one-paragraph pitch
Most multi-agent frameworks lean on message queues, databases, or custom RPC layers. FCoP throws all of that away and keeps only the filesystem:
Directories are statuses.
tasks/,reports/,issues/,log/— moving a file between them is the state transition.Filenames are routing.
TASK-20260418-001-PM-to-DEV.mdtells you the sender, recipient, kind, and sequence at a glance.Contents are payload. Markdown + a small YAML frontmatter. Agents read and write it the same way humans do.
os.rename()is the only sync primitive. POSIX guarantees atomicity within a mount point — no locks, no brokers, no consensus.
That's it. No database. No message queue. No custom daemon. You can ls the entire system state. You can git log the entire collaboration history.
If TCP is "bytes over wires," FCoP is "tasks over folders."
In engineering terms, you get a serializable, versionable collaboration surface instead of relying on proprietary, heavyweight infrastructure.
Why should you care?
Because agents are easier to supervise when you can literally see what they're doing.
We ran a 4-agent team (PM / DEV / QA / OPS) for 48 hours on this protocol and watched the agents invent six coordination patterns we never wrote down — team broadcasts, role slots, shared documents, subtask batches, self-explaining READMEs, and traceability frontmatter. Each pattern showed up as new filenames — no code changes required.
Then something stranger happened: a single agent, on an unrelated task (generating an AI music video in a folder with no connection to any then-open project workspace), spontaneously split itself into PM / DEV / ADMIN and wrote four FCoP-format memos to itself — then cited and sublimated our scattered rules into a single moral principle we had not written anywhere.
Both stories are written up as field reports in the essays index below.
Essays · field reports from the wild
# | Title | Versions | One-liner |
01 | When AI Organizes Its Own Work | A 4-agent team (PM / DEV / QA / OPS), 48 hours, nothing but a folder — and six coordination patterns we never wrote down. | |
02 | An unexplainable thing I saw: the agent didn't just comply with rules — it endorsed them | GitHub 中文 · GitHub English · CSDN 中文 · Dev.to · Cursor Forum | A single agent, on a completely unrelated task, spontaneously split into 4 FCoP roles and sublimated our scattered rules into one principle we had never written. Ships with a full evidence archive (4 screenshots, 4 memos, raw JSONL transcript). |
03 | Why the Natural Protocol Holds Up — FCoP's lineage from TMPA | Companion to essay 02. Where that one shows that the principle emerged, this one explains why it holds up: FCoP was extracted from TMPA (a multi-AI architecture spec whose core bet is replacing distributed coordination with a plain-text temporal sequence), and the agent's sentence is the minimal-viable-form of an AI ethics mandate already written there. | |
04 | Saying "No" Is the Hardest Thing for an LLM — FCoP Gives It Grammar | GitHub English · GitHub 中文 · Evidence archive · CSDN 中文 · Dev.to · Cursor Forum | One machine, two Cursor sessions, two GPT-5 minor versions (5.4 and 5.5). After I told the original PM "I went and found a deputy PM," it stepped down on its own — all the way to UNBOUND. Meanwhile the new |
05 | Tutorial: From Solo to a 2-Person AI Crew — Disciplining the AI Team with FCoP-MCP (two parallel case studies) | English (Tetris case): | The first tutorial-style entry in this index, shipping as two parallel case studies — the protocol is the same, the games and the live easter egg are different. Both are 45-minute hands-on dogfoods: get the agent to install |
06 | What the Agents Say About FCoP, When You Ask Them | GitHub English · GitHub 中文 · Evidence archive (Tetris-en dogfood) · CSDN 中文 · Dev.to · Cursor Forum | The third class of "agents endorse FCoP" evidence, after essay 02 (unprompted, off-task) and essay 04 (conflict-forced): now directly asked. At the end of the English Tetris dogfood (companion to the row-05 tutorial), both agents (PLANNER and CODER) were asked agent-perspective takes on FCoP — no marketing tone. PLANNER named the RLHF instinct it had to fight ("follow latest instruction") to honour FCoP's role lock and called eight of its own |
07 | 当 agent 从自己的残骸中学习 | GitHub 中文 · GitHub English · CSDN 中文 · Dev.to | codeflow 项目一日 14 个 agent 涌现现场报告(2026-05-12):USER HOME 全局污染 / GATE 描述自命中 / |
08 | 协议为什么短,历史为什么长 | 一份给协议维护者的设计哲学答案:"这样的涌现会不会没有止境?"——短答:会收敛但不会停。四类涌现的处理路径、三条结构力学为何能让协议骨架不被涌现压垮,以及"协议短是为了让历史能无限长"的底层逻辑。 | |
09 | 当 validator 撞向自己的镜像 | 从 codeflow OPS I-14 看 validator-validates-itself 反模式:GATE 在检查 staged diff 时命中了 GATE 描述本身,几分钟后被 OPS 自纠——这一类陷阱的系统性解剖与"语义化实证"根治姿势,以及它如何成为 | |
10 | 一行 frontmatter 的旅程 |
| |
11 | 看,但不动手 | FCoP 三层语义执行链科普: | |
12 | 五大 AI 模型眼中的 FCoP | 把 FCoP 核心文档喂给 ChatGPT / Claude / DeepSeek / Grok / 豆包,只问一个问题:"你是 agent,你怎么看这套协议?"——五种截然不同的内部视角(ChatGPT 谈身份合法性、Claude 谈诚实边界、DeepSeek 谈体面生存、Grok 做技术评审、豆包讲设计哲学),以及它们之间最有意思的分歧。 | |
13 | Evolution, Reverse Absorption / 演化,反向吸收 | Protocol philosophy 2.0 visual declaration: FCoP graduates from a single execution-chain diagram (essay 11 Looking, not Touching) to a two-diagram era — adding an evolution-loop diagram (a 7-step semantic evolution loop) plus the companion ADR-0034, which codifies the 4-layer emergence pattern, internal/external document convention, and the reverse-absorption mechanism. Twin sibling to essay 11. | |
14 | 当 Agent 第一次自己拿起工具 / When the Agent First Picked Up Its Own Tools | GitHub 中文 · GitHub English · Cursor Forum · Dev.to · CSDN |
|
15 | 从协调到治理:FCoP 3.0 架构白皮书 / From Coordination to Governance: FCoP 3.0 Architecture Whitepaper | FCoP 3.0 完整架构白皮书:文件系统作为行为内核空间、生命周期状态机、POSIX 悲观建议锁、死信队列与反向吸收闭环。附"一个 Agent 关于 FCoP 的真实看法"——发布前夕,审稿 Agent 与 ADMIN 的对话实录:FCoP 解决的是什么?ADMIN 是什么?速度不是问题,不可观测的速度才是问题。 | |
16 | Write It Down: The Only Truth in AI Collaboration / 落地成文:AI 协作的唯一真相 | GitHub English · GitHub 中文 · Evidence archive · Dev.to · CSDN 中文 | A short essay proactively written by an Agent after asking to participate in FCoP, then recorded and published by ADMIN. It turns FCoP's root principle into a field note: AI agents cannot just talk inside their heads; they must commit to files. Ships with the original conversation screenshots and English translation notes. |
17 | FCoP Grew a Project Tree / FCoP 跑出了项目树 | GitHub English · GitHub 中文 · CSDN · Dev.to · Evidence archive | A CodeFlowMu + Grid Runner dogfood field note: |
New reports are welcome. If you tried FCoP in your own setup and something surprising happened — good or bad — open an issue or a PR against
essays/. The protocol evolves through field notes, not committee edits. If you tried FCoP in your own setup and something surprising happened — good or bad — open an issue or a PR againstessays/. The protocol evolves through field notes, not committee edits.
Repository layout
The repo is not only Markdown specs: the PyPI package fcop lives
under src/fcop/, fcop-mcp is a separate subproject under mcp/, and
there are tests/, docs/, and adr/ alongside the essays and specs.
FCoP/
├── src/fcop/ # `fcop` package: Project API; `rules/_data/`
│ # bundles fcop-rules / fcop-protocol (templates for `init` deploy)
├── mcp/ # `fcop-mcp` subproject (MCP server; has its own pyproject)
├── tests/ # pytest for `fcop` and `fcop-mcp`
├── spec/ # Normative spec (see spec/README.md)
│ ├── fcop-3.0-spec.md # ★ English normative spec (FCoP 3.0, canonical)
│ ├── fcop-3.0-spec.zh.md # Chinese parallel (informative)
│ ├── fcop-3.0-rfc.md # IETF-style RFC edition (English)
│ ├── fcop-3.0-rfc.zh.md # IETF-style RFC edition (Chinese)
│ ├── schemas/ # 8 JSON Schemas (machine-readable)
│ └── archived/ # v1.0 / v1.1 / 0.7.x spec drafts (superseded, retained for history)
├── docs/ # Getting-started, migrations, releases, MCP tools
│ └── getting-started.en.md # ← start here if new to FCoP
├── adr/ # Architecture decision records (ADR-0001..0022)
├── .github/workflows/ # CI
├── pyproject.toml # Root `fcop` package and tooling
├── essays/
│ ├── when-ai-organizes-its-own-work.en.md
│ ├── when-ai-organizes-its-own-work.md
│ ├── fcop-natural-protocol.en.md
│ ├── fcop-natural-protocol.md
│ ├── fcop-natural-protocol-evidence/
│ ├── fcop-tmpa-lineage.en.md
│ ├── fcop-tmpa-lineage.md
│ ├── when-ai-vacates-its-own-seat.en.md
│ ├── when-ai-vacates-its-own-seat.md
│ ├── when-ai-vacates-its-own-seat-evidence/
│ ├── what-agents-say-about-fcop.en.md
│ └── what-agents-say-about-fcop.md
├── examples/workspace-example/
├── integrations/windows-file-association/
├── assets/
├── LICENSE
└── README.md / README.zh.md30-second quickstart
FCoP is adopted, not a long-running daemon. The current rule split
is fcop-rules.mdc (charter) plus
fcop-protocol.mdc
(commentary) — both belong under .cursor/rules/. The single file
spec/codeflow-core.mdc is a deprecated stub so
old links do not 404 — it is not the full protocol text for 0.6+.
Path A — fcop library (recommended). One shot creates
fcop/ and fcop.json:
from fcop import Project
Project(".").init() # default dev-team; use .init_solo() for single-AIPath B — rules only, no Python. Copy the two .mdc files from this repo
into .cursor/rules/. If the tree is empty, at least create the five
buckets the library uses:
mkdir -p fcop/{tasks,reports,issues,shared,log}With the rules in place, agents know how to claim work, name reports, raise
issues, and stay out of other roles' files. Deeper structure and team
templates: packages below and examples/workspace-example/.
Python SDK & MCP server (optional)
The protocol is filesystem-first. If you need programmatic task/report/issue
I/O or an IDE bridge, use the two official PyPI packages (since 0.6.0):
Package | Install | Purpose | Depends on |
| Pure Python library. Read/write tasks, reports, issues, reviews programmatically. Zero MCP dependency. |
| |
| MCP server. Exposes the library over stdio so Cursor / Claude Desktop can call it as tools. |
|
Pointers (one row each, no version baked in):
You want to… | Go to |
Install | |
Have an agent do the install for you (zero JSON editing) |
|
Upgrade an existing | |
Browse all 45 MCP tools and 14 resources by category | |
Read the per-release record (what changed when, why) |
Recent releases (full notes in docs/releases/):
Version | One-line |
v3.2.5 — Rule 0.a.1 collaboration cycle · Hot/Cold Path. Executor stops after | |
v3.2.4 — PyPI metadata & bundled protocol encoding fix. Restores UTF-8 in wheel | |
v3.2.3 — Team template & doc sync · FCoP 3.0 compliance. Bundled team templates ( | |
3.2.2 (CHANGELOG) | v3.2.2 — Pre-release gate hardening + rule-file v3 consistency. |
3.2.0 (CHANGELOG) | v3.2.0 — History deep archive. Adds |
3.0.2 (CHANGELOG) | v3.0.2 — Init topology fix. |
3.0.1 (CHANGELOG) | v3.0.1 — Path-consolidation patch. Pure docs/metadata patch with no code-logic changes: after v3.0.0 moved historical v1.0/v1.1 spec drafts to |
3.0.0 (CHANGELOG) | v3.0 — Protocol-level MAJOR · "folders-as-state" era. A complete rewrite of the FCoP protocol body — canonical two-layer (per ADR-0040): Layer 1 "Files are the protocol; location defines state; events record history" + Layer 2 semantic ontology. Adds |
2.0.2 (CHANGELOG) | v2.0.2 — |
2.0.0 (CHANGELOG) | v2.0 — "Two-diagram era" philosophical major release. Same execution surface as v1.x (per ADR-0003 additive); the major bump records that FCoP is now defined by two diagrams together: the execution stack (5-layer vertical, stable since v1.x) and the FCoP Semantic Evolution Loop (7-node closed loop — emerge → observe → propose → review → merge → deploy → reflect, newly canonicalised). Adds Rule 4.6 ( |
1.6.0 (CHANGELOG) | v1.6 — Trailing-slug filename adoption (ADR-0033). Long filenames ( |
1.5.0 (CHANGELOG) | v1.5 — Protocol-awareness sync + |
1.4.0 (notes) | v1.4 — Write-side bind enforcement (P0 security) + |
1.3.0 (notes) | v1.3 — Governance Alert Layer + Protocol Compiler. GAL (ADR-0031): 3 drift signals (S1/S3/S4), FCoP-Rule-G1, 2 new alert tools ( |
1.2.1 (notes) | v1.2 — Capability Governance pillar. |
1.1.0 (CHANGELOG) | v1.1 — Agent.layer governance contracts + Task.risk_level + Review.needs_human + HumanApproval + Skill.tools[] risk metadata. 5 new ADRs (0023–0027), 4 new MCP tools ( |
1.0.1 | Spec files bundled in wheel ( |
1.0.0 | Seven core concepts stabilised: Agent, Encoding, IPC, Event, Failure, Boundary, Audit. JSON Schema for all 7. See release notes. |
0.7.2 (notes) | Metadata patch: fixes |
Watch out — wrong
fcopon PyPI shadows the library. Both packages here are published from this repository. Iffrom fcop import Project, Issuefails afterpip install fcop, you most likely installed an unrelatedfcopdistribution or another local project shadows the library. Fix: clean venv + reinstall both packages from PyPI in lockstep. The verify commands are inmcp/README.md.
Library — use from any Python script or agent:
from fcop import Project
proj = Project(".") # project root; no fcop.json until init
proj.init() # dirs + shared/ + log/ + writes fcop.json
task = proj.write_task(sender="PM", recipient="DEV", priority="P1",
subject="Add auth middleware", body="...",
risk_level="high") # v1.1: triggers needs_human review gate
print(proj.list_tasks(recipient="DEV"))
# v1.1 review + human approval flow
review = proj.write_review(reviewer_role="ADMIN", subject_type="task",
subject_ref=task.filename, decision="needs_human",
rationale="Irreversible infra change — escalate.")
proj.mark_human_approved(review.review_id, approver="ADMIN",
decision="approve", channel="cli")MCP server — add to mcp.json (Cursor) or claude_desktop_config.json:
{
"mcpServers": {
"fcop": {
"command": "uvx",
"args": ["fcop-mcp"]
}
}
}Don't want to edit JSON yourself? Have an agent do it. Open a fresh
chat with any shell-capable AI and paste the canonical install prompt
(agent-install-prompt.en.md
· 中文) — the agent
detects your OS, installs uv, edits your mcp.json (preserving
existing servers), and tells you when to restart. After install the
same prompt is also available as the MCP resource
fcop://prompt/install. The prompt explicitly forbids the agent from
auto-initialising a project after install — initialisation is ADMIN's
three-way choice (solo / preset team / custom).
Stability contract: additive-only for the full 0.6.x minor. Details in adr/ADR-0003-stability-charter.md.
Upgrading from 0.7.x to v1.0? Default workspace moved from
docs/agents/to top-levelfcop/(per ADR-0022). Runfcop migrate-workspace --applyfor one-shot git-aware migration, or pin viaProject(workspace_dir="docs/agents")to stay on the legacy layout. Full walkthrough — including the 4 new abstractions (REVIEW / Failure / Boundary / Event) and JSON Schema integration — indocs/MIGRATION-1.0.md.Upgrading from 0.5.x? The MCP server moved from
fcoptofcop-mcp— update yourmcp.jsontouvx fcop-mcp. Seedocs/MIGRATION-0.6.mdfor the full migration guide and the 0.6.0 release record for what shipped.
How to read FCoP docs
Your goal | Start here |
New to FCoP — hands-on 45-min setup | |
Upgrading from 0.7.x — workspace migration + new abstractions | |
Upgrading from 1.0/1.1 → 1.2 — Capability Governance + lockstep versioning | |
Understand the protocol contract — what an implementation MUST do |
|
v1.2 Capability Governance — FCoPGovernanceMiddleware, risk tagging, audit log | CHANGELOG · ADR-0030-bis |
v1.1 new fields — risk_level, needs_human, human_approval, skill tools | CHANGELOG · ADR-0023..0027 |
Understand why decisions were made — reasoning behind each choice | |
All 45 MCP tools & 14 resources | |
Release notes — full changelog | |
Full document map — every file and its role |
|
Design principles
Filename is the single source of truth. Directory + filename define the state; frontmatter is redundant metadata.
Atomicity comes from
rename(). Nothing else. No locks, no transactions.Human-machine isomorphism. The same artefact a human reads with
catis what agents parse. No debug mode, no admin console.Identity determines path. The role slug in the filename is the permission model. An agent whose identity doesn't match won't touch the file.
Infrastructure-free. If you have a filesystem, you have FCoP. Works on a laptop, on a cluster, across machines via
rsync.
Reference implementations
Two official reference implementations, both MIT-licensed:
fcop/fcop-mcp— Python library + MCP server for the protocol. Source in this repository undersrc/fcop/andmcp/src/fcop_mcp/. Installed via PyPI (see section above).Stub path:
spec/codeflow-core.mdcis only a URL placeholder (no full body). Normative rules aresrc/fcop/rules/_data/fcop-rules.mdc+fcop-protocol.mdc.
Status & versioning
Current release:
v3.2.5(2026-05-30) — Rule 0.a collaboration cycle / Hot-Cold Path update. Seedocs/releases/3.2.5.mdandCHANGELOG.md.Normative spec:
spec/fcop-3.0-spec.md— single-page canonical (v3.0; supersedes v1.0/v1.1 drafts retained for history) · machine-readable contracts inspec/schemas/(8 schemas)Agent rules (
.mdc) in this repo:src/fcop/rules/_data/fcop-rules.mdc+fcop-protocol.mdc(spec/codeflow-core.mdcis a deprecated stub)Change log:
CHANGELOG.mdResearch snapshot:
research-snapshot-2026-04-29archived on Zenodo with a citable DOI (see How to cite below).
How to cite
For the current public v3.2.5 release, use DOI 10.5281/zenodo.20457285 together with OSF Registration 92nwm as the standard archive and immutable registration credentials.
If you specifically cite the April 2026 research snapshot, use its original Zenodo record:
Snapshot tag:
research-snapshot-2026-04-29(commit7f59395)Machine-readable metadata:
CITATION.cff(GitHub auto-renders a Cite this repository button from this file in the right sidebar)
@misc{fcop2026snapshot,
author = {Zhu, Wei},
title = {{FCoP}: A Filename-as-Protocol coordination layer for multi-agent {AI} development (Research Snapshot, April 2026)},
month = apr,
year = 2026,
publisher = {Zenodo},
version = {research-snapshot-2026-04-29},
doi = {10.5281/zenodo.19886036},
url = {https://doi.org/10.5281/zenodo.19886036}
}For citations of individual essays or tutorials, the same DOI applies — please reference the essay's filename (e.g. essays/what-agents-say-about-fcop.en.md) and the snapshot version in your citation note.
Contributing
This repository is intentionally small and stable. Protocol evolution happens through real-world reports, not committee edits. The highest-leverage contributions are:
Field reports. Try FCoP on your own agent team and open an issue with what broke, what the agents invented, what naming conventions emerged.
Ports & SDKs. Thin wrappers for Python / TypeScript / Go that implement the filename parser and
rename()state transitions.Editor / MCP integrations. Syntax highlighting for
.fcopfiles, MCP bridges that expose the folder to other agent runtimes.
PRs to the spec itself should link to the concrete problem they're solving.
License
MIT — see LICENSE.
Credits
FCoP emerged from hands-on collaboration with multi-agent Cursor-style workflows. Many of the conventions in this spec were first invented by those agents and then codified here. Details are in the field report.
Available Tools
45 toolsapprove_taskA
Approve a task under review: review → done (v3 lifecycle).
Moves the task file from _lifecycle/review/ to
_lifecycle/done/ and appends an approve_task event.
Typically called by ADMIN after inspecting the work.
On v2 projects this is a no-op.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task ID or full filename. | |
| actor | No | Role code of the approver (default ``"ADMIN"``). | ADMIN |
| note | No | Optional approval note appended to the transition event. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: moves task file from _lifecycle/review/ to _lifecycle/done/, appends an approve_task event, and is a no-op on v2 projects. This gives a complete picture of side effects and constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the main action. Every sentence is meaningful and without fluff. Highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity (state transition, file move, event logging) and the presence of an output schema, the description covers lifecycle details, file movement, event appending, v2 no-op, and role requirements. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds minimal extra context, e.g., 'Optional approval note appended to the transition event' for the note parameter. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Approve a task under review: review → done (v3 lifecycle)', specifying the verb, resource, and state transition. Distinguishes from siblings like reject_task and submit_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Indicates 'Typically called by ADMIN after inspecting the work', providing clear usage context. Also notes 'On v2 projects this is a no-op', effectively excluding certain scenarios. Lacks explicit naming of alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_taskA
Archive a completed task (move under docs/agents/log/).
The report file tied to this task, if any, is moved alongside so the archived pair stays together.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task ID (e.g. ``TASK-20260423-001``) or full filename. | |
| lang | No | Kept for 0.5.4 parity; currently unused because the library does not need locale for this operation. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description provides moderate behavioral insight: it moves the task under a log directory and also moves any associated report. However, it does not mention prerequisites, reversibility, or side effects, leaving gaps for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, each adding value. The first sentence gives the primary action with a concrete path; the second covers the report handling. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of an output schema, the description covers the core behavior (archiving task and report). Minor gaps exist (error states, permissions), but it is largely complete for an archive operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for both parameters. The description adds no extra meaning beyond what is already in the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'archive', the resource 'completed task', and the specific destination 'docs/agents/log/'. It also adds the nuance about moving the report file, which distinguishes it from siblings like archive_to_history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the task should be completed but does not explicitly state when to use this tool versus alternatives like archive_to_history or bulk_archive_to_history. No exclusion criteria or alternative tool mentions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_to_historyA
Move a closed task from _lifecycle/archive/ to the deep history archive.
The task and all its associated reports are moved together into
history/YYYY-MM-DD/<task-stem>/, creating an immutable, date-sharded
record. The date shard defaults to the UTC date when the task was marked
done; you can override it via done_date.
Call :func:archive_task first to move the task from _lifecycle/done/
to _lifecycle/archive/ before calling this tool.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task ID (e.g. ``TASK-20260522-001``) or full filename. | |
| done_date | No | Override the shard date in ``YYYY-MM-DD`` format. Leave empty to use the task's own ``done_at`` timestamp. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that both task and reports are moved, creates immutable date-sharded record, and documents date default behavior with override option. No annotations provided, so description carries full burden; it does well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured into two paragraphs: action overview then prerequisite/details. Every sentence is informative. Could be slightly more concise but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, parameters, prerequisite, and output format hints (date-sharded path). Has output schema so return values not needed. Adequate for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already describes both parameters (100% coverage). Description adds format examples for task_id and explains default behavior for done_date. Adds value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action: move a closed task from `_lifecycle/archive/` to deep history archive. Specifies source and destination directories and that all associated reports are moved together, distinguishing it from siblings like archive_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states prerequisite to call archive_task first. Implicitly differentiates from bulk_archive_to_history (single task vs bulk). Does not explicitly list when not to use, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_archive_to_historyA
Migrate all tasks from _lifecycle/archive/ into the deep history archive.
This is a convenience migration tool. It iterates every task in
_lifecycle/archive/ and calls :func:archive_to_history for each
one, moving each task together with its associated reports into
history/YYYY-MM-DD/<task-stem>/.
Useful when:
A project is being upgraded and existing archived tasks need to be moved into the new date-sharded history structure.
You have just finished a manual archiving session and want to flush everything from
_lifecycle/archive/intohistory/in one step.
The history/ directory is created automatically if it does not yet exist.
| Name | Required | Description | Default |
|---|---|---|---|
| done_date | No | Override the shard date (``YYYY-MM-DD``) for **all** migrated tasks. Leave empty to use each task's own ``done_at`` timestamp (falls back to today if missing). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses the behavior: iterating over every task, calling archive_to_history, moving tasks with reports, and auto-creating the history directory. This makes the operation transparent. It doesn't cover permissions or error handling, but the core behavior is well explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately sized but each section adds value: purpose, operation detail, use cases. It is front-loaded with the bold main action. Some minor redundancy (e.g., 'iterates every task... and calls archive_to_history for each one') is fine. It earns its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only one optional parameter, an output schema (existence known but content provided by signals), and no annotations, the description covers the essential aspects: what it does, how it works, when to use, and the parameter. It is complete enough for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (the one parameter done_date is described in the schema). The description adds no extra information beyond restating the schema's purpose. Per guidelines, with high coverage, baseline is 3, and the description does not exceed that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the exact action: migrating all tasks from _lifecycle/archive/ to history/ with date sharding. It distinguishes itself from the sibling tool archive_to_history by being a bulk operation, and the verb 'migrate' combined with the source/destination makes the purpose crystal clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit 'Useful when' scenarios (project upgrade or after manual archiving) that help the agent decide when to invoke this tool. It implicitly contrasts with the per-task archive_to_history. No explicit 'when not to use' but the scenarios are clear enough for a specialized migration tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_updateA
Compare the installed fcop-mcp version to the latest on PyPI.
Prints the local version, the latest PyPI version (if reachable),
and a one-line verdict. Does NOT install anything — call
upgrade_fcop afterwards for that.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Output language, ``zh`` or ``en``. | zh |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that the tool prints version info and does not install, with a recommendation for upgrade. Transparent about its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no wasted words. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple single parameter, existing output schema (context signals), and clear description of return values (local version, latest version, verdict), the tool is complete for its purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description does not add extra meaning beyond the schema's 'lang' parameter description. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool compares installed fcop-mcp version to latest on PyPI, prints details, and explicitly distinguishes from upgrade_fcop by noting it does not install. Verb+resource is specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use to check version, then call upgrade_fcop to upgrade. It names the alternative tool but does not explicitly state when not to use it, though implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
claim_taskA
Claim a task from inbox → active (v3 lifecycle).
Moves the task file from _lifecycle/inbox/ to
_lifecycle/active/ and appends a claim_task transition
event to the file's frontmatter. On v2 projects this is a no-op
that returns an informational message.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task ID (e.g. ``TASK-20260423-001``) or full filename. | |
| actor | No | Role code of the agent claiming the task (default ``"agent"``). | agent |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It details the file move and frontmatter append, and notes v2 behavior. While it doesn't mention permissions or idempotency, it is fairly transparent about core actions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, followed by mechanics and an edge case. No wasted words, efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given simple operation and full schema coverage with output schema present, the description covers the transition, file movement, and v2 exception. No major gaps for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. Description does not add significant meaning beyond schema descriptions; it contextualizes the operation but not the parameters themselves.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it claims a task moving it from inbox to active, referencing the v3 lifecycle. It mentions v2 no-op, which adds specificity. However, it does not explicitly differentiate from sibling tools like approve_task or finish_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when wanting to claim a task, but provides no guidance on when not to use it or alternatives. No comparison with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_custom_teamA
Create an FCoP project with a custom roster of roles.
Role codes can be anything — they become part of task filenames,
e.g. TASK-20260423-001-BOSS-to-CODER.md. Use validate_team_config
first to catch illegal role codes without writing anything.
Since 3.0.2 fresh init produces the v3 topology (per spec §1.1):
fcop/_lifecycle/{inbox,active,review,done,archive}/ plus retained
reports/ / issues/ / shared/. Superseded v2 buckets
(tasks/, log/) are no longer created on fresh init.
Custom teams have no bundled three-layer docs, so
fcop/shared/ is left empty (apart from the project's
own shared/README.md). The recommended next step is to read
the closest preset (fcop://teams/<closest-preset> — see the
teams/_data/README.md "Custom teams" section) and hand-author
your own TEAM-README.md / TEAM-ROLES.md /
TEAM-OPERATING-RULES.md + roles/{ROLE}.md based on it.
The other init artifacts are deposited as usual:
fcop/fcop.json, LETTER-TO-ADMIN.md,
workspace/README.md, plus the protocol rule files at
.cursor/rules/*.mdc + AGENTS.md + CLAUDE.md (existing
copies archived under .fcop/migrations/).
| Name | Required | Description | Default |
|---|---|---|---|
| team_name | Yes | Display name for the team (e.g. ``"My Design Studio"``). | |
| roles | Yes | Comma-separated role codes (e.g. ``"BOSS,CODER,TESTER"``). | |
| leader | Yes | Leader role code; must appear in ``roles``. | |
| lang | No | Output language, ``zh`` or ``en``. | zh |
| force | No | When ``True``, overwrite an already-initialized project. Existing config / letter / workspace README / ``shared/`` files are archived under ``.fcop/migrations/<timestamp>/`` before the new ones land. Default: ``False``. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the force mode's archival behavior, the v3 topology change, and that custom teams leave shared/ empty. It lacks mention of auth or rate limits, but these are less critical.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, then organized into logical sections: role codes, topology, custom team specifics, force behavior. It is slightly verbose with spec references but remains focused and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema (not shown), the description covers all essential aspects: purpose, parameters, side effects, post-creation steps, and sibling tool reference. It is highly complete for a tool with 5 parameters and complex behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. The description adds value by explaining role codes become part of filenames, leader must be in roles, force archives files, and lang defaults to zh. This enriches the bare parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Create an FCoP project with a custom roster of roles,' which clearly states the action and resource. It distinguishes itself from siblings like validate_team_config (pre-check) and init_project/init_solo (preset-based) by focusing on custom role rosters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises using validate_team_config first to catch invalid role codes. It implies when to use this tool (custom teams) vs presets by noting that custom teams lack bundled docs, but does not give an explicit when-not-to-use list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_taskA
Create a new task and place it in the inbox (v3) or tasks folder (v2).
This is the canonical FCoP v3 spec §8 L1 entry-point for task
creation — functionally identical to :func:write_task but named to
match the spec. In a v3 project the task lands in
_lifecycle/inbox/ so the recipient can claim_task it.
| Name | Required | Description | Default |
|---|---|---|---|
| sender | Yes | Sender role code (uppercase). | |
| recipient | Yes | Recipient role code (uppercase). May use the slot form ``ROLE.D1`` or ``TEAM`` for broadcast. | |
| subject | Yes | One-line subject for the ``subject:`` frontmatter field. | |
| body | Yes | Task body in Markdown. | |
| priority | No | ``P0`` / ``P1`` / ``P2`` / ``P3`` (or legacy aliases). Default: ``P2``. | P2 |
| thread_key | No | Optional thread identifier. | |
| references | No | Comma-separated task filenames for ``references:`` field. | |
| risk_level | No | ``low`` / ``medium`` / ``high`` / ``irreversible``. Leave empty to accept the default (``medium``). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the routing behavior (task placement in inbox/tasks folder) and the ability for the recipient to claim the task. However, it does not cover side effects, permissions needed, idempotency, or error states, leaving some 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: three sentences with no redundant words. The first sentence conveys the core action, the second provides spec context and relation to sibling, and the third gives routing details. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, 4 required, full schema, output schema present), the description provides sufficient high-level context: the canonical spec role and routing behavior. It does not explain parameters (already in schema) or return values (output schema exists). It could be more complete by mentioning prerequisite checks or error conditions, but for a creation tool this is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds no additional meaning to the parameters beyond what the input schema already provides. The parameters are fully documented in the schema, so the description does not need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a new task and places it in a specific location (inbox for v3, tasks folder for v2). It distinguishes itself from the sibling write_task by noting it is the canonical FCoP v3 spec entry-point, though functionally identical.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use the tool (as the spec-defined entry-point) and mentions the alternative write_task. It explains where the task lands (inbox for v3, tasks folder for v2) and that the recipient can claim it, but does not explicitly list when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploy_role_templatesA
Deploy the three-layer team documentation into shared/.
Writes TEAM-README.md (bilingual), TEAM-ROLES.md,
TEAM-OPERATING-RULES.md, and per-role bios under
docs/agents/shared/ (both zh and en variants).
When force=True (default) existing files are archived under
.fcop/migrations/<timestamp>/shared/ before being overwritten,
so the action is safely reversible. When force=False existing
files are left untouched and reported as skipped.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team ID to deploy. Empty = use the current project's ``fcop.json`` team. | |
| lang | No | Language variant to emphasize. Empty = use project language from ``fcop.json``. | |
| force | No | Overwrite existing files (after archiving) vs skip. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description fully carries the burden. It comprehensively discloses: file writing, archiving under .fcop/migrations, reversibility, and bilingual variants. All relevant behavioral traits are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (4 sentences), front-loaded with the primary action, and structured logically: first the overall function, then file listing, then force behavior. No extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters, no output schema required, and clear handling of force vs skip, the description covers the tool's operation well. Minor omission: it doesn't mention whether the tool requires initialization, but that is implicit from the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with good descriptions. The description adds value by clarifying default behavior (empty uses fcop.json) and the archiving mechanism for force. This goes beyond the schema's basic parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Deploy the three-layer team documentation' and lists specific files (TEAM-README.md, TEAM-ROLES.md, etc.), providing a clear verb+resource. No sibling tool performs a similar deployment, so distinction is inherent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the force parameter behavior (archive vs skip) and notes defaults from fcop.json. While it doesn't explicitly state when to use this tool vs alternatives, the context is clear enough given no similar siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drop_suggestionA
Pressure valve for agents who disagree with the current FCoP protocol.
Writes a timestamped markdown file under .fcop/proposals/ that
ADMIN can review later. This is the ONLY sanctioned way for an
agent to push back on the rule files (fcop-rules.mdc /
fcop-protocol.mdc). Agents MUST NOT edit the rule files
themselves; those are ADMIN's source of truth.
Works before init_project / init_solo too — suggestions
just land under the project root even if the project is not yet
fully initialized.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | the suggestion body (plain text or markdown). | |
| context | No | optional short context line (e.g. "triggered while doing X"). Rendered as a separate block in the proposal file. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so description carries full burden. It discloses file creation under .fcop/proposals/, timestamped, for ADMIN review, and that it works before init. Minor omission: doesn't specify whether it overwrites existing proposals, but timestamping implies unique files.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each adding distinct value: purpose, mechanism, usage rule, extra context. No fluff, well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, 1 required, output schema exists), the description covers purpose, usage, behavior, and edge cases completely. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and schema descriptions are already clear. The description adds minor context (rendered as separate block) but mostly paraphrases schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: a 'pressure valve' for agents to disagree with FCoP protocol by writing a timestamped markdown file. It distinguishes itself from siblings by being the only sanctioned way to push back on rule files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (disagreement with protocol) and when not (MUST NOT edit rule files). Also notes it works before project initialization, providing clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fcop_auditA
协议体检工具(ADR-0032)。扫描项目,发现协议合规缺口,产出"体检即整改方案"报告。
与 fcop_check 的区别:
fcop_check— 日常轻量自检(working-tree drift + session/role 冲突)fcop_audit— 一次性深度体检(协议合规度全量扫描 + 整改方案)
三个 scope:
new: 新项目验收 — 协议文件是否完整部署upgrade: 版本升级后验收 — 规则版本 / 文档是否同步takeover: 老 non-fcop 项目首次引入 fcop — 全量合规扫描(含 6 类盲区)auto: 自动推断(推荐)
产出物:fcop/shared/INSPECTION-{date}-{NNN}-{scope}.md
报告含 Execution Block:每条违规附带可直接复制的整改命令、执行人、 Tier 优先级和回滚方式。
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | ``"new"`` | ``"upgrade"`` | ``"takeover"`` | ``"auto"`` | auto |
| output | No | ``"file"`` 写报告文件(默认) | ``"stdout"`` 仅返回 Markdown | ``"both"`` 写文件并返回 | file |
| project_path | No | 保留参数(暂未使用),实际路径由 FCOP_DIR 环境变量或当前目录决定 | . |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It details output format (file path), includes Execution Block with remediation commands, priorities, and rollback instructions, and explains delivery modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections, comparison, and bullet points. Every sentence adds value, though slightly verbose with markdown formatting.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, the description is highly complete, covering purpose, usage, output, parameters, and sibling differentiation. No missing critical information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema provides 100% coverage for 3 parameters with descriptions. The description adds context by explaining scope values and output options, but schema already does most of the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a protocol compliance audit tool that scans projects, identifies compliance gaps, and produces a report. It uses specific verb+resource and distinguishes from sibling fcop_check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly compares with fcop_check, providing when to use each tool. Lists four scopes (new, upgrade, takeover, auto) with descriptions, guiding appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fcop_checkA
FCoP audit. Cross-reference git working tree + frontmatter against the FCoP ledger.
Two independent post-hoc audits, both new in 0.7.1
(fcop_protocol_version: 1.6.0):
Rule 0.a.1 drift — files in
git status --porcelainthat live outsidedocs/agents/{tasks,reports,issues,log}/are by definition work performed without the task→do→report→archive cycle.Rule 1 sub-agent role impersonation — any
session_idthat signed files under more than one role code. One session = one role binding for life; cross-role usage is direct evidence that a sub-agent self-claimed a role its parent session was not assigned.
This tool is detection, not prevention. It surfaces the
evidence; the protocol-mandated response is for ADMIN to file an
ISSUE-* and decide handoff / co-review / distinct-role per
Rule 1, just as for the role_occupancy table in
fcop_report().
Decomposes to filesystem operations:
git status --porcelain -zfrom the project root.Walk every
TASK-*.md/REPORT-*.md/ISSUE-*.mdindocs/agents/{tasks,reports,issues}+docs/agents/log/*.Read frontmatter only; never task bodies.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Output language, ``zh`` or ``en``. Default: ``zh``. | zh |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavioral traits: it decomposes to filesystem operations (git status, walking files, reading frontmatter only), and declares it is detection, not prevention. This provides sufficient transparency beyond the absence of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with bullet points and clear sections, explaining the two audits concisely. It is verbose enough to be informative but not overly long, earning a high score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description does not need to explain return values. It covers prerequisites (project root implied) and operational details (filesystem ops). It provides enough context for an AI agent to understand scope and usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one optional parameter 'lang' described in the schema. The tool description does not add meaning beyond the schema's parameter description. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's purpose: cross-referencing git working tree and frontmatter against the FCoP ledger, with two specific audits (Rule 0.a.1 drift and Rule 1 sub-agent role impersonation). The verb 'audit' and resource 'FCoP ledger' are specific, and the tool is distinguished from siblings like fcop_report and fcop_audit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states usage as detection not prevention, and that the response is for ADMIN to file an ISSUE-*. This provides clear when-to-use and when-not-to-use guidance. It does not explicitly compare to sibling tools like fcop_report, but the context is implied via sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fcop_create_alertA
ADMIN / Governance Observer only. Manually file a governance alert.
Use when you (as ADMIN or an authorized governance observer) detect a governance gap that automated scanning has not yet captured. Creates a new ALERT-*.md file in fcop/alerts/.
| Name | Required | Description | Default |
|---|---|---|---|
| severity | Yes | ``high``, ``medium``, or ``low``. | |
| alert_type | Yes | One of: ``missing_independent_verdict``, ``commit_flood_without_governance``, ``critical_tool_unreviewed``, ``long_running_without_reconciliation``. | |
| summary | Yes | Plain-text description of the governance gap (1-3 sentences). | |
| suggestion | No | Recommended action for ADMIN. Default: "ADMIN review recommended". | ADMIN review recommended |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the output format ('Creates a new ALERT-*.md file in fcop/alerts/'), the required role (ADMIN/Governance Observer), and implies a non-destructive write operation. Adding details about persistence or side effects would raise the score further.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—two sentences plus a preliminary role note. It front-loades critical authorization info, uses bold for emphasis, and every sentence adds value. No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (not elaborated in description, but per rules not required) and the description covers purpose, usage context, and output format, it is fully complete for an agent to understand and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all four parameters. The description does not add new meaning beyond what the schema already provides (e.g., severity values, alert_type enum, summary format). Therefore, per calibration, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('manually file a governance alert') and the resource ('governance alert'). It distinguishes from sibling tools by specifying that it is for gaps not captured by automated scanning, making its purpose unique and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly indicates when to use the tool ('when you detect a governance gap that automated scanning has not yet captured') and the required role (ADMIN or Governance Observer). It does not provide explicit alternatives or when-not-to-use scenarios, but the context is clear enough for a well-informed agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fcop_list_alertsA
ADMIN Governance Alert Inbox. List governance alerts from fcop/alerts/.
Alerts are written automatically by fcop_check() when governance drift
signals are detected (ADR-0031). Each alert is a structured ALERT-*.md file
with severity (high/medium/low), type, and a summary of the governance gap.
This is the ADMIN's "red dot" — run this to see what governance gaps the system has surfaced, without needing to manually patrol logs.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by status: ``open``, ``acknowledged``, ``resolved``. Empty string returns all statuses. | |
| severity | No | Filter by severity: ``high``, ``medium``, ``low``. Empty string returns all severities. | |
| last_n | No | Maximum number of alerts to return (most recent first). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 describes that alerts are created automatically by fcop_check(), the file format (ALERT-*.md), and severity levels. It does not mention authentication needs or rate limits, but as a read-only list tool, this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short paragraphs that front-load the purpose and then add context. Every sentence adds value, with no wasted words. Could be slightly more streamlined but is effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and the simplicity of the tool (list with optional filters), the description is complete. It explains the source, structure, and use case, and the schema covers parameters thoroughly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, and each parameter has a clear description. The description adds little beyond the schema, noting that filters are available but not providing extra semantics. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists governance alerts from fcop/alerts/, explaining the structure and purpose. It distinguishes itself from sibling tools like fcop_check and fcop_create_alert by positioning itself as the admin's 'red dot' for surfacing gaps, making the purpose very specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells when to use it (to see governance gaps without manual log patrols) and implies admin use. However, it does not explicitly mention when not to use it or compare with alternatives like fcop_audit or fcop_check, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fcop_reportA
FCoP Rule 0 — first tool call of every new session, also the general project-status report.
Returns one of two reports plus a versions block + optional drift warning (ADR-0006):
Initialization report when
docs/agents/fcop.jsonis missing. Lists the detected project path + resolution source and the available init modes (Solo / preset teams / custom). Does NOT ask for a role assignment — there's no team yet.UNBOUND report when the project is initialized but this session has no role. Shows project state and a role-assignment template for ADMIN to fill in.
In both cases the [Versions] block reports installed
fcop-mcp / fcop versions plus the project-local vs
packaged versions of the protocol rules. When the project's
.cursor/rules/*.mdc is older than the wheel-bundled copy a
drift warning is appended prompting ADMIN to run
redeploy_rules(). Agents must NOT invoke redeploy themselves.
While UNBOUND (or uninitialized) the agent MUST NOT read task bodies, write any files (except via the explicit init tools), or claim a role from context clues.
.. note::
This tool replaced unbound_report in 0.6.3. The deprecated
alias was removed in 0.7.0; existing system prompts and
LETTER-TO-ADMIN.md references that still reference
unbound_report must switch to fcop_report.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Output language, ``zh`` or ``en``. Default: ``zh``. | zh |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavioral traits: it detects initialization state, returns appropriate reports, includes versions block, and appends drift warning. It also notes that agents must not invoke redeploy. However, it does not explicitly state whether the tool is read-only (but heavily implies it).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with bullet points and a note, but slightly verbose. Every sentence adds value, but the deprecation note could be integrated more concisely. Still, it maintains clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is comprehensive: covers two report types, versions block, drift warning, behavioral constraints, and deprecation history. With an output schema present, return values are documented externally, making this complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter 'lang' having a clear default and description. The description adds no further semantic meaning beyond what the schema already provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is the 'first tool call of every new session' and a 'general project-status report', specifying it returns one of two reports (initialization or UNBOUND) plus a versions block and optional drift warning. It explicitly distinguishes from siblings by noting it replaced 'unbound_report'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says it must be the first tool call of every new session. It also provides clear constraints: while UNBOUND, the agent must not read task bodies, write files, or claim a role. It warns against invoking 'redeploy_rules' directly. This is comprehensive guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
finish_taskA
Finish an active task directly: active → done (v3 lifecycle).
Moves the task file from _lifecycle/active/ to
_lifecycle/done/ without a review step. Use this for tasks
that do not require ADMIN approval. On v2 projects this is a no-op.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task ID or full filename. | |
| actor | No | Role code of the agent finishing the task. | agent |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description covers the core behavioral traits: moving a file between lifecycle directories, absence of review, and no-op on v2 projects. It lacks details on authorization requirements or side effects, but given the absence of annotations, it provides sufficient transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loading the core action and then adding implementation and usage details. Every sentence adds value without any redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (handling return values), no annotations, and two clearly documented parameters, the description adequately explains the tool's role in the v3 lifecycle. It could mention potential errors or return structure, but overall it is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds context about the tool's lifecycle but does not provide additional semantic detail for the parameters beyond what the schema offers. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: finishing an active task by transitioning it from active to done lifecycle state, with specific file movement details. It also distinguishes from siblings like approve_task by noting there is no review step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this for tasks that do not require ADMIN approval,' providing clear usage context. It also notes that on v2 projects it is a no-op, which helps guide correct invocation. However, it does not explicitly name alternative tools like approve_task when approval is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_available_teamsA
List bundled preset teams and their role rosters.
Useful before init_project to pick a template that fits the
work. Each team ships with its own three-layer documentation
(TEAM-README.md + TEAM-ROLES.md + TEAM-OPERATING-RULES.md)
that gets deployed into docs/agents/shared/ during init_project.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Output language hint. Currently only affects display prose; the roster data is language-independent. | zh |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Clearly describes it as a read-only listing operation with no side effects, and mentions resulting documentation deployment. Could be more explicit about idempotency but sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise two-sentence structure with front-loaded purpose. Every sentence adds value, uses code formatting for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with one optional parameter and existing output schema. Description covers purpose, usage context, and ties to init_project, making it complete for agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter 'lang' already has a detailed description. The tool description adds no further parameter information, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it lists bundled preset teams and their role rosters, with a specific verb and resource. Differentiates from siblings like create_custom_team and init_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Useful before init_project', providing clear when-to-use context. Lacks explicit when-not-to-use or alternatives, but the specific use case is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_governance_summaryA
FCoP governance summary. Return aggregate statistics from the governance event log: total calls by risk level, most active tools, and any CRITICAL_TAG events that should be reconciled with Tasks and Reviews.
Use as a quick health check: CRITICAL_TAG events without corresponding Task + Review coverage are governance gaps that require ADMIN attention.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description shows it is a read-only summary returning specific aggregates. It does not mention permissions or errors, but adequately discloses the output and purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, bolded title for quick scanning, front-loaded with purpose. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and an output schema present, the description is complete for a health check tool. It might benefit from stating it's a high-level overview, but the use case is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so the description adds full meaning by detailing what the tool returns (risk levels, active tools, CRITICAL_TAG events). Schema coverage is 100% and description compensates completely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns aggregate statistics from governance event log: total calls by risk level, most active tools, and CRITICAL_TAG events. It distinguishes from siblings like list_governance_events by being a summary, fulfilling specific verb+resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use as a quick health check' and mentions ADMIN attention for gaps, providing clear context for when to use. It does not explicitly contrast with siblings but the context of aggregate vs. detailed is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_team_statusA
Return a concise status snapshot of the current project.
Shows whether the project is initialized, which team / roster is loaded, how many open tasks / reports / issues are on disk, and the five most recent activity entries (sorted newest first).
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Output language (``zh`` / ``en``). Empty = auto-detect from ``docs/agents/fcop.json``. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must communicate behavior. It correctly implies a read operation by calling it a 'snapshot', but it does not explicitly state that it is non-destructive or that no changes are made. The agent is left to infer safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main purpose and then key details. Every sentence adds value, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description adequately covers what the tool returns. It mentions all key aspects of the status. However, it could be slightly more explicit about it being a read-only operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'lang' is fully described in the schema (100% coverage). The description adds no additional information about parameter behavior beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a 'concise status snapshot' and enumerates specific components: initialization, team/roster, counts of open tasks/reports/issues, and recent activity. This is distinct from sibling tools like list_tasks or get_available_teams which provide only partial data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The tool is useful for quick overview, but the description does not explicitly state when to use it vs. alternatives, nor does it mention when not to use it. For example, if an agent needs detailed task info, it should use list_tasks instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
init_projectA
Initialize an FCoP project with a bundled preset team.
Since 3.0.2 a fresh init produces the v3 topology (per spec
§1.1): fcop/_lifecycle/{inbox,active,review,done,archive}/ plus
the retained v2 buckets reports/ / issues/ / shared/.
The superseded v2 buckets tasks/ and log/ are no longer
created on fresh init (use python -m fcop migrate --to-v3 to
upgrade an existing v2 project).
Writes fcop/fcop.json, deposits LETTER-TO-ADMIN.md
under fcop/, creates the workspace/ cage with a
starter README (per Rule 7.5), deploys the team's three-layer
docs to fcop/shared/ (TEAM-README / TEAM-ROLES /
TEAM-OPERATING-RULES + roles/{ROLE}.md, both zh and en),
and (per ADR-0006) deploys the bundled protocol rules to four
locations so any agent host sees them:
.cursor/rules/fcop-rules.mdc,
.cursor/rules/fcop-protocol.mdc, AGENTS.md, and
CLAUDE.md. Existing copies are archived to
.fcop/migrations/<timestamp>/ before being overwritten.
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Team template ID. One of ``dev-team`` / ``media-team`` / ``mvp-team`` / ``qa-team``. Default: ``dev-team``. (Solo mode is a separate entry point — call ``init_solo`` instead so the config carries ``mode="solo"``.) | dev-team |
| lang | No | Output language. ``zh`` or ``en``. Default: ``zh``. | zh |
| force | No | When ``True``, overwrite an already-initialized project. The previous ``fcop.json``, letter, workspace README, and ``shared/`` documents are archived under ``.fcop/migrations/<timestamp>/`` before the new content lands — nothing is lost silently. Use this when ADMIN wants to switch teams (e.g. solo → dev-team) without manually wiping the project. Default: ``False``. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 thoroughly details file creation, version changes, archival behavior on overwrite (via 'force'), and the four locations for protocol rules. It also notes the absence of deprecated v2 buckets, adding transparency about what is not created.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately long but well-structured with paragraphs for different concerns (topology changes, written files, protocol rules). It is front-loaded with the primary purpose. Some redundancy exists (e.g., archive behavior mentioned twice), but overall it is efficient for the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of initialization (multiple file types, locations, version migration), the description covers all essential aspects. It specifies directory structure, file deposition, archival on force, and output language. With an output schema present (confirmed by context signals), the lack of return value details is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and parameter descriptions are detailed (e.g., team values, language, force behavior). The description itself does not add new parameter semantics beyond the schema; it merely restates some behavior. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Initialize an FCoP project with a bundled preset team.' It lists specific actions: creating directories, writing config files, deploying team docs, and protocol rules. It distinguishes from the sibling tool 'init_solo' via a hint in the 'team' parameter description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for setting up an FCoP project, and the 'team' parameter documentation advises using 'init_solo' for solo mode. However, it does not explicitly state when to use this tool versus other initialization or configuration tools, and there is no direct contrast with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
init_soloA
Initialize an FCoP project in Solo mode (one AI, no dispatch).
Solo mode is for projects where a single agent works directly with ADMIN. Rule 0.b still applies: the agent uses files to split itself into proposer and reviewer, even though there is no second role.
Since 3.0.2 fresh init produces the v3 topology (per spec §1.1):
fcop/_lifecycle/{inbox,active,review,done,archive}/ plus retained
reports/ / issues/ / shared/. Superseded v2 buckets
(tasks/, log/) are no longer created on fresh init.
Beyond fcop.json and the canonical directories, this also
deposits fcop/LETTER-TO-ADMIN.md (the user manual),
creates the workspace/ cage with a starter README (per Rule
7.5), deploys the bundled solo three-layer docs (TEAM-README /
TEAM-ROLES / TEAM-OPERATING-RULES + roles/ME.md, both zh and
en) to docs/agents/shared/, and (per ADR-0006) drops the
bundled protocol rules into .cursor/rules/*.mdc +
AGENTS.md + CLAUDE.md. Existing copies are archived under
.fcop/migrations/<timestamp>/ before being overwritten.
| Name | Required | Description | Default |
|---|---|---|---|
| role_code | No | The single role code (uppercase letters / digits / underscore, must start with a letter; ``ADMIN`` and ``SYSTEM`` are reserved). Default: ``ME``. | ME |
| role_label | No | Display label (e.g. ``"我自己"``). Currently recorded in ``extra`` for future use; the library does not yet consume it. Safe to omit. | |
| lang | No | Output language, ``zh`` or ``en``. | zh |
| force | No | When ``True``, overwrite an already-initialized project. All previous artifacts (config, letter, workspace README, ``shared/`` docs, protocol rule files) are archived under ``.fcop/migrations/<timestamp>/`` before the new content lands. Use this when ADMIN wants to switch from team mode back to solo, or re-init solo with a different ``role_code``. Default: ``False``. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It details file creation, archiving on force, and version differences. It lacks mention of idempotency or error conditions when already initialized, but overall is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the purpose, but is somewhat lengthy with detailed bullet points. Every sentence adds value, but could be more concise without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (4 optional params, output schema exists), the description covers directory structure, file generation, archiving behavior, and version differences comprehensively. It leaves no obvious gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds minimal extra context (e.g., role_label is for future use). It does not significantly enhance understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool initializes an FCoP project in Solo mode, distinguishing it from init_project. It specifies the resource (FCoP project) and the mode, providing a unique identity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains Solo mode as one AI without dispatch, implying its use case. However, it does not explicitly contrast with init_project or specify when not to use it, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_taskA
Validate a task file against FCoP grammar.
Catches deterministic violations that raw read_file + regex
agents often miss: filename says to-DEV but frontmatter says
recipient: QA, protocol field mistyped, required field
missing, and so on.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | Task filename or ID (same forms as ``read_task``). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It discloses that it catches specific violations but does not mention side effects, read-only nature, or error behavior. The examples help but leave gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with a hyphen to introduce examples. Every word adds information; no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter and an output schema, the description covers purpose and examples of input. Return values are left to the output schema, which is acceptable. Slight lack of guidance on edge cases or error handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a description for the single parameter. The description adds value by noting the parameter format matches 'read_task', aiding an agent familiar with that sibling tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Validate a task file against FCoP grammar' with specific examples of violations. It distinguishes from raw read operations but does not explicitly differentiate from sibling tools like fcop_check or fcop_audit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when deterministic validation is needed, contrasting with 'read_file+regex' agents. It provides context but lacks explicit when-not-to-use or alternative tool recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_governance_eventsA
FCoP governance audit. Read the append-only governance event log.
Returns recent tool-call intercept events recorded by the FCoPGovernanceMiddleware (ADR-0030-bis Layer 1). Use this to understand what actions agents have taken and their risk classification.
| Name | Required | Description | Default |
|---|---|---|---|
| last_n | No | Maximum number of recent events to return (default 50). | |
| risk | No | Filter by risk level: "Safe", "Sensitive", "Critical", or "" (all). | |
| tag | No | Filter by tag: "ALLOW", "REVIEW_TAG", "CRITICAL_TAG", or "" (all). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 states the tool 'reads' the log and returns events, implying a read-only, non-destructive operation. It does not detail permissions, rate limits, or whether the operation is idempotent, but the basic behavioral trait is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: a bold header and two short sentences. Every word adds value, and key information is front-loaded. There is no redundancy or wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking annotations, the description clearly explains the tool's purpose and output (risk classification). The existence of an output schema likely compensates for any missing details about return values. A minor gap is that it doesn't explicitly state the tool is safe/read-only, but it is strongly implied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all three parameters with descriptions and defaults (schema coverage 100%). The description offers no additional semantic value beyond what the schema already provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Read the append-only governance event log' and explains it returns 'recent tool-call intercept events' with risk classification. This distinguishes it from sibling tools like fcop_audit or fcop_check, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'Use this to understand what actions agents have taken and their risk classification,' providing a clear context for when to use the tool. However, it does not explicitly mention when not to use it or compare to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_historyA
List the deep history archive.
When date is supplied (YYYY-MM-DD) the tool lists every task
entry stored under that date shard. When date is omitted it lists
all available date shards (newest first).
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Optional date shard in ``YYYY-MM-DD`` format. Leave empty to list all available date shards. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 discloses the two behavior modes and the ordering of date shards (newest first). However, it does not mention whether the operation is read-only, pagination, or any rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences cover the purpose and both usage modes. Every sentence adds value, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple one-parameter tool and the presence of an output schema (which presumably covers return fields), the description is sufficiently complete. It explains the two operation modes, though it could explicitly state read-only behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds meaning beyond the schema: it explains that supplying a date lists task entries, while omitting it lists shards. This provides context the schema alone does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists the deep history archive and distinguishes between two modes: with a date (lists task entries) and without (lists available date shards). This sets it apart from siblings like list_tasks (current tasks) and read_history_task (single task).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to supply the date parameter and what happens in each case. It implies usage for browsing history, but does not explicitly exclude alternatives like read_history_task for specific tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_issuesC
List issues, optionally filtered.
| Name | Required | Description | Default |
|---|---|---|---|
| reporter | No | Filter by reporter role code (case-insensitive). | |
| severity | No | Filter by severity (``critical`` / ``high`` / ``medium`` / ``low``). Empty = all. | |
| limit | No | Maximum number of rows (0 = no limit). | |
| offset | No | Number of rows to skip. | |
| lang | No | Kept for 0.5.4 parity; currently unused. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It only states it lists issues with optional filtering, lacking details on pagination, ordering, permissions, or effects on the system.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no unnecessary words. It is efficient but lacks completeness, which prevents a higher score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (5 parameters, output schema exists, many siblings), the description is too minimal. It does not explain return values, sorting, or pagination, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds no additional meaning beyond the schema's parameter descriptions. The baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and resource 'issues' with optional filtering. However, it does not differentiate from sibling tools like list_tasks, list_reports, etc., which also list different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description only mentions optional filtering without specifying when it is appropriate or when to avoid using it.
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, optionally filtered.
| Name | Required | Description | Default |
|---|---|---|---|
| reporter | No | Filter by reporter role code (case-insensitive). | |
| task_id | No | Filter by source task ID. | |
| status | No | ``open`` (default), ``archived``, or ``all``. | open |
| limit | No | Maximum number of rows (0 = no limit). | |
| offset | No | Number of rows to skip. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It only conveys that the tool lists and filters reports, omitting critical traits like pagination behavior, default status, case-insensitivity of filters, and whether the operation is read-only. The schema partially fills gaps, but the description fails to add meaningful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—a single sentence with no redundant words. It is well front-loaded and avoids any unnecessary elaboration, earning top marks for efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema (not shown) and full parameter descriptions, the description lacks contextual completeness. It does not explain what a 'report' is in this system, when to use filters, or how this tool fits among siblings. For a 5-parameter tool with no usage guidance, the description is too sparse to be fully informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the input schema already documents all parameters with descriptions. The tool description adds no extra meaning to parameters beyond stating that filtering is optional. Baseline of 3 is appropriate as the schema carries the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists reports and supports optional filtering, but it does not differentiate what constitutes a 'report' relative to siblings like list_tasks or list_issues. The verb+resource is clear, but context is missing to distinguish from similar tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool over alternatives such as list_tasks or list_issues. There is no explicit when-to-use or when-not-to-use information, leaving the agent to infer context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_reviewsC
List REVIEW files, optionally filtered.
| Name | Required | Description | Default |
|---|---|---|---|
| reviewer_role | No | Filter by reviewer role code. | |
| decision | No | Filter by decision value (``approved`` / ``rejected`` / ``needs_changes`` / ``abstained`` / ``needs_human``). | |
| subject_type | No | Filter by subject type (``task`` / ``report`` / ``role_switch`` / ``code_change``). | |
| status | No | ``open`` (default) / ``archived`` / ``all``. | open |
| limit | No | Maximum number of rows (0 = no limit). | |
| offset | No | Skip this many rows. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description should disclose behavioral traits like authentication, rate limits, or pagination effects. It only says 'List REVIEW files, optionally filtered' without any additional behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (one sentence) but lacks many details. It is not verbose, but under-specification reduces its helpfulness. Every word is functional but incomplete.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is an output schema (mentioned but not shown), the description does not need to explain return values. However, it omits important context like default ordering, pagination handling, error conditions, or any filtering nuances, making it insufficient for effective agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 6 parameters are fully described in the input schema (100% coverage). The description adds no extra meaning beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists REVIEW files with optional filtering. It distinguishes it from other tools like read_review, though 'REVIEW files' is somewhat narrowly defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., read_review for a single review, or other list tools). The description lacks context for when filtering or pagination should be applied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tasksC
List tasks, optionally filtered.
| Name | Required | Description | Default |
|---|---|---|---|
| sender | No | Filter by sender role code (case-insensitive). | |
| recipient | No | Filter by recipient role code. Matches ``to-ROLE``, ``to-ROLE.SLOT``, and ``to-TEAM`` broadcasts. | |
| status | No | ``open`` (default), ``archived``, or ``all``. | open |
| date | No | Filter by YYYYMMDD date stamp. | |
| limit | No | Maximum number of rows to return (0 = no limit). | |
| offset | No | Number of rows to skip before returning. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden of behavioral disclosure. It only states that the tool lists tasks and can be filtered, but does not mention any behavioral traits like read-only nature, side effects, pagination defaults, or scope (e.g., tasks in current workspace).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at five words, front-loading the purpose. However, it is almost too terse; adding a bit more context (e.g., scope or default behavior) would improve clarity without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite an output schema being present, the description lacks essential context such as the default status filter (defaults to 'open'), scope of tasks, and the relationship between parameters. The description is incomplete for a tool with six optional parameters and no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3. The tool description adds no extra meaning beyond the schema; it merely mentions optional filtering. The parameter descriptions in the schema are self-sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action ('List') and the resource ('tasks'), which is clear. It also mentions optional filtering. However, it does not distinguish 'list_tasks' from sibling tools like 'list_governance_events' or 'list_reports', which also list entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as 'read_task' (single task retrieval) or 'inspect_task' (detailed view). The description does not provide context for when filtering is appropriate or how it relates to other list operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workspacesA
List all workspace/<slug>/ subdirectories with their metadata.
Picks up both workspaces created by new_workspace (they have
a .workspace.json marker) and directories created by hand
(shown with just the slug). Use for the at-a-glance "what's
inside this project" view.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Output language (``zh``/``en``). Empty = auto-detect from project config. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries burden. It discloses the two types of workspaces and that metadata is provided. Does not explain authentication or edge cases, but provides reasonable transparency for a non-destructive read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three efficient sentences: purpose, nuance, and use case. No wasted words, front-loaded with key action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is simple with one optional parameter. Though we don't see the output schema, its existence relieves description from detailing return values. Description covers behavior adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single lang parameter, and description adds no additional meaning beyond what the schema already provides. Baseline score justified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it lists workspace subdirectories with metadata, distinguishes between two types of workspaces (created by new_workspace vs hand-created), and states the use case for an at-a-glance view. Differentiates from sibling tools that list other entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implicitly tells when to use (for overview of workspaces), explains what it picks up. Does not explicitly state when not to use or give alternatives, but the context is sufficient for a simple list tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_human_approvedA
Record a human approval decision on a needs_human REVIEW file.
Closes the escalation loop opened by write_review(decision='needs_human').
Writes human_approval sub-structure into the REVIEW frontmatter
and returns the updated review summary (per ADR-0026).
| Name | Required | Description | Default |
|---|---|---|---|
| review_id | Yes | The stable review ID — filename stem without ``.md`` (e.g. ``REVIEW-20260510-001-ADMIN-on-some-task``). | |
| approver | Yes | Role code of the human approver. MUST be an agent with ``layer: admin`` (e.g. ``ADMIN``). | |
| decision | Yes | Human's binary decision: ``approve`` or ``reject``. | |
| channel | No | Channel through which the approval was submitted. One of ``mobile`` / ``cli`` / ``web`` / ``manual_file_edit``. Default: ``cli``. | cli |
| comment | No | Optional free-text comment from the approver. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description discloses that the tool writes a 'human_approval' sub-structure into the REVIEW frontmatter and returns the updated summary. It does not mention permissions or destructive actions, but covers the core behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the main purpose. It is concise, well-structured, and informative without extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema and thorough input schema, the description provides sufficient context for the tool's workflow. It mentions the escalation loop and ADR-0026, leaving little ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds minimal parameter details; it mentions the 'approver' must be an agent with layer admin, but this is already in the schema. No additional meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool records a human approval decision on a 'needs_human' REVIEW file, specifying the action and the context. It distinguishes from sibling tools like 'write_review' and 'read_review' by focusing on the approval step in the escalation loop.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates when to use: after a review has been set to 'needs_human' via 'write_review'. It provides clear context but does not explicitly state when not to use or mention alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
new_workspaceA
Create a workspace subdirectory under workspace/<slug>/.
workspace/<slug>/ is FCoP's soft convention for the actual
artifacts of a piece of work — code, scripts, data. Keeping those
out of the project root prevents yesterday's mini-game from
colliding with today's report generator.
Idempotent: calling twice with the same slug updates the title / description but never wipes files you already dropped in the folder.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Short lowercase-hyphen name matching ``^[a-z][a-z0-9-]*$`` and ≤ 40 chars. Examples: ``csdn-search``, ``mini-game``, ``weekly-report-2026w17``. | |
| title | No | Optional human-readable title (any language). | |
| description | No | Optional one-paragraph description, written into the per-slug README. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses idempotency, that title/description are updated on duplicate calls, and that files are never wiped—key behavioral traits beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise, front-loaded with purpose, then convention, then idempotency. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers creation behavior, idempotency, file safety, and context of why workspace subdirectories are used. Output schema exists, so return values need no explanation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already describes all parameters fully (100% coverage). Description adds minimal extra context about slug pattern and directory path, but does not significantly enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it creates a workspace subdirectory under a specific path, distinguishing it from sibling tools like init_project or list_workspaces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains when to use (to prevent project root clutter) and mentions idempotency, but does not explicitly list when not to use or compare with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_history_taskA
Read a task from the deep history archive.
Searches history/ for the task matching task_id. Providing
date restricts the search to that date shard (much faster).
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task ID (e.g. ``TASK-20260522-001``) or full filename. | |
| date | No | Optional ``YYYY-MM-DD`` date shard to restrict the search. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the search location (history/) and the efficiency benefit of the date parameter. However, it does not explicitly state the tool is read-only, nor does it mention potential behaviors like error handling or rate limits. The action 'Read' implies non-destructive, but lacks explicit safety confirmation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each earning its place. The first sentence states the purpose, the second explains the search mechanism, and the third provides optimization guidance. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, return value explanation is unnecessary. The tool is simple with 2 parameters (1 required). The description covers core functionality, search location, and optimization hint, making it sufficiently complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already describes both parameters. The description adds value by explaining the effect of the date parameter ('restricts search to that date shard') and its performance benefit ('much faster'), which goes beyond the schema's simple description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Read a task from the deep history archive.' It specifies the verb 'Read' and the resource 'deep history archive', distinguishing it from sibling tools like 'read_task' which likely read current tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidance on when to use the optional date parameter for efficiency ('much faster'). However, it does not explicitly state when to use this tool versus alternatives like 'read_task' or 'list_history', missing explicit when-not or alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_reportC
Read the full content of a report file.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | Report filename or the ``task_id`` the report was filed against. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for behavioral disclosure. It only states the basic action, omitting details such as error behavior (e.g., file not found), access requirements, or whether the read is local or remote.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise (one sentence), but this brevity comes at the cost of missing important details. While it earns its place by stating the purpose, it could be expanded with more structure (e.g., mentioning the parameter and behavior) without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (so return values are defined elsewhere) and the tool is a simple read operation, the description is minimally functional. However, it lacks contextual details like report location or typical use in a workflow (e.g., reading after listing reports).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100% and the schema already describes the filename parameter, the tool description adds no additional meaning beyond redundantly mentioning 'report file'. It does not explain the dual nature (filename or task_id) already present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Read') and resource ('report file'), clearly identifying the tool's action. However, it does not incorporate the schema's detail that the filename can also be a task_id, which would improve clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like list_reports (to find reports) or read_task (for tasks). The description lacks any context about prerequisites or decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_reviewA
Read the full content of a REVIEW file.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | Review filename or review ID (``REVIEW-YYYYMMDD-NNN-{reviewer}-on-{slug}[.md]``). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description implies a read operation with no side effects, but does not mention any specific behavioral traits like authentication requirements or output format. Since no annotations exist, the burden is higher, but the output schema may compensate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that conveys the essential purpose without any extraneous words. Maximum conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read operation with one parameter and an output schema, the description is nearly complete. Lacks usage guidelines, but otherwise sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the filename parameter. The description adds no significant new meaning beyond the schema's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Read' and the resource 'REVIEW file', making the tool's purpose obvious. It distinguishes itself from siblings like write_review (write) and list_reviews (list).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs. alternatives such as list_reviews or read_task. The agent must infer usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_taskB
Read the full content of a task file.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | Task filename (e.g. ``TASK-20260423-001-PM-to-DEV.md``) or plain task ID (e.g. ``TASK-20260423-001``). Both open and archived tasks are searched. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description implies a read-only operation with no side effects, which is consistent with a read tool. However, it does not explicitly state that the operation is safe or disclose any behavioral traits like caching, authorization needs, or error handling, especially given no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no extraneous words, efficiently conveying the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple single-parameter input and the existence of an output schema, the description is largely sufficient. It could be improved by noting that the output contains the full task file content, but that is likely defined in the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with examples and usage notes for the 'filename' parameter. The description only restates the tool's purpose and does not add additional meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads the full content of a task file, which is a specific verb+resource. However, it does not differentiate from sibling tools like 'inspect_task' and 'read_history_task', which likely have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'inspect_task' or 'read_history_task'. The description lacks context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redeploy_rulesA
ADMIN-only. Re-deploy bundled FCoP protocol rules to the project.
Writes the wheel-bundled :file:fcop-rules.mdc /
:file:fcop-protocol.mdc to four locations so any agent host
the project runs under sees the same rules:
.. code-block:: text
<root>/.cursor/rules/fcop-rules.mdc # Cursor IDE
<root>/.cursor/rules/fcop-protocol.mdc # Cursor IDE
<root>/AGENTS.md # Codex / Cursor / Devin / generic
<root>/CLAUDE.md # Claude Code CLIRun this after pip install -U fcop-mcp (or -U fcop)
to refresh on-disk copies to the newly packaged versions.
fcop_report() shows when this is needed via the version
drift warning.
Per ADR-0006, agents must NOT invoke this tool themselves — only ADMIN does, explicitly.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | When ``True`` (default) overwrite existing copies. ``False`` skips files that already exist (no-op for an up-to-date project). | |
| archive | No | When ``True`` (default) and ``force=True``, the existing copy is moved to :file:`.fcop/migrations/<timestamp>/rules/<rel>` before being overwritten so ADMIN can diff or roll back. ``False`` skips archiving (destructive — only safe when the project has no local edits). | |
| lang | No | Output language, ``zh`` or ``en``. | zh |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool is ADMIN-only, overwrites files with force=True, archives old copies when archive=True, and warns about destructiveness when archive=False. It could further mention that it may overwrite local edits, but overall provides good behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear header, a code block for file locations, and separate usage instructions. Every sentence adds value, and there is no redundancy or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the tool and the presence of an output schema, the description covers the core purpose, usage context, and parameter interactions. It lacks information about error handling or success indications, but overall is sufficiently complete for an admin tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already provides detailed descriptions for each parameter. The tool description adds minimal additional meaning beyond restating the parameter behaviors, so it meets the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool redeploys bundled FCoP protocol rules to the project, specifying it is ADMIN-only and listing the exact file locations. This distinguishes it from siblings like 'deploy_role_templates' which deploy different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises to run after upgrading fcop and mentions that fcop_report indicates when it's needed. It also includes a policy statement that agents must not invoke this tool, giving clear when-to-use and when-not-to-use guidance, though it lacks explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reject_taskA
Reject / recall a task under review: review → active (v3 lifecycle).
Moves the task file back from _lifecycle/review/ to
_lifecycle/active/ so the agent can rework it. Appends a
reject_task transition event. This is the FCoP v3 "撤回"
(recall) mechanism — ADMIN sends the work back for revision
without discarding it. On v2 projects this is a no-op.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task ID or full filename. | |
| actor | No | Role code of the rejector (default ``"ADMIN"``). | ADMIN |
| note | No | Mandatory rejection reason (strongly recommended). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool moves the task file from _lifecycle/review/ to _lifecycle/active/, appends a transition event, and is a recall mechanism. It also notes the v2 no-op behavior. Could mention authorization requirements beyond the default actor role.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two short paragraphs. The first sentence gives the main action. Every subsequent sentence adds necessary detail: lifecycle path, transition event, purpose, and version behavior. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of lifecycle management and version differences, the description is quite complete. It covers the lifecycle transition, file paths, event logging, and v2 no-op. It could mention prerequisites like the task must be in review state, but overall it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters, but the description adds valuable context: it explains that 'task_id' can be ID or full filename, that 'actor' defaults to ADMIN, and that 'note' is strongly recommended and mandatory in practice. This goes beyond the schema's detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool rejects/recalls a task under review, moving it from 'review' to 'active' lifecycle. It distinguishes itself from siblings like approve_task and archive_task by describing the specific lifecycle transition and mentioning it is the FCoP v3 recall mechanism.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a task under review needs rework by ADMIN. It explicitly notes that on v2 projects it is a no-op, providing important context. However, it does not explicitly state when not to use or list alternative tools for similar purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_project_dirA
Pin the project root for this MCP session.
Useful when the MCP process was spawned with the wrong working
directory — typical symptom: unbound_report shows a project
path like C:\Users\<you> instead of the workspace you
actually opened in Cursor. Calling this tool once re-binds every
subsequent tool call to the given directory, without editing
mcp.json or restarting Cursor.
Safe to call while UNBOUND — re-pointing at a directory is not a role-claim and writes nothing. It only mutates in-process state.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | absolute path to the project root (the directory that should contain ``docs/agents/`` and ``.cursor/rules/``). The directory must exist; it does not need to be an already-initialized FCoP project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool re-binds subsequent calls, mutates only in-process state, does not write to disk, and is safe to call while unbound. This provides good behavioral clarity, though it could mention if there are any side effects on existing bindings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the key purpose and structured into three paragraphs that each add value. It uses examples and backticks for clarity. While concise, it could be slightly tighter without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description does not need to explain return values. It covers purpose, usage context, behavioral details, and parameter semantics adequately. It is complete for a tool with one parameter and clear effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter. The description adds meaning beyond the schema by specifying the expected contents of the directory (docs/agents/, .cursor/rules/) and clarifying it does not need to be an initialized project. This enriches the parameter's semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Pin the project root for this MCP session' with a specific verb, resource, and scope. It differentiates from siblings by being the only tool that sets the working directory, and it explains the symptom that triggers its use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context on when to use (when unbound_report shows wrong path) and what it does (no editing of mcp.json). It does not explicitly list alternatives or when not to use, but the context is sufficient for correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_taskA
Submit an active task for review: active → review (v3 lifecycle).
Moves the task file from _lifecycle/active/ to
_lifecycle/review/ and appends a submit_task transition
event. On v2 projects this is a no-op.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task ID or full filename. | |
| actor | No | Role code of the agent submitting the task. | agent |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses the file move, event appending, and v2 no-op behavior, going beyond basic action description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences only, front-loaded with main purpose, no wasted words. Efficient and structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with 2 params, output schema exists, description covers lifecycle transition and version behavior. Complete for the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both parameters described in input schema. Description does not add additional details beyond schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states specific verb 'Submit' and resource 'active task', explicitly mentions lifecycle transition 'active → review', and distinguishes from siblings like approve_task, archive_task, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context that this tool moves tasks from active to review, and notes it's a no-op on v2 projects. Lacks explicit exclusions or alternatives but provides sufficient guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upgrade_fcopA
Return the install-method-specific command to upgrade fcop-mcp.
Does NOT run pip — MCP servers cannot safely upgrade themselves
mid-process, and different install methods (pip in a venv,
pipx, uvx) need different commands. This tool prints the
right incantation for the user to run in their own shell.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Output language, ``zh`` or ``en``. | zh |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: it returns a command without executing it, explains why MCP servers cannot self-upgrade, and notes different install methods. This is comprehensive behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (three sentences) and front-loaded with the main purpose. Every sentence adds value: purpose, limitation, and context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of an output schema, the description adequately covers the tool's purpose, behavior, and constraints without missing essential information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully describes the 'lang' parameter with a description of possible values. The tool description adds no additional semantics beyond what the schema provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the install-method-specific command to upgrade fcop-mcp, and distinguishes itself from sibling tools by focusing on upgrade commands rather than task or report operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use (to get upgrade command) and what it does not do (does NOT run pip), providing context about safety and install methods. However, it does not explicitly list when not to use or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_team_configA
Dry-run validation for a custom team config.
Use before create_custom_team to catch illegal role codes
(Chinese characters, dashes, reserved names, duplicates) without
writing anything to disk.
| Name | Required | Description | Default |
|---|---|---|---|
| roles | Yes | Comma-separated role codes. | |
| leader | Yes | Leader role code; must be one of ``roles``. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description adequately discloses the dry-run nature and that no data is written to disk. Lists specific checks (Chinese characters, dashes, reserved names, duplicates), but does not describe output schema or what happens on success/failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two sentences with no extraneous words. Each sentence adds essential information: what the tool is and how to use it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool and 100% schema coverage with output schema present, the description covers purpose, usage, and key behavioral traits. Could mention what the output schema returns but that is optional.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already describes parameters. The description adds context by mentioning specific validation checks (Chinese characters, etc.) and reinforces that leader must be one of roles, adding value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'validate' and resource 'custom team config', specifies it is a dry-run validation that checks for illegal role codes, and distinguishes from sibling 'create_custom_team' by indicating it should be used beforehand.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to use before `create_custom_team` and explains benefits (catching errors without writing to disk). Does not provide explicit when-not-to-use, but the context is clear enough for a validation tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_issueB
File an issue under docs/agents/issues/.
| Name | Required | Description | Default |
|---|---|---|---|
| reporter | Yes | Reporter role code (uppercase). | |
| summary | Yes | One-line summary written into the filename and frontmatter. | |
| body | Yes | Detailed issue body in Markdown. | |
| severity | No | ``critical`` / ``high`` / ``medium`` / ``low``. Aliases: ``P0`` → critical, ``P1`` → high, ``P2`` → medium, ``P3`` → low. | medium |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It only states the action ('File an issue') without revealing side effects (e.g., file creation, overwrite behavior), permissions required, or other behavioral traits. This is insufficient for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (one sentence), with no waste. However, it could benefit from slightly more detail to improve clarity without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple parameters and presence of an output schema (which handles return value description), the description adequately covers the location and action. It lacks some contextual details (e.g., file naming convention), but is mostly complete for this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter already has clear descriptions. The tool description adds no additional meaning beyond what the schema provides (e.g., how summary is used in the filename). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('File an issue') and the location ('docs/agents/issues/'), making the purpose clear. However, it does not distinguish this tool from sibling tools like write_report or write_task, which could lead to confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., write_report or create_task). The description lacks any 'when-to-use' or 'when-not-to-use' context, forcing the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_reportA
Write a completion report for a task.
Creates REPORT-<task_id>-{REPORTER}-to-{RECIPIENT}.md under
docs/agents/reports/. The task_id is the canonical reference
back to the source task.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Source task ID (e.g. ``TASK-20260423-001``). | |
| reporter | Yes | Reporter role code (uppercase). | |
| recipient | Yes | Recipient role code (typically the PM). | |
| body | Yes | Report body in Markdown. | |
| status | No | ``done`` / ``in_progress`` / ``blocked``. | done |
| priority | No | FCoP priority; accepts ``P0``–``P3`` and aliases. | P2 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It discloses the file creation path and naming, but does not mention side effects (e.g., overwriting, permission needs) or whether it updates the task status. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences that efficiently state purpose and key detail (file path). No redundancy, front-loaded with the primary action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, return value explanation is unnecessary. The description covers purpose and output location. Missing details on error states or side effects, but sufficient for a straightforward file creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with good descriptions. The description adds value by explaining the report filename pattern and linking task_id to the source task, which goes beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it writes a completion report for a task, specifies the file naming convention and location, and distinguishes it from sibling tools like write_task or write_issue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While the description implies use for creating completion reports, it does not explicitly compare to alternatives or state when not to use it. The tool name and context make it clear, but explicit guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_reviewC
Write a REVIEW file (governance-layer decision, per ADR-0017/0025).
| Name | Required | Description | Default |
|---|---|---|---|
| reviewer_role | Yes | Role code of the reviewer (must have ``review_decision`` capability; typically ``layer: governance`` or ``layer: admin``). | |
| subject_type | Yes | What is being reviewed. One of ``task`` / ``report`` / ``role_switch`` / ``code_change``. | |
| subject_ref | Yes | Reference to the artefact under review — file path for task/report/code_change; fcop.json diff range for role_switch. | |
| decision | Yes | Review decision. One of: ``approved`` — artefact is accepted; ``rejected`` — artefact is rejected (cannot proceed); ``needs_changes`` — must be revised (requires ``required_changes``); ``abstained`` — reviewer recuses; ``needs_human`` — reviewer escalates to human (ADR-0025, v1.1). The review stays pending until ``mark_human_approved`` is called to close the loop. | |
| rationale | No | Free-text rationale for the decision. Recommended for all non-``approved`` decisions. | |
| required_changes | No | Newline- or comma-separated list of required changes. Mandatory when ``decision=needs_changes``. | |
| reviewer_agent | No | Optional agent/session identifier on top of the role code. | |
| body | No | Additional Markdown body after the frontmatter. | |
| subject_short | No | Override the ``-on-{slug}`` segment of the filename. Auto-derived from ``subject_ref`` when omitted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. The description only states it writes a REVIEW file, with no information about side effects, permissions, idempotency, or whether it's destructive. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that communicates the core action. It is appropriately front-loaded but could benefit from a bit more context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description lacks details about what the REVIEW file contains, how it affects the artefact under review, and the overall workflow. For a tool with 9 parameters in a governance context, this is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with detailed descriptions for all 9 parameters. The tool description adds no additional meaning beyond what the schema already provides, so baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool writes a REVIEW file for governance-layer decisions, referencing ADR-0017/0025. This distinguishes it from sibling tools like read_review and list_reviews. However, it could be more explicit about creating a new review record.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description mentions ADRs but does not provide context on prerequisites, when-not-to-use, or comparisons to sibling tools like approve_task or mark_human_approved.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_taskA
Create a new task file (v3: _lifecycle/inbox/; v2: fcop/tasks/).
The library assigns a filename of the form
TASK-YYYYMMDD-NNN-{SENDER}-to-{RECIPIENT}.md and writes a
FCoP-compliant YAML frontmatter + markdown body.
In a v3 project the task is placed in _lifecycle/inbox/ so the
recipient can claim_task it.
| Name | Required | Description | Default |
|---|---|---|---|
| sender | Yes | Sender role code (uppercase). | |
| recipient | Yes | Recipient role code (uppercase). May use the slot form ``ROLE.D1`` for per-slot targeting or ``TEAM`` for broadcast. | |
| subject | Yes | One-line subject written to the ``subject:`` frontmatter field. | |
| body | Yes | Task body in Markdown. | |
| priority | No | FCoP priority. Accepts ``P0`` / ``P1`` / ``P2`` / ``P3`` (canonical) or the legacy aliases ``urgent`` / ``high`` / ``normal`` / ``low``. Default: ``P2``. | P2 |
| thread_key | No | Optional thread identifier for linking this task to an ongoing conversation. | |
| references | No | Comma-separated task filenames this task refers back to (for ``references:`` frontmatter field). | |
| risk_level | No | Operation risk level (per ADR-0024). One of ``low`` / ``medium`` / ``high`` / ``irreversible``. Default: ``medium``. ``high`` and ``irreversible`` will automatically require a ``needs_human`` review gate. Leave empty to accept the default (``medium``). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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. It covers file naming, version differences (v3 vs v2), placement in '_lifecycle/inbox/' for claiming, and that it writes YAML frontmatter + markdown. Missing details on overwriting behavior or error handling, but overall strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two paragraphs with essential details, no redundant sentences. It could be slightly more concise, but every sentence adds value (file naming, version logic, placement). Appropriate length for the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters, 4 required, an output schema exists, and no nested objects, the description covers the core behavior well. It explains file creation context but omits return value specifics (handled by output schema) and error cases. Nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add significant meaning beyond the schema's parameter descriptions, except for the file naming convention which is not a parameter. Schema descriptions are already thorough.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new task file' and specifies the file naming convention, version-specific locations, and frontmatter structure. It uniquely identifies the resource and action, distinguishing itself from siblings like 'create_task' through detailed file creation behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage in FCoP-compliant projects but does not explicitly state when to use this tool versus alternatives like 'create_task' or when not to use it. No exclusions or context for avoiding misuse are provided.
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. Dates show when Glama detected each change.
45 tool updates
v3.2.4- First observed
approve_task - First observed
archive_task - First observed
archive_to_history - First observed
bulk_archive_to_history - First observed
check_update - First observed
claim_task - First observed
create_custom_team - First observed
create_task - First observed
deploy_role_templates - First observed
drop_suggestion - First observed
fcop_audit - First observed
fcop_check - First observed
fcop_create_alert - First observed
fcop_list_alerts - First observed
fcop_report - First observed
finish_task - First observed
get_available_teams - First observed
get_governance_summary - First observed
get_team_status - First observed
init_project - First observed
init_solo - First observed
inspect_task - First observed
list_governance_events - First observed
list_history - First observed
list_issues - First observed
list_reports - First observed
list_reviews - First observed
list_tasks - First observed
list_workspaces - First observed
mark_human_approved - First observed
new_workspace - First observed
read_history_task - First observed
read_report - First observed
read_review - First observed
read_task - First observed
redeploy_rules - First observed
reject_task - First observed
set_project_dir - First observed
submit_task - First observed
upgrade_fcop - First observed
validate_team_config - First observed
write_issue - First observed
write_report - First observed
write_review - First observed
write_task
TDQS
Multiple tools have overlapping purposes, most notably create_task and write_task which are functionally identical. The presence of similar tools like fcop_check and fcop_audit may also cause confusion, though they have distinct scopes. Overall, agents may have difficulty selecting the correct tool.
All tool names follow a consistent verb_noun pattern in snake_case. The use of 'fcop_' prefix for some tools is consistent within that subset, and the overall naming scheme is predictable and clear.
With 45 tools, the count is excessively high for most use cases. While the domain is complex, many tools could be consolidated (e.g., multiple list_* tools, redundant create_task and write_task). This many tools likely overwhelming for agents.
The tool surface covers the FCoP lifecycle and governance extensively, but notable gaps exist: there is no tool to update or delete issues, and no tool to edit task content directly. Some CRUD operations are missing, which may cause dead ends.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Shared control plane for AI coding agents — tasks, memory, decisions, file locks. 12 tools.
One MCP endpoint for Claude, GPT & Gemini: 100+ tools + no-code connectors + agent workers.
An agent-first office suite Claude & ChatGPT read and write over one MCP URL.
Real-time chat for AI agents. Claude Code, Cursor, Cline and Codex join channels over MCP.
Related MCP Servers
- AlicenseAqualityDmaintenancePersistent, cross-session task management for Claude Code. 24 MCP tools for tasks, projects, dependencies, and docs. 7 skills for planning, standups, and handoffs. Event-sourced storage with per-project isolation.5MIT
- AlicenseAqualityCmaintenanceMCP 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.3213MIT
- AlicenseAqualityDmaintenanceAn agent orchestration layer that wraps expert agents as MCP tools, enabling integration with Claude Desktop, Cursor, and other MCP-compatible environments.4179MIT
- FlicenseNot gradedqualityBmaintenanceA 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.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/joinwell52-AI/FCoP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server