# three.ws Provenance (npm · @three-ws/provenance-mcp)

Append-only, signed, on-chain-verifiable agent action log — record and audit what agents did.

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

## Components

- npm · `@three-ws/provenance-mcp`: 62/100 (this document), [markdown](https://verifymcp.io/servers/nirholas-provenance-mcp/three-ws-provenance-mcp.md), [page](https://verifymcp.io/servers/nirholas-provenance-mcp/three-ws-provenance-mcp)

## Channel facts

- Registry: `npm`
- Package: `@three-ws/provenance-mcp`
- Version: `0.1.1`
- 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-03.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (104 of 108), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (104 of 108), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (Apache-2.0).
  - Actively maintained (last published 29 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 60/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1013 tokens (~337/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**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **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**: 100/100
  - Implements a supported MCP spec version (2025-11-25); 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

### Claude

```bash
claude mcp add nirholas-provenance-mcp -- npx -y @three-ws/provenance-mcp
```

### Codex

```bash
codex mcp add nirholas-provenance-mcp -- npx -y @three-ws/provenance-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "nirholas-provenance-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@three-ws/provenance-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add nirholas-provenance-mcp --command npx --arg -y --arg @three-ws/provenance-mcp
```

### Hermes

```yaml
mcp_servers:
  nirholas-provenance-mcp:
    command: "npx"
    args: ["-y", "@three-ws/provenance-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "nirholas-provenance-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@three-ws/provenance-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-08-02 (score 62, +25)

- [security regression] Provenance: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [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] Capabilities: pass → unverified
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] License: unverified → pass
- [functional improvement] Schema quality: unverified → excellent
- [functional] Licence: Apache-2.0

### 2026-08-01 (score 37, +20)

- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional improvement] MCP protocol: unverified → pass

### 2026-07-31 (score 17, −7)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 24, −18)

- [security regression] Malware scan: pass → unverified

### 2026-07-27 (score 42)

First indexed and scored.

## MCP tools (3)

### `list_agent_actions` (~253 tokens)

List an agent's action-provenance trail

Read an agent's append-only action log, newest-first, cursor-paginated. Returns each action's id, type (e.g. launch, buy, post, reflect), payload, source_skill, created_at, and — when the action was signed — its ERC-191 signature + signer_address. Each record is checked against its own signature: `verification.reason` is `ok` (recovered signer matches the claimed address), `unsigned`, `signer_mismatch` (recovered a different address — tampering OR an action signed under a different canonical scheme; treat as unverified, not trusted), or `malformed_signature`. Pass the returned `next_cursor` back as `cursor` to page further. The ledger is owner-scoped: THREE_WS_TOKEN must own `agent_id`. Read-only; the log is immutable so older pages never change.

Input parameters:

- `agent_id` (string, required): The agent identity id whose provenance trail to read. Your token must own it.
- `cursor` (string): Pagination cursor — pass the `next_cursor` from a previous call to fetch the next (older) page.
- `limit` (integer): Max actions to return (1–200, default 50).

### `query_action` (~218 tokens)

Fetch + verify one provenance action

Fetch a single action from an agent's append-only log by its id, then verify it. Returns the action (type, payload, source_skill, created_at, signature, signer_address) plus a `verification` block: `signed`, `valid`, `reason` (`ok` | `unsigned` | `signer_mismatch` | `malformed_signature`), the `recovered` signer address, and the recomputed `digest`. `valid:true` means the ERC-191 signature recovers to the claimed signer over the canonical action form — cryptographic proof the named agent authored this exact action and it was not altered. The ledger is owner-scoped: THREE_WS_TOKEN must own `agent_id`. Returns ok:false / not_found when the id is absent from this agent's log. Read-only.

Input parameters:

- `agent_id` (string, required): The agent identity id that owns the action. Your token must own this agent.
- `id` (string, required): The numeric action id to fetch (the `id` field from list_agent_actions).

### `append_agent_action` (~361 tokens)

Append a signed action to the provenance ledger

Record an action in an agent's append-only provenance ledger — the permanent, auditable trail of what the agent did. Provide `agent_id` (THREE_WS_TOKEN must own it), a short `type` (≤64 chars, e.g. launch, buy, post, reflect), an optional structured `payload`, and an optional `source_skill`. WRITE ACTION: this APPENDS a new immutable record — it can never be edited or deleted, and calling it twice records two distinct actions, so don't retry blindly. When an EVM signer is configured (THREE_WS_SIGNER_KEY env or the `signer_key` arg) the action is ERC-191-signed before sending, making its authorship publicly verifiable; with no key it is appended unsigned. Returns the stored record (with id + created_at) and a `signing` block reporting whether it was signed and by which address.

Input parameters:

- `agent_id` (string, required): The agent identity id to record the action under. Your token must own it.
- `payload` (object): Structured details of the action (any JSON object) — e.g. { mint, amount_sol, signature }. Stored verbatim and covered by the signature.
- `signer_key` (string): Optional 0x-prefixed EVM private key to ERC-191-sign this action. Overrides THREE_WS_SIGNER_KEY for this call. Omit to use the env key, or sign nothing if none is set.
- `source_skill` (string): Identifier of the skill/tool that produced this action, for attribution in the trail.
- `type` (string, required): Short action type, e.g. launch, buy, sell, post, reflect, follow. Truncated to 64 chars server-side.

## Diagnostics

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

## Score history

- 2026-08-03: 62
- 2026-08-02: 62
- 2026-08-01: 37
- 2026-07-31: 17
- 2026-07-30: 24
- 2026-07-28: 42
- 2026-07-27: 42

## Links

- npm package: https://www.npmjs.com/package/@three-ws/provenance-mcp
- Socket report: https://socket.dev/npm/package/@three-ws/provenance-mcp
- Repository: https://github.com/nirholas/three.ws
- Website: https://three.ws/
- Changelog RSS feed: https://verifymcp.io/servers/nirholas-provenance-mcp/three-ws-provenance-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/nirholas-provenance-mcp/three-ws-provenance-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/nirholas-provenance-mcp/three-ws-provenance-mcp
