{"path":"/web-extract","service_name":"Web Extract","method":"GET","allowed_methods":["GET"],"category":"Web & Domain Intelligence","class":"read-only","summary":"Turn any URL into clean, LLM-ready markdown -- main article extracted, nav and ads stripped; renders JavaScript pages and PDFs.","description":"Turn any URL into clean, LLM-ready markdown -- the main article extracted, nav/ads/boilerplate stripped, plus title, description and publish date. Renders JavaScript pages, articles, docs and PDFs. A keyless, pay-per-call web reader for agents that read the web on demand: RAG ingestion, research and summarization. Structured JSON, cached by URL for fast repeat reads.","schema":{"params":[{"name":"url","required":true,"description":"Public http(s) URL to read, e.g. https://example.com (renders JS + PDFs)","location":"query"}],"body":null,"note":"Request schema derived from the Otto catalog -- not output-measured."},"sample_output":null,"cost":{"price_usd":0.005,"pricing_mode":"fixed","currency":"USDC","pricing_note":"Indicative. The live 402 PAYMENT-REQUIRED header is the single source of truth -- set maxPayment from it, never from this map.","settlement_note":"Settlement is on success only: a 4xx/5xx response is not settled, so a rejected or failed call does not charge you. (A 200 that returns an error body still settles.)"},"auth":{"type":"x402","note":"Pay per call in USDC via x402 V2 (EIP-3009 or Permit2). The networks THIS route accepts are in its own 402 accepts[] (returned in both the PAYMENT-REQUIRED header and the 402 JSON body): USDC on Base is accepted on every route, Solana only where that route lists it."},"signals":[{"id":"otto-money-back-guarantee","type":"guarantee","summary":"Money-back guarantee on Otto's own services: if a paid result misses, request a refund via /feedback with the payment tx_hash ($0.01 per tx, up to 10×/day system cap). Otto's own services and Full Auto only -- not third-party Bazaar picks.","status":"active","last_verified":"2026-07-01"},{"id":"otto-first-party","type":"characteristic","summary":"Served by an Otto-operated agent backend (first-party), not a re-listed third-party marketplace endpoint.","status":"active","last_verified":"2026-07-01"},{"id":"required-param-400","type":"gotcha","summary":"Requires a specific parameter -- omitting it returns HTTP 400. A 4xx is not settled, so a rejected call is not charged; read the request schema before paying.","status":"derived","last_verified":"2026-07-01"}],"patterns":[],"measured":{"quality_score":null,"uptime_pct":null,"measured_at":null,"note":"Not yet measured by the QA crawler -- quality/uptime stay null, never fabricated."},"catalog_hash":"59cee5639558d239baac94b127e7dda3c34970a67a11839de2a58ebf59203db3","snapshot_generated_at":"2026-09-08T08:43:34.873Z","you_were_not_charged":true}