{"uid":"cap_cGfakc29koDDEcooLiWJ-","slug":"mercury-verifiable-web-fetch-a63cba03","name":"Mercury Verifiable Web Fetch","description":"VERIFIABLE keyless web-read for autonomous agents. Every result ships a cryptographically SIGNED provenance receipt (EIP-191 over sha256(text)+url+status+time) — the wedge a free scraper structurally CANNOT match: Jina r.jina.ai is free+keyless too, but its bytes are HEARSAY (no proof of what/where/when). MERCURY's `attestation` is ecrecoverable OFFLINE, forever, by you OR any downstream agent you forward the bytes to — proving the content is genuine + untampered (key pinned at /.well-known/mercury-attestation). For RAG, trading and agent-to-agent commerce that need provenance, that is the gap between data and evidence. Beyond that it's the keyless web-read primitive — NO API key, NO signup, NO account, NO monthly plan, the one fetch SKU a fresh agent can onboard to by itself instead of stopping to ask a human for a key. Give a ?url= and get back clean readable page text + title + status. Agent-native extras (opt-in): ?format=markdown for structure-preserving markdown, ?links=1 for an outbound-link graph (crawl frontier), and the headline wedge — STRUCTURED EXTRACT: ?extract=title,price,author,publishedAt returns a clean JSON record { title, price, author, publishedAt }, an LLM-ready row not a wall of text. That is Firecrawl's paid 'JSON mode' (they need an LLM call + an API key for it) done here DETERMINISTICALLY from the page's own JSON-LD/OpenGraph/meta/microdata — keyless, no LLM, $0.003. (?extract=1 still returns the legacy description + wordCount.) The extracted record is folded into the SIGNED attestation too, so a buyer can prove the FIELDS — not just the raw bytes — are exactly what MERCURY resolved. You pay in-band over HTTP 402 (x402, USDC on Base mainnet) — the wedge those tools can't match: they ALL gate behind a human-created API key + a credit-card plan, so an agent can't onboard itself. This one an agent finds in the x402 Bazaar and pays with zero human in the loop. Honest charge-per-ATTEMPT: every call returns a structured result (success OR an ok:false failure with a reason) — never a silent charge-then-500. Follows redirects, SSRF-guarded, 5s timeout, 10MB cap. Pure data, no mint — delivers in prod.","url":"https://mercury-x402-jed.fly.dev/buy/fetch","method":"GET","headers":{},"bodySchema":null,"responseSchema":{"type":"json","example":{"ok":true,"url":"https://example.com/","text":"Example Domain\n\n# Example Domain\n\nThis domain is for use in documentation examples without needing permission. Avoid use in operations. [Learn more](https://iana.org/domains/example)","bytes":513,"links":[{"url":"https://iana.org/domains/example","text":"Learn more"}],"title":"Example Domain","format":"markdown","status":200,"extract":{"price":null,"title":"Example Domain","author":null},"truncated":false,"wordCount":22,"attestation":{"alg":"EIP-191-personal_sign","keyId":"mercury-x402-attestation-v1:0x<signer>","nonce":"0x<16-random-bytes>","verify":{"howTo":"EIP-191 ecrecover this message; signer must equal address. Recompute sha256(text)==contentHash.","message":"mercury-x402:fetch-attestation:v1\nurl=https://example.com/\nstatus=200\nsha256=0xc372…\nfetchedAt=2026-06-03T00:00:00.000Z\nnonce=0x…"},"address":"0x<signer-from-/.well-known/mercury-attestation>","signedAt":"2026-06-03T00:00:00.000Z","signature":"0x<65-byte EIP-191 signature>","contentHash":"0xc372f751afc12f338f7b3cc8ce610bc548c40338bb80c8e0e0b0c06c707a146c"},"contentType":"text/html; charset=utf-8","description":"Example Domain # Example Domain This domain is for use in documentation examples without needing permission."}},"example":{"request":{"url":"https://example.com","links":"1","format":"markdown","extract":"1"},"response":{"ok":true,"url":"https://example.com/","kind":"api","text":"Example Domain Example Domain This domain is for use in documentation examples without needing permission. Avoid use in operations. Learn more","tier":"fetch","bytes":559,"title":"Example Domain","status":200,"metered":true,"upgrade":{"ladder":[{"tier":"fetch","price":"$0.003","includes":"clean page text + signed provenance receipt"},{"tier":"plus","price":"$0.006","includes":"+ markdown structure + outbound-link graph"},{"tier":"pro","price":"$0.012","includes":"+ deterministic structured-extract JSON record"}],"message":"paid the 'fetch' tier — these need a higher rung. Re-buy selecting a tier whose 'accepts[]' option grants them.","withheld":["format=markdown","links=1"],"unlockWith":{"tier":"plus","price":"$0.006","includes":"+ markdown structure + outbound-link graph"}},"delivered":"fetch","fetchedAt":"2026-06-12T04:16:59.491Z","redirects":[],"truncated":false,"wordCount":21,"attestation":{"alg":"EIP-191-personal_sign","keyId":"mercury-x402-attestation-v1:0xACB40253BD71Bb9a5d491b2c6EFF755F2A33Fc75","nonce":"0x98f3ab994968534a30f2c2dd5cd38c14","verify":{"howTo":"recover the signer of `message` with EIP-191 personal_sign (e.g. viem verifyMessage / ethers verifyMessage) and confirm it equals `address`; recompute sha256(text) and confirm it equals contentHash.","message":"mercury-x402:fetch-attestation:v1\nurl=https://example.com/\nstatus=200\nsha256=0xd003f90bc10db991b76e6fb480123cfce2cbb2b2784abe687fccccfa7ecacad8\nfetchedAt=2026-06-12T04:16:59.491Z\nnonce=0x98f3ab994968534a30f2c2dd5cd38c14"},"address":"0xACB40253BD71Bb9a5d491b2c6EFF755F2A33Fc75","signedAt":"2026-06-12T04:16:59.576Z","signature":"0xee328c0f88ef2c2bc80380a3f599d85ece05f9e6b4b5caded6312315a9db42e236e25066a47ac913c53414e9209599943735fd69f3af46ffa7cb09a560948f971b","contentHash":"0xd003f90bc10db991b76e6fb480123cfce2cbb2b2784abe687fccccfa7ecacad8"},"contentType":"text/html","description":"Example Domain Example Domain This domain is for use in documentation examples without needing permission. Avoid use in operations. Learn more","requestedUrl":"https://example.com"}},"exampleRequest":{"url":"https://example.com","links":"1","format":"markdown","extract":"1"},"tags":["x402"],"displayCostAmount":"0.003","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"settled","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.003/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.003","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.003","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_4ogiwZ1rrCoGndkJ2GFW2","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.003","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Fetches a web page and returns clean readable text plus a cryptographically signed provenance attestation (EIP-191), with no API key required","exampleAgentPrompt":"Fetch the page at https://example.com/report and give me the clean text plus a signed provenance receipt I can verify offline — use markdown format and include the outbound links.","exampleUseCases":[{"title":"RAG pipeline with provenance receipts","prompt":"Pull the content from https://arxiv.org/abs/2401.00001 as clean markdown and include a signed attestation I can store alongside the chunk so downstream consumers can verify the text wasn't tampered with after ingestion."},{"title":"Keyless competitor price monitoring","prompt":"Scrape https://competitor.com/pricing right now without using any API key and give me the clean readable text — I want a cryptographic receipt proving exactly what the page said at this moment in case I need to reference it later."},{"title":"Agent-to-agent verified data sharing","prompt":"Fetch https://data.example.com/market-summary and return the structured content plus a signed provenance signature so the receiving agent in my pipeline can independently verify the source and integrity of the data before acting on it."}],"resultDescription":"Returns a JSON object with: ok (boolean success flag), url (final URL after redirects), text (clean readable page text or markdown), title (HTML page title), status (upstream HTTP status code), bytes (raw body size), attestation (EIP-191 cryptographic signature over sha256(text)+url+status+timestamp, recoverable offline), and optionally links (outbound link graph) and extract (structured JSON record of requested fields).","failureModes":["Target URL is unreachable or returns an error — response still delivered with ok:false and an error field","Target page blocks scraping (robots.txt, Cloudflare, etc.) — may return empty or partial text","URL parameter missing or malformed — request rejected","Upstream page takes too long — timeout error returned","Payment of 0.003 USDC not completed — 402 response, content not delivered"],"whenToPreferThis":"Choose this endpoint when you need verifiable, cryptographically attested web content — not just scraped bytes — especially for RAG pipelines, agent-to-agent data sharing, or trading scenarios where provenance matters. Also ideal when no API key or account is available and the agent must self-onboard. Prefer over Jina or free scrapers when downstream consumers need to independently verify content authenticity offline via ecrecover.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-14T12:38:06.887Z","isFirstParty":false}