Vouch

io.github.notifuturoPublished by GitHub account notifuturov0.1.1Updated Oct 27, 2026

Check if a counterparty is safe to pay: trust/risk score for AI agents. Scam/phishing screen.

VerifiedStreamable HTTPWeb executableFinanceSecurity & Monitoring

Overview

AI-generated overview

Vouch gives an assistant a 0-100 trust score and risk band for a host or URL, so it can check whether a counterparty is safe to pay before sending money.

What you can do
  • Score a URL or host for payment trust, returning a 0-100 score and a low/medium/high/critical risk band from threat feeds, domain heuristics and a community reputation graph
  • Report a host as a scam or as trustworthy, feeding the shared reputation graph used by later checks
  • Explain the verdict through weighted signals and reasons, with a signed attestation, on the paid HTTP endpoint rather than the MCP tools
When to use it
Useful when an agent is about to pay a merchant, API or other counterparty and wants a quick, explainable risk check first, or when you want to contribute flags and vouches to a shared reputation dataset.
Requirements
Remote Streamable-HTTP endpoint; no account or API key. Clients that only speak stdio need a bridge such as npx mcp-remote. The MCP tools are free; the fuller HTTP verdict endpoint is paid per call in USDC over x402 on Base mainnet.
Before you install
Reports are free and unauthenticated by design, so flag and vouch counts are community signals, not ground truth; rate limits and reporter weighting reduce but do not remove abuse. Scores are advisory and should not be treated as an authoritative blocklist. The paid HTTP endpoint spends real USDC per call, and targets and reasons you submit are stored and shared.

Installation

In SourceWeft

  1. Open Vouch in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.notifuturo%2Fvouch/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "vouch": {
      "type": "http",
      "url": "https://vouch.futuronoti.workers.dev/mcp"
    }
  }
}

README

Vouch

[CI] [License: MIT] [x402] [Cloudflare Workers] [Live]

A per-call payment trust & reputation API for AI agents — monetized over x402.

When an autonomous agent is about to pay a merchant, API, or counterparty, it asks Vouch one question first: is this safe to pay? Vouch returns an explainable trust score, and charges a fraction of a cent per call in USDC — no accounts, no API keys, no Stripe. Billing is the x402 protocol itself.

Why

The agentic-commerce rails (Coinbase x402, AWS, Visa, Mastercard, Agnic) are being built by giants. The governance layer — should this agent trust this counterparty with money? — is the named #1 blocker to autonomous spend and is wide open. Vouch is a thin, self-serve pick-and-shovel on top of those rails.

Every call makes the product better: checks and community reports accrete into a reputation dataset that compounds with usage — the moat a bootstrapped team can actually build.

How it works

agent ──POST /v1/check { target }──▶  x402 paywall (402 → pay USDC → retry)                                          │                                          ▼                          ┌─────────── scoring engine ───────────┐                          │ transport · domain heuristics ·       │                          │ threat feed · reputation (D1)         │                          └───────────────────────────────────────┘                                          │                            { score, risk, reasons[] }

Scoring is a weighted average of independent signals, with a safety override: any single hard-negative signal (e.g. a threat-feed hit) caps the overall score so one strong red flag can't be averaged away.

SignalWeightSource
threat_feed3URLhaus host list (THREAT_FEED_URL), cached, fails open
reputation2Vouch's own accumulating D1 data (the moat)
transport1.5HTTPS / valid host
domain_heuristics1Punycode, raw IPs, abuse-prone TLDs, etc.

Use it from your agent

Vouch is a real MCP server, an x402-paid HTTP API, and a tiny SDK — pick whichever fits your stack. Nothing needs an account or API key.

MCP (free tools, works in any MCP client)

Point your client at the Streamable-HTTP endpoint — it exposes vouch_score and vouch_report, and ships model-facing instructions so the agent knows to check a counterparty before it pays:

jsonc
{  "mcpServers": {    "vouch": { "type": "streamable-http", "url": "https://vouch.futuronoti.workers.dev/mcp" }  }}

For clients that only speak stdio, bridge it with npx mcp-remote https://vouch.futuronoti.workers.dev/mcp. Vouch is also listed in the official MCP registry as io.github.notifuturo/vouch.

Free HTTP (curl)

