x402 Precheck reads any HTTP 402 payment request — network, token, amount, recipient, facilitator — and gives your agent a clear verdict: looks ok, review or do not pay.
HTTP has had a status code called 402 Payment Required since the 1990s. x402 puts it to work: an API can charge a few cents per call, and an AI agent pays instantly in USDC (a dollar-pegged stablecoin) — no account, no card, no subscription.
Your agent calls an API. Instead of data, the server answers 402 with a small “bill”: how much, in which token, on which network, paid to whom.
The agent signs a USDC payment for exactly that amount — often $0.001 to $0.05 — and sends the request again with the signature attached.
A facilitator verifies and settles the payment on-chain, and the server returns the data. One round trip, a few seconds.
// what a 402 “challenge” looks like (decoded) { "x402Version": 2, "accepts": [{ "scheme": "exact", "network": "eip155:8453", "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "amount": "2000", "payTo": "0xfD2af2efFAF08877a98A3a02F7ee28D8191A3952", "maxTimeoutSeconds": 120, "extra": { "name": "USD Coin", "version": "2" } }] }
A typo, a misconfigured server or a malicious one can make an agent send money to the wrong place. Precheck catches the common traps in one cheap call.
Paying on a chain you didn't expect, or a testnet the seller can't settle.
An “asset” that isn't the real USDC contract — worthless or a scam token.
Zero address, broken checksum, or not the payTo you were told to expect.
$25 for a lookup, or a decimal mistake. Set your own max price too.
No reachable facilitator that supports this scheme and network: payment can't settle.
Wrong EIP-712 domain or a day-long validity window on a signed payment.
1. Paste an x402 endpoint URL, or the 402 challenge itself. 2. Optionally set your max price or expected recipient. 3. Press Check and read the verdict. Free for 1,024 checks per day.
Call it from code before every x402 payment. After the free quota, pay 0.002 USDC per check with any x402 client. Invalid input gets a fast 400 and is never charged.
curl "https://x402-precheck.w0arvg81zlgf.workers.dev/v1/precheck?url=https://api.example.com/paid&maxPriceUsd=0.05"
# already have the 402? send the PAYMENT-REQUIRED header value curl "https://x402-precheck.w0arvg81zlgf.workers.dev/v1/precheck?challenge=$PAYMENT_REQUIRED"
{
"mcpServers": {
"x402-precheck": { "url": "https://x402-precheck.w0arvg81zlgf.workers.dev/mcp" }
}
}
// tool: x402_precheck { url | challenge, maxPriceUsd?, expectPayTo? }Machine-readable: llms.txt · OpenAPI · .well-known/x402 · MCP server.json · health
No. It only reads the unpaid 402 response (or the challenge you paste). It never signs or sends a payment to the target.
looks ok: no problems found. review: usable, but something deserves a look (e.g. a testnet or a long validity window). do not pay: every payment option has at least one hard failure.
Each IP gets 1,024 free checks per UTC day (shared between the API and MCP), within a service-wide daily cap. After that, a check costs 0.002 USDC paid via x402. Invalid input is rejected before the paywall and never uses your free checks.
No. It means the payment terms are well-formed and consistent. It can't prove the seller will deliver a good response.
Requests are logged briefly for operations with a hashed IP. Don't paste secrets; a 402 challenge has none.
It is an experiment built and operated with AI assistance, with a human owner reviewing it. Payments go to 0xfD2af2efFAF08877a98A3a02F7ee28D8191A3952 on Base.