# io.github.JonasFuchss/x402-trust-mcp (npm · x402-trust-mcp)

Trust & reliability data for x402 endpoints before your agent pays them.

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

## Components

- npm · `x402-trust-mcp`: 68/100 (this document), [markdown](https://verifymcp.io/servers/jonasfuchss-x402-trust-mcp/x402-trust-mcp.md), [page](https://verifymcp.io/servers/jonasfuchss-x402-trust-mcp/x402-trust-mcp)

## Channel facts

- Registry: `npm`
- Package: `x402-trust-mcp`
- Version: `1.7.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 (110 of 114), 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 (110 of 114), 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 (MIT).
  - Actively maintained (last published 0 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 68/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2437 tokens (~203/item across 12 items; 12 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 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**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add jonasfuchss-x402-trust-mcp -- npx -y x402-trust-mcp
```

### Codex

```bash
codex mcp add jonasfuchss-x402-trust-mcp -- npx -y x402-trust-mcp
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add jonasfuchss-x402-trust-mcp --command npx --arg -y --arg x402-trust-mcp
```

### Hermes

```yaml
mcp_servers:
  jonasfuchss-x402-trust-mcp:
    command: "npx"
    args: ["-y", "x402-trust-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "jonasfuchss-x402-trust-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "x402-trust-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-03 (score 68, +1)

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

### 2026-08-02 (score 67, +61)

- [security regression] Provenance: unverified → fail
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Install scripts: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [functional regression] Dependency health: partial → unverified
- [functional improvement] Stability: unverified → 0.23
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] License: unverified → pass
- [functional improvement] Schema quality: unverified → excellent
- [functional improvement] Tool coverage: unverified → 100
- [functional] Licence: MIT

### 2026-08-01 (score 6, −28)

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

### 2026-07-31 (score 34, −9)

- [security regression] Provenance: unverified → fail
- [security regression] Malware scan: pass → unverified
- [security improvement] Install scripts: unverified → pass
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] License: unverified → pass
- [functional] Licence: MIT

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

First indexed and scored.

## MCP tools (12)

### `x402_ecosystem_stats` (~77 tokens)

x402 ecosystem stats (free)

Free aggregate snapshot of the entire x402 ecosystem (Base + Solana): how many endpoints are listed/active/delisted, what fraction are reachable and spec-compliant, and real on-chain USDC settlement volume / receivers / payers over the last 30 days. Use this to gauge market health before transacting.

### `x402_trust_leaderboard` (~81 tokens)

x402 trust leaderboard (free)

Free top-25 most trustworthy x402 endpoints, ranked by a deterministic trust score (uptime, envelope compliance, latency, age, on-chain settlement activity, price stability). Latency is measured from a single EU vantage point and includes network distance to the endpoint (so it is only lightly weighted). Use this to discover reliable paid endpoints.

### `x402_trust_preview` (~148 tokens)

x402 trust preview — full sample reports (free)

FREE showcase of what x402_trust_score returns. You do NOT choose the endpoint: this returns the COMPLETE paid-grade trust report (every field — exact score, scoreRange, full component breakdown, advertised price, on-chain settlement figures, all flags) for THREE endpoints picked from the current population — the best-scored, the median, and the worst-scored ('samples' each carry 'role', 'populationRank', and the full 'report'). Use it to see exactly what the paid output looks like across the entire quality range BEFORE paying. It cannot score an endpoint you choose — to evaluate YOUR OWN endpoint, call x402_trust_score (paid). Takes no arguments.

### `x402_trust_score` (~255 tokens)

x402 trust score for an endpoint (paid)

Trust score (0-100, grade A-F) for a SPECIFIC x402 endpoint, PLUS a machine-readable verdict ('recommendation': proceed|caution|avoid), the advertised price ('advertised.amountUsd'), a confidence-adjusted band ('scoreRange'), and structured flags ('flagsDetailed' with code/severity/message — any severity 'error' means avoid). Includes the full component breakdown, the provider-advertised 'serviceName' and 'description' (unverified provider claims, shown next to our independent metrics), and 30-day on-chain stats. Note: 'stats.avgLatencyMs' is measured from a single EU vantage point and includes network distance to the endpoint (see 'stats.latencyVantage'), so a geographically distant endpoint reads slower even when its server is fast. One call answers WHETHER and at WHAT PRICE to use an endpoint. Call this BEFORE paying an unknown x402 endpoint to avoid dead, fraudulent, or recently-hijacked services. Pay-per-call over x402; auto-pays if a wallet is configured, otherwise returns the price quote.

Input parameters:

- `resource` (string, required): Full x402 resource URL to evaluate, e.g. https://api.example.com/v1/thing

### `x402_endpoint_history` (~134 tokens)

x402 endpoint observation history (paid)

Raw observation time-series for a SPECIFIC x402 endpoint: listing/delisting/relisting events, advertised price changes, payTo changes, and probe results (uptime, latency, quoted amount) over the requested window (1-90 days). Per-probe 'latencyMs' is measured from a single EU vantage point and includes network distance to the endpoint. Pay-per-call over x402; auto-pays if a wallet is configured, otherwise returns the price quote.

Input parameters:

- `days` (integer): Lookback window in days (default 30)
- `resource` (string, required): Full x402 resource URL

### `x402_find_alternatives` (~272 tokens)

Find better-scored alternatives to an x402 endpoint (paid)

Given an x402 endpoint URL, returns the top semantically-similar endpoints (matched on advertised purpose via description embeddings) that currently OUT-SCORE it on the deterministic trust score. Use this to route away from a mediocre/dead/expensive endpoint toward a more reliable, better-settled one serving the SAME function — e.g. before paying, check if a higher-graded equivalent exists. Each alternative carries its trust 'score', 'grade', 'recommendation', cosine 'similarity' (0-1), 'amountUsd' price, and a free 'endpointPage' URL. Same-host siblings and 'avoid'-flagged endpoints are excluded. An empty 'alternatives' array is a valid answer meaning nothing beats the subject. Similarity is independent of latency/geography. Pay-per-call over x402 (~$0.005); auto-pays if a wallet is configured, otherwise returns the price quote.

Input parameters:

- `limit` (integer): Max alternatives to return (1-25, default 5)
- `minScoreDelta` (number): Minimum trust-score advantage an alternative must have over the subject (default 5)
- `resource` (string, required): Full x402 resource URL to find better alternatives for, e.g. https://api.example.com/v1/thing

### `x402_trust_bulk` (~304 tokens)

x402 bulk trust scoring (paid)

Score up to 500 x402 endpoints in a SINGLE paid call. Returns the authoritative full-density trust score (0-100, grade A-F, recommendation proceed|caution|avoid), confidence, `probed_at`, `computed_at`, and a `recomputed` flag for each requested resource. Cache rows older than ~15 minutes are recomputed on-demand from the latest stored probes and settlements (no live network re-probe), so bulk scores typically reflect reality within minutes. Per-request recompute limits apply: at most 50 endpoints / 8 seconds are recomputed; the response includes `recompute_limit_hit` and `recompute_limit` so you know if the cap was reached. The smallest tier that fits your request is selected automatically (10/50/100/200/500 endpoints; ~$0.045/$0.20/$0.325/$0.40/$0.50). Resources not in our observation set return `found:false`; you still pay for the batch. For a fresh live probe, use `x402_trust_score`. Pay-per-call over x402; auto-pays if a wallet is configured, otherwise returns the price quote.

Input parameters:

- `resources` (array, required): List of full x402 resource URLs (https://...) to score. Duplicates are ignored; max 500.
- `tier` (number): Optional fixed tier size. If omitted, the cheapest tier that fits `resources` is used.

### `x402_watch_create` (~464 tokens)

x402 watch — create 30-day endpoint monitor (paid)

Start monitoring ONE x402 endpoint for 30 days. Get alerted on changes that break autonomous payment: payTo changes (possible takeover/rug), price changes, asset/network changes, 402-spec regressions, delisting, and liveness down/recovered. A self-healing endpoint that repeatedly blips is auto-detected as `liveness_flapping` and its individual down/up alerts are coalesced into a single flapping notice (plus one 'stopped flapping' notice when it stabilizes) so you are not spammed. Returns a one-time bearer secret + poll URL + renew URL + edit URL + cancel URL + machine-readable `next_steps`. Use x402_watch_events to poll the append-only log, or configure push delivery to one or more signed HTTPS webhooks and/or Slack/Discord incoming webhooks (max 5 each). `webhook_url`/`slack_url` accept a single URL string or an array of URLs. All URLs are connection-tested BEFORE payment — unreachable URLs are rejected with no charge (retry with a corrected URL). On success the response reports per-URL delivery in `delivery.connection_test`. Webhook signature: `x-signature` = 'sha256=' + HMAC-SHA256(body) keyed by hex(sha256(secret)), NOT the raw secret. Pay-per-call over x402 (~$0.20); auto-pays if a wallet is configured, otherwise returns the price quote.

Input parameters:

- `endpoint` (string, required): Full x402 resource URL to watch. It must already be in our observation set.
- `events` (array): Event types to subscribe to (default all): payto_change, price_change, asset_network_change, spec_regression, delisting, liveness_down, liveness_recovered, liveness_flapping, latency_regression.
- `liveness_sensitivity_n` (integer): Consecutive missed probes before liveness_down surfaces to you (1=paranoid … 10=relaxed; default 2).
- `slack_url`: Optional Slack or Discord incoming webhook URL(s). Single string or array; max 5.
- `webhook_url`: Optional signed HTTPS webhook URL(s) for push delivery. Single string or array; max 5.

### `x402_watch_events` (~282 tokens)

x402 watch — poll event log (free)

Read the append-only event log for an active x402 watch. Returns two streams: `events` (endpoint changes — payTo/price/asset/spec/delisting/liveness) and `watch_events` (lifecycle feedback — created/edited/cancelled/renewed/expiring/expired). Nothing between two polls is lost. Provide the watch_id and the one-time secret from x402_watch_create. Advance `since` with the returned `next_cursor` (endpoint events) and `watch_since` with `watch_events_cursor` (lifecycle events). Cursors/ids are GLOBAL sequences shared across watches (a watch's first event id may be >1); always page by the returned cursor rather than assuming they start at 1. Cancelled watches remain READABLE until expires_at (no new events accrue). If the watch has push delivery, still poll to reconcile missed webhooks.

Input parameters:

- `secret` (string, required): The one-time bearer secret returned by x402_watch_create.
- `since` (string): Endpoint-event cursor: the `next_cursor` from a previous poll. Omit for the first poll.
- `watch_id` (string, required): Watch id returned by x402_watch_create.
- `watch_since` (string): Lifecycle-event cursor: the `watch_events_cursor` from a previous poll. Omit for the first poll.

### `x402_watch_edit` (~229 tokens)

x402 watch — edit delivery URLs / sensitivity / events (free)

Edit an active watch: change webhook/Slack URLs, liveness sensitivity, or subscribed events. Bearer-authed with the secret from x402_watch_create. Newly-added URLs are connection-tested before the change is persisted; if any new URL fails, the existing config is unchanged. Delivery fields are full-replace per channel (omit to leave that channel unchanged). Returns the updated watch view.

Input parameters:

- `events` (array): Event types to subscribe to (default all). Omit to keep current events.
- `liveness_sensitivity_n` (integer): 1=paranoid … 10=relaxed. Omit to keep current value.
- `secret` (string, required): The one-time bearer secret returned by x402_watch_create.
- `slack_url`: Replace Slack/Discord URL(s). Single string or array; max 5. Omit to keep current URL(s).
- `watch_id` (string, required): Watch id returned by x402_watch_create.
- `webhook_url`: Replace webhook URL(s). Single string or array; max 5. Omit to keep current webhook(s).

### `x402_watch_cancel` (~116 tokens)

x402 watch — cancel early (free)

Soft-cancel a watch immediately: no new events accrue, but the event log stays READABLE via x402_watch_events until the original expires_at (cancel is not a delete). Probing drops back to normal cadence as soon as no active watches cover the endpoint. Bearer-authed with the secret from x402_watch_create. Free and idempotent.

Input parameters:

- `secret` (string, required): The one-time bearer secret returned by x402_watch_create.
- `watch_id` (string, required): Watch id returned by x402_watch_create.

### `x402_watch_renew` (~75 tokens)

x402 watch — renew 30 days (paid)

Extend an active x402 watch by another 30 days before it expires. The secret stays the same. Pay-per-call over x402 (~$0.20); auto-pays if a wallet is configured, otherwise returns the price quote.

Input parameters:

- `watch_id` (string, required): Watch id returned by x402_watch_create.

## Diagnostics

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

## Score history

- 2026-08-03: 68
- 2026-08-02: 67
- 2026-08-01: 6
- 2026-07-31: 34
- 2026-07-29: 43
- 2026-07-28: 43
- 2026-07-27: 43

## Links

- npm package: https://www.npmjs.com/package/x402-trust-mcp
- Socket report: https://socket.dev/npm/package/x402-trust-mcp
- Repository: https://github.com/JonasFuchss/x402-trust-mcp
- Website: https://x402.fuchss.app/
- Changelog RSS feed: https://verifymcp.io/servers/jonasfuchss-x402-trust-mcp/x402-trust-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/jonasfuchss-x402-trust-mcp/x402-trust-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/jonasfuchss-x402-trust-mcp/x402-trust-mcp
