# Utuh watcher (npm · utuh-mcp)

Sweep bonded completeness claims on Creditcoin against Ethereum, and refute one that omits an event.

- Trust score: 78/100 (medium)
- Change this week: +18
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-20

## Components

- npm · `utuh-mcp`: 78/100 (this document), [markdown](https://verifymcp.io/servers/pugarhuda-utuh-mcp/utuh-mcp.md), [page](https://verifymcp.io/servers/pugarhuda-utuh-mcp/utuh-mcp)

## Channel facts

- Registry: `npm`
- Package: `utuh-mcp`
- Version: `0.4.0`
- 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-09-20.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - No production dependencies, so there is no dependency health to assess.
- **Provenance & Transparency**: 48/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 6 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 85/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 833 tokens (~104/item across 8 items; 5 tools + 3 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 43/100
  - Stability observed for 13 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 93/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 75% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 5 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 7 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Utuh watcher MCP server?

Utuh watcher runs locally as an npm package, launched with npx -y utuh-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add pugarhuda-utuh-mcp -- npx -y utuh-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "pugarhuda-utuh-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "utuh-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "pugarhuda-utuh-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "utuh-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add pugarhuda-utuh-mcp -- npx -y utuh-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "pugarhuda-utuh-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "utuh-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add pugarhuda-utuh-mcp --command npx --arg -y --arg utuh-mcp
```

### Hermes

```yaml
mcp_servers:
  pugarhuda-utuh-mcp:
    command: "npx"
    args: ["-y", "utuh-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "pugarhuda-utuh-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "utuh-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add pugarhuda-utuh-mcp -t stdio -c npx -a -y utuh-mcp
```

### Other

```json
{
  "mcpServers": {
    "pugarhuda-utuh-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "utuh-mcp"
      ]
    }
  }
}
```

## 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-09-18 (score 78, +1)

No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-16 (score 77, +1)

No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-15 (score 76, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-09-14 (score 61, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-13 (score 60, −12)

- [security regression] Malware scan: pass → unverified
- [functional regression] Schema quality: 79 → 104
- [functional improvement] Tool coverage: 67% → 75%
- [functional improvement] Stability: unverified → 0.20
- [functional] First check of Tool coverage: 100
- [functional] Schema quality: good → excellent
- [functional] Package version: 0.3.0 → 0.4.0

### 2026-09-08 (score 72, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-09-07 (score 57)

First indexed and scored.

## MCP tools (5)

### `tally` (~44 tokens)

What the registries have done

The four numbers across both deployments: events proven into claims, claims sealed, claims broken by a refutation, and bond slashed. Read live from Creditcoin CC3 Testnet.

Output parameters:

- `bondSlashedCTC` (string)
- `claimsRefuted` (integer)
- `claimsSealed` (integer)
- `eventsProvenIntoClaims` (integer)

### `list_claims` (~153 tokens)

List claims

A page of claims on a deployment, by id, each with its status, member count, bond, and — for sealed ones — how many Creditcoin blocks remain in the challenge window. Sealed claims inside their window are the ones a watcher can still act on. Pass the returned nextCursor to get the next page; utuh://claims/{deployment} is the same list in one read.

Input parameters:

- `cursor` (string): The nextCursor of the previous page; omit for the first
- `deployment` (string, required): Which deployment: "sepolia" is the completed loop, "mainnet" underwrites real Aave history
- `limit` (integer): Claims per page, 1..100

Output parameters:

- `claims` (array)
- `deployment` (string): Which deployment: "sepolia" is the completed loop, "mainnet" underwrites real Aave history
- `head` (integer): The Creditcoin block the windows were measured against
- `nextCursor` (string|null): null on the last page
- `registry` (string)
- `total` (integer): Claims on the deployment

### `sweep_claim` (~137 tokens)

Sweep a claim for completeness

Sweep the source chain across independent endpoints for every in-scope event in a claim's range, take the union, and check each event against the claim on-chain. Needs no key and spends nothing. Reports complete with provenance, or the omitted event — which refute_claim can then prove, if the claim is still inside its window. Finalized and refuted claims can be swept too, for the record; open ones are still being built and cannot.

Input parameters:

- `claimId` (integer, required)
- `deployment` (string, required): Which deployment: "sepolia" is the completed loop, "mainnet" underwrites real Aave history

Output parameters:

- `bondCTC` (string)
- `claimId` (integer)
- `complete` (boolean): Every swept event is in the claim — as far as these endpoints saw
- `deployment` (string): Which deployment: "sepolia" is the completed loop, "mainnet" underwrites real Aave history
- `omitted`: The first in-scope event the claim does not contain
- `provenance` (object)
- `refutable` (boolean)
- `status` (string)

### `refute_claim` (~136 tokens)

Refute an incomplete claim

Prove one omitted in-scope event through the Block Prover precompile and break the claim. Sends a real transaction on Creditcoin CC3 Testnet and pays the caller half the bond. Requires PRIVATE_KEY in the environment with a little CTC for gas. Answers with sent: false and a reason whenever it did not send.

Input parameters:

- `claimId` (integer, required)
- `confirm` (boolean): Must be true. This sends an irreversible transaction that slashes a real bond.
- `deployment` (string, required): Which deployment: "sepolia" is the completed loop, "mainnet" underwrites real Aave history

Output parameters:

- `claimId` (integer)
- `deployment` (string): Which deployment: "sepolia" is the completed loop, "mainnet" underwrites real Aave history
- `omitted`: The event proven, or that would have been
- `reason` (string|null): Why nothing was sent; null when it was
- `refuter` (string|null): The address paid
- `rewardCTC` (string|null)
- `sent` (boolean)
- `txHash` (string|null)

### `audit_attestors` (~99 tokens)

Audit Creditcoin's attestors

Ask both Creditcoin networks (CC3 Testnet and Creditcoin Mainnet) what header hashes their attestors signed for recent Ethereum blocks, then check each three ways: against independent Ethereum endpoints, against that network's own ChainInfo digest index, and against the other network. A MISMATCH would mean attestors signed a block Ethereum does not have; NOT ON CHAIN would mean the indexer published an attestation the chain does not hold.

Output parameters:

- `crossNetwork` (object)
- `networks` (array)

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/pugarhuda-utuh-mcp/utuh-mcp#diagnostics

## Score history

- 2026-09-20: 78
- 2026-09-19: 78
- 2026-09-18: 78
- 2026-09-17: 77
- 2026-09-16: 77
- 2026-09-15: 76
- 2026-09-14: 61
- 2026-09-13: 60
- 2026-09-12: 72
- 2026-09-11: 72
- 2026-09-10: 72
- 2026-09-09: 72
- 2026-09-08: 72
- 2026-09-07: 57

## Common questions

### What is the Utuh watcher MCP server?

Utuh watcher is an MCP server listed in the public MCP registry as io.github.PugarHuda/utuh-mcp. Sweep bonded completeness claims on Creditcoin against Ethereum, and refute one that omits an event. This page covers its npm package (utuh-mcp).

### Is the Utuh watcher MCP server safe to use?

Utuh watcher scores 78 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. 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 Utuh watcher MCP server expose?

Utuh watcher exposes 5 tools: tally, list_claims, sweep_claim, refute_claim, audit_attestors. Their descriptions and schemas cost roughly 569 tokens of context every time the server is loaded.

### Is the Utuh watcher MCP server still maintained?

Utuh watcher is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the Utuh watcher MCP server under?

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

## Links

- npm package: https://www.npmjs.com/package/utuh-mcp
- Socket report: https://socket.dev/npm/package/utuh-mcp
- Repository: https://github.com/PugarHuda/utuh
- Website: https://utuh.vercel.app/
- Changelog RSS feed: https://verifymcp.io/servers/pugarhuda-utuh-mcp/utuh-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/pugarhuda-utuh-mcp/utuh-mcp.json
- HTML version of this page: https://verifymcp.io/servers/pugarhuda-utuh-mcp/utuh-mcp
