13trust / 100

Verdict

by x402 Preflight Verdict in Security & trust

x402 APIFailing, checked 3 h ago

Pre-payment safety check for any x402 endpoint. Use when your agent is about to pay an x402 URL it has not paid before, found it in a catalog, or the price or payee looks unfamiliar. Sends one unpaid probe (never pays or signs) and returns safe_to_pay, confidence 0-1, reasons, and checks: live 402 challenge, USDC asset, price and payTo vs the Coinbase Bazaar listing, latency, 30-day paying wallets. Costs less than one bad payment.

GET https://x402-verdict.onrender.com/verdict

Last 30 days

All checks passedSome failedAll failedNot checked
Uptime
0.0%
Response time
- typical, - slowest 5%
Last check
3 h ago: Expected HTTP 402, got 404
Next check
any minute now

How to call it

# bash or zsh: see the payment challenge (nothing is charged)
curl -g -i -X GET 'https://x402-verdict.onrender.com/verdict?method=GET&url=https%3A%2F%2Fapi.example.com%2Fx402%2Fsearch'
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

const client = new x402Client().register(
  "eip155:84532",
  new ExactEvmScheme(privateKeyToAccount(process.env.AGENT_KEY)),
);
const pay = wrapFetchWithPayment(fetch, client);

// Not sure it's safe to pay? Preflight it first for $0.005:
// GET https://toolvet.app/api/v1/check?url=https%3A%2F%2Fx402-verdict.onrender.com%2Fverdict
const res = await pay("https://x402-verdict.onrender.com/verdict?method=GET&url=https%3A%2F%2Fapi.example.com%2Fx402%2Fsearch");
console.log(await res.json());

Example input

{
  "method": "GET",
  "url": "https://api.example.com/x402/search"
}

Example output

{
  "checked_at": "2026-10-11T14:00:00+00:00",
  "checks": {
    "asset": {
      "networks": [
        "eip155:8453"
      ],
      "usdc_options": 1
    },
    "bazaar": {
      "calls_30d": 20997,
      "catalog_price_usd": 0.01,
      "listed": true,
      "payers_30d": 172,
      "payto_matches": true
    },
    "latency_ms": 240,
    "liveness": {
      "reachable": true,
      "status": 402,
      "x402_version": 2
    },
    "price": {
      "observed_usd": 0.01
    }
  },
  "confidence": 0.9,
  "reasons": [
    "valid x402 challenge in USDC",
    "payTo matches Bazaar catalog",
    "price matches catalog",
    "172 paying wallets in 30d"
  ],
  "safe_to_pay": true
}

Security scan

  • No findings. We scan names, descriptions and tool definitions for hidden instructions and other prompt-injection patterns.

Recent checks

WhenResultHTTPTimePrice
3 h agoExpected HTTP 402, got 404404246 ms-
8 h agoExpected HTTP 402, got 404404235 ms-
12 h agoExpected HTTP 402, got 404404246 ms-
16 h agoExpected HTTP 402, got 404404250 ms-
21 h agoExpected HTTP 402, got 404404237 ms-
25 h agoExpected HTTP 402, got 404404239 ms-
29 h agoExpected HTTP 402, got 404404224 ms-
33 h agoExpected HTTP 402, got 404404547 ms-
37 h agoExpected HTTP 402, got 404404284 ms-
41 h agoExpected HTTP 402, got 404404248 ms-
45 h agoExpected HTTP 402, got 404404233 ms-
2 days agoExpected HTTP 402, got 404404286 ms-
2 days agoExpected HTTP 402, got 404404263 ms-
2 days agoExpected HTTP 402, got 404404610 ms-
3 days agoExpected HTTP 402, got 404404249 ms-