{"openapi":"3.1.0","info":{"title":"Settled","version":"0.9.0-claims","description":"Did it pay? Live, verified, machine-readable liveness, quote, on-chain activity and quality data for x402 endpoints. Paid routes use x402 (HTTP 402 + USDC) or a 24h pass; free routes are rate-limited. MCP server at /mcp."},"servers":[{"url":"https://settled.tools"}],"paths":{"/v1/status":{"get":{"summary":"Index summary (free)","responses":{"200":{"description":"OK"}}}},"/v1/peek":{"get":{"summary":"Coarse status for one endpoint (free, rate-limited)","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"404":{"description":"Not indexed yet; call /v1/check or /v1/submit"}}}},"/v1/preflight":{"get":{"summary":"Pre-spend check: liveness on both verbs + quote + payability + payee/seller reputation + delivery + honeypot scan, one signed answer with a pay/caution/avoid recommendation ($0.005 via x402, or pass)","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"}},{"name":"force","in":"query","required":false,"schema":{"type":"string","enum":["1"]},"description":"Bypass the 5-minute cache"}],"responses":{"200":{"description":"OK"},"402":{"description":"Payment required (or invalid/expired pass)"}},"x-x402":{"price":"$0.005","network":"eip155:8453","scheme":"exact","how":"Send the request; on 402 read PAYMENT-REQUIRED, pay, retry with PAYMENT-SIGNATURE. Or send a day pass in the x-settled-pass header."}}},"/v1/check":{"get":{"summary":"Live probe + quote + on-chain activity + quality for one endpoint ($0.002 via x402, or pass)","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"}},{"name":"force","in":"query","required":false,"schema":{"type":"string","enum":["1"]},"description":"Bypass the 5-minute cache"}],"responses":{"200":{"description":"OK"},"402":{"description":"Payment required (or invalid/expired pass)"}},"x-x402":{"price":"$0.002","network":"eip155:8453","scheme":"exact","how":"Send the request; on 402 read PAYMENT-REQUIRED, pay, retry with PAYMENT-SIGNATURE. Or send a day pass in the x-settled-pass header."}}},"/v1/endpoints":{"get":{"summary":"Ranked live endpoints ($0.005 via x402, or pass)","parameters":[{"name":"q","in":"query","schema":{"type":"string"}},{"name":"network","in":"query","schema":{"type":"string"}},{"name":"max_price","in":"query","schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string","default":"live"}},{"name":"sort","in":"query","schema":{"type":"string","enum":["quality","price","latency","payers"],"default":"quality"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"OK"},"402":{"description":"Payment required (or invalid/expired pass)"}},"x-x402":{"price":"$0.005","network":"eip155:8453","scheme":"exact","how":"Send the request; on 402 read PAYMENT-REQUIRED, pay, retry with PAYMENT-SIGNATURE. Or send a day pass in the x-settled-pass header."}}},"/v1/payto/{address}":{"get":{"summary":"Seller reputation by recipient address ($0.002 via x402, or pass)","parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"402":{"description":"Payment required (or invalid/expired pass)"}},"x-x402":{"price":"$0.002","network":"eip155:8453","scheme":"exact","how":"Send the request; on 402 read PAYMENT-REQUIRED, pay, retry with PAYMENT-SIGNATURE. Or send a day pass in the x-settled-pass header."}}},"/v1/pass":{"get":{"summary":"Describe the day pass (free)","responses":{"200":{"description":"OK"}}},"post":{"summary":"Buy a 24h pass ($0.05 via x402): unlocks all paid routes and MCP tools, 120 req/min","responses":{"200":{"description":"Pass issued"},"402":{"description":"Payment required"}},"x-x402":{"price":"$0.05","network":"eip155:8453","scheme":"exact","how":"Send the request; on 402 read PAYMENT-REQUIRED, pay, retry with PAYMENT-SIGNATURE. Or send a day pass in the x-settled-pass header."}}},"/v1/watch":{"get":{"summary":"Describe the Watchdog subscription (free)","responses":{"200":{"description":"OK"}}},"post":{"summary":"Watchdog: 30 days of signed webhook alerts for one endpoint on status / payability / price / payTo changes ($1.00 via x402)","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"webhook":{"type":"string","description":"https URL that receives POSTed, EIP-191-signed alerts"}},"required":["url","webhook"]}}}},"responses":{"200":{"description":"Watch created"},"402":{"description":"Payment required"}},"x-x402":{"price":"$1.00","network":"eip155:8453","scheme":"exact","how":"Send the request; on 402 read PAYMENT-REQUIRED, pay, retry with PAYMENT-SIGNATURE. Or send a day pass in the x-settled-pass header."}}},"/v1/watch/{id}":{"get":{"summary":"Watch status and recent alert deliveries (free)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"404":{"description":"Unknown watch"}}}},"/v1/submit":{"post":{"summary":"Submit an x402 endpoint URL for indexing (free, rate-limited)","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"]}}}},"responses":{"202":{"description":"Accepted"}}}},"/v1/income/venues":{"get":{"summary":"Venue scorecard: which places actually pay agents (free, rate-limited)","responses":{"200":{"description":"OK"}}}},"/v1/income":{"get":{"summary":"Verified agent-income listings with honeypot scoring and on-chain payout evidence ($0.01 via x402, or pass)","parameters":[{"name":"venue","in":"query","schema":{"type":"string"}},{"name":"rail","in":"query","schema":{"type":"string"}},{"name":"agent_access","in":"query","schema":{"type":"string","enum":["allowed","any"],"default":"allowed"}},{"name":"min_reward","in":"query","schema":{"type":"string"}},{"name":"include_honeypots","in":"query","schema":{"type":"string","enum":["1"]}},{"name":"sort","in":"query","schema":{"type":"string","enum":["trust","reward","recent"],"default":"trust"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"OK"},"402":{"description":"Payment required (or invalid/expired pass)"}},"x-x402":{"price":"$0.01","network":"eip155:8453","scheme":"exact","how":"Send the request; on 402 read PAYMENT-REQUIRED, pay, retry with PAYMENT-SIGNATURE. Or send a day pass in the x-settled-pass header."}}},"/v1/income/check":{"get":{"summary":"Honeypot / trust scan of one bounty, task or repository URL ($0.005 via x402, or pass)","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"402":{"description":"Payment required (or invalid/expired pass)"}},"x-x402":{"price":"$0.005","network":"eip155:8453","scheme":"exact","how":"Send the request; on 402 read PAYMENT-REQUIRED, pay, retry with PAYMENT-SIGNATURE. Or send a day pass in the x-settled-pass header."}}},"/v1/reports/latest":{"get":{"summary":"Weekly Agent Income Report as JSON (free, rate-limited): venues that paid agents on-chain, worker wallets, honeypots, endpoint index health","parameters":[{"name":"live","in":"query","schema":{"type":"string","enum":["1"]},"description":"Build from current data instead of the last published report"}],"responses":{"200":{"description":"OK"}}}},"/v1/events":{"get":{"summary":"Change feed (free, rate-limited): venue verdict flips, new suspected honeypots, settlement-integrity changes, newest first","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}}],"responses":{"200":{"description":"OK"}}}},"/v1/claim":{"post":{"summary":"Sellers: claim every endpoint paid to your wallet with one signature, on every host (free, rate-limited). POST without a signature to get message_to_sign, issued_at and would_cover.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"wallet":{"type":"string","description":"payTo address (Base 0x… or Solana)"},"name":{"type":"string"},"website":{"type":"string"},"contact":{"type":"string"},"docs":{"type":"string"},"action":{"type":"string","enum":["claim","remove"]},"issued_at":{"type":"string"},"signature":{"type":"string","description":"EIP-191 personal_sign (Base) or ed25519 (Solana) of message_to_sign by the payTo wallet"}},"required":["wallet"]}}}},"responses":{"200":{"description":"Claimed (or removed)"},"400":{"description":"Missing or malformed field, or no signature yet; includes message_to_sign"},"403":{"description":"Signature is not from that wallet"},"404":{"description":"No indexed endpoint is paid to that wallet"}}}},"/v1/sellers":{"get":{"summary":"Claimed sellers with their published profile and endpoint counts (free, rate-limited)","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":25}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"OK"}}}},"/v1/report":{"post":{"summary":"Report whether a call you paid for worked, proven by your USDC payment on Base and a signature from the paying wallet (free, rate-limited). POST without a signature to get message_to_sign.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"tx":{"type":"string","description":"transaction hash of your USDC payment to that endpoint on Base"},"ok":{"type":"boolean"},"signature":{"type":"string","description":"EIP-191 personal_sign of message_to_sign by the paying wallet"}},"required":["url","tx","ok","signature"]}}}},"responses":{"200":{"description":"Report accepted"},"400":{"description":"Missing or malformed field; includes message_to_sign"},"403":{"description":"Signature is not from the paying wallet"},"409":{"description":"That payment already backs a report"},"422":{"description":"Payment not found, not to this endpoint, too small or too old"}}}},"/v1/deliveries":{"get":{"summary":"The scout's paid purchases, newest first: endpoint, price, whether usable content came back, and the settlement transaction on Base (free, rate-limited)","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}}],"responses":{"200":{"description":"OK"}}}},"/v1/verify":{"post":{"summary":"Verify a signed Settled response (free): recomputes the canonical-JSON keccak256 hash and recovers the EIP-191 signer","requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"The whole signed response object, attestation block included"}}}},"responses":{"200":{"description":"{valid, hash_matches, signer_recovered, signer_published}"}}}},"/v1/signer":{"get":{"summary":"Published attestation signer address and scheme (free)","responses":{"200":{"description":"OK"}}}},"/v1/snapshots/latest":{"get":{"summary":"Latest daily hash-chained, signed snapshot of the whole index (free)","responses":{"200":{"description":"OK"}}}},"/v1/snapshots/{day}":{"get":{"summary":"One day's snapshot header; ?content=1 returns the TSV itself, ?content=gz the gzip file","parameters":[{"name":"day","in":"path","required":true,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"content","in":"query","schema":{"type":"string","enum":["1","gz"]}}],"responses":{"200":{"description":"OK"},"404":{"description":"No snapshot for that day"}}}},"/reports":{"get":{"summary":"Latest weekly Agent Income Report (HTML)","responses":{"200":{"description":"HTML"}}}},"/v1/observatory/latest":{"get":{"summary":"Weekly x402 Payability Observatory as JSON (free): payability breakdown, verb mismatches, payee checks, scout delivery rate, biggest hosts","responses":{"200":{"description":"OK"}}}},"/v1/observatory/sample.csv":{"get":{"summary":"CC BY 4.0 sample of 500 endpoints with status, payability, price, payTo and quality (free; re-drawn daily)","responses":{"200":{"description":"CSV"}}}},"/observatory":{"get":{"summary":"Latest Payability Observatory (HTML)","responses":{"200":{"description":"HTML"}}}},"/venues":{"get":{"summary":"Human-readable venue verdicts (HTML)","responses":{"200":{"description":"HTML"}}}},"/venues/{slug}":{"get":{"summary":"One venue's verdict, evidence and on-chain payouts (HTML)","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"HTML"}}}},"/mcp":{"post":{"summary":"MCP server (Streamable HTTP, stateless). Data tools need a pass.","responses":{"200":{"description":"JSON-RPC"}}}}}}