# Reef (mcpb · reef-0.4.2-x86_64-unknown-linux-musl.mcpb)

Version control for fleets of coding agents: isolated workspaces, status, diff and history.

- Trust score: 51/100 (low)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- mcpb · `reef-0.4.2-aarch64-apple-darwin.mcpb`: 20/100, [markdown](https://verifymcp.io/servers/reef-vcs-reef/reef-aarch64-apple-darwin.md), [page](https://verifymcp.io/servers/reef-vcs-reef/reef-aarch64-apple-darwin)
- mcpb · `reef-0.4.2-aarch64-unknown-linux-musl.mcpb`: 20/100, [markdown](https://verifymcp.io/servers/reef-vcs-reef/reef-aarch64-unknown-linux-musl.md), [page](https://verifymcp.io/servers/reef-vcs-reef/reef-aarch64-unknown-linux-musl)
- mcpb · `reef-0.4.2-x86_64-apple-darwin.mcpb`: 20/100, [markdown](https://verifymcp.io/servers/reef-vcs-reef/reef-x86-64-apple-darwin.md), [page](https://verifymcp.io/servers/reef-vcs-reef/reef-x86-64-apple-darwin)
- mcpb · `reef-0.4.2-x86_64-unknown-linux-musl.mcpb`: 51/100 (this document), [markdown](https://verifymcp.io/servers/reef-vcs-reef/reef-x86-64-unknown-linux-musl.md), [page](https://verifymcp.io/servers/reef-vcs-reef/reef-x86-64-unknown-linux-musl)

## Channel facts

- Registry: `mcpb`
- Package: `https://github.com/reef-vcs/reef/releases/download/v0.4.2/reef-0.4.2-x86_64-unknown-linux-musl.mcpb`
- Version: `0.4.2`
- Transport: `stdio`
- SHA-256: `4ef6c251a6732629e3b2d8291f4961b37b4b4507845f38aa594331900e374a97`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 0/100
  - No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.
  - Known CVEs could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).
  - Install-script risk not yet assessed.
  - Dependency health could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).
- **Provenance & Transparency**: 100/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to reef-vcs/reef).
  - Clear OSI-approved license (Apache-2.0).
  - Actively maintained (last published 0 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 63/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 3216 tokens (~153/item across 21 items; 21 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 10/100
  - Stability observed for 3 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 21 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 22 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### How do I install the Reef MCP server?

Reef ships as an MCPB bundle, a single file you download and open in an MCP host that supports MCPB bundles, such as Claude Desktop. The host reads the launch command from the bundle's own manifest, so there is no command to copy. Before opening it, check the file's SHA-256 matches the one the MCP registry declares for it, 4ef6c251a6732629e3b2d8291f4961b37b4b4507845f38aa594331900e374a97; the commands to do that are on this page. If it does not match, do not open it.

- Download bundle: `https://github.com/reef-vcs/reef/releases/download/v0.4.2/reef-0.4.2-x86_64-unknown-linux-musl.mcpb`
- SHA-256: `4ef6c251a6732629e3b2d8291f4961b37b4b4507845f38aa594331900e374a97`

### Verify on macOS / Linux

```bash
echo "4ef6c251a6732629e3b2d8291f4961b37b4b4507845f38aa594331900e374a97  reef-0.4.2-x86_64-unknown-linux-musl.mcpb" | shasum -a 256 -c
```

### Verify on Windows (PowerShell)

```powershell
(Get-FileHash -Algorithm SHA256 .\reef-0.4.2-x86_64-unknown-linux-musl.mcpb).Hash -eq "4ef6c251a6732629e3b2d8291f4961b37b4b4507845f38aa594331900e374a97"
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 51, +1)

- [security regression] Stability: 0.07 → unverified
- [security regression] Tool safety: pass → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified
- [functional] Package version: 0.4.1 → 0.4.2

### 2026-11-04 (score 50, +1)

- [security regression] Tool safety: pass → unverified
- [security] Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional improvement] Stability: unverified → 0.07
- [functional] First check of Schema quality: unverified
- [functional] Package version: 0.3.0 → 0.4.1
- [functional] Package version: 0.3.0 → 0.4.0

### 2026-11-02 (score 49)

First indexed and scored.

## MCP tools (21)

### `list_repositories` (~62 tokens)

List repositories

List the repositories registered with Reef, oldest first. Returns {repositories, next_page_token}.

Input parameters:

- `page_size` (integer): Repositories per page [default: 100, at most 1000].
- `page_token` (string): From the last result.

### `list_workspaces` (~146 tokens)

List workspaces

List a repository's workspaces, newest first: each is a directory leased to one agent, editing one change, with how many files it changed. Returns {workspaces, next_page_token}.

Input parameters:

- `all_repositories` (boolean): Workspaces of every registered repository instead of one.
- `owner` (string): Only workspaces with this owner.
- `page_size` (integer): Workspaces per page [default: 50, at most 1000].
- `page_token` (string): From the last result.
- `repo` (string): Repository: id, prefix, or absolute path in it.
- `states` (array): Only these states [default: active].

### `get_workspace` (~84 tokens)

Get workspace

Show a workspace: its directory, change, lease and recent snapshots. Returns the workspace as `reef ws inspect -o json` prints it.

Input parameters:

- `disk_usage` (boolean): Walk the directory for its disk usage.
- `snapshot_first` (boolean): Snapshot the workspace's files first.
- `workspace` (string): Workspace: id, prefix, or absolute path in it.

### `get_status` (~107 tokens)

Get status

Show what the workspace changes, after a snapshot, and the repository's state. Returns {repository_status, workspace_status}.

Input parameters:

- `max_files` (integer): List at most this many changed files [default: 100].
- `repo` (string): Repository: id, prefix, or absolute path in it.
- `skip_snapshot` (boolean): Report the last snapshot instead of snapshotting the workspace first.
- `workspace` (string): Workspace: id, prefix, or absolute path in it.

### `list_changes` (~164 tokens)

List changes

List changes, newest first, as `reef log` does. Returns {entries, at_operation, next_page_token}.

Input parameters:

- `at_operation` (string): Read as of this operation (id or prefix).
- `page_size` (integer): Entries per page [default: 50, at most 1000].
- `page_token` (string): From the last result.
- `repo` (string): Repository: id, prefix, or absolute path in it.
- `revset` (string): A jj revset, such as `trunk()..@` [default: Reef's log set].
- `skip_snapshot` (boolean): Skip the snapshot; read the last one.
- `workspace` (string): Workspace: id, prefix, or absolute path in it.

### `get_change` (~137 tokens)

Get change

Show one change: its ids, description, parents and state, without its files (get_diff has them). Returns {change, at_operation}.

Input parameters:

- `at_operation` (string): Read as of this operation (id or prefix).
- `repo` (string): Repository: id, prefix, or absolute path in it.
- `revision` (string): A change or commit id, bookmark, or revset naming one commit (default: `@`, the workspace's change).
- `skip_snapshot` (boolean): Skip the snapshot; read the last one.
- `workspace` (string): Workspace: id, prefix, or absolute path in it.

### `get_diff` (~294 tokens)

Get diff

A change's diff against its parents, or two revisions' diff, a page of files at a time. Returns {from_commit_ids, to_commit_id, files, symbol_summary, next_page_token}.

Input parameters:

- `at_operation` (string): Read as of this operation (id or prefix).
- `context_lines` (integer): Context lines [default: 3].
- `expand` (array): Only these symbols' lines.
- `format` (string): `hunks`, `stat` (line counts), `summary` (paths) or `symbols` (changed symbols, call sites) [default: hunks].
- `from_revision` (string): The old side [default: the new side's parents].
- `max_lines_per_file` (integer): Hunk lines per file [default: 1000].
- `page_size` (integer): Files per page [default: 20, at most 1000].
- `page_token` (string): From the last result.
- `paths` (array): Only these paths, repository-relative or absolute inside the scope.
- `repo` (string): Repository: id, prefix, or absolute path in it.
- `skip_snapshot` (boolean): Skip the snapshot; read the last one.
- `to_revision` (string): The new side (default: `@`).
- `workspace` (string): Workspace: id, prefix, or absolute path in it.

### `list_operations` (~172 tokens)

List operations

List the repository's operation log, newest first: every snapshot, describe, edit and workspace change, by whom. Returns {operations, next_page_token}.

Input parameters:

- `agents` (array): Only operations by these agents.
- `changes` (array): Only operations touching these changes (hex or reverse-hex prefixes).
- `include_effects` (boolean): Include what each operation changed.
- `kinds` (array): Only operations of these kinds.
- `page_size` (integer): Operations per page, newest first [default: 50, at most 1000].
- `page_token` (string): From the last result.
- `repo` (string): Repository: id, prefix, or absolute path in it.
- `workspaces` (array): Only operations for these workspaces (ids, prefixes, or paths).

### `query_changes` (~162 tokens)

Query changes

Which changes touched these files or symbols: who wrote them, when, and whether they landed. Newest first. Returns {changes, coverage, next_page_token}.

Input parameters:

- `agents` (array): Only changes these agents wrote.
- `outcomes` (array): Only these outcomes.
- `page_size` (integer): Changes per page [default: 20, at most 1000].
- `page_token` (string): From the last result.
- `paths` (array): Files or directories, repository-relative.
- `repo` (string): Repository: id, prefix, or absolute path in it.
- `since` (string): Only changes written since (RFC 3339).
- `symbols` (array): Symbol, `Class#method()` suffix, or name.

### `get_operation` (~54 tokens)

Get operation

Show one operation and what it changed (effects). Returns the operation.

Input parameters:

- `operation_id` (string, required): An operation id or unique prefix.
- `repo` (string): Repository: id, prefix, or absolute path in it.

### `read_file` (~212 tokens)

Read file

Read a file at any revision, one range at a time, without a directory; pass the first range's at_operation on to read one version. Returns {path, size, content (text) or content_base64, offset, next_offset}; next_offset is null at the end.

Input parameters:

- `at_operation` (string): Read as of this operation (id or prefix).
- `limit` (integer): At most this many bytes [default: 65536, at most 1048576].
- `offset` (integer): The first byte to read [default: 0].
- `path` (string, required): The file, repository-relative or absolute inside the scope.
- `repo` (string): Repository: id, prefix, or absolute path in it.
- `revision` (string): The revision to read at (default: `@`).
- `skip_snapshot` (boolean): Skip the snapshot; read the last one.
- `workspace` (string): Workspace: id, prefix, or absolute path in it.

### `list_files` (~189 tokens)

List files

List a directory at any revision. Returns {entries, commit_id, at_operation, next_page_token}.

Input parameters:

- `at_operation` (string): Read as of this operation (id or prefix).
- `page_size` (integer): Entries per page [default: 200, at most 1000].
- `page_token` (string): From the last result.
- `path` (string): The directory, repository-relative or absolute inside the scope [default: the root].
- `recursive` (boolean): List everything under the directory, not only its entries.
- `repo` (string): Repository: id, prefix, or absolute path in it.
- `revision` (string): The revision to list at (default: `@`).
- `skip_snapshot` (boolean): Skip the snapshot; read the last one.
- `workspace` (string): Workspace: id, prefix, or absolute path in it.

### `wait_for_operations` (~236 tokens)

Wait for operations

Wait until operations matching the filter are recorded (another agent's describe, edit or snapshot) or the timeout passes; over 60 s may hit the client's tool timeout. Returns {operations (oldest first, at most 100), last_operation_id, timed_out}; pass last_operation_id back as after_operation for the next ones.

Input parameters:

- `after_operation` (string): Wait for operations after this one (id or prefix), such as the last result's last_operation_id [default: the newest now].
- `agents` (array): Only operations by these agents.
- `changes` (array): Only operations touching these changes (hex or reverse-hex prefixes).
- `include_effects` (boolean): Include what each operation changed.
- `kinds` (array): Only operations of these kinds.
- `repo` (string): Repository: id, prefix, or absolute path in it.
- `timeout_seconds` (integer): Give up after this many seconds, 0 to check once [default: 30, at most 300].
- `workspaces` (array): Only operations for these workspaces (ids, prefixes, or paths).

### `create_workspace` (~178 tokens)

Create workspace

Create a workspace: a copy-on-write directory on a new change (or an existing one), snapshotted as it is written. Its lease is kept alive while the server runs; release_workspace it when done, or it is reclaimed with a final snapshot about 35 minutes after the server stops. Returns the workspace and its path.

Input parameters:

- `change` (string): Edit this existing change (id, bookmark, or a revset naming one commit).
- `missing_stores` (string): When a declared dependency store is not built [default: fail].
- `new_on` (string): Start a new change on this revision [default: the repository's default start].
- `purpose` (string): What the workspace is for, shown in list_workspaces.
- `repo` (string): Repository: id, prefix, or absolute path in it.

### `snapshot_workspace` (~68 tokens)

Snapshot workspace

Record the workspace's files now, as its change's new commit. Returns {changed, commit_id, operation, workspace}.

Input parameters:

- `description` (string): The snapshot operation's description [default: Reef's].
- `workspace` (string): Workspace: id, prefix, or absolute path in it.

### `move_workspace` (~130 tokens)

Move workspace

Point a workspace at another change, or a new change on a revision, after a final snapshot of the one it leaves; its files are checked out again. Returns the workspace afterwards.

Input parameters:

- `change` (string): Edit this existing change (id, bookmark, or a revset naming one commit).
- `missing_stores` (string): When a declared dependency store is not built [default: fail].
- `new_on` (string): Start a new change on this revision [default: the repository's default start].
- `workspace` (string, required): Workspace: id, prefix, or absolute path in it.

### `release_workspace` (~59 tokens)

Release workspace

Take a final snapshot of a workspace and remove its directory; its change stays in the repository. Returns {id, final_op_id, snapshot_taken, freed_bytes}.

Input parameters:

- `workspace` (string, required): Workspace: id, prefix, or absolute path in it.

### `describe_change` (~137 tokens)

Describe change

Set a change's description (its commit message). Returns {change, operation, workspace}; operation is null when the description was already that.

Input parameters:

- `description` (string, required): The new description; empty clears it.
- `expected_commit_id` (string): Refuse unless the revision is still this commit (full id).
- `repo` (string): Repository: id, prefix, or absolute path in it.
- `revision` (string): The change: a change or commit id, bookmark, or revset naming one commit (default: `@`).
- `workspace` (string): Workspace: id, prefix, or absolute path in it.

### `abandon_change` (~111 tokens)

Abandon change

Abandon a change: its descendants move onto its parents. Returns {abandoned_commit_id, operation, workspace}.

Input parameters:

- `expected_commit_id` (string): Refuse unless the revision is still this commit (full id).
- `repo` (string): Repository: id, prefix, or absolute path in it.
- `revision` (string, required): The change: a change or commit id, or a revset naming one commit.
- `workspace` (string): Workspace: id, prefix, or absolute path in it.

### `undo_operation` (~95 tokens)

Undo operation

Revert what one operation did, as a new operation (list_operations lists them). Returns {operation, snapshot, undone_operation_id, workspace}.

Input parameters:

- `operation_id` (string, required): The operation to revert (id or unique prefix; list_operations lists them).
- `repo` (string): Repository: id, prefix, or absolute path in it.
- `workspace` (string): Workspace: id, prefix, or absolute path in it.

### `edit_files` (~221 tokens)

Edit files

Write, replace text in, delete, copy or chmod files in a change (revision) or a new change (new_on), as one operation, without a directory; workspaces on the change get the new files. Rename: copy_from the old path, and delete it, in one call. Returns {change, operation, workspace}.

Input parameters:

- `description` (string): The change's new description [default: unchanged, or empty for new_on].
- `edits` (array, required): The edits, 1 to 1000, applied in order.
- `expected_commit_id` (string): Refuse unless the revision is still this commit (full id).
- `new_on` (string): Create a new change on this revision with the edits; give this or revision.
- `repo` (string): Repository: id, prefix, or absolute path in it.
- `revision` (string): Rewrite this change (`@` for the workspace's); give this or new_on.
- `workspace` (string): Workspace: id, prefix, or absolute path in it.

## Diagnostics

Captured diagnostic sections: Provenance. The full working is on the page: https://verifymcp.io/servers/reef-vcs-reef/reef-x86-64-unknown-linux-musl#diagnostics

## Score history

- 2026-11-05: 51
- 2026-11-04: 50
- 2026-11-03: 49
- 2026-11-02: 49

## Common questions

### What is the Reef MCP server?

Reef is an MCP server listed in the public MCP registry as io.github.reef-vcs/reef. Version control for fleets of coding agents: isolated workspaces, status, diff and history. This page covers its MCPB bundle (https://github.com/reef-vcs/reef/releases/download/v0.4.2/reef-0.4.2-x86_64-unknown-linux-musl.mcpb).

### Is the Reef MCP server safe to use?

Reef scores 51 out of 100 on VerifyMCP. Its build provenance is signed and verified. 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 Reef MCP server expose?

Reef exposes 21 tools: list_repositories, list_workspaces, get_workspace, get_status, list_changes, and 16 more. Their descriptions and schemas cost roughly 3,018 tokens of context every time the server is loaded.

### What licence is the Reef MCP server under?

Reef declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

### What did VerifyMCP test on the Reef MCP server?

VerifyMCP ran 12 checks on Reef, covering Source repository, Provenance, License, Maintenance and 8 more. 4 items could not be completed, a gap on our side rather than a finding about Reef: Malware scan, Known CVEs, Install scripts and Dependency health. One category scores 0 for that reason, because we only credit what we can confirm. Endpoint Security and Transport & Reachability do not apply to an MCPB bundle, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- Repository: https://github.com/reef-vcs/reef
- Changelog RSS feed: https://verifymcp.io/servers/reef-vcs-reef/reef-x86-64-unknown-linux-musl.xml
- Changelog JSON feed: https://verifymcp.io/servers/reef-vcs-reef/reef-x86-64-unknown-linux-musl/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/reef-vcs-reef/reef-x86-64-unknown-linux-musl.json
- HTML version of this page: https://verifymcp.io/servers/reef-vcs-reef/reef-x86-64-unknown-linux-musl
