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
| When | Result | HTTP | Time | Price |
|---|---|---|---|---|
| 3 h ago | Expected HTTP 402, got 404 | 404 | 246 ms | - |
| 8 h ago | Expected HTTP 402, got 404 | 404 | 235 ms | - |
| 12 h ago | Expected HTTP 402, got 404 | 404 | 246 ms | - |
| 16 h ago | Expected HTTP 402, got 404 | 404 | 250 ms | - |
| 21 h ago | Expected HTTP 402, got 404 | 404 | 237 ms | - |
| 25 h ago | Expected HTTP 402, got 404 | 404 | 239 ms | - |
| 29 h ago | Expected HTTP 402, got 404 | 404 | 224 ms | - |
| 33 h ago | Expected HTTP 402, got 404 | 404 | 547 ms | - |
| 37 h ago | Expected HTTP 402, got 404 | 404 | 284 ms | - |
| 41 h ago | Expected HTTP 402, got 404 | 404 | 248 ms | - |
| 45 h ago | Expected HTTP 402, got 404 | 404 | 233 ms | - |
| 2 days ago | Expected HTTP 402, got 404 | 404 | 286 ms | - |
| 2 days ago | Expected HTTP 402, got 404 | 404 | 263 ms | - |
| 2 days ago | Expected HTTP 402, got 404 | 404 | 610 ms | - |
| 3 days ago | Expected HTTP 402, got 404 | 404 | 249 ms | - |