Skip to main content
Glama

Open-science citation records

Record

Identifier

Scope

Current public release archive

DOI 10.5281/zenodo.20457285

Frozen FCoP v3.2.5 release archive

Immutable open-science snapshot

OSF Registration 92nwm

Timestamped registration linked to the public FCoP research project

Historical research snapshot

DOI 10.5281/zenodo.19886036

research-snapshot-2026-04-29; retained for citations of that exact snapshot


Related MCP server: Readedit

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

TMPA · Site

Governance architecture, normative Core, conformance, and evidence

Protocol

FCoP

File-based behavior governance, Python package, and MCP server

Historical implementation

CodeFlowMu Open · Historical site

Frozen at V1.2.29-open on 2026-08-22; preserved for engineering history, reproducibility, and research reference; not the current CodeFlowMu product distribution path

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 projectfcop init / MCP init_solo|init_project|create_custom_team (≥ 3.0.2 produces v3 topology directly).

  • Existing 2.x projectpython -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, run migrate --to-v3 to upgrade.

Doc

Purpose

spec/fcop-v3-spec.md · zh

Current single-page spec (3.0 → 3.2.5: _lifecycle/ + history/)

spec/fcop-3.0-spec.md · zh

Frozen 3.0.0 baseline (2026-05-21)

spec/fcop-3.0-rfc.md · zh

IETF-style RFC projection

docs/MIGRATION-3.0.md · zh

2.x → 3.0 migration guide

CHANGELOG.md [3.0.0]

Full release notes

essays/the-day-we-almost-added-custody.en.md · zh

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 system

FCoP 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.md tells 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

English · 中文 (GitHub) · 中文 (CSDN)

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

GitHub 中文 · GitHub English

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 PM.TEMP walked an undocumented protocol path with one body line: "PM.TEMP acting as PM, kept for FCoP tool compatibility." I expected a conflict. None happened — the agents finished the unwritten parts of the spec themselves. Ships with 15 screenshots + 2 full JSONL transcripts.

05

Tutorial: From Solo to a 2-Person AI Crew — Disciplining the AI Team with FCoP-MCP (two parallel case studies)

English (Tetris case): tetris-solo-to-duo.en.md · Dev.to · Cursor Forum · 中文译本(俄罗斯方块案例): tetris-solo-to-duo.zh.md · 中文母语原创(贪吃蛇案例): snake-solo-to-duo.zh.md · CSDN 中文版

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 fcop-mcp in Cursor, ship a working game in solo mode, switch to a 2-person team where PLANNER designs and CODER implements a creative variant, then read the disk. The Chinese case uses Snake → NEON ORBIT (original-themed) and captures an actual PLANNER-impersonating-CODER easter egg from the 0.6.x era. The English case uses Tetris → Nebula Stack (solo) → Comet Loom (team), and adds a full review-and-rework cycle (ADMIN plays v1, finds 3 blocking defects, bounces it back; PLANNER writes TASK-006 with a new Verification Requirements section; CODER ships v2) plus an end-of-day on-the-record interview where both agents are asked what they think of the protocol. 22 dogfood screenshots, 14 TASK/REPORT files, 8 silent role-switch evidence files, 2 game artefacts, 2 verbatim agent transcripts — all archived under docs/tutorials/assets/tetris-en/.

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 role-switch evidence files true positives, against its own operational convenience. CODER admitted it had a protocol primitive (write_issue) it didn't use, traced the v1 defect to that exact uncovered space, and filed PR-grade product feedback on the protocol. Three different elicitation conditions, the same phenomenon — agents endorse FCoP when given the room to. Also includes a small empirical observation: across the entire 45-minute dogfood, ADMIN's two most-used phrases were "Start work." and "Inspection."

07

当 agent 从自己的残骸中学习

GitHub 中文 · GitHub English · CSDN 中文 · Dev.to

codeflow 项目一日 14 个 agent 涌现现场报告(2026-05-12):USER HOME 全局污染 / GATE 描述自命中 / supersedes: 字段现场发明——以及协议如何在零次崩溃的情况下,以小时级速度将它们全部反向吸收。