bash
curl -s https://vouch.futuronoti.workers.dev/v1/score \  -H 'content-type: application/json' -d '{"target":"https://some-merchant.com"}'# → {"target":"...","host":"some-merchant.com","score":91,"risk":"low"}

Gate a payment with the SDK (one line)

ts
import { assertTrusted } from "vouch-sdk";
await assertTrusted("https://some-merchant.com", { minScore: 75 }); // free; throws if riskyawait payTheMerchant();

The paid POST /v1/check adds the explainable reasons, weighted signals, and a signed Ed25519 attestation (keep it as proof of due diligence). See examples/buyer.ts for the full x402 pay-and-retry loop and sdk/ for the client.

Endpoints

Method & pathCostDescription
POST /v1/checkx402 (USDC)Full verdict → { score, risk, reasons, signals, attestation } (signed Ed25519 receipt)
POST /v1/scorefree (rate-limited)Score + risk only → { score, risk }. Pay /v1/check for the reasons
GET /v1/attestation/pubkeyfreeEd25519 public key (JWK) to verify a /v1/check attestation
POST /v1/reportfreeSubmit a flag or vouch for a host
GET /v1/statsfreeAggregate reputation totals (hosts, checks, flags, vouches)
POST /mcpfreeMCP Streamable-HTTP server (vouch_score, vouch_report tools)
GET /healthfreeLiveness
GET /freeService info (HTML landing for browsers)

CORS is open (*) and the x402 payment headers are exposed, so browser-hosted agents can preflight and complete the pay/retry flow.

Reading /v1/report (abuse model)

POST /v1/report is free and unauthenticated by design — anyone can submit a flag or vouch for a host, so the raw flags/vouches counts are community signals, not ground truth. Abuse is contained by:

  • Rate limiting — 10 reports per 60s per client IP (Cloudflare Rate Limiting, fails closed).
  • Reporter-standing weighting — each counted report contributes a weighted amount (not a flat +1) based on the reporting source's tenure: a brand-new or anonymous source counts at 0.3, ramping to 1.0 only after ~7 days of sustained reporting. The scoring signal uses these weighted totals, so spinning up fresh sybil identities buys far less influence. A source can also move a given host's counter at most once per 24h (per-source de-dup); raw counts are still logged for audit.
  • Poisoning resistance in scoring — community reputation is a non-authoritative signal: it can lower a score but cannot, on its own, force a critical verdict. Only objective signals (threat feeds, transport) can hard-cap the score. So a burst of anonymous flags can't unilaterally brand a legitimate counterparty as unsafe.
  • Bounded input — target/reason/reporter are length-capped before storage.

Treat /v1/stats and report counts as a crowd-sourced prior that informs the paid verdict, not as an authoritative blocklist.

Stack ($0 to run)

TypeScript · Hono · Cloudflare Workers (free tier) · D1 (free SQLite) · @x402/* v2 · public facilitator at x402.org/facilitator.

Live on Base mainnet (X402_NETWORK=base, real USDC, $0.01/call). For local development, set X402_NETWORK=base-sepolia and fund a throwaway wallet from the free Circle faucet. The live network and price are authoritatively advertised at /.well-known/x402.

Develop

bash
npm installnpm run typechecknpm test
cp .dev.vars.example .dev.vars   # set PAY_TO_ADDRESS (your testnet wallet)wrangler d1 create vouch         # paste database_id into wrangler.tomlnpm run db:init                  # apply schema locallynpm run dev                      # local Worker

License

MIT — see LICENSE.

Source: README.md at commit f47ca53

Tools

2

vouch_score

Check whether a counterparty is SAFE TO PAY before sending money. Given a URL or host, returns a 0-100 trust score and risk band (low/medium/high/critical), detecting scams, phishing, and known-malicious endpoints via threat feeds, domain risk heuristics, and a community reputation graph. Call this before paying any merchant, API, agent, or x402 resource. Free — for the full explainable reasons AND a signed, verifiable attestation (proof of the check for audit/disputes), call the paid POST /v1/check endpoint via x402.

Parameterstargetrequired

vouch_report

Report a host as a scam/bad actor ('flag') or as trustworthy ('vouch'), improving Vouch's community reputation graph for everyone's future payment-trust checks. Free.

Parameterskindrequiredreasontargetrequired

Version history

1
  1. v0.1.1LatestSep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts