Call before paying an unfamiliar x402 endpoint, or to pick between providers
Call before paying an unfamiliar x402 endpoint, or to pick between providers. $0.02, usually <1 s plus one probe: live unpaid probe (status, latency, TLS, PAYMENT-REQUIRED decoded and sanity-checked), seller reputation from indexed on-chain USDC payments to i…
by tokencheck.402api.dev · discovered, not yet claimed by its owner · updated 2026-10-10
Mirrored from Coinbase's public x402 Bazaar. The description is the provider's own text and has not been reviewed here; the payment requirements are copied as published.
What it does
Call before paying an unfamiliar x402 endpoint, or to pick between providers. $0.02, usually <1 s plus one probe: live unpaid probe (status, latency, TLS, PAYMENT-REQUIRED decoded and sanity-checked), seller reputation from indexed on-chain USDC payments to its Base payTo (24 h/7 d count, distinct payers, total and median USD, top-payer share), Bazaar listing and price, and a looks legit/caution/avoid verdict citing each fact. Errors: 400/503 JSON {error}, not charged.
Tags: x402 · seller-reputation · trust · provider-selection · pre-payment-check · bazaar
Call contract
- Method
- GET
- Input
- query parameters
- Output
- json
- Last paid call
- 2026-10-10
{
"url": "https://tokencheck.402api.dev/v1/token-check"
}{
"bazaar": {
"catalogRefreshedAt": "2026-10-09T23:20:22.525Z",
"catalogSize": 34791,
"listed": true,
"listing": {
"amount": "5000",
"asset": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"calls30d": 4581,
"description": "Health check ping",
"firstSeenByIndexer": "2026-10-09T23:20:21.000Z",
"lastCalledAt": "2026-10-09T18:46:08.848Z",
"lastSeenByIndexer": "2026-10-09T23:20:21.000Z",
"lastUpdated": "2026-10-09T21:29:46.127Z",
"method": "GET",
"network": "eip155:8453",
"payTo": "0x589a2314a2e05f45e40c4823da3ba58d421db3d8",
"payers30d": 110,
"resource": "https://www.api-xpay.com/x402/ping",
"serviceName": "X Pay"
},
"listingsForPayTo": 14,
"otherListings": [
{
"calls30d": 4539,
"description": "Payment receipt with transaction details",
"resource": "https://www.api-xpay.com/x402/payment"
},
{
"calls30d": 4357,
"description": "Service status and payment configuration",
"resource": "https://www.api-xpay.com/x402/status"
}
]
},
"index": {
"indexedThroughBlock": 52401878,
"indexedThroughTime": "2026-10-10T00:45:03.000Z",
"payTosFullyBackfilled": 1494,
"payTosTracked": 1494
},
"measuredAt": "2026-10-10T00:45:31.943Z",
"notes": [
"Measured facts, not advice. Incoming USDC counts every transfer to the payTo, not only x402 settlements; distinct payers can still be one operator with many wallets."
],
"payTo": "0x589a2314a2e05f45e40c4823da3ba58d421db3d8",
"probe": {
"measuredAt": "2026-10-10T00:45:30.978Z",
"method": "GET",
"methodNote": "GET without payment",
"ms": 890,
"ok": true,
"status": 402,
"tls": {
"daysLeft": 61,
"issuer": "Let's Encrypt",
"ok": true,
"validTo": "2026-12-10T09:14:50.000Z"
},
"url": "https://www.api-xpay.com/x402/ping",
"x402": {
"accepts": [
{
"amountAtomic": "5000",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"maxTimeoutSeconds": 60,
"network": "eip155:8453",
"payTo": "0x589a2314a2e05f45e40c4823da3ba58d421db3d8",
"problems": [],
"recognised": "USDC on Base",
"scheme": "exact",
"usd": 0.005
}
],
"description": "Health check ping",
"problems": [],
"resourceUrl": "https://www.api-xpay.com/x402/ping",
"source": "PAYMENT-REQUIRED header",
"valid": true,
"version": 2
}
},
"query": {
"payTo": null,
"url": "https://www.api-xpay.com/x402/ping"
},
"reasons": [
"Unpaid GET answered 402 with valid x402 v2 requirements (PAYMENT-REQUIRED header): $0.005 USDC on Base to 0x589a2314a2e05f45e40c4823da3ba58d421db3d8 in 890 ms.",
"Listed in the CDP Bazaar as \"X Pay\" (Bazaar reports 4,581 calls / 110 payers in 30 d).",
"20,049 USDC payment(s) from 137 distinct payer(s), $2,276.68 total, in the last 7 d."
],
"reputation": {
"firstPaymentSeen": "2026-10-03T00:45:15.000Z",
"indexed": true,
"indexedThroughBlock": 52401878,
"last24h": {
"complete": true,
"coveredSince": "2026-10-09T00:45:05.000Z",
"distinctPayers": 17,
"medianUsd": 0.005,
"payments": 1930,
"topPayerShare": 0.29,
"totalUsd": 409.22096
},
"last7d": {
"complete": true,
"coveredSince": "2026-10-03T00:45:05.000Z",
"distinctPayers": 137,
"medianUsd": 0.005,
"payments": 20049,
"topPayerShare": 0.073,
"totalUsd": 2276.67891
},
"method": "USDC Transfer events on Base whose recipient is this address, indexed continuously by 402api from eth_getLogs (every incoming USDC transfer counts, not only x402 settlements; amounts in USD at 1 USDC = $1)",
"payTo": "0x589a2314a2e05f45e40c4823da3ba58d421db3d8"
},
"verdict": "looks legit"
}Use with an agent
- Discover. Agents find this listing with
GET https://bazaar.saylorinnovations.com/discovery/search?query=…, the MCP toolsearch_resources, or/discovery/resources. - Inspect. Fetch
/resources/36444.jsonfor the price and payment options. - Pay. Call
GET https://tokencheck.402api.dev/v1/seller-check. The provider answers402with its payment requirements. An x402 client signs one of the options below and retries withPAYMENT-SIGNATURE. - Execute. The provider returns
200with the data. Agent Bazaar is not in the request path and never sees your payment.
For humans
You don't need an account or an API key; you need a wallet holding a small amount of USDC on Base, and an x402-capable client (see the examples below). Call the endpoint unpaid first to see exactly what it asks for.
Pricing & payment
- Price
- $0.02 / request
- Protocol
- x402 v2
- Auth
- No account or API key. Pay per request.
- Networks
- Base
- Demand
- 2 calls · 1 unique payers in 30d (public x402 Bazaar data)
x402 payment requirements
| Scheme | Network | Asset | Amount | Pay to | Timeout |
|---|---|---|---|---|---|
| exact | Base eip155:8453 | USDC | $0.02 | 0x8C8A81E2acEc6ed62421f1f4E7125B0b84FFffdE | 300s |
accepts[] (raw JSON)
[
{
"scheme": "exact",
"network": "eip155:8453",
"payTo": "0x8C8A81E2acEc6ed62421f1f4E7125B0b84FFffdE",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "20000",
"amountUsd": 0.02,
"maxTimeoutSeconds": 300
}
]Schemas
Output schema (JSON Schema)
{
"properties": {
"example": {
"oneOf": [
{
"description": "HTTP 200: the seller report",
"properties": {
"bazaar": {
"description": "listed, listing (description, amount, 30-day calls/payers), other listings for the payTo",
"type": "object"
},
"cached": {
"type": "boolean"
},
"index": {
"type": "object"
},
"measuredAt": {
"type": "string"
},
"notes": {
"items": {
"type": "string"
},
"type": "array"
},
"payTo": {
"type": [
"string",
"null"
]
},
"probe": {
"description": "status, ms, tls, x402 (version, valid, accepts with recognised asset, usd, payTo)",
"type": [
"object",
"null"
]
},
"query": {
"type": "object"
},
"reasons": {
"items": {
"type": "string"
},
"type": "array"
},
"reputation": {
"description": "last24h / last7d: payments, distinctPayers, totalUsd, medianUsd, topPayerShare, complete",
"type": [
"object",
"null"
]
},
"verdict": {
"enum": [
"looks legit",
"caution",
"avoid"
]
}
},
"required": [
"verdict",
"reasons",
"bazaar",
"measuredAt"
],
"type": "object"
},
{
"description": "Error body. HTTP 400 = bad or missing input; HTTP 503 = check failed or timed out (25 s). The payment is not settled on errors, so the caller is not charged.",
"example": {
"error": "query parameter `token` must be a 0x-prefixed 40-hex-digit Base token address"
},
"properties": {
"error": {
"description": "What went wrong, in plain words",
"type": "string"
}
},
"required": [
"error"
],
"type": "object"
}
],
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}Example shape — generated from the schema, not a captured live response
{
"example": {},
"type": "string"
}Examples
curl "https://tokencheck.402api.dev/v1/seller-check"
# -> 402 Payment Required, accepts[] lists how to pay
# retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paidconst res = await fetch("https://tokencheck.402api.dev/v1/seller-check");
if (res.status === 402) {
const { accepts } = await res.json();
// pay one of accepts[] via an x402 client, then retry with the payment header
}import httpx
res = httpx.get("https://tokencheck.402api.dev/v1/seller-check")
if res.status_code == 402:
accepts = res.json()["accepts"]
# pay one of accepts[] via an x402 client, then retry with the payment headerDetails
- Provider
- tokencheck.402api.dev
- Endpoint
- https://tokencheck.402api.dev/v1/seller-check
- Machine-readable
/resources/36444.json