{"uid":"cap_bS5TCLj7FQUzgpsqeb_ue","slug":"x402-contract-inspector-e90809ea","name":"x402 Contract Inspector","description":"This 402 — can you tell what it returns from the type alone? Ask for any x402 URL and one GET normalises the output contract the seller actually declared into field names, types and required flags, so you can decide before you pay whether you can bind to it. curl: GET /contract?url=https://api.example.com/paid (a free sample is GET /contract/sample?url=…, and /contract/sample with no url shows this service's own /history). Response: {url, x402Version, mime, output:{fields:[{name,type,required,example}], declared, schema_only_type_example, properties_empty}, error_shape_declared, weakness:[...], fetched_at, sha256}. measured 2026-10-16 over 2433 observed x402 resources: 100% declare an output schema and 87.8% declare nothing in it but {type, example} (type 2135, example 2137); 288 declare an empty properties object; only a dozen or so name any field at all. That is the gap this report closes: it says field by field what the paid 200 will contain, or says declared:false and lists the weakness instead of inventing a shape. Failure is reported with the code, not a guess: 400 invalid_url / blocked_target / credentials_not_allowed and missing_url before anything is fetched and before any payment; 502 unreachable / timeout / too_many_redirects when the target could not be read, and 200 with declared:false when it answered but serves no readable x402 challenge (a non-x402 route is not an error, it is a finding). The target is read once with no payment header, with a 5-second timeout, at most 3 redirects and a 64 KB body cutoff, exactly as a buyer would see it. No keys, no account, one GET, one delivery — 0.02 USDC. A purchase is two calls by design: this first call returns 402 with the price and the payment terms, and you then repeat the same request with the PAYMENT-SIGNATURE header to receive the 200 delivery.","url":"https://x402-catalog-history.ai-business-surface.workers.dev/contract?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","HEAD","DELETE"],"type":"string"},"queryParams":{"type":"object","required":["url"],"properties":{"url":{"type":"string"}}}},"additionalProperties":false},"output":{"type":"object","required":[],"properties":{"url":{"type":"string"},"mime":{"type":"string"},"output":{"type":"object"},"sha256":{"type":"string"},"weakness":{"type":"array"},"fetched_at":{"type":"string"},"x402Version":{"type":"number"},"error_shape_declared":{"type":"boolean"}}}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.02","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.02/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.02","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.02","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_yaF6vKSo2ADTHCFKKBcRl","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.02","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Fetches and normalizes the output contract declared by any x402 paywalled URL, listing field names, types, required flags, and examples before you pay.","exampleAgentPrompt":"Before I pay for it, can you inspect the output contract of this x402 endpoint — https://api.example.com/paid — and tell me what fields it actually declares, their types, which are required, and whether the schema has any weaknesses?","exampleUseCases":[{"title":"Pre-payment schema validation for agent integration","prompt":"I want to call https://api.example.com/market-data but it costs money each time — can you check what fields its x402 contract actually declares so I know if the response will fit my data model before I pay?"},{"title":"Auditing x402 schema quality across a catalog","prompt":"Pull the output contract for https://x402-service.example.com/report and tell me if it declares any named fields or just a bare type and example — I want to know if this seller bothered to specify the schema properly."},{"title":"Debugging unexpected paid API response structure","prompt":"I paid for https://data.example.com/crypto-feed and the response doesn't match what I expected — can you fetch its x402 contract and list the declared fields, types, and any schema weaknesses so I can figure out what went wrong?"}],"resultDescription":"Returns a JSON object containing: the queried URL, x402 version, MIME type, an output object with a fields array (each entry has name, type, required flag, and example), a declared boolean, schema_only_type_example flag, properties_empty flag, an error_shape_declared boolean, a weakness array listing schema gaps, a fetched_at timestamp, and a SHA256 hash of the response.","failureModes":["Target URL is not an x402 endpoint — returns error or empty contract","Target endpoint is unreachable or times out — fetch fails","URL parameter missing — request rejected","Schema declared:false with weaknesses listed when seller provides no field-level detail","Properties object empty (288/2433 observed cases) — fields array empty, properties_empty:true"],"whenToPreferThis":"Use this endpoint when you need to evaluate an x402 paywalled API's output contract before committing to payment, especially when the seller's documentation is absent or sparse. It is the only known service that normalizes x402 402-challenge schemas into structured field-level metadata (name, type, required, example). Prefer it over manual curl inspection when you want machine-readable weakness analysis or need to programmatically decide whether a paid endpoint's response can bind to your data model.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-17T12:30:18.121Z","isFirstParty":false,"canonicalSlug":"x402-contract-inspector-e90809ea"}