Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.joinwell52-AI/fcop

PYPI · FCOP-MCP · SCANNED SEP 21

Durable tasks, reports, reviews and branch convergence for multi-agent teams over local files.

Available components

+9 this week 65 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
  • 4 of 60 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency6
Schema Quality & AI Usability76
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 10568 tokens (~173/item across 61 items; 49 tools + 12 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management37
  • Stability check failed: the tool surface changed between 3.2.5 and 4.0.3: 0 tool removals, 45 breaking changes, 4 additions. See how to fix → Fail
Tool Coverage86
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 58% of tool parameters carry a description.Partial
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "merge_branches" implies "merge" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 50 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the io.github.joinwell52-AI/fcop MCP server?

io.github.joinwell52-AI/fcop runs locally as a PyPI package, launched with uvx fcop-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · fcop-mcp

# add to Claude Code
claude mcp add joinwell52-ai-fcop -- uvx fcop-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "joinwell52-ai-fcop": {
      "command": "uvx",
      "args": [
        "fcop-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "joinwell52-ai-fcop": {
      "command": "uvx",
      "args": [
        "fcop-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add joinwell52-ai-fcop -- uvx fcop-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "joinwell52-ai-fcop": {
      "type": "local",
      "command": [
        "uvx",
        "fcop-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add joinwell52-ai-fcop --command uvx --arg fcop-mcp
# ~/.hermes/config.yaml
mcp_servers:
  joinwell52-ai-fcop:
    command: "uvx"
    args: ["fcop-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "joinwell52-ai-fcop": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "fcop-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add joinwell52-ai-fcop -t stdio -c uvx -a fcop-mcp
// mcp.json
{
  "mcpServers": {
    "joinwell52-ai-fcop": {
      "command": "uvx",
      "args": [
        "fcop-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 30 to 33.

  • 19 Sept 26 −3

    No change was recorded against any check on this day. Stability & Change Management went from 50 to 30.

  • 18 Sept 26 −5
    • Source repository: pass → fail security
    • Security disclosure: fail → unverified functional
  • 17 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 43 to 47.

  • 15 Sept 26 +15
    • Malware scan: unverified → pass security
  • 14 Sept 26 −14
    • Malware scan: pass → unverified security
    • Package version: 4.0.2 → 4.0.3 functional
  • 12 Sept 26 +13
    • Malware scan: unverified → pass security
  • 11 Sept 26 −24
    • Malware scan: pass → unverified security
    • Stability: 0.97 → fail security
    • Tool coverage: 100% → 58% functional
    • Schema quality: excellent → good functional
    • MCP protocol: Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28. functional
    • Package version: 3.2.5 → 4.0.2 functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 21 Sept 2026 · Analysed pypi/fcop-mcp@4.0.3

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem pypi

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 60 packages
Packages resolved 60
Stale 2
No linked repository 2
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 49 exposed · ~10,341 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
approve_task ~182

Approve lifecycle stage: ``review`` → ``done`` (v3 directory move). **Lifecycle approval ≠ business acceptance (Rule 0.a.3).** Typically ``ADMIN`` / reviewer after inspecting the paired ``REPORT-*``. Does **not** auto-call ``archive_task`` or mark blocked upstream work as externally delivered. File ops: ``mv _lifecycle/review/TASK-* _lifecycle/done/``. On v2 projects this is a no-op.

NameTypeReqDescription
actorstringRole code of the approver (default ``"ADMIN"``).
authorization_ref
notestringOptional approval note appended to the transition event.
profile_ref
report_ref
review_ref
task_idstringyesTask ID or full filename.

No output schema declared.

No examples provided.

archive_task ~282

Archive a task after governance acceptance (v3: ``_lifecycle/archive/``; v2: ``log/``). **Governance action (Rule 0.a.5).** **Not** Hot Path step 4 for executors. Default actor is ``leader`` or ``ADMIN`` after accepting the paired ``REPORT-*``. Executors must **not** call this unless the task body or ``ADMIN`` explicitly authorises archive-on-completion. **Authorization:** subtasks — direct upstream or governance runtime; main tasks — ``ADMIN`` or the main-task owner only. Archive **≠** business completion (Rule 0.a.3). Does **not** run automatically after ``write_report`` or ``finish_task``. File ops: ``mv`` task (+ matched reports via ``references``) to ``_lifecycle/archive/`` or ``fcop/log/``.

NameTypeReqDescription
actorstring
authorization_ref
family_digest
langstringKept for 0.5.4 parity; currently unused because the library does not need locale for this operation.
profile_ref
review_ref
task_idstringyesTask ID (e.g. ``TASK-20260423-001``) or full filename.

No output schema declared.

No examples provided.

archive_to_history ~214

Deep-history cold storage after governance archive (v3 only). Moves a task already in ``_lifecycle/archive/`` (or legacy ``log/``) into ``history/YYYY-MM-DD/<task-stem>/`` with its reports — immutable, date-sharded retention. **Not** business acceptance and **not** a substitute for ``write_report`` or authorised ``archive_task``. Call ``archive_task`` first (v3: ``done/`` → ``archive/``). Main-task deep archive requires the same governance authorization as ``archive_task`` (Rule 0.a.5). File ops: ``mv _lifecycle/archive/TASK-* history/YYYY-MM-DD/<stem>/``.

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

No output schema declared.

No examples provided.

bulk_archive_to_history ~215

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.

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

No output schema declared.

No examples provided.

check_update ~77

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.

NameTypeReqDescription
langstringOutput language, ``zh`` or ``en``.

No output schema declared.

No examples provided.

claim_task ~174

Claim a task: ``inbox`` → ``active`` (v3 Hot Path start). **Hot Path step 1 (v3):** call before executing on an inbox task. Always follow with ``read_task`` + ``inspect_task``. Does **not** read the task body, write a report, or imply business completion. File ops: ``mv _lifecycle/inbox/TASK-* _lifecycle/active/`` + append ``claim_task`` transition event to frontmatter. On v2 projects this is a no-op with an informational message.

NameTypeReqDescription
actorstringRole code of the agent claiming the task (default ``"agent"``).
task_idstringyesTask ID (e.g. ``TASK-20260423-001``) or full filename.

No output schema declared.

No examples provided.

create_branch ~84

Create a Branch through Core T1; unavailable family digest is null with reasons.

NameTypeReqDescription
bodystringyes
operation_idstringyes
prioritystring
recipientstringyes
root_task_idstringyes
senderstringyes
subjectstringyes
workspace_idstringyes

No output schema declared.

No examples provided.

create_custom_team ~509

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

NameTypeReqDescription
forcebooleanWhen ``True``, overwrite an already-initialized project. Existing config / letter / workspace README / ``shared/`` files are archived under ``.fcop/migrations/<timestamp>/`` before the new ones land.…
langstringOutput language, ``zh`` or ``en``.
leaderstringyesLeader role code; must appear in ``roles``.
profiles
protocol_version
rolesstringyesComma-separated role codes (e.g. ``"BOSS,CODER,TESTER"``).
team_namestringyesDisplay name for the team (e.g. ``"My Design Studio"``).

No output schema declared.

No examples provided.

create_task ~311

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.

NameTypeReqDescription
bodystringyesTask body in Markdown.
branch_of
operation_id
parentstringOptional upstream task ID for ``parent:`` frontmatter.
prioritystring``P0`` / ``P1`` / ``P2`` / ``P3`` (or legacy aliases). Default: ``P2``.
recipientstringyesRecipient role code (uppercase). May use the slot form ``ROLE.D1`` or ``TEAM`` for broadcast.
referencesstringComma-separated task filenames for ``references:`` field.
risk_levelstring``low`` / ``medium`` / ``high`` / ``irreversible``. Leave empty to accept the default (``medium``).
senderstringyesSender role code (uppercase).
subjectstringyesOne-line subject for the ``subject:`` frontmatter field.
thread_keystringOptional thread identifier.
workspace_id

No output schema declared.

No examples provided.

deploy_role_templates ~194

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.

NameTypeReqDescription
forcebooleanOverwrite existing files (after archiving) vs skip.
langstringLanguage variant to emphasize. Empty = use project language from ``fcop.json``.
teamstringTeam ID to deploy. Empty = use the current project's ``fcop.json`` team.

No output schema declared.

No examples provided.

drop_suggestion ~185

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.

NameTypeReqDescription
contentstringyesthe suggestion body (plain text or markdown).
contextstringoptional short context line (e.g. "triggered while doing X"). Rendered as a separate block in the proposal file.

No output schema declared.

No examples provided.

fcop_audit ~403

**协议体检工具(ADR-0032)** — deep compliance scan, not Hot Path. 与 ``fcop_check`` 的区别: - ``fcop_check`` — 日常轻量自检(working-tree drift + session/role 冲突); **不**在每次 ``write_report`` 后自动调用 - ``fcop_audit`` — 一次性深度体检(协议合规度全量扫描 + 整改方案); **不**替代协作闭环,**不**等于业务验收或 ``archive_task`` **Not lifecycle closure:** passing audit does not archive tasks or accept reports. Execution Block commands are **suggestions** only. 三个 scope: - ``new`` : 新项目验收 — 协议文件是否完整部署 - ``upgrade`` : 版本升级后验收 — 规则版本 / 文档是否同步 - ``takeover`` : 老 non-fcop 项目首次引入 fcop — 全量合规扫描(含 6 类盲区) - ``auto`` : 自动推断(推荐) 产出物:``fcop/shared/INSPECTION-{date}-{NNN}-{scope}.md`` 报告含 **Execution Block**:每条违规附带可直接复制的整改命令、执行人、 Tier 优先级和回滚方式。

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

No output schema declared.

No examples provided.

fcop_check ~457

**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 the FCoP ledger (``_lifecycle/`` or legacy ``docs/agents/{tasks,reports,issues,log}/``) are work performed without the task→execute/dispatch→report collaboration cycle. Missing ``archive_task`` on an open task is **not** drift by itself — executors default to **not** archiving (Rule 0.a.5). 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()``. **Not Hot Path auto-run:** do **not** invoke after every ``write_report`` by default. For one-shot deep compliance scans use ``fcop_audit`` instead (Rule 9.6). 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.

NameTypeReqDescription
langstringOutput language, ``zh`` or ``en``. Default: ``zh``.

No output schema declared.

No examples provided.

fcop_create_alert ~170

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

NameTypeReqDescription
alert_typestringyesOne of: ``missing_independent_verdict``, ``commit_flood_without_governance``, ``critical_tool_unreviewed``, ``long_running_without_reconciliation``.
severitystringyes``high``, ``medium``, or ``low``.
suggestionstringRecommended action for ADMIN. Default: "ADMIN review recommended".
summarystringyesPlain-text description of the governance gap (1-3 sentences).

No output schema declared.

No examples provided.

fcop_list_alerts ~189

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

NameTypeReqDescription
last_nintegerMaximum number of alerts to return (most recent first).
severitystringFilter by severity: ``high``, ``medium``, ``low``. Empty string returns all severities.
statusstringFilter by status: ``open``, ``acknowledged``, ``resolved``. Empty string returns all statuses.

No output schema declared.

No examples provided.

fcop_report ~452

**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. The initialized report includes the **3.2.5 collaboration cycle** (Rule 0.a.1–0.a.6): ``write_task`` → execute/dispatch → ``write_report`` → wait / authorised ``archive_task``. It does **not** deep-audit the project — use ``fcop_check`` (lightweight) or ``fcop_audit`` (deep) when ADMIN requests. .. 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``.

NameTypeReqDescription
langstringOutput language, ``zh`` or ``en``. Default: ``zh``.

No output schema declared.

No examples provided.

finish_task ~185

Move lifecycle stage: ``active`` → ``done`` (v3 directory move only). This is a **lifecycle directory move** — it does **not** replace ``write_report``, upstream acceptance, or authorised ``archive_task`` (Rules 0.a.3, 0.a.5, 0.a.6). **Rule 0.a.6:** after reporting, **stop and wait** for review; do **not** chain ``finish_task`` in the same turn as ``write_report`` or treat it as "business complete". File ops: ``mv _lifecycle/active/TASK-* _lifecycle/done/``. On v2 projects this is a no-op.

NameTypeReqDescription
actorstringRole code of the agent finishing the task.
task_idstringyesTask ID or full filename.

No output schema declared.

No examples provided.

get_available_teams ~115

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

NameTypeReqDescription
langstringOutput language hint. Currently only affects display prose; the roster data is language-independent.

No output schema declared.

No examples provided.

get_governance_summary ~117

**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. Version policy: OPTIONAL_GOVERNANCE_READ. Legacy prose above applies to v3. v4 dispatch uses public Project operations and structured results; actor is not authority.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_team_status ~92

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

NameTypeReqDescription
langstringOutput language (``zh`` / ``en``). Empty = auto-detect from ``docs/agents/fcop.json``.

No output schema declared.

No examples provided.

init_project ~512

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.

NameTypeReqDescription
forcebooleanWhen ``True``, overwrite an already-initialized project. The previous ``fcop.json``, letter, workspace README, and ``shared/`` documents are archived under ``.fcop/migrations/<timestamp>/`` before th…
langstringOutput language. ``zh`` or ``en``. Default: ``zh``.
profiles
protocol_version
teamstringTeam 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 ``m…

No output schema declared.

No examples provided.

init_solo ~531

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.

NameTypeReqDescription
forcebooleanWhen ``True``, overwrite an already-initialized project. All previous artifacts (config, letter, workspace README, ``shared/`` docs, protocol rule files) are archived under ``.fcop/migrations/<timest…
langstringOutput language, ``zh`` or ``en``.
profiles
protocol_version
role_codestringThe single role code (uppercase letters / digits / underscore, must start with a letter; ``ADMIN`` and ``SYSTEM`` are reserved). Default: ``ME``.
role_labelstringDisplay label (e.g. ``"我自己"``). Currently recorded in ``extra`` for future use; the library does not yet consume it. Safe to omit.

No output schema declared.

No examples provided.

inspect_family ~32

Read a canonical ordered family, precise REPORT heads, readiness and convergence facts.

NameTypeReqDescription
root_task_idstringyes

No output schema declared.

No examples provided.

inspect_task ~134

Validate a task file against FCoP grammar (Hot Path pre-flight). Run **before executing** on a claimed/assigned task, alongside ``read_task``. Catches deterministic violations agents often miss (filename ``to-DEV`` vs frontmatter ``recipient: QA``, mistyped ``protocol``, missing required fields). ``PASS`` does **not** replace reading the task body for acceptance criteria. File ops: read filename + frontmatter and validate grammar only.

NameTypeReqDescription
filenamestringyesTask filename or ID (same forms as ``read_task``).
include_family_digestboolean

No output schema declared.

No examples provided.

list_governance_events ~141

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

NameTypeReqDescription
last_nintegerMaximum number of recent events to return (default 50).
riskstringFilter by risk level: "Safe", "Sensitive", "Critical", or "" (all).
tagstringFilter by tag: "ALLOW", "REVIEW_TAG", "CRITICAL_TAG", or "" (all).

No output schema declared.

No examples provided.

list_history ~86

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

NameTypeReqDescription
datestringOptional date shard in ``YYYY-MM-DD`` format. Leave empty to list all available date shards.

No output schema declared.

No examples provided.

list_issues ~109

List issues, optionally filtered.

NameTypeReqDescription
langstringKept for 0.5.4 parity; currently unused.
limitintegerMaximum number of rows (0 = no limit).
offsetintegerNumber of rows to skip.
reporterstringFilter by reporter role code (case-insensitive).
severitystringFilter by severity (``critical`` / ``high`` / ``medium`` / ``low``). Empty = all.

No output schema declared.

No examples provided.

list_reports ~109

List reports, optionally filtered.

NameTypeReqDescription
attempt_idstring
head_onlyboolean
limitintegerMaximum number of rows (0 = no limit).
offsetintegerNumber of rows to skip.
reporterstringFilter by reporter role code (case-insensitive).
statusstring``open`` (default), ``archived``, or ``all``.
task_idstringFilter by source task ID.

No output schema declared.

No examples provided.

list_reviews ~190

List REVIEW files, optionally filtered.

NameTypeReqDescription
attempt_idstring
authorization_refstring
decisionstringFilter by decision value (``approved`` / ``rejected`` / ``needs_changes`` / ``abstained`` / ``needs_human``).
limitintegerMaximum number of rows (0 = no limit).
offsetintegerSkip this many rows.
profile_refstring
references
review_kindstring
reviewer_rolestringFilter by reviewer role code.
statusstring``open`` (default) / ``archived`` / ``all``.
subject_refstring
subject_typestringFilter by subject type (``task`` / ``report`` / ``role_switch`` / ``code_change``).

No output schema declared.

No examples provided.

list_tasks ~160

List tasks, optionally filtered.

NameTypeReqDescription
branch_ofstring
datestringFilter by YYYYMMDD date stamp.
limitintegerMaximum number of rows to return (0 = no limit).
offsetintegerNumber of rows to skip before returning.
parentstring
recipientstringFilter by recipient role code. Matches ``to-ROLE``, ``to-ROLE.SLOT``, and ``to-TEAM`` broadcasts.
references
senderstringFilter by sender role code (case-insensitive).
stagestring
statusstring``open`` (default), ``archived``, or ``all``.

No output schema declared.

No examples provided.

list_workspaces ~104

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.

NameTypeReqDescription
langstringOutput language (``zh``/``en``). Empty = auto-detect from project config.

No output schema declared.

No examples provided.

mark_human_approved ~270

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

NameTypeReqDescription
approverstringyesRole code of the human approver. MUST be an agent with ``layer: admin`` (e.g. ``ADMIN``).
attempt_id
channelstringChannel through which the approval was submitted. One of ``mobile`` / ``cli`` / ``web`` / ``manual_file_edit``. Default: ``cli``.
commentstringOptional free-text comment from the approver.
decisionstringyesHuman's binary decision: ``approve`` or ``reject``.
expires_at
family_digest
from_stage
issued_at
issuer_proof
profile_ref
review_idstringyesThe stable review ID — filename stem without ``.md`` (e.g. ``REVIEW-20260510-001-ADMIN-on-some-task``).
to_stage

No output schema declared.

No examples provided.

merge_branches ~99

Core atomically materializes the caller's decision. Never chooses a winner or archives Root.

NameTypeReqDescription
branch_report_headsobjectyes
conclusionstringyes
conflict_resolutionstringyes
expected_family_digeststringyes
operation_idstringyes
recipientstringyes
root_task_idstringyes
senderstringyes
workspace_idstringyes

No output schema declared.

No examples provided.

new_workspace ~203

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.

NameTypeReqDescription
descriptionstringOptional one-paragraph description, written into the per-slug README.
profiles
protocol_version
slugstringyesShort lowercase-hyphen name matching ``^[a-z][a-z0-9-]*$`` and ≤ 40 chars. Examples: ``csdn-search``, ``mini-game``, ``weekly-report-2026w17``.
titlestringOptional human-readable title (any language).

No output schema declared.

No examples provided.

read_history_task ~96

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

NameTypeReqDescription
datestringOptional ``YYYY-MM-DD`` date shard to restrict the search.
task_idstringyesTask ID (e.g. ``TASK-20260522-001``) or full filename.

No output schema declared.

No examples provided.

read_report ~39

Read the full content of a report file.

NameTypeReqDescription
filenamestringyesReport filename or the ``task_id`` the report was filed against.

No output schema declared.

No examples provided.

read_review ~52

Read the full content of a REVIEW file.

NameTypeReqDescription
filenamestringyesReview filename or review ID (``REVIEW-YYYYMMDD-NNN-{reviewer}-on-{slug}[.md]``).

No output schema declared.

No examples provided.

read_task ~169

Read the full content of a task file (Hot Path pre-flight). **Before executing** on an assigned or claimed task, call this **together with** ``inspect_task`` (Rules 0.a.1 / 0.a.2). Do not mutate the workspace or dispatch from chat/memory alone. File ops: ``cat`` the file under ``_lifecycle/{stage}/TASK-*.md``, legacy ``fcop/tasks/``, or ``fcop/log/`` when archived.

NameTypeReqDescription
filenamestringyesTask 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.

No output schema declared.

No examples provided.

redeploy_rules ~414

**Legacy v1-v3 only; ADMIN-only.** Re-deploy legacy bundled rules. Declared FCoP 4.0 workspaces reject this tool with ``toolkit:OPERATION_NOT_IMPLEMENTED`` and zero writes, regardless of force/archive. Use package-owned rules and MCP resources for v4; project-root Host instruction files remain application-owned. On supported legacy workspaces only, writes :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 For an explicitly maintained legacy workspace, 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.

NameTypeReqDescription
archivebooleanWhen ``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 arc…
forcebooleanWhen ``True`` (default) overwrite existing copies. ``False`` skips files that already exist (no-op for an up-to-date project).
langstringOutput language, ``zh`` or ``en``.

No output schema declared.

No examples provided.

reject_task ~187

Reject / recall: ``review`` → ``active`` (v3 rework loop). Returns the task to ``active/`` for revision after a ``REPORT-*`` or review finding (complements Rule 0.a.6 stop-and-wait). **Lifecycle only** — does not delete reports or auto-call ``archive_task``. File ops: ``mv _lifecycle/review/TASK-* _lifecycle/active/`` + append ``reject_task`` event. On v2 projects this is a no-op.

NameTypeReqDescription
actorstringRole code of the rejector (default ``"ADMIN"``).
authorization_ref
notestringMandatory rejection reason (strongly recommended).
profile_ref
report_ref
review_ref
task_idstringyesTask ID or full filename.

No output schema declared.

No examples provided.

reopen_task ~110

Request only v4 T6 done->active. Actor is audit data, never authority. The independent authorization and reopen REVIEW are validated and consumed by Project. Trusted evaluators can only be installed at server startup. Repeating the same formal request returns the Core's existing result.

NameTypeReqDescription
actorstringyes
authorization_refstringyes
langstring
profile_refstringyes
review_refstringyes
task_idstringyes

No output schema declared.

No examples provided.

set_project_dir ~186

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.

NameTypeReqDescription
pathstringyesabsolute 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.

No output schema declared.

No examples provided.

submit_task ~154

Submit for review: ``active`` → ``review`` (v3 lifecycle directory move). **Lifecycle only (Rule 0.a.3).** Does **not** replace ``write_report``, upstream acceptance, or authorised ``archive_task``. Pair with a ``REPORT-*`` before or after submit as your team's operating rules require — this tool alone does not close business work. File ops: ``mv _lifecycle/active/TASK-* _lifecycle/review/``. On v2 projects this is a no-op.

NameTypeReqDescription
actorstringRole code of the agent submitting the task.
report_ref
task_idstringyesTask ID or full filename.

No output schema declared.

No examples provided.

upgrade_fcop ~100

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.

NameTypeReqDescription
langstringOutput language, ``zh`` or ``en``.

No output schema declared.

No examples provided.

validate_team_config ~82

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.

NameTypeReqDescription
leaderstringyesLeader role code; must be one of ``roles``.
rolesstringyesComma-separated role codes.

No output schema declared.

No examples provided.

write_issue ~136

File an issue under ``docs/agents/issues/``.

NameTypeReqDescription
bodystringyesDetailed issue body in Markdown.
recipient
references
reporterstringyesReporter role code (uppercase).
severitystring``critical`` / ``high`` / ``medium`` / ``low``. Aliases: ``P0`` → critical, ``P1`` → high, ``P2`` → medium, ``P3`` → low.
subject_ref
summarystringyesOne-line summary written into the filename and frontmatter.
workspace_id

No output schema declared.

No examples provided.

write_report ~326

Write a completion report for a task. Creates ``REPORT-<task_id>-{REPORTER}-to-{RECIPIENT}.md`` under ``docs/agents/reports/`` (v3: co-located under ``_lifecycle/``). The ``task_id`` is the canonical reference back to the source task. **Stop signal (Rule 0.a.6):** after this call, wait for upstream review / rework — do not keep editing artefacts, dispatch unrelated work, or call ``archive_task`` unless explicitly authorised. Does **not** trigger ``finish_task``, ``approve_task``, or ``archive_task`` automatically. ``status=blocked`` still leaves the task open for upstream action. File ops: write ``REPORT-*.md`` under ``fcop/reports/`` or co-located ``_lifecycle/`` stage.

NameTypeReqDescription
attempt_id
bodystringyesReport body in Markdown.
prioritystringFCoP priority; accepts ``P0``–``P3`` and aliases.
recipientstringyesRecipient role code (typically the PM).
references
report_kindstring
reporterstringyesReporter role code (uppercase).
result
statusstring``done`` / ``in_progress`` / ``blocked``.
task_idstringyesSource task ID (e.g. ``TASK-20260423-001``).
workspace_id

No output schema declared.

No examples provided.

write_review ~431

Write a REVIEW file (governance-layer decision, per ADR-0017/0025).

NameTypeReqDescription
attempt_id
authorization_ref
authorization_scope
bodystringAdditional Markdown body after the frontmatter.
decisionstringyesReview decision. One of: ``approved`` — artefact is accepted; ``rejected`` — artefact is rejected (cannot proceed); ``needs_changes`` — must be revised (requires ``required_changes``); ``abstained``…
expires_at
family_digest
issued_at
issuer_proof
operation_kind
profile_ref
rationalestringFree-text rationale for the decision. Recommended for all non-``approved`` decisions.
recipient
references
required_changesstringNewline- or comma-separated list of required changes. Mandatory when ``decision=needs_changes``.
review_kind
reviewer_agentstringOptional agent/session identifier on top of the role code.
reviewer_rolestringyesRole code of the reviewer (must have ``review_decision`` capability; typically ``layer: governance`` or ``layer: admin``).
subject_refstringyesReference to the artefact under review — file path for task/report/code_change; fcop.json diff range for role_switch.
subject_shortstringOverride the ``-on-{slug}`` segment of the filename. Auto-derived from ``subject_ref`` when omitted.
subject_typestringyesWhat is being reviewed. One of ``task`` / ``report`` / ``role_switch`` / ``code_change``.
transition
workspace_id

No output schema declared.

No examples provided.

write_task ~572

Create a new task file (Cold Path dispatch or formal intake only). **Not Hot Path execution.** Use when ``ADMIN`` / ``leader`` assigns work, when Cold Path fan-out dispatches subtasks, or when you were explicitly told to land a formal task. Agents **must NOT** self-dispatch without an upstream requirement (Rule 0.a.2). Subtask linking: set ``thread_key`` for thread continuity; set ``parent`` to the upstream task ID (``parent:`` frontmatter — work derivation, distinct from ``references``). Do **not** emit ``parent_task_id`` as normative output (read-only legacy alias only). File ops: write ``TASK-*.md`` under ``_lifecycle/inbox/`` (v3) or ``fcop/tasks/`` (v2). Does **not** claim, finish, or archive. The library assigns a filename of the form ``TASK-YYYYMMDD-NNN-{SENDER}-to-{RECIPIENT}.md`` with FCoP-compliant YAML frontmatter + markdown body. In v3 the recipient ``claim_task``s from inbox.

NameTypeReqDescription
bodystringyesTask body in Markdown.
branch_of
operation_id
parentstringOptional upstream task ID (``TASK-YYYYMMDD-NNN-...``) written to ``parent:`` frontmatter for subtask derivation.
prioritystringFCoP priority. Accepts ``P0`` / ``P1`` / ``P2`` / ``P3`` (canonical) or the legacy aliases ``urgent`` / ``high`` / ``normal`` / ``low``. Default: ``P2``.
recipientstringyesRecipient role code (uppercase). May use the slot form ``ROLE.D1`` for per-slot targeting or ``TEAM`` for broadcast.
referencesstringComma-separated task filenames this task refers back to (for ``references:`` frontmatter field).
risk_levelstringOperation risk level (per ADR-0024). One of ``low`` / ``medium`` / ``high`` / ``irreversible``. Default: ``medium``. ``high`` and ``irreversible`` will automatically require a ``needs_human`` review…
senderstringyesSender role code (uppercase).
subjectstringyesOne-line subject written to the ``subject:`` frontmatter field.
thread_keystringOptional thread identifier for linking this task to an ongoing conversation.
workspace_id

No output schema declared.

No examples provided.

Common questions

What is the io.github.joinwell52-AI/fcop MCP server?

io.github.joinwell52-AI/fcop is an MCP server listed in the public MCP registry as io.github.joinwell52-AI/fcop. Durable tasks, reports, reviews and branch convergence for multi-agent teams over local files. This page covers its PyPI package (fcop-mcp).

Is the io.github.joinwell52-AI/fcop MCP server safe to use?

io.github.joinwell52-AI/fcop scores 65 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.joinwell52-AI/fcop MCP server expose?

io.github.joinwell52-AI/fcop exposes 49 tools: reopen_task, create_branch, inspect_family, merge_branches, approve_task, and 44 more. Their descriptions and schemas cost roughly 10,341 tokens of context every time the server is loaded.

Is the io.github.joinwell52-AI/fcop MCP server still maintained?

io.github.joinwell52-AI/fcop is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.