08

协议为什么短,历史为什么长

GitHub 中文 · GitHub English

一份给协议维护者的设计哲学答案:"这样的涌现会不会没有止境?"——短答:会收敛但不会停。四类涌现的处理路径、三条结构力学为何能让协议骨架不被涌现压垮,以及"协议短是为了让历史能无限长"的底层逻辑。

09

当 validator 撞向自己的镜像

GitHub 中文 · GitHub English

从 codeflow OPS I-14 看 validator-validates-itself 反模式:GATE 在检查 staged diff 时命中了 GATE 描述本身,几分钟后被 OPS 自纠——这一类陷阱的系统性解剖与"语义化实证"根治姿势,以及它如何成为 fcop-protocol.mdc §GATE Design Pitfalls 的源头案例。

10

一行 frontmatter 的旅程

GitHub 中文 · GitHub English

supersedes: 字段从一次协议两难现场发明到 ipc-envelope.schema.json 正式字段的两小时旅程:Rule 5(append-only)+ Rule 6(reciprocity)+ Rule 0.c(truthful)三条规则同时成立时,agent 用一行 YAML 自己解了困局——这条路径展示 FCoP 涌现落地的最低成本姿势。

11

看,但不动手

GitHub 中文 · GitHub English · CSDN 中文

FCoP 三层语义执行链科普:fcop_audit() 为什么"只看不改"——L1 检测 / L2 解释 / L3 文档三层把"看见"和"动手"切开,产出 INSPECTION.md(建议非命令),执行权留给人。adr/FCoP-semantic-execution-chain.md 的科普版。

12

五大 AI 模型眼中的 FCoP

GitHub 中文 · GitHub English · Cursor Forum

把 FCoP 核心文档喂给 ChatGPT / Claude / DeepSeek / Grok / 豆包,只问一个问题:"你是 agent,你怎么看这套协议?"——五种截然不同的内部视角(ChatGPT 谈身份合法性、Claude 谈诚实边界、DeepSeek 谈体面生存、Grok 做技术评审、豆包讲设计哲学),以及它们之间最有意思的分歧。

13

Evolution, Reverse Absorption / 演化,反向吸收

GitHub 中文 · GitHub English

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

tool_calls_count: 0 → 7 的突破现场:Cursor Forum 功能请求 → Colin 推荐 Agent SDK → CodeFlow 诞生 → stub 模式卡关 → MCP 注入 + 角色上下文双保险 → 2026-05-13 14:55,DEV-01 在 55 秒内自主调用 7 次 fcop-mcp 工具,写出第一份完整 FCoP report。FCoP 自身也在这次突破中完成蜕变:从"协作手册"升级为"可执行的协作基础设施"。

15

从协调到治理:FCoP 3.0 架构白皮书 / From Coordination to Governance: FCoP 3.0 Architecture Whitepaper

GitHub 中文 · GitHub English · dev.to (EN) · Cursor Forum

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: parent, thread_key, Phase dispatch, and CHILD_TASKS_OPEN combined into a project tree; a failed archive and PM drawing the tree in chat were the recognition moment. Conclusion points to additive proposed spec/0003-project-tree-protocol.md.

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 against essays/. 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.md

30-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-AI

Path 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

fcop

pip install fcop

Pure Python library. Read/write tasks, reports, issues, reviews programmatically. Zero MCP dependency.

pyyaml

fcop-mcp

pip install fcop-mcp

MCP server. Exposes the library over stdio so Cursor / Claude Desktop can call it as tools.

fcop>=1.1, fastmcp, websockets

Pointers (one row each, no version baked in):

You want to…

Go to

Install fcop-mcp into Cursor / Claude Desktop step-by-step

mcp/README.md

Have an agent do the install for you (zero JSON editing)

