x402 seller payability check
POST /api/seller-payabilityBuy one call from an x402 seller endpoint right now and report exactly what happened: the unpaid call's status, the 402 decoded (accepts, chains, payTo, asset, price), whether the accept's EIP-712 domain name matches the token it names (the defect that silently makes a whole catalog unpayable), whether a stock client's signed payment was accepted, the settlement receipt and transaction, a slice of the response body, and the time each leg took. Ends in plain-English flags, never a score. This is the live counterpart to seller-dossier, which reports what we already know: this one spends real USDC from our own wallet to find out. Point it at your own endpoint before you launch, or at a seller you are about to route money to. Up to $0.02 of the seller's price per check.
Input
| Field | Type | Description |
|---|---|---|
url * | string | The seller endpoint to check (https), e.g. https://api.example.com/tools/summarize |
method | string | GET or POST (default POST) - never a verb that could mutate the seller |
body | object | Optional JSON body the seller's route expects (POST only) |
maxUsd | number | Most to spend on the seller's own price, default 0.01, capped at 0.02 |
Example output
{
"url": "https://api.example.com/tools/summarize",
"method": "POST",
"checkedAt": "2026-09-11T02:00:00.000Z",
"payable": true,
"unpaidCall": {
"status": 402,
"contentType": "application/json",
"error": null,
"ms": 180,
"bodySlice": "{}"
},
"challenge": {
"readable": true,
"networks": [
"eip155:8453"
],
"priceUsd": 0.01,
"payTo": "0x…",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"pricedFrom": "eip155:8453",
"accepts": []
},
"domainFindings": [
{
"network": "eip155:8453",
"verdict": "matches",
"advertisedName": "USD Coin",
"expectedName": "USD Coin",
"chain": "Base"
}
],
"payment": {
"attempted": true,
"status": 200,
"settled": true,
"error": null,
"ms": 2400,
"receipt": {
"network": "eip155:8453",
"payer": "0x…",
"transaction": "0x…",
"success": true
}
},
"responseSlice": "{\"summary\":\"…\"}",
"flags": [
"a stock buyer can pay this endpoint and get a result: nothing to fix"
]
}
Try it - see the 402 challenge (free)
curl -i -X POST https://agent402.tools/api/seller-payability \
-H "Content-Type: application/json" \
-d '{"url":"https://api.example.com/tools/summarize","method":"POST","body":{"text":"hello"}}'
The response is HTTP 402 Payment Required with exact payment requirements. Any x402 v2 client pays automatically and retries:
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";
import { metaTitle, metaDescription } from "./seo-meta.js";
const client = new x402Client();
registerExactEvmScheme(client, { signer: privateKeyToAccount(KEY) });
const payFetch = wrapFetchWithPayment(fetch, client);
const res = await payFetch("https://agent402.tools/api/seller-payability", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"url": "https://api.example.com/tools/summarize",
"method": "POST",
"body": {
"text": "hello"
}
}),
});
Related tools
Check an x402 seller's trust evidence
GET /api/x402/seller-trustTrust evidence for any x402 seller origin: is it indexed, does its manifest parse, how many tools does it publish, which…
try in playground →x402 seller dossier
POST /api/seller-dossierEverything Agent402 knows about one x402 seller origin, in one read: identity and crawl history, the catalog with the pr…
try in playground →