x402 census · agent402.tools · a1f10b272492 · JSON
POST /api/openapi-lint
live
Score an OpenAPI 3.x or Swagger 2.x spec on agent-readiness - i.e. does an LLM-driven caller have what it needs to call the API correctly without guessing. Returns a 0..100 score, severity counts, and a structured list of violations with stable rule codes. Checks: documented title/servers/paths, per-operation summary/description/operationId/tags, documented 2xx + error responses, param descriptio…
Verdict: live. The unpaid GET reached a valid 402. The live amount equals the catalog price.
Facts from the catalogs
| Field | Value |
|---|---|
| URL | https://agent402.tools/api/openapi-lint |
| Method | POST |
| Price | $0.002 USDC = 2000 atomic units of 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 |
| Network | eip155:8453 (base); also accepts eip155:137, eip155:42161, eip155:143, eip155:43114, eip155:1329, eip155:10, eip155:4663, eip155:42220, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp, stellar:pubnet |
| payTo | 0xaBF4FAbd7c416fB67202E5f9002389Fc75e2a9D0 |
| Seller | agent402.tools |
| Catalogs | cdp (row updated 2026-09-30), payai (row updated 2026-07-01) |
| Listed since (lower bound) | 2026-07-01 (earliest catalog timestamp; catalogs report last-update times only) |
| Last catalog update | 2026-09-30 |
| CDP quality counters | 1 calls and 1 unique payers in 30 days, last call 2026-09-21 (catalog-reported, not verified on chain) |
| Category (keyword rule) | inference/llm |
| Templated path | no |
| x402Version in catalog | 2 |
| Service name / tags | OpenAPI agent-readiness lint · validation, openapi, swagger, lint, score |
Unpaid probe (census of 2026-09-30)
| Field | Value |
|---|---|
| Probed at | 2026-09-30T23:49:43.476Z |
| HEAD | 402 |
| GET | 402 |
| Verdict | live live: valid 402 to an unpaid GET |
| 402 carried in | body |
| x402Version in the 402 | 2 |
| accepts[0] | {"scheme":"exact","network":"eip155:8453","amount":"2000","payTo":"0xaBF4FAbd7c416fB67202E5f9002389Fc75e2a9D0","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","maxTimeoutSeconds":300,"extra":{"name":"USD Coin","version":"2"}} |
| Live amount equals catalog price | yes |
| Live payTo equals catalog payTo | yes |
| extensions.bazaar in the 402 | yes |
| PAYMENT-REQUIRED header | no |
| WWW-Authenticate offer | Payment id="u0xA_qnh6Vr6tO0Au54LDl1JdlSB |
| Content type / server / CORS | application/json / railway-hikari / * |
| Latency | 1,380 ms |
| Error | Payment required |
No hourly re-probe has reached this resource yet; the cron covers a rotating slice of 150 per hour.
On-chain facts for the payTo (public address)
| Field | Value |
|---|---|
| Distinct payers | 120 |
| Payments | 1,253 |
| USDC volume | $12.29 |
| Median payment | $0.003 |
| First / last payment | 2026-06-18 / 2026-09-30 |
| Sampler-shaped share of payments | 61.8% |
| Payers that are not samplers | 2 |
| Source | forensics-2026-09-30 |
| Address | 0xaBF4FAbd7c416fB67202E5f9002389Fc75e2a9D0 (contract: EIP7702StatelessDeleGator) |
Declared input and output (extensions.bazaar)
{
"input": {
"body": {
"spec": {
"info": {
"description": "An example API",
"title": "Demo",
"version": "1.0.0"
},
"openapi": "3.0.0",
"paths": {
"/users": {
"get": {
"parameters": [
{
"description": "Max results",
"in": "query",
"name": "limit",
"schema": {
"example": 10,
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "array"
}
}
},
"description": "ok"
},
"400": {
"description": "bad input"
}
},
"summary": "List users",
"tags": [
"users"
]
}
}
},
"servers": [
{
"url": "https://api.example.com"
}
]
}
},
"bodyType": "json",
"method": "POST",
"type": "http"
},
"output": {
"type": "json",
"example": {
"counts": {
"error": 0,
"info": 0,
"warning": 1
},
"ok": true,
"score": 97,
"violations": [
{
"location": "GET /users",
"message": "Operation has no operationId - agents can't refer to this call by a stable name.",
"rule": "operation-missing-operationid",
"severity": "warning"
}
]
}
}
}
Try it (unpaid: shows the 402)
curl -si -X POST 'https://agent402.tools/api/openapi-lint' -H 'accept: application/json' -H 'content-type: application/json' --data '{}'
The catalog declares POST. A 402 answer carries the payment requirements in the JSON body and, for x402 v2, base64 in the PAYMENT-REQUIRED header. This page never sends a payment.
Paid checks (x402, USDC on Base)
GET https://bazaar.agentexchange.work/r/a1f10b272492/probe.json re-runs this probe right now for $0.01 and writes the result here. POST https://bazaar.agentexchange.work/featured with {"id":"a1f10b272492"} places this resource at the top of the report and search pages for 30 days for $1.00, labelled. Unpaid requests answer 402 with the terms. Pricing.
Catalog references: PayAI listing status · agentic.market (CDP Bazaar front end) · this record as JSON · all resources on agent402.tools.