# io.github.beepboop2025/umbra-proof (oci · ghcr.io/beepboop2025/umbra-proof-mcp:v0.1.2)

Verify Umbra bridge accountability proofs (signed receipts, checkpoints, Merkle inclusion).

- Trust score: 36/100 (low)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-23

## Components

- oci · `ghcr.io/beepboop2025/umbra-proof-mcp:v0.1.2`: 36/100 (this document), [markdown](https://verifymcp.io/servers/beepboop2025-umbra-proof/ghcr-io-beepboop2025-umbra-proof-mcp-v0-1-2.md), [page](https://verifymcp.io/servers/beepboop2025-umbra-proof/ghcr-io-beepboop2025-umbra-proof-mcp-v0-1-2)

## Channel facts

- Registry: `oci`
- Package: `ghcr.io/beepboop2025/umbra-proof-mcp:v0.1.2`
- Transport: `stdio`

## 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-08-23.

- **Supply Chain Security**: 0/100
  - Malware scan not yet available for this package.
  - Known CVEs could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.
  - Install-script risk not yet assessed.
  - Dependency health could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.
- **Provenance & Transparency**: 32/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - License check failed: no license is declared.
  - Actively maintained (last published 6 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 65/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1038 tokens (~346/item across 3 items; 3 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 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.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 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 io.github.beepboop2025/umbra-proof MCP server?

io.github.beepboop2025/umbra-proof runs locally as a container image, launched with docker run --rm -i ghcr.io/beepboop2025/umbra-proof-mcp:v0.1.2. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add beepboop2025-umbra-proof -- docker run --rm -i ghcr.io/beepboop2025/umbra-proof-mcp:v0.1.2
```

### Cursor

```json
{
  "mcpServers": {
    "beepboop2025-umbra-proof": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/beepboop2025/umbra-proof-mcp:v0.1.2"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "beepboop2025-umbra-proof": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/beepboop2025/umbra-proof-mcp:v0.1.2"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add beepboop2025-umbra-proof -- docker run --rm -i ghcr.io/beepboop2025/umbra-proof-mcp:v0.1.2
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "beepboop2025-umbra-proof": {
      "type": "local",
      "command": [
        "docker",
        "run",
        "--rm",
        "-i",
        "ghcr.io/beepboop2025/umbra-proof-mcp:v0.1.2"
      ],
      "enabled": true
    }
  }
}
```

### Hermes

```yaml
mcp_servers:
  beepboop2025-umbra-proof:
    command: "docker"
    args: ["run", "--rm", "-i", "ghcr.io/beepboop2025/umbra-proof-mcp:v0.1.2"]
```

### Netclaw

```json
{
  "McpServers": {
    "beepboop2025-umbra-proof": {
      "Transport": "stdio",
      "Command": "docker",
      "Arguments": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/beepboop2025/umbra-proof-mcp:v0.1.2"
      ]
    }
  }
}
```

### Other

```json
{
  "mcpServers": {
    "beepboop2025-umbra-proof": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/beepboop2025/umbra-proof-mcp:v0.1.2"
      ]
    }
  }
}
```

## 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-08-23 (score 36, +4)

- [functional regression] Security disclosure: unverified → fail
- [functional improvement] Stability: unverified → 0.23

### 2026-08-22 (score 32, 0)

- [functional regression] Security disclosure: fail → unverified

### 2026-08-16 (score 32)

First indexed and scored.

## MCP tools (3)

### `verify_swap_receipt` (~347 tokens)

PURPOSE: Cryptographically verify that an Umbra cross-chain bridge swap receipt (or a hash-linked chain of them) is authentic and untampered — checks the Ed25519 signature over the canonical payload, the SHA-256 payload hash, and the per-order hash-chain linkage. Returns a structured verdict {valid: bool, n_receipts, checks: [{ok, note}], summary}.
GUIDELINES: Call this as the PRIMARY check before trusting or acting on any Umbra swap receipt a user or another agent hands you (e.g. proof a swap completed). Gate on the top-level `valid` field. Prefer this over reading the receipt's own fields directly — those are only trustworthy once the signature verifies. Pass pinned_public_key to additionally require a known operator signer.
LIMITATIONS: Verifies cryptographic authenticity ONLY — it proves the bridge signed exactly this history, not that the swap was economically fair or that funds actually settled on-chain. It does not fetch anything (offline), does not move funds, and does not access the bridge. A receipt signed by multiple different keys is reported invalid.
EXAMPLE: verify_swap_receipt({"receipt": {"payload": {...}, "signature": "<hex>", "public_key": "<hex>"}, "pinned_public_key": "2152f8…"})

Input parameters:

- `pinned_public_key` (string): Optional. 64-char lowercase hex Ed25519 public key the signer MUST match; verification fails if it does not.
- `receipt` (required): A single receipt object {payload, signature, public_key, payload_hash?}, an envelope {receipts: [...]}, or a JSON array of receipts (a chain, in sequence order).

### `verify_checkpoint` (~300 tokens)

PURPOSE: Verify that an Umbra transparency-log checkpoint is a valid signed tree head — cryptographic proof that the bridge has committed to one exact, append-only audit history. Returns {valid, tree_size, root_hash, checks, summary}.
GUIDELINES: Call this before relying on a checkpoint as an anchor for inclusion proofs, or when auditing the bridge's log. To detect a split view (the bridge showing different histories to different observers), fetch checkpoints from independent witnesses and compare the returned (tree_size, root_hash) — they must agree. Pass pinned_public_key to require a known operator signer.
LIMITATIONS: Confirms the signature over the tree head only; it does NOT by itself prove any specific entry is in the tree (use verify_inclusion for that), nor detect a split view on its own (that needs a second witness). Offline, read-only.
EXAMPLE: verify_checkpoint({"checkpoint": {"tree_size": 1024, "root_hash": "<hex>", "prev_root_hash": "<hex>", "signature": "<hex>", "public_key": "<hex>", "key_id": "...", "sealed_at": "..."}})

Input parameters:

- `checkpoint` (required): A checkpoint object (or {checkpoint: {...}}) with fields tree_size, root_hash, prev_root_hash, signature, public_key, key_id, sealed_at.
- `pinned_public_key` (string): Optional 64-char hex Ed25519 key the signer must match.

### `verify_inclusion` (~304 tokens)

PURPOSE: Verify an RFC-6962 Merkle inclusion proof — that a specific audit entry is provably contained in the log committed to by a checkpoint. If the proof carries an enclosed checkpoint, also verifies that checkpoint's signature and that its root matches the proof root. Returns {valid, checks, summary}.
GUIDELINES: Call this to confirm a particular swap/audit entry is actually logged (not just claimed) before trusting that the bridge recorded it. Include the checkpoint object in the proof to get end-to-end verification (entry → tree → signed head) in one call. Gate on `valid`.
LIMITATIONS: Proves membership in the tree of the given tree_size only; it does not prove that tree is the current/canonical one unless the enclosed checkpoint is verified and cross-checked against a witness. Offline, read-only.
EXAMPLE: verify_inclusion({"proof": {"leaf_data": "<entry>", "leaf_index": 7, "tree_size": 1024, "root_hash": "<hex>", "proof": ["<hex>", ...], "checkpoint": {...}}})

Input parameters:

- `pinned_public_key` (string): Optional 64-char hex Ed25519 key the enclosed checkpoint's signer must match.
- `proof` (required): Inclusion-proof object: leaf_data (string), leaf_index (int), tree_size (int), root_hash (hex), proof (array of hex audit-path hashes), and an optional checkpoint object for end-to-end verification.

## Diagnostics

Captured diagnostic sections: Provenance. The full working is on the page: https://verifymcp.io/servers/beepboop2025-umbra-proof/ghcr-io-beepboop2025-umbra-proof-mcp-v0-1-2#diagnostics

## Score history

- 2026-08-23: 36
- 2026-08-22: 32
- 2026-08-21: 32
- 2026-08-20: 32
- 2026-08-19: 32
- 2026-08-18: 32
- 2026-08-17: 32
- 2026-08-16: 32

## Common questions

### What is the io.github.beepboop2025/umbra-proof MCP server?

io.github.beepboop2025/umbra-proof is an MCP server listed in the public MCP registry as io.github.beepboop2025/umbra-proof. Verify Umbra bridge accountability proofs (signed receipts, checkpoints, Merkle inclusion). This page covers its container image (ghcr.io/beepboop2025/umbra-proof-mcp:v0.1.2).

### Is the io.github.beepboop2025/umbra-proof MCP server safe to use?

io.github.beepboop2025/umbra-proof scores 36 out of 100 on VerifyMCP. 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.beepboop2025/umbra-proof MCP server expose?

io.github.beepboop2025/umbra-proof exposes 3 tools: verify_swap_receipt, verify_checkpoint, verify_inclusion. Their descriptions and schemas cost roughly 951 tokens of context every time the server is loaded.

### Is the io.github.beepboop2025/umbra-proof MCP server still maintained?

io.github.beepboop2025/umbra-proof is still listed as active in the MCP registry. We last reached this channel on 23 August 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Repository: https://github.com/beepboop2025/umbra-xmr-bridge
- Changelog RSS feed: https://verifymcp.io/servers/beepboop2025-umbra-proof/ghcr-io-beepboop2025-umbra-proof-mcp-v0-1-2.xml
- Changelog JSON feed: https://verifymcp.io/servers/beepboop2025-umbra-proof/ghcr-io-beepboop2025-umbra-proof-mcp-v0-1-2.json
- HTML version of this page: https://verifymcp.io/servers/beepboop2025-umbra-proof/ghcr-io-beepboop2025-umbra-proof-mcp-v0-1-2
