{"openapi":"3.1.0","info":{"title":"Settled","version":"0.9.11-site","description":"Did it pay? Settled checks x402 endpoints before agents spend: whether a seller's on-chain sales are real or self-generated, live probes, real paid test purchases checked against each listing, signed answers and daily signed snapshots, Watchdog alerts, and which bounty and task venues actually pay agents. Paid routes use x402 (HTTP 402 + USDC on Base) or a 24h pass. Check, find and events are free up to 300 calls a day per client (/v1/free/check, /v1/free/endpoints and MCP); other free routes are rate-limited."},"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":"Check one endpoint: live probe, quote, payability, on-chain activity, the scout's paid-purchase receipt and as-advertised verdict, agent reports, quality ($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.005 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.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/pass":{"get":{"summary":"Describe the day pass (free)","responses":{"200":{"description":"OK"}}},"post":{"summary":"Buy a 24h pass ($0.05 via x402): unlocks every paid route except the Watchdog and the seller re-test, and every MCP tool except settled_watch, at 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."}}},"/v1/watch":{"get":{"summary":"Describe the Watchdog subscription (free)","responses":{"200":{"description":"OK"}}},"post":{"summary":"Watchdog: 10 days of monitoring for one endpoint (renew with {watch_id}: 10 more days, same feed), probed about every 15 minutes; each change to status, payability, price or payTo becomes a signed alert, POSTed to your webhook if you give one and always readable at /v1/watch/{id}/alerts ($1.00 via x402; a bad url or webhook is refused before payment)","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"webhook":{"type":"string","description":"Optional https URL that receives POSTed, EIP-191-signed alerts"},"watch_id":{"type":"string","description":"Renew an existing watch instead: 10 more days, same feed"}},"required":[]}}}},"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."}}},"/v1/free/check":{"get":{"summary":"The same answer as /v1/check, free up to 300 calls a day per client (shared with MCP), from the 5-minute cache; past that, pay per call on /v1/check or use a pass","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"429":{"description":"Free allowance used up or rate-limited"}}}},"/v1/free/endpoints":{"get":{"summary":"The same answer as /v1/endpoints, free up to 300 calls a day per client (shared with MCP)","parameters":[{"name":"q","in":"query","schema":{"type":"string"}},{"name":"network","in":"query","schema":{"type":"string"}},{"name":"max_price","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"OK"},"429":{"description":"Free allowance used up or rate-limited"}}}},"/v1/retest":{"get":{"summary":"Describe the seller re-test (free)","responses":{"200":{"description":"OK"}}},"post":{"summary":"Seller re-test: the scout buys from an endpoint now and checks the response against its listing; public at /v1/deliveries, marked requested ($2.00 via x402, charged only if the scout completes a purchase; endpoints priced up to $1.00)","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"]}}}},"responses":{"200":{"description":"Purchase made and checked"},"402":{"description":"Payment required"},"409":{"description":"Not bought, so not charged (the endpoint is not payable, out of range, or refused the purchase)"},"429":{"description":"Bought less than an hour ago"}},"x-x402":{"price":"$2.00","network":"eip155:8453","scheme":"exact","how":"Send the request; on 402 read PAYMENT-REQUIRED, pay, retry with PAYMENT-SIGNATURE."}}},"/v1/watch/{id}/alerts":{"get":{"summary":"A watch's alerts since a given alert id, with the endpoint's state now and next_since for the next call (free, rate-limited, signed)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"since","in":"query","schema":{"type":"integer","minimum":0,"default":0}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"OK"},"404":{"description":"Unknown watch"}}}},"/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 matched the listing, 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). Most tools are free; settled_check, settled_find_endpoints and settled_events are free up to 300 calls a day per client; preflight, seller reputation and the income listings need a pass.","responses":{"200":{"description":"JSON-RPC"}}}}}}