agent-install-prompt.en.md · 中文 (also live as MCP resource fcop://prompt/install)

Upgrade an existing 0.6.x install (both packages in lockstep + protocol-rule refresh)

docs/upgrade-fcop-mcp.md

Browse all 45 MCP tools and 14 resources by category

docs/mcp-tools.md

Read the per-release record (what changed when, why)

CHANGELOG.md and docs/releases/

Recent releases (full notes in docs/releases/):

Version

One-line

3.2.5 (notes · CHANGELOG)

v3.2.5 — Rule 0.a.1 collaboration cycle · Hot/Cold Path. Executor stops after report; archive requires ADMIN/leader authorization; bundled rules 3.2.5; 34 role charters get Common Block; write_task gains parent field. No breaking API removals.

3.2.4 (notes · CHANGELOG)

v3.2.4 — PyPI metadata & bundled protocol encoding fix. Restores UTF-8 in wheel fcop-protocol.mdc (avoid PyPI 3.2.3); fixes fcop-mcp「FCoP (protocol)」link → getting-started.en.md; syncs PyPI long description to 45 tools / v3 _lifecycle/. No API changes — upgrade from 3.2.3.

3.2.3 (notes · CHANGELOG)

v3.2.3 — Team template & doc sync · FCoP 3.0 compliance. Bundled team templates (letter-to-admin, roles/*, TEAM-OPERATING-RULES, …) migrate legacy tasks/ / log/ references to _lifecycle/; tool count 32→45; .cursor/rules/ synced with bundled rules; new scripts/fcop_prerelease_check.py (10 pre-release checks). PyPI 3.2.3 wheel had bad protocol encoding — use 3.2.4.

3.2.2 (CHANGELOG)

v3.2.2 — Pre-release gate hardening + rule-file v3 consistency. fcop-mcp prerelease_check.py gains Checks 7–10 (lockstep version guard, bundled rule integrity, _lifecycle/ docs, lifecycle stage coverage); fcop-rules.mdc / fcop-protocol.mdc document v3 directory topology and state machine.

3.2.0 (CHANGELOG)

v3.2.0 — History deep archive. Adds history/YYYY-MM-DD/ date-sharded long-term archive layer plus archive_to_history / list_history / read_history_task MCP tools; lifecycle tools (claim / submit / approve / reject / finish) landed in 3.1.x; 45 MCP tools total.

3.0.2 (CHANGELOG)

v3.0.2 — Init topology fix. Project._apply_init in 3.0.0 / 3.0.1 only created the legacy v2 buckets and skipped the mandatory v3 _lifecycle/{inbox,active,review,done,archive}/ layer (spec §1.1). 3.0.2 makes fresh init produce the v3 topology directly (and stops creating the superseded v2 tasks/ / log/ buckets); core.events.scan_workspace and Project.role_occupancy() now read from _lifecycle/ for v3 projects. New audit scan _scan_lifecycle_topology_compliance() (D9): P0 when initialised projects miss both _lifecycle/ and v2 content; P1 when both topologies coexist (suggests migrate --to-v3). MCP tool descriptors (init_solo / init_project / create_custom_team) updated. 1209 tests green. Patch (SemVer): no API surface changes vs 3.0.1 — init was simply doing the wrong thing.

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 spec/archived/, this patch repairs broken links scattered across AGENTS.md / CLAUDE.md / packaged Cursor rules / MCP server docstrings / two JSON Schema description fields, unifying them on spec/archived/fcop-runtime-protocol-v1.0.{md,zh.md} (with pointers to the current canonical spec/fcop-3.0-spec.md). fcop-mcp's fcop://spec / fcop://spec/en docstrings are corrected to reflect the wheel's actual packaged content (fcop-spec-v1.1.{lang}.md). Historical artifacts (TASK / REPORT / ADR / release notes / migration docs) are preserved verbatim per ADR-0036 "history is not rewritten". 1202 tests green.

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 _lifecycle/{inbox,active,review,done,archive}/ five-bucket directory topology (incompatible with 2.x, requires fcop migrate --to-v3); three rule sets (State Layer Rule A/B/C · Event Layer Rule E/F/G · Boundary Charter); 7 allowed transitions — anything off-table MUST be rejected by implementations; write-then-rename atomicity (events ARE migrations, migrations ARE events); ADR-0037 Custody Layer was withdrawn during RFC review and never reached Accepted (custody is not a protocol layer; preserved as a NOTE-style derivative explanation). Adds spec/fcop-3.0-spec.md single-page canonical + IETF-style RFC parallel + Chinese parallel + docs/MIGRATION-3.0.md migration guide.

2.0.2 (CHANGELOG)

v2.0.2 — fcop-mcp officially registered to the MCP registry (io.github.joinwell52-AI/fcop). Backed by Anthropic + GitHub + Microsoft's joint registry, fcop-mcp is now discoverable by Claude Desktop / Cursor / PulseMCP / every MCP-compatible client out of the box (uvx fcop-mcp one-liner install). Double-pack lockstep version bump (per ADR-0002): fcop library code is unchanged from v2.0.0; the bump aligns both package version numbers and consolidates the fcop-mcp@2.0.1 MCP-metadata patch that landed the same day. Also lands the release+backup one-shot SOPRULES-release-file-inventory.md (12-category), RULES-mcp-registry-release.md (3-step path), and the append-only backup mirror at joinwell52-AI/FCoP-backup.

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 (fcop/internal/ vs docs/ + essays/ soft convention with internal-only declaration v1), Project.init(deploy_internal_template=...) opt-in, P3 (suggestion) audit severity, and a bundled fcop_audit exemption list (log/, _archive/, legacy-non-protocol/) that fixes three upstream bugs surfaced by codeflow cross-project patrol (ISSUE-008/009/010). ADR-0034.

1.6.0 (CHANGELOG)

v1.6 — Trailing-slug filename adoption (ADR-0033). Long filenames (TASK-20260512-025-PM-to-OPS-phase-a-fix-naming.md) are now first-class — codeflow's 22+ self-emerged examples absorbed into the grammar. Slug does not participate in routing; it's a human-readable label. 100% backward-compatible (0 regressions across 1057 tests).

1.5.0 (CHANGELOG)

v1.5 — Protocol-awareness sync + RULE_DOC_DRIFT. 84 role/team docs synced to v1.4 protocol surface (REVIEW envelope / risk_level / fcop_audit / supersedes:); new Project._scan_outdated_role_docs() with RULE_DOC_DRIFT (P1) violation type.

1.4.0 (notes)

v1.4 — Write-side bind enforcement (P0 security) + supersedes: field. 15 write-side MCP tools refuse cwd fallback (WriteRefused); Protected Path deny-list (HOME / APPDATA / drive roots / Unix system dirs); new supersedes: frontmatter field (all envelopes) + ## GATE Design Pitfalls commentary (fcop_protocol_version 2.2.0).

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 (fcop_list_alerts, fcop_create_alert). fcop_audit (ADR-0032): three-scenario protocol inspection compiler, 6 scan methods, INSPECTION report with Execution Block. 35 MCP tools total.

1.2.1 (notes)

v1.2 — Capability Governance pillar. FCoPGovernanceMiddleware wraps every MCP tool call: Skill Resolver → Risk Tagging (Safe / Sensitive / Critical) → append-only fcop_events.jsonl audit log. 2 new MCP tools (list_governance_events, get_governance_summary). fcop_check() gains governance event summary. Both fcop and fcop-mcp align to 1.2.1 (lockstep). ADR-0030-bis.

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 (write_review, list_reviews, read_review, mark_human_approved), write_task gains risk_level param, new skill.schema.json. Fully backward-compatible.

1.0.1

Spec files bundled in wheel (get_spec()); fcop://spec MCP resource; workspace paths migrated docs/agents/fcop/; CI green.

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 fcop-rules.mdc frontmatter stale at 1.7.0 (body was already 1.8.0); adds frontmatter↔body consistency tests. No protocol or API change.

Watch out — wrong fcop on PyPI shadows the library. Both packages here are published from this repository. If from fcop import Project, Issue fails after pip install fcop, you most likely installed an unrelated fcop distribution or another local project shadows the library. Fix: clean venv + reinstall both packages from PyPI in lockstep. The verify commands are in mcp/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-level fcop/ (per ADR-0022). Run fcop migrate-workspace --apply for one-shot git-aware migration, or pin via Project(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 — in docs/MIGRATION-1.0.md.

Upgrading from 0.5.x? The MCP server moved from fcop to fcop-mcp — update your mcp.json to uvx fcop-mcp. See docs/MIGRATION-0.6.md for 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

docs/getting-started.en.md

Upgrading from 0.7.x — workspace migration + new abstractions

docs/MIGRATION-1.0.md

Upgrading from 1.0/1.1 → 1.2 — Capability Governance + lockstep versioning

docs/MIGRATION-1.1.md · CHANGELOG

Understand the protocol contract — what an implementation MUST do

spec/fcop-3.0-spec.md — single-page canonical spec (v3.0). Earlier v1.0/v1.1 spec drafts remain in spec/ for historical reference.

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

adr/ — start with ADR-0029

All 45 MCP tools & 14 resources

docs/mcp-tools.md

Release notes — full changelog

CHANGELOG.md

Full document map — every file and its role

adr/README.md (ADR index) + spec/fcop-3.0-spec.md §11 (Cited Material)


Design principles

  1. Filename is the single source of truth. Directory + filename define the state; frontmatter is redundant metadata.

  2. Atomicity comes from rename(). Nothing else. No locks, no transactions.

  3. Human-machine isomorphism. The same artefact a human reads with cat is what agents parse. No debug mode, no admin console.

  4. 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.

  5. 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:

  1. fcop / fcop-mcp — Python library + MCP server for the protocol. Source in this repository under src/fcop/ and mcp/src/fcop_mcp/. Installed via PyPI (see section above).

  2. Stub path: spec/codeflow-core.mdc is only a URL placeholder (no full body). Normative rules are src/fcop/rules/_data/fcop-rules.mdc + fcop-protocol.mdc.

Status & versioning

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:

@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:

  1. Field reports. Try FCoP on your own agent team and open an issue with what broke, what the agents invented, what naming conventions emerged.

  2. Ports & SDKs. Thin wrappers for Python / TypeScript / Go that implement the filename parser and rename() state transitions.

  3. Editor / MCP integrations. Syntax highlighting for .fcop files, 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 tools
approve_taskA

Approve a task under review: reviewdone (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.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID or full filename.
actorNoRole code of the approver (default ``"ADMIN"``).ADMIN
noteNoOptional approval note appended to the transition event.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description adds 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID (e.g. ``TASK-20260423-001``) or full filename.
langNoKept for 0.5.4 parity; currently unused because the library does not need locale for this operation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID (e.g. ``TASK-20260522-001``) or full filename.
done_dateNoOverride the shard date in ``YYYY-MM-DD`` format. Leave empty to use the task's own ``done_at`` timestamp.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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/ into history/ in one step.

The history/ directory is created automatically if it does not yet exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
done_dateNoOverride 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

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoOutput language, ``zh`` or ``en``.zh

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

The description gives clear context: use 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 inboxactive (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.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID (e.g. ``TASK-20260423-001``) or full filename.
actorNoRole code of the agent claiming the task (default ``"agent"``).agent

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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/).

ParametersJSON Schema
NameRequiredDescriptionDefault
team_nameYesDisplay name for the team (e.g. ``"My Design Studio"``).
rolesYesComma-separated role codes (e.g. ``"BOSS,CODER,TESTER"``).
leaderYesLeader role code; must appear in ``roles``.
langNoOutput language, ``zh`` or ``en``.zh
forceNoWhen ``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

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
senderYesSender role code (uppercase).
recipientYesRecipient role code (uppercase). May use the slot form ``ROLE.D1`` or ``TEAM`` for broadcast.
subjectYesOne-line subject for the ``subject:`` frontmatter field.
bodyYesTask body in Markdown.
priorityNo``P0`` / ``P1`` / ``P2`` / ``P3`` (or legacy aliases). Default: ``P2``.P2
thread_keyNoOptional thread identifier.
referencesNoComma-separated task filenames for ``references:`` field.
risk_levelNo``low`` / ``medium`` / ``high`` / ``irreversible``. Leave empty to accept the default (``medium``).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamNoTeam ID to deploy. Empty = use the current project's ``fcop.json`` team.
langNoLanguage variant to emphasize. Empty = use project language from ``fcop.json``.
forceNoOverwrite existing files (after archiving) vs skip.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesthe suggestion body (plain text or markdown).
contextNooptional short context line (e.g. "triggered while doing X"). Rendered as a separate block in the proposal file.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 优先级和回滚方式。

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNo``"new"`` | ``"upgrade"`` | ``"takeover"`` | ``"auto"``auto
outputNo``"file"`` 写报告文件(默认) | ``"stdout"`` 仅返回 Markdown | ``"both"`` 写文件并返回file
project_pathNo保留参数(暂未使用),实际路径由 FCOP_DIR 环境变量或当前目录决定.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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):

  1. Rule 0.a.1 drift — files in git status --porcelain that live outside docs/agents/{tasks,reports,issues,log}/ are by definition work performed without the task→do→report→archive cycle.

  2. Rule 1 sub-agent role impersonation — any session_id that 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 -z from the project root.

  • Walk every TASK-*.md / REPORT-*.md / ISSUE-*.md in docs/agents/{tasks,reports,issues} + docs/agents/log/*.

  • Read frontmatter only; never task bodies.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoOutput language, ``zh`` or ``en``. Default: ``zh``.zh

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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/.

ParametersJSON Schema
NameRequiredDescriptionDefault
severityYes``high``, ``medium``, or ``low``.
alert_typeYesOne of: ``missing_independent_verdict``, ``commit_flood_without_governance``, ``critical_tool_unreviewed``, ``long_running_without_reconciliation``.
summaryYesPlain-text description of the governance gap (1-3 sentences).
suggestionNoRecommended action for ADMIN. Default: "ADMIN review recommended".ADMIN review recommended

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the 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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoFilter by status: ``open``, ``acknowledged``, ``resolved``. Empty string returns all statuses.
severityNoFilter by severity: ``high``, ``medium``, ``low``. Empty string returns all severities.
last_nNoMaximum number of alerts to return (most recent first).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the 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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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):

  1. Initialization report when docs/agents/fcop.json is 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.

  2. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoOutput language, ``zh`` or ``en``. Default: ``zh``.zh

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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: activedone (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.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID or full filename.
actorNoRole code of the agent finishing the task.agent

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoOutput language hint. Currently only affects display prose; the roster data is language-independent.zh

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoOutput language (``zh`` / ``en``). Empty = auto-detect from ``docs/agents/fcop.json``.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamNoTeam 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
langNoOutput language. ``zh`` or ``en``. Default: ``zh``.zh
forceNoWhen ``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

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden. It 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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
role_codeNoThe single role code (uppercase letters / digits / underscore, must start with a letter; ``ADMIN`` and ``SYSTEM`` are reserved). Default: ``ME``.ME
role_labelNoDisplay label (e.g. ``"我自己"``). Currently recorded in ``extra`` for future use; the library does not yet consume it. Safe to omit.
langNoOutput language, ``zh`` or ``en``.zh
forceNoWhen ``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

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameYesTask filename or ID (same forms as ``read_task``).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
last_nNoMaximum number of recent events to return (default 50).
riskNoFilter by risk level: "Safe", "Sensitive", "Critical", or "" (all).
tagNoFilter by tag: "ALLOW", "REVIEW_TAG", "CRITICAL_TAG", or "" (all).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoOptional date shard in ``YYYY-MM-DD`` format. Leave empty to list all available date shards.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
reporterNoFilter by reporter role code (case-insensitive).
severityNoFilter by severity (``critical`` / ``high`` / ``medium`` / ``low``). Empty = all.
limitNoMaximum number of rows (0 = no limit).
offsetNoNumber of rows to skip.
langNoKept for 0.5.4 parity; currently unused.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description 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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
reporterNoFilter by reporter role code (case-insensitive).
task_idNoFilter by source task ID.
statusNo``open`` (default), ``archived``, or ``all``.open
limitNoMaximum number of rows (0 = no limit).
offsetNoNumber of rows to skip.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full responsibility for behavioral disclosure. 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
reviewer_roleNoFilter by reviewer role code.
decisionNoFilter by decision value (``approved`` / ``rejected`` / ``needs_changes`` / ``abstained`` / ``needs_human``).
subject_typeNoFilter by subject type (``task`` / ``report`` / ``role_switch`` / ``code_change``).
statusNo``open`` (default) / ``archived`` / ``all``.open
limitNoMaximum number of rows (0 = no limit).
offsetNoSkip this many rows.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior1/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

No guidance on when to use this 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
senderNoFilter by sender role code (case-insensitive).
recipientNoFilter by recipient role code. Matches ``to-ROLE``, ``to-ROLE.SLOT``, and ``to-TEAM`` broadcasts.
statusNo``open`` (default), ``archived``, or ``all``.open
dateNoFilter by YYYYMMDD date stamp.
limitNoMaximum number of rows to return (0 = no limit).
offsetNoNumber of rows to skip before returning.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description 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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoOutput language (``zh``/``en``). Empty = auto-detect from project config.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
review_idYesThe stable review ID — filename stem without ``.md`` (e.g. ``REVIEW-20260510-001-ADMIN-on-some-task``).
approverYesRole code of the human approver. MUST be an agent with ``layer: admin`` (e.g. ``ADMIN``).
decisionYesHuman's binary decision: ``approve`` or ``reject``.
channelNoChannel through which the approval was submitted. One of ``mobile`` / ``cli`` / ``web`` / ``manual_file_edit``. Default: ``cli``.cli
commentNoOptional free-text comment from the approver.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesShort lowercase-hyphen name matching ``^[a-z][a-z0-9-]*$`` and ≤ 40 chars. Examples: ``csdn-search``, ``mini-game``, ``weekly-report-2026w17``.
titleNoOptional human-readable title (any language).
descriptionNoOptional one-paragraph description, written into the per-slug README.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID (e.g. ``TASK-20260522-001``) or full filename.
dateNoOptional ``YYYY-MM-DD`` date shard to restrict the search.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It 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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameYesReport filename or the ``task_id`` the report was filed against.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description 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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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

The description states a specific verb ('Read') and 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameYesReview filename or review ID (``REVIEW-YYYYMMDD-NNN-{reviewer}-on-{slug}[.md]``).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameYesTask 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

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 CLI

Run 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoWhen ``True`` (default) overwrite existing copies. ``False`` skips files that already exist (no-op for an up-to-date project).
archiveNoWhen ``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).
langNoOutput language, ``zh`` or ``en``.zh

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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

Schema description coverage is 100%, and the schema already 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.

Purpose5/5

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.

Usage Guidelines4/5

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: reviewactive (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.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID or full filename.
actorNoRole code of the rejector (default ``"ADMIN"``).ADMIN
noteNoMandatory rejection reason (strongly recommended).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesabsolute 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

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full 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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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: activereview (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.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID or full filename.
actorNoRole code of the agent submitting the task.agent

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoOutput language, ``zh`` or ``en``.zh

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
rolesYesComma-separated role codes.
leaderYesLeader role code; must be one of ``roles``.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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/.

ParametersJSON Schema
NameRequiredDescriptionDefault
reporterYesReporter role code (uppercase).
summaryYesOne-line summary written into the filename and frontmatter.
bodyYesDetailed issue body in Markdown.
severityNo``critical`` / ``high`` / ``medium`` / ``low``. Aliases: ``P0`` → critical, ``P1`` → high, ``P2`` → medium, ``P3`` → low.medium

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries 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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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

Schema description coverage is 100%, so each parameter already has 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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesSource task ID (e.g. ``TASK-20260423-001``).
reporterYesReporter role code (uppercase).
recipientYesRecipient role code (typically the PM).
bodyYesReport body in Markdown.
statusNo``done`` / ``in_progress`` / ``blocked``.done
priorityNoFCoP priority; accepts ``P0``–``P3`` and aliases.P2

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
reviewer_roleYesRole code of the reviewer (must have ``review_decision`` capability; typically ``layer: governance`` or ``layer: admin``).
subject_typeYesWhat is being reviewed. One of ``task`` / ``report`` / ``role_switch`` / ``code_change``.
subject_refYesReference to the artefact under review — file path for task/report/code_change; fcop.json diff range for role_switch.
decisionYesReview 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.
rationaleNoFree-text rationale for the decision. Recommended for all non-``approved`` decisions.
required_changesNoNewline- or comma-separated list of required changes. Mandatory when ``decision=needs_changes``.
reviewer_agentNoOptional agent/session identifier on top of the role code.
bodyNoAdditional Markdown body after the frontmatter.
subject_shortNoOverride the ``-on-{slug}`` segment of the filename. Auto-derived from ``subject_ref`` when omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior1/5

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

No annotations are provided, so the description 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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

No guidance on when to use this 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
senderYesSender role code (uppercase).
recipientYesRecipient role code (uppercase). May use the slot form ``ROLE.D1`` for per-slot targeting or ``TEAM`` for broadcast.
subjectYesOne-line subject written to the ``subject:`` frontmatter field.
bodyYesTask body in Markdown.
priorityNoFCoP priority. Accepts ``P0`` / ``P1`` / ``P2`` / ``P3`` (canonical) or the legacy aliases ``urgent`` / ``high`` / ``normal`` / ``low``. Default: ``P2``.P2
thread_keyNoOptional thread identifier for linking this task to an ongoing conversation.
referencesNoComma-separated task filenames this task refers back to (for ``references:`` frontmatter field).
risk_levelNoOperation 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

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the 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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description 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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 45 tool updatesv3.2.4
    • First observedapprove_task
    • First observedarchive_task
    • First observedarchive_to_history
    • First observedbulk_archive_to_history
    • First observedcheck_update
    • First observedclaim_task
    • First observedcreate_custom_team
    • First observedcreate_task
    • First observeddeploy_role_templates
    • First observeddrop_suggestion
    • First observedfcop_audit
    • First observedfcop_check
    • First observedfcop_create_alert
    • First observedfcop_list_alerts
    • First observedfcop_report
    • First observedfinish_task
    • First observedget_available_teams
    • First observedget_governance_summary
    • First observedget_team_status
    • First observedinit_project
    • First observedinit_solo
    • First observedinspect_task
    • First observedlist_governance_events
    • First observedlist_history
    • First observedlist_issues
    • First observedlist_reports
    • First observedlist_reviews
    • First observedlist_tasks
    • First observedlist_workspaces
    • First observedmark_human_approved
    • First observednew_workspace
    • First observedread_history_task
    • First observedread_report
    • First observedread_review
    • First observedread_task
    • First observedredeploy_rules
    • First observedreject_task
    • First observedset_project_dir
    • First observedsubmit_task
    • First observedupgrade_fcop
    • First observedvalidate_team_config
    • First observedwrite_issue
    • First observedwrite_report
    • First observedwrite_review
    • First observedwrite_task

TDQS

B3.4/5.0
Disambiguation3/5

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.

Naming Consistency5/5

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.

Tool Count2/5

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.

Completeness3/5

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

ActivityMaintained
ResponsivenessResponsive

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

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Persistent, 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.
    5
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    MCP server that combines Read+Edit file operations into single tool calls. 80-95% fewer tool calls formulti-file refactoring across Claude, Cursor, Windsurf, and more.
    3
    21
    3
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    An agent orchestration layer that wraps expert agents as MCP tools, enabling integration with Claude Desktop, Cursor, and other MCP-compatible environments.
    4
    17
    9
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    A multi-tool task agent MCP server with file search, SQLite query, calculator, and report writing tools. Enables Claude Code, Claude Desktop, or Cursor to control the same tools used by the agent, with guardrails for safety.
    -

Latest Blog Posts

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