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
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
- Repository check failed: the declared repository URL returned HTTP 404. See how to fix → View diagnostics → Fail
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- License check failed: the license (MIT License) isn't a recognized OSI-approved license. See how to fix → Fail
- Actively maintained (last published 6 days ago).Pass
- Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
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
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
claude mcp add joinwell52-ai-fcop -- uvx fcop-mcp
{
"mcpServers": {
"joinwell52-ai-fcop": {
"command": "uvx",
"args": [
"fcop-mcp"
]
}
}
} {
"servers": {
"joinwell52-ai-fcop": {
"command": "uvx",
"args": [
"fcop-mcp"
]
}
}
} codex mcp add joinwell52-ai-fcop -- uvx fcop-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"joinwell52-ai-fcop": {
"type": "local",
"command": [
"uvx",
"fcop-mcp"
],
"enabled": true
}
}
} openclaw mcp add joinwell52-ai-fcop --command uvx --arg fcop-mcp
mcp_servers:
joinwell52-ai-fcop:
command: "uvx"
args: ["fcop-mcp"] {
"McpServers": {
"joinwell52-ai-fcop": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"fcop-mcp"
]
}
}
} assistant mcp add joinwell52-ai-fcop -t stdio -c uvx -a fcop-mcp
{
"mcpServers": {
"joinwell52-ai-fcop": {
"command": "uvx",
"args": [
"fcop-mcp"
]
}
}
} 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
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 →
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 →
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.
| Name | Type | Req | Description |
|---|---|---|---|
| actor | string | – | Role code of the approver (default ``"ADMIN"``). |
| authorization_ref | – | – | – |
| note | string | – | Optional approval note appended to the transition event. |
| profile_ref | – | – | – |
| report_ref | – | – | – |
| review_ref | – | – | – |
| task_id | string | yes | Task 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/``.
| Name | Type | Req | Description |
|---|---|---|---|
| actor | string | – | – |
| authorization_ref | – | – | – |
| family_digest | – | – | – |
| lang | string | – | Kept for 0.5.4 parity; currently unused because the library does not need locale for this operation. |
| profile_ref | – | – | – |
| review_ref | – | – | – |
| task_id | string | yes | Task 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>/``.
| Name | Type | Req | Description |
|---|---|---|---|
| done_date | string | – | Override the shard date in ``YYYY-MM-DD`` format. Leave empty to use the task's own ``done_at`` timestamp. |
| task_id | string | yes | Task 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.
| Name | Type | Req | Description |
|---|---|---|---|
| done_date | string | – | Override the shard date (``YYYY-MM-DD``) for **all** migrated tasks. Leave empty to use each task's own ``done_at`` timestamp (falls back to today if missing). |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| lang | string | – | Output 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.
| Name | Type | Req | Description |
|---|---|---|---|
| actor | string | – | Role code of the agent claiming the task (default ``"agent"``). |
| task_id | string | yes | Task 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.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | – |
| operation_id | string | yes | – |
| priority | string | – | – |
| recipient | string | yes | – |
| root_task_id | string | yes | – |
| sender | string | yes | – |
| subject | string | yes | – |
| workspace_id | string | yes | – |
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/``).
| Name | Type | Req | Description |
|---|---|---|---|
| force | boolean | – | When ``True``, overwrite an already-initialized project. Existing config / letter / workspace README / ``shared/`` files are archived under ``.fcop/migrations/<timestamp>/`` before the new ones land.… |
| lang | string | – | Output language, ``zh`` or ``en``. |
| leader | string | yes | Leader role code; must appear in ``roles``. |
| profiles | – | – | – |
| protocol_version | – | – | – |
| roles | string | yes | Comma-separated role codes (e.g. ``"BOSS,CODER,TESTER"``). |
| team_name | string | yes | Display 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.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | Task body in Markdown. |
| branch_of | – | – | – |
| operation_id | – | – | – |
| parent | string | – | Optional upstream task ID for ``parent:`` frontmatter. |
| priority | string | – | ``P0`` / ``P1`` / ``P2`` / ``P3`` (or legacy aliases). Default: ``P2``. |
| recipient | string | yes | Recipient role code (uppercase). May use the slot form ``ROLE.D1`` or ``TEAM`` for broadcast. |
| references | string | – | Comma-separated task filenames for ``references:`` field. |
| risk_level | string | – | ``low`` / ``medium`` / ``high`` / ``irreversible``. Leave empty to accept the default (``medium``). |
| sender | string | yes | Sender role code (uppercase). |
| subject | string | yes | One-line subject for the ``subject:`` frontmatter field. |
| thread_key | string | – | Optional 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.
| Name | Type | Req | Description |
|---|---|---|---|
| force | boolean | – | Overwrite existing files (after archiving) vs skip. |
| lang | string | – | Language variant to emphasize. Empty = use project language from ``fcop.json``. |
| team | string | – | Team 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.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | the suggestion body (plain text or markdown). |
| context | string | – | optional 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 优先级和回滚方式。
| Name | Type | Req | Description |
|---|---|---|---|
| output | string | – | ``"file"`` 写报告文件(默认) | ``"stdout"`` 仅返回 Markdown | ``"both"`` 写文件并返回 |
| project_path | string | – | 保留参数(暂未使用),实际路径由 FCOP_DIR 环境变量或当前目录决定 |
| scope | string | – | ``"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.
| Name | Type | Req | Description |
|---|---|---|---|
| lang | string | – | Output 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/.
| Name | Type | Req | Description |
|---|---|---|---|
| alert_type | string | yes | One of: ``missing_independent_verdict``, ``commit_flood_without_governance``, ``critical_tool_unreviewed``, ``long_running_without_reconciliation``. |
| severity | string | yes | ``high``, ``medium``, or ``low``. |
| suggestion | string | – | Recommended action for ADMIN. Default: "ADMIN review recommended". |
| summary | string | yes | Plain-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.
| Name | Type | Req | Description |
|---|---|---|---|
| last_n | integer | – | Maximum number of alerts to return (most recent first). |
| severity | string | – | Filter by severity: ``high``, ``medium``, ``low``. Empty string returns all severities. |
| status | string | – | Filter 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``.
| Name | Type | Req | Description |
|---|---|---|---|
| lang | string | – | Output 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.
| Name | Type | Req | Description |
|---|---|---|---|
| actor | string | – | Role code of the agent finishing the task. |
| task_id | string | yes | Task 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``.
| Name | Type | Req | Description |
|---|---|---|---|
| lang | string | – | Output 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).
| Name | Type | Req | Description |
|---|---|---|---|
| lang | string | – | Output 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.
| Name | Type | Req | Description |
|---|---|---|---|
| force | boolean | – | When ``True``, overwrite an already-initialized project. The previous ``fcop.json``, letter, workspace README, and ``shared/`` documents are archived under ``.fcop/migrations/<timestamp>/`` before th… |
| lang | string | – | Output language. ``zh`` or ``en``. Default: ``zh``. |
| profiles | – | – | – |
| protocol_version | – | – | – |
| team | string | – | Team template ID. One of ``dev-team`` / ``media-team`` / ``mvp-team`` / ``qa-team``. Default: ``dev-team``. (Solo mode is a separate entry point — call ``init_solo`` instead so the config carries ``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.
| Name | Type | Req | Description |
|---|---|---|---|
| force | boolean | – | When ``True``, overwrite an already-initialized project. All previous artifacts (config, letter, workspace README, ``shared/`` docs, protocol rule files) are archived under ``.fcop/migrations/<timest… |
| lang | string | – | Output language, ``zh`` or ``en``. |
| profiles | – | – | – |
| protocol_version | – | – | – |
| role_code | string | – | The single role code (uppercase letters / digits / underscore, must start with a letter; ``ADMIN`` and ``SYSTEM`` are reserved). Default: ``ME``. |
| role_label | string | – | Display 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.
| Name | Type | Req | Description |
|---|---|---|---|
| root_task_id | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| filename | string | yes | Task filename or ID (same forms as ``read_task``). |
| include_family_digest | boolean | – | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| last_n | integer | – | Maximum number of recent events to return (default 50). |
| risk | string | – | Filter by risk level: "Safe", "Sensitive", "Critical", or "" (all). |
| tag | string | – | Filter 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).
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | – | Optional 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.
| Name | Type | Req | Description |
|---|---|---|---|
| lang | string | – | Kept for 0.5.4 parity; currently unused. |
| limit | integer | – | Maximum number of rows (0 = no limit). |
| offset | integer | – | Number of rows to skip. |
| reporter | string | – | Filter by reporter role code (case-insensitive). |
| severity | string | – | Filter by severity (``critical`` / ``high`` / ``medium`` / ``low``). Empty = all. |
No output schema declared.
No examples provided.
list_reports ~109
List reports, optionally filtered.
| Name | Type | Req | Description |
|---|---|---|---|
| attempt_id | string | – | – |
| head_only | boolean | – | – |
| limit | integer | – | Maximum number of rows (0 = no limit). |
| offset | integer | – | Number of rows to skip. |
| reporter | string | – | Filter by reporter role code (case-insensitive). |
| status | string | – | ``open`` (default), ``archived``, or ``all``. |
| task_id | string | – | Filter by source task ID. |
No output schema declared.
No examples provided.
list_reviews ~190
List REVIEW files, optionally filtered.
| Name | Type | Req | Description |
|---|---|---|---|
| attempt_id | string | – | – |
| authorization_ref | string | – | – |
| decision | string | – | Filter by decision value (``approved`` / ``rejected`` / ``needs_changes`` / ``abstained`` / ``needs_human``). |
| limit | integer | – | Maximum number of rows (0 = no limit). |
| offset | integer | – | Skip this many rows. |
| profile_ref | string | – | – |
| references | – | – | – |
| review_kind | string | – | – |
| reviewer_role | string | – | Filter by reviewer role code. |
| status | string | – | ``open`` (default) / ``archived`` / ``all``. |
| subject_ref | string | – | – |
| subject_type | string | – | Filter by subject type (``task`` / ``report`` / ``role_switch`` / ``code_change``). |
No output schema declared.
No examples provided.
list_tasks ~160
List tasks, optionally filtered.
| Name | Type | Req | Description |
|---|---|---|---|
| branch_of | string | – | – |
| date | string | – | Filter by YYYYMMDD date stamp. |
| limit | integer | – | Maximum number of rows to return (0 = no limit). |
| offset | integer | – | Number of rows to skip before returning. |
| parent | string | – | – |
| recipient | string | – | Filter by recipient role code. Matches ``to-ROLE``, ``to-ROLE.SLOT``, and ``to-TEAM`` broadcasts. |
| references | – | – | – |
| sender | string | – | Filter by sender role code (case-insensitive). |
| stage | string | – | – |
| status | string | – | ``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.
| Name | Type | Req | Description |
|---|---|---|---|
| lang | string | – | Output 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).
| Name | Type | Req | Description |
|---|---|---|---|
| approver | string | yes | Role code of the human approver. MUST be an agent with ``layer: admin`` (e.g. ``ADMIN``). |
| attempt_id | – | – | – |
| channel | string | – | Channel through which the approval was submitted. One of ``mobile`` / ``cli`` / ``web`` / ``manual_file_edit``. Default: ``cli``. |
| comment | string | – | Optional free-text comment from the approver. |
| decision | string | yes | Human's binary decision: ``approve`` or ``reject``. |
| expires_at | – | – | – |
| family_digest | – | – | – |
| from_stage | – | – | – |
| issued_at | – | – | – |
| issuer_proof | – | – | – |
| profile_ref | – | – | – |
| review_id | string | yes | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| branch_report_heads | object | yes | – |
| conclusion | string | yes | – |
| conflict_resolution | string | yes | – |
| expected_family_digest | string | yes | – |
| operation_id | string | yes | – |
| recipient | string | yes | – |
| root_task_id | string | yes | – |
| sender | string | yes | – |
| workspace_id | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | – | Optional one-paragraph description, written into the per-slug README. |
| profiles | – | – | – |
| protocol_version | – | – | – |
| slug | string | yes | Short lowercase-hyphen name matching ``^[a-z][a-z0-9-]*$`` and ≤ 40 chars. Examples: ``csdn-search``, ``mini-game``, ``weekly-report-2026w17``. |
| title | string | – | Optional 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).
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | – | Optional ``YYYY-MM-DD`` date shard to restrict the search. |
| task_id | string | yes | Task 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.
| Name | Type | Req | Description |
|---|---|---|---|
| filename | string | yes | Report 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.
| Name | Type | Req | Description |
|---|---|---|---|
| filename | string | yes | Review 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.
| Name | Type | Req | Description |
|---|---|---|---|
| filename | string | yes | Task filename (e.g. ``TASK-20260423-001-PM-to-DEV.md``) or plain task ID (e.g. ``TASK-20260423-001``). Both open and archived tasks are searched. |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| archive | boolean | – | When ``True`` (default) and ``force=True``, the existing copy is moved to :file:`.fcop/migrations/<timestamp>/rules/<rel>` before being overwritten so ADMIN can diff or roll back. ``False`` skips arc… |
| force | boolean | – | When ``True`` (default) overwrite existing copies. ``False`` skips files that already exist (no-op for an up-to-date project). |
| lang | string | – | Output 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.
| Name | Type | Req | Description |
|---|---|---|---|
| actor | string | – | Role code of the rejector (default ``"ADMIN"``). |
| authorization_ref | – | – | – |
| note | string | – | Mandatory rejection reason (strongly recommended). |
| profile_ref | – | – | – |
| report_ref | – | – | – |
| review_ref | – | – | – |
| task_id | string | yes | Task 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.
| Name | Type | Req | Description |
|---|---|---|---|
| actor | string | yes | – |
| authorization_ref | string | yes | – |
| lang | string | – | – |
| profile_ref | string | yes | – |
| review_ref | string | yes | – |
| task_id | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | absolute path to the project root (the directory that should contain ``docs/agents/`` and ``.cursor/rules/``). The directory must exist; it does not need to be an already-initialized FCoP project. |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| actor | string | – | Role code of the agent submitting the task. |
| report_ref | – | – | – |
| task_id | string | yes | Task 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.
| Name | Type | Req | Description |
|---|---|---|---|
| lang | string | – | Output 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.
| Name | Type | Req | Description |
|---|---|---|---|
| leader | string | yes | Leader role code; must be one of ``roles``. |
| roles | string | yes | Comma-separated role codes. |
No output schema declared.
No examples provided.
write_issue ~136
File an issue under ``docs/agents/issues/``.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | Detailed issue body in Markdown. |
| recipient | – | – | – |
| references | – | – | – |
| reporter | string | yes | Reporter role code (uppercase). |
| severity | string | – | ``critical`` / ``high`` / ``medium`` / ``low``. Aliases: ``P0`` → critical, ``P1`` → high, ``P2`` → medium, ``P3`` → low. |
| subject_ref | – | – | – |
| summary | string | yes | One-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.
| Name | Type | Req | Description |
|---|---|---|---|
| attempt_id | – | – | – |
| body | string | yes | Report body in Markdown. |
| priority | string | – | FCoP priority; accepts ``P0``–``P3`` and aliases. |
| recipient | string | yes | Recipient role code (typically the PM). |
| references | – | – | – |
| report_kind | string | – | – |
| reporter | string | yes | Reporter role code (uppercase). |
| result | – | – | – |
| status | string | – | ``done`` / ``in_progress`` / ``blocked``. |
| task_id | string | yes | Source 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).
| Name | Type | Req | Description |
|---|---|---|---|
| attempt_id | – | – | – |
| authorization_ref | – | – | – |
| authorization_scope | – | – | – |
| body | string | – | Additional Markdown body after the frontmatter. |
| decision | string | yes | Review 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 | – | – | – |
| rationale | string | – | Free-text rationale for the decision. Recommended for all non-``approved`` decisions. |
| recipient | – | – | – |
| references | – | – | – |
| required_changes | string | – | Newline- or comma-separated list of required changes. Mandatory when ``decision=needs_changes``. |
| review_kind | – | – | – |
| reviewer_agent | string | – | Optional agent/session identifier on top of the role code. |
| reviewer_role | string | yes | Role code of the reviewer (must have ``review_decision`` capability; typically ``layer: governance`` or ``layer: admin``). |
| subject_ref | string | yes | Reference to the artefact under review — file path for task/report/code_change; fcop.json diff range for role_switch. |
| subject_short | string | – | Override the ``-on-{slug}`` segment of the filename. Auto-derived from ``subject_ref`` when omitted. |
| subject_type | string | yes | What 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.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | Task body in Markdown. |
| branch_of | – | – | – |
| operation_id | – | – | – |
| parent | string | – | Optional upstream task ID (``TASK-YYYYMMDD-NNN-...``) written to ``parent:`` frontmatter for subtask derivation. |
| priority | string | – | FCoP priority. Accepts ``P0`` / ``P1`` / ``P2`` / ``P3`` (canonical) or the legacy aliases ``urgent`` / ``high`` / ``normal`` / ``low``. Default: ``P2``. |
| recipient | string | yes | Recipient role code (uppercase). May use the slot form ``ROLE.D1`` for per-slot targeting or ``TEAM`` for broadcast. |
| references | string | – | Comma-separated task filenames this task refers back to (for ``references:`` frontmatter field). |
| risk_level | string | – | Operation risk level (per ADR-0024). One of ``low`` / ``medium`` / ``high`` / ``irreversible``. Default: ``medium``. ``high`` and ``irreversible`` will automatically require a ``needs_human`` review… |
| sender | string | yes | Sender role code (uppercase). |
| subject | string | yes | One-line subject written to the ``subject:`` frontmatter field. |
| thread_key | string | – | Optional thread identifier for linking this task to an ongoing conversation. |
| workspace_id | – | – | – |
No output schema declared.
No examples provided.
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.