{"uid":"cap_NP4bHDV0yQza4WuMkH3e3","slug":"x402-dev-tools-api-origin-linter-ef8d7e2a","name":"x402 Dev Tools – API Origin Linter","description":"Checks an x402 API origin the way x402scan, the CDP Bazaar and agents read it: fetches /openapi.json and /.well-known/x402, then calls each paid route without paying (up to 30) and decodes its 402. Reports routes that do not answer 402, missing or v1-only PAYMENT-REQUIRED headers, prices that differ from the OpenAPI document, resource URLs that differ from the route, wrong USDC EIP-712 domains, missing Bazaar extensions and missing descriptions.","url":"https://dev.kagurazaka.dev/v1/lint?utm_source=zero.xyz","method":"GET","headers":{},"bodySchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["input"],"properties":{"input":{"type":"object","required":["type","method"],"properties":{"type":{"type":"string","const":"http"},"method":{"enum":["GET"],"type":"string"},"queryParams":{"type":"object","required":["origin"],"properties":{"origin":{"type":"string","description":"the https origin, such as https://api.example.com"}}}},"additionalProperties":false},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"example":{"type":"object","properties":{"ok":{},"name":{},"errors":{},"origin":{},"routes":{},"findings":{},"warnings":{},"paid_routes":{},"checked_routes":{}}}}}}},"responseSchema":{"type":"json","example":{"ok":false,"name":"Weather API","errors":1,"origin":"https://api.example.com","routes":[{"path":"/v1/weather","bazaar":true,"method":"GET","status":402,"price_usd":0.001,"declared_usd":0.002}],"findings":[{"level":"error","where":"GET /v1/weather","message":"the 402 asks $0.001 but the OpenAPI document declares $0.002"}],"warnings":1,"paid_routes":2,"checked_routes":2}},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.01","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.01/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.01","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.01","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_lbk5wgofJGsIi7xjFKJPJ","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.01","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Lints an x402 API origin by fetching its OpenAPI and discovery docs, probing paid routes without payment, and reporting 402 compliance errors, price mismatches, and missing Bazaar extensions.","exampleAgentPrompt":"Can you lint my x402 API at https://api.example.com and tell me which routes aren't returning 402 correctly, if there are any price mismatches with my OpenAPI doc, and whether I'm missing any CDP Bazaar extensions?","exampleUseCases":[{"title":"Pre-launch x402 API compliance check","prompt":"Before I publish my API to the CDP Bazaar, can you run a lint check on https://api.myservice.com and tell me everything that's wrong — missing 402 responses, price mismatches, bad EIP-712 domains, the works?"},{"title":"Debugging x402scan visibility issue","prompt":"My API at https://api.weather-paid.com isn't showing up properly on x402scan. Can you lint it and tell me what's misconfigured — especially any routes that aren't answering 402 or have wrong PAYMENT-REQUIRED headers?"},{"title":"Verifying Bazaar listing readiness","prompt":"I want to list https://api.dataprovider.io on the CDP Bazaar — can you check it for missing Bazaar extensions, undescribed routes, and any price differences between what the OpenAPI doc says and what the 402 actually returns?"}],"resultDescription":"Returns a JSON object with an ok flag, the API name, origin, count of paid and checked routes, a list of routes with their 402 status and declared vs actual prices, an array of findings (each with level, location, and message), and counts of errors and warnings.","failureModes":["Origin is unreachable or returns non-HTTPS URL — request fails or no routes checked","Origin has no /openapi.json — missing OpenAPI findings reported","No paid routes found — returns zero checked_routes with no findings","Rate limiting or network timeout on probed routes — some routes may not be checked","Origin returns malformed 402 responses — decode errors reported as findings"],"whenToPreferThis":"Use this endpoint when you need to validate an x402 API origin end-to-end for protocol compliance — specifically when you want to catch 402 response issues, price inconsistencies between OpenAPI declarations and live 402 responses, missing CDP Bazaar extensions, or wrong EIP-712 USDC domains. It is the canonical pre-publish linter for x402 APIs and mirrors the exact checks performed by x402scan, the CDP Bazaar crawler, and agent discovery systems.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-30T12:31:57.738Z","isFirstParty":false,"canonicalSlug":"x402-dev-tools-api-origin-linter-ef8d7e2a"}