Check an x402 seller's trust evidence

FREE with proof-of-workor $0.005 in USDCGET /api/x402/seller-trust

Trust evidence for any x402 seller origin: is it indexed, does its manifest parse, how many tools does it publish, which chains does it actually advertise, how many settled calls has it been observed receiving on-chain, and would our own Smart Order Router spend buyer money on it, in either of its two lanes: as a proven seller, or through the Base unproven lane (a seller below the settlement floor, tried after every proven candidate under a small per-call ceiling, paid only at the wallet its own live 402 names and flagged unproven on the receipt). routableByOurRouter is true when either lane can pay; routableAsProven is true when some route-execute tier pays it as a proven seller. Send GET /api/x402/seller-trust with the required field origin and pay $0.005 per call over x402 or MPP, or call it free by solving a proof-of-work challenge. It returns a JSON object with origin, listed, displayName, manifestParsed, crawlError and 17 more.

Each lane names the route-execute tiers whose underlying cap covers its routes (lanes.proven.tiers, cheapestTier), with its blockers, so a refusal is explainable. Never fetches the seller at call time - this is our accumulated crawl and settlement evidence, not a liveness probe.

Category: x402 seller intelligenceTags: x402 seller trust reputation verify due-diligence counterparty safety

Try in playground →

Parameters

NameTypeRequiredDescription
originstringyesSeller origin or bare host, e.g. https://example.com or example.com

Example request

curl -i "https://agent402.tools/api/x402/seller-trust?origin=agent402.tools"

Without payment this returns HTTP 402 Payment Required with the exact price for seller-trust; any x402 v2 or MPP client pays it and retries.

Example response

{
  "origin": "https://seller.example",
  "listed": true,
  "displayName": "Example Seller",
  "manifestParsed": true,
  "crawlError": null,
  "healthScore": 1,
  "paywall": {
    "ok": true,
    "status": 402,
    "url": "https://seller.example/api/x",
    "at": 1789000000000
  },
  "lastCrawledAt": "2026-10-16T00:00:00.000Z",
  "toolCount": 2,
  "paidToolCount": 2,
  "priceRangeUsd": {
    "min": 0.005,
    "max": 0.02
  },
  "advertisedNetworks": [
    "eip155:8453"
  ],
  "settledCallsObserved": 3,
  "routerGate": {
    "settledCalls": 3,
    "settlementThreshold": 50,
    "meetsSettlementThreshold": false,
    "advertisesSettlementNetwork": true,
    "cheapestPaidToolUsd": 0.005,
    "routerUnderlyingCapUsd": 0.005,
    "hasToolWithinRouterCap": true
  },
  "lanes": {
    "proven": {
      "eligible": false,
      "chain": "base",
      "toolCount": 0,
      "cheapestUsd": null,
      "cheapestTier": null,
      "tiers": [],
      "blockers": [
        "fewer than 50 settled calls observed on-chain"
      ]
    },
    "unproven": {
      "eligible": true,
      "chain": "base",
      "maxUsd": 0.01,
      "toolCount": 1,
      "cheapestUsd": 0.005,
      "cheapestTier": "route-execute",
      "note": "On Base the router may still pay the seller, but only after every proven seller for the task, only at the wallet its own live 402 names, never above that ceiling, and flagged unproven on the buyer's receipt ($0.01 per call)."
    }
  },
  "routableByOurRouter": true,
  "routableAsProven": false,
  "routableVia": "unproven",
  "blockers": [],
  "provenBlockers": [
    "fewer than 50 settled calls observed on-chain"
  ],
  "caveats": [
    "settledCallsObserved counts on-chain payments we have observed to this seller's payTo; it is a floor, not a total"
  ],
  "evidenceSource": "x402 seller crawl + on-chain settlement counts + the router's per-route dispatch verdicts"
}
FieldTypeAlways presentIn the example
originstringnohttps://seller.example
listedbooleannotrue
displayNamestringnoExample Seller
manifestParsedbooleannotrue
crawlErrornullnonull
healthScorenumberno1
paywallobjectno4 fields: ok, status, url, at
lastCrawledAtstringno2026-10-16T00:00:00.000Z
toolCountnumberno2
paidToolCountnumberno2
priceRangeUsdobjectno2 fields: min, max
advertisedNetworksarray of stringno1 item in the example
settledCallsObservednumberno3
routerGateobjectno7 fields: settledCalls, settlementThreshold, meetsSettlementThreshold, advert...
lanesobjectno2 fields: proven, unproven
routableByOurRouterbooleannotrue
routableAsProvenbooleannofalse
routableViastringnounproven
blockersarrayno0 items in the example
provenBlockersarray of stringno1 item in the example
caveatsarray of stringno1 item in the example
evidenceSourcestringnox402 seller crawl + on-chain settlement counts + the router's per-route dispa...

From an MCP client

catalog.call {
  "slug": "seller-trust",
  "params": {
    "origin": "agent402.tools"
  }
}

On the hosted connector at https://agent402.tools/mcp, catalog.call runs seller-trust free (rate-limited, no wallet). Local install: npx -y agent402-mcp.

Errors and behavior

Paid call (JavaScript agent)

import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

const client = new x402Client();
client.setSpendControls?.({ maxAmountPerPayment: "$0.005" }); // refuse any quote above this tool's price
registerExactEvmScheme(client, { signer: privateKeyToAccount(KEY) });
const payFetch = wrapFetchWithPayment(fetch, client);

const res = await payFetch("https://agent402.tools/api/x402/seller-trust?origin=agent402.tools");

No wallet? Pay with compute

Fetch a challenge, solve the sha256 puzzle (16 leading zero bits, a fraction of a second of CPU), and resend with the X-Pow-Solution header:

import { createHash } from "node:crypto";
const lz = (b) => { let t = 0; for (const x of b) { if (!x) { t += 8; continue; } t += Math.clz32(x) - 24; break; } return t; };
const c = await (await fetch("https://agent402.tools/api/pow/challenge?slug=seller-trust")).json();
let n = 0;
while (lz(createHash("sha256").update(c.challenge + ":" + n).digest()) < c.difficulty) n++;
await fetch("https://agent402.tools/api/x402/seller-trust?origin=agent402.tools", { method: "GET", headers: { "X-Pow-Solution": c.token + ":" + n } });

Related tools

x402 seller dossier

$0.05 · POST /api/seller-dossier

Everything Agent402 knows about one x402 seller origin, in one read: identity and crawl history, the catalog.

x402 seller payability check

$0.10 · POST /api/seller-payability

Buy one call from an x402 seller endpoint right now and report exactly what happened: the unpaid call's status, the 402.

Verify B20 token

$0.005 · GET /api/b20-verify

Boolean verdict with reasons: is this address a real factory-issued B20 on Base?

Agent402 bestsellers

$0.005 · GET /api/bestsellers

What agents actually pay for on a 500+ tool x402 catalog - the paid intelligence layer over Agent402's own sales ledger.

Decide: tool plan for a task

from $0.01 · POST /api/decide

Describe a job and get a call-ready plan: which tools, across this catalog and outside x402 sellers with a recently.

Rate a call you paid for

$0.001 · POST /api/feedback

Tell this server whether a call you paid for delivered what it promised.