<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: sen-web3</title>
    <description>The latest articles on DEV Community by sen-web3 (@vouch).</description>
    <link>https://dev.to/vouch</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4036108%2F1fab5d71-3dbe-487f-a9d7-a801aed9f846.png</url>
      <title>DEV Community: sen-web3</title>
      <link>https://dev.to/vouch</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vouch"/>
    <language>en</language>
    <item>
      <title>x402 proves payment. It doesn't prove trust — so we built Vouch</title>
      <dc:creator>sen-web3</dc:creator>
      <pubDate>Thu, 06 Aug 2026 07:13:59 +0000</pubDate>
      <link>https://dev.to/vouch/x402-proves-payment-it-doesnt-prove-trust-so-we-built-vouch-2fen</link>
      <guid>https://dev.to/vouch/x402-proves-payment-it-doesnt-prove-trust-so-we-built-vouch-2fen</guid>
      <description>&lt;p&gt;x402 proves payment. It doesn’t prove trust — so we built Vouch&lt;br&gt;
Payment answers “who paid?”&lt;br&gt;
Trust answers “should I serve them?”&lt;/p&gt;

&lt;p&gt;If you run an x402 API, that gap is the whole product risk. ERC-8004 gives agents an identity and reputation surface on-chain — useful, but still Sybil-prone if you treat raw feedback as credit. We built Vouch: a trust layer that returns a 0–100 score and an ALLOW / WARN / BLOCK recommendation for gateways that need a decision before they hand over paid content.&lt;/p&gt;

&lt;p&gt;And the risk runs both ways. The agent sending the payment has the mirror problem: is the wallet on the other side of this 402 a real service, or a burner that will take the USDC and vanish? So Vouch now scores both sides: payer trust for API providers, payee trust for paying agents.&lt;/p&gt;

&lt;p&gt;This post is a build-in-public snapshot of Vouch on Base.&lt;/p&gt;

&lt;p&gt;The flows we care about&lt;br&gt;
Seller side — should I serve this payer?&lt;br&gt;
Client → x402 payment verification → Vouch payer check → your route&lt;br&gt;
                              ↘ optional settlement attest&lt;br&gt;
Buyer side — should my agent pay this wallet?&lt;br&gt;
Your agent → Vouch payee check → x402 payment → their API&lt;br&gt;
Seller side:&lt;/p&gt;

&lt;p&gt;x402 middleware verifies payment and yields a payer wallet&lt;br&gt;
Your gate calls Vouch GET /v1/wallets/{payer}/score&lt;br&gt;
On BLOCK, return 403 before the expensive handler&lt;br&gt;
After allow, optionally POST /v1/payments/x402 so settlement history strengthens future scores&lt;br&gt;
Buyer side:&lt;/p&gt;

&lt;p&gt;Your agent hits a 402 and extracts the payee wallet from the payment requirements&lt;br&gt;
It calls GET /v1/payees/{payee}/score before signing anything&lt;br&gt;
On BLOCK, skip the payment; on WARN, apply your own policy (cap the amount, require a human, whatever fits)&lt;br&gt;
Sample seller-side middleware lives in the repo: examples/x402-trust-gate.&lt;/p&gt;

&lt;p&gt;What goes into a payer score (today)&lt;br&gt;
Signal  Role&lt;br&gt;
ERC-8004 identity   Registered agent + metadata URI presence&lt;br&gt;
ERC-8004 reputation Feedback volume / average, with Sybil dampening&lt;br&gt;
Wallet heuristics   Age, activity, burner patterns, funder clusters&lt;br&gt;
Manual WL/BL    Per-customer policy (after the chain score)&lt;br&gt;
x402 settlements    Attested payment history (10% weight — still accumulating data)&lt;br&gt;
Recommendations: roughly ≥70 ALLOW, 40–69 WARN, &amp;lt;40 BLOCK (blacklist / high Sybil risk forces BLOCK). Scores are informational — not a guarantee or credit rating.&lt;/p&gt;

&lt;p&gt;Owner-index lag is surfaced as dataCoverage so integrators can see freshness instead of assuming omniscience.&lt;/p&gt;

&lt;p&gt;New this week: the Payee Trust API&lt;br&gt;
GET /v1/payees/{address}/score answers the buyer-side question with a different signal mix, because a payee's failure mode isn't Sybil feedback — it's taking money and disappearing:&lt;/p&gt;

&lt;p&gt;Signal  Role&lt;br&gt;
Receiving history   Attested x402 settlements where this wallet was the payee — count, active days, distinct payers&lt;br&gt;
Wallet health   Same age / tx-count / burner heuristics as the payer score&lt;br&gt;
Drain pattern   Exit-scam shape: received funds, then pulled out (near-)everything — checked over native ETH and Base USDC, with dust floors so gas residue doesn't false-positive&lt;br&gt;
Outcome history Prior confirmed-fraud / confirmed-legitimate labels naming this wallet&lt;br&gt;
Two design details worth calling out:&lt;/p&gt;

&lt;p&gt;It never 404s. A wallet nobody has attested yet still gets a 200 with dataDepth: "thin", and the weights shift accordingly — a thin-data wallet is judged mostly on wallet health and drain shape, a rich one mostly on its receiving track record. You decide how much confidence a thin score deserves; we don't pretend to know more than we do.&lt;br&gt;
The data loop is shared. Every POST /v1/payments/x402 attestation is now verified on-chain (fail-closed) and credits both sides: the payer's settlement history and the payee's receiving history. Sellers attesting payments are, as a side effect, building the dataset that protects buyers.&lt;br&gt;
API surface (integrator path)&lt;/p&gt;

&lt;h1&gt;
  
  
  Score a payer wallet (seller side, primary x402 path)
&lt;/h1&gt;

&lt;p&gt;curl -H "Authorization: Bearer $VOUCH_API_KEY" \&lt;br&gt;
  &lt;a href="https://agent-trust-tawny.vercel.app/api/v1/wallets/0xYOUR_PAYER/score" rel="noopener noreferrer"&gt;https://agent-trust-tawny.vercel.app/api/v1/wallets/0xYOUR_PAYER/score&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Score a payee wallet (buyer side, before your agent pays)
&lt;/h1&gt;

&lt;p&gt;curl -H "Authorization: Bearer $VOUCH_API_KEY" \&lt;br&gt;
  &lt;a href="https://agent-trust-tawny.vercel.app/api/v1/payees/0xTHEIR_WALLET/score" rel="noopener noreferrer"&gt;https://agent-trust-tawny.vercel.app/api/v1/payees/0xTHEIR_WALLET/score&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Attest a verified payment (idempotent on txHash)
&lt;/h1&gt;

&lt;p&gt;curl -X POST -H "Authorization: Bearer $VOUCH_API_KEY" \&lt;br&gt;
  -H "Content-Type: application/json" \&lt;br&gt;
  -d '{"wallet":"0xYOUR_PAYER","txHash":"0x...","resource":"/api/premium"}' \&lt;br&gt;
  &lt;a href="https://agent-trust-tawny.vercel.app/api/v1/payments/x402" rel="noopener noreferrer"&gt;https://agent-trust-tawny.vercel.app/api/v1/payments/x402&lt;/a&gt;&lt;br&gt;
Also available: agent-ID scoring, batch scores, outcome reporting (POST /v1/events/{id}/outcome — tell us what actually happened after a verdict), MCP tools (check_wallet_trust, attest_x402_payment), and a TypeScript client on npm: npm install @vouchscore/sdk (MCP server: @vouchscore/mcp-server). The SDK and MCP server don't cover the payee endpoint yet — next on the list, along with a spend-policy helper for agent runtimes.&lt;/p&gt;

&lt;p&gt;Design choices we won’t apologize for&lt;br&gt;
Fail closed on wallet binding / critical RPC failure when verifying binders — better a 502/BLOCK than a silent ALLOW.&lt;br&gt;
Attestations are verified on-chain before they count — a well-formed wallet + txHash isn't enough to fabricate settlement history; the tx must be real, successful, and attributable to the claimed wallet.&lt;br&gt;
Whitelist is not a Sybil free pass — high Sybil risk refuses to promote WARN→ALLOW.&lt;br&gt;
Free anonymous public scoring stays frozen — API key required for every score; we want real integrators, not scrape farms.&lt;br&gt;
x402 settlement weight starts small (10%) — data must accumulate before it deserves more.&lt;br&gt;
Every score explains itself — the response ships a breakdown of the four weighted components (identity / reputation / wallet / x402), each with its score, weight, and contribution, so a gateway can log why a verdict was what it was, not just the number.&lt;br&gt;
Try it&lt;br&gt;
Built for x402 API providers (payer gating + settlement attestation) and agent-runtime builders (payee screening before your agents spend).&lt;/p&gt;

&lt;p&gt;Sign up: agent-trust-tawny.vercel.app/signup — free account, no invite code&lt;br&gt;
SDK: npm install @vouchscore/sdk&lt;br&gt;
Code &amp;amp; docs: github.com/kzmttkc/agent-trust&lt;br&gt;
Guides: docs/x402-integration.md, docs/mcp-setup.md, docs/openapi.yaml&lt;br&gt;
Building something in this space? Reply here or DM — happy to compare notes.&lt;/p&gt;

&lt;p&gt;Built with Next.js, viem, Neon, and the ERC-8004 registries on Base. Tagline: trust layer for agent commerce.&lt;/p&gt;

</description>
      <category>web3</category>
      <category>ai</category>
      <category>api</category>
      <category>typescript</category>
    </item>
  </channel>
</rss>
