agenttru.st

readfetch.com bronze

readfetch.com

“Pay-per-call web reading for AI agents over x402 — no account, no API key. Reading routes settle on delivery; /v1/fetch when the origin answers. Signed provenance on paid responses. Start free with POST /v1/probe. 14 HTTP+JSON endpoints (12 paid via x402 on eip155:8453, 2 free) — routes, prices, and routing examples are in `skills`. Call each skill's `method` + `path`; A2A task operations (message:send, tasks) are not implemented. Paid routes require a funded Base USDC wallet. Use readfetch-client / @readfetch/client or the MCP signing proxy (@readfetch/mcp-x402-proxy). Direct calls without a signing client will stop at 402.

https://readfetch.com/.well-known/agent-card.json its card
Checked 6d ago extensions, pushNotifications, streaming

we checked this    the operator says this

Community rating 0 0 up · 0 down — sign in to vote

Verified by agenttru.st

Everything here is a check agenttru.st performed itself. Assurance, protocol, hosting and freshness are in the card above and are not repeated.

Certificate
Issued by Let's Encrypt domain-validated
Valid until 19 Jan 2027 as of our check on 8 Nov 2026. A wildcard certificate: its other hosts are invisible here, because CT logs the wildcard, not them.
Control of the hostname was checked; nothing about who operates it.
Key ECDSA P-256, signed ECDSA-SHA384, issued via YE2 under ISRG Root X2 — classical, as every publicly trusted certificate is today.
Names on this certificate (2)

*.readfetch.com, readfetch.com.

Connection
TLS 1.3 · X25519MLKEM768 — post-quantum hybrid key exchange, agreed with our checker on 8 Nov 2026. What this means
DANE / TLSA
Not verified (TLSA query returned RCodeNameError)
Discovery
Well-known document
AI-facing documents
Publishes /llms.txt — “readfetch.com” a curated map of the site's content for language models
Fetched from this host during verification. Neither document is how this agent was discovered.
First seen
8 Nov 2026
View verification details
Assurance
bronze Bronze — agent card fetched over HTTPS with a valid certificate
Protocols
A2A verified by handshake or card fetch, not merely advertised
Hosted in
? Unknown · Cloudflare, Inc. (AS13335)
The address did not geolocate — usually anycast hosting, where one address answers from many places at once.
Last checked
6d ago

What this agent says it can do

Declared in the agent's own card. agenttru.st has not tested whether it completes any of these tasks — the operator of readfetch.com controls every word below.

text

Paid routes require a funded Base USDC wallet. Use readfetch-client / @readfetch/client or the MCP signing proxy (@readfetch/mcp-x402-proxy). Direct calls without a signing client will stop at 402. Fetch a public URL and return its main readable content as Markdown or plain text, plus title, author, published date and site name. Strips navigation, ads and boilerplate. No JavaScript rendering by default (cheaper than readfetch_scrape); one Chromium fallback when plain HTTP is blocked. Prefer readfetch_fetch when you need raw status, headers, or non-HTML bytes; readfetch_scrape when the article only appears after JavaScript runs.

x402ai agentsllmweb readingreadabilityarticle extractionhtml to texthtml to markdownweb readercontent extractionmetadataopen graphno javascript
Examples it gives
  • {"format":"markdown","max_bytes":5000000,"timeout_s":30,"url":"https://example.com"}

map

Paid routes require a funded Base USDC wallet. Use readfetch-client / @readfetch/client or the MCP signing proxy (@readfetch/mcp-x402-proxy). Direct calls without a signing client will stop at 402. Discover a site's crawlable surface without crawling it: parse robots.txt allow/disallow rules, collect URLs from sitemap.xml and sitemap indexes, find RSS, Atom and JSON feeds, and count internal and external links on the homepage. Use the returned URLs to plan readfetch_scrape, readfetch_batch, or readfetch_crawl — not readfetch_map again on each URL. Prefer readfetch_probe on one URL before paying for bodies.

x402ai agentssite discoverysitemaprobots.txtrssatomfeed discoveryurl discoverysite mapcrawl planninglink inventory
Examples it gives
  • {"limit":200,"max_bytes":5000000,"timeout_s":60,"url":"https://example.com"}

scrape

Paid routes require a funded Base USDC wallet. Use readfetch-client / @readfetch/client or the MCP signing proxy (@readfetch/mcp-x402-proxy). Direct calls without a signing client will stop at 402. Load a public URL in headless Chromium and return Markdown, plain text, or HTML (`format`, plus status_code, title, billed; optional links via `advanced.include_links`). `mode` sets latency and depth: fast (15 s, minimal render), render (30 s, default, full JS), full (60 s, scroll the page). Put scroll, wait_for, js_code, headers, cookies, and auth in `advanced` (`options` is deprecated, same shape). Prefer readfetch_text when JavaScript is not required; readfetch_fetch for raw HTTP/API bytes; readfetch_residential when the site blocks datacentre IPs; readfetch_screenshot for a PNG/JPEG. Bot-check or empty extractions may return `billed: false` with a hint.

x402ai agentsscrapejavascript renderingbrowser renderingmarkdownhtmlspaweb scraping
Examples it gives
  • {"format":"markdown","mode":"render","url":"https://example.com"}

residential

Paid routes require a funded Base USDC wallet. Use readfetch-client / @readfetch/client or the MCP signing proxy (@readfetch/mcp-x402-proxy). Direct calls without a signing client will stop at 402. Identical request and response to /v1/scrape, but the render leaves through a residential address instead of the datacentre. For targets that block by IP reputation (DataDome, PerimeterX, Cloudflare, AWS WAF). One attempt, no retries: residential bandwidth is the cost, and four times the scrape price is what it takes to cover it honestly. Prefer readfetch_scrape when datacentre egress works; use readfetch_residential only after readfetch_scrape fails or readfetch_probe reports a persistent challenge.

residential proxyprotected sitesanti-botscrapebrowser rendering
Examples it gives
  • {"format":"markdown","mode":"render","url":"https://example.com"}

fetch

Paid routes require a funded Base USDC wallet. Use readfetch-client / @readfetch/client or the MCP signing proxy (@readfetch/mcp-x402-proxy). Direct calls without a signing client will stop at 402. Send an HTTP request (GET, POST, PUT, PATCH, DELETE, HEAD) through egress and return status_code, response headers, and body as text or base64 (`binary: true`). `max_bytes` caps the stored body; `follow_redirects` (default true) and `timeout_s` (95 s ceiling) apply to the full redirect chain. Use `json_body` for JSON POST/PUT payloads; use `body` for raw bytes or strings. Prefer readfetch_text for readable HTML articles; readfetch_pdf to extract PDF text (not raw bytes alone). POST/PUT/DELETE can change remote state despite readOnlyHint.

http clientraw httpapi callsgraphqlproxy
Examples it gives
  • {"binary":false,"follow_redirects":true,"max_bytes":10000000,"method":"GET","timeout_s":95,"url":"https://example.com"}

batch

Paid routes require a funded Base USDC wallet. Use readfetch-client / @readfetch/client or the MCP signing proxy (@readfetch/mcp-x402-proxy). Direct calls without a signing client will stop at 402. Read a fixed list of public HTML pages in one call—the same article extraction as POST /v1/text for each URL (Markdown or plain text plus title and metadata). One x402 payment covers the batch (minimum 10 pages quoted; URLs deduped, max 50). Returns results in input order: each item has url, status_code, text, billed, and hint when undelivered, plus batch-level delivered, failed, billed_pages, and optional credit for unused pages. Undelivered pages are not billed. Use readfetch_text for one URL, readfetch_map then readfetch_crawl to discover and walk a site, readfetch_scrape when JavaScript is required. Read-only; 402 without PAYMENT-SIGNATURE like other paid tools.

batchbulkmultiple urlsconcurrentmarkdown
Examples it gives
  • {"format":"markdown","pipeline":"text","timeout_s":95,"urls":["https://example.com"]}

pdf

Paid routes require a funded Base USDC wallet. Use readfetch-client / @readfetch/client or the MCP signing proxy (@readfetch/mcp-x402-proxy). Direct calls without a signing client will stop at 402. Extract text from a PDF (%PDF- magic, not Content-Type). Send exactly one of `url` (public http(s) link — egress GET, ≤ 20 MB) or `content_base64` (bytes you already have — the whole request body is capped at 1 MiB, base64 expansion included; optional `filename` labels the upload). Returns `pages` (per-page text), one concatenated `markdown` body, `title`, and `metadata`; $0.005 per document, not per page. `max_pages` limits extraction (default 50, max 200); documents over 200 pages or above your cap return 413 and are not billed. Scanned/image-only PDFs may return empty text with `billed: false` and a `hint`. Prefer readfetch_text or readfetch_scrape for HTML articles; readfetch_fetch for raw PDF bytes without extraction; readfetch_batch for many HTML URLs, not PDFs. Read-only server-side; paid x402 like oth

pdfdocument textpage textmarkdownmetadata
Examples it gives
  • {"max_pages":50,"url":"https://example.com/paper.pdf"}

section

Paid routes require a funded Base USDC wallet. Use readfetch-client / @readfetch/client or the MCP signing proxy (@readfetch/mcp-x402-proxy). Direct calls without a signing client will stop at 402. Extract one heading or one CSS selector from a public page instead of the whole document. Returns matched Markdown or text, title, chars, content_sha256, and billed. If the heading is missing, returns HTTP 200 with empty text and `available_headings` so you can retry. `mode`: fast (plain HTTP) or render (default, Chromium when the page blocks HTTP). `max_chars` truncates output (default 8000, max 20000). Prefer readfetch_text for full articles; readfetch_scrape when content needs JavaScript.

sectionheadingselectortokensdocs
Examples it gives
  • {"format":"markdown","heading":"Introduction","max_chars":8000,"mode":"render","url":"https://example.com"}

diff

Paid routes require a funded Base USDC wallet. Use readfetch-client / @readfetch/client or the MCP signing proxy (@readfetch/mcp-x402-proxy). Direct calls without a signing client will stop at 402. Stateless change detection on readable page text (same HTTP-first extraction as readfetch_text): fetch the URL, compare to a hash or prior body you store client-side, return changed/unchanged plus optional line diff. First call with no prior fields returns a baseline hash (see hint). `previous_hash` alone detects change without a line diff; add `previous_content` when you need added/removed/diff. A no-change answer is still billable when text was delivered. Prefer readfetch_text when you need the full article once; readfetch_probe (free) for a short preview and `content_sha256` before spending on text.

diffchange detectionhashmonitoringstateless
Examples it gives
  • {"format":"text","timeout_s":30,"url":"https://example.com"}

screenshot

Paid routes require a funded Base USDC wallet. Use readfetch-client / @readfetch/client or the MCP signing proxy (@readfetch/mcp-x402-proxy). Direct calls without a signing client will stop at 402. Screenshot a public URL in headless Chromium (page JavaScript runs; no ad blocker) and return PNG or JPEG in JSON — `image_base64`, `mime`, `width`, `height`, `status_code`, `billed` (not a hosted URL). Scope: viewport only (`full_page: false`), full scrollable page (default), or one element (`selector`). `mode` caps total render time: fast (15 s), render (30 s, default), full (60 s, always full-page regardless of `full_page`). Set `width`/`height` before navigation (default 1280×800, max 3840×2160). `delay_ms` (0–30000) waits after navigation, then captures — raise it or use `mode=full` for slow SPAs and lazy media. Prefer readfetch_text or readfetch_scrape for extractable text; readfetch_pdf for PDF files; readfetch_fetch for raw HTTP without rendering. Read-only on the origin (GET + render, no form POST)

screenshotpngjpegfull pageelement
Examples it gives
  • {"format":"png","full_page":true,"mode":"render","url":"https://example.com"}

search

Paid routes require a funded Base USDC wallet. Use readfetch-client / @readfetch/client or the MCP signing proxy (@readfetch/mcp-x402-proxy). Direct calls without a signing client will stop at 402. Run a web search without a separate search API subscription. Returns titles, URLs, and snippets only — not full page text; follow with readfetch_text, readfetch_probe, or readfetch_scrape on a chosen result URL. `limit` is 1–20 (default 5). Optional `lang` biases locale (e.g. en, de-DE). Optional `tbs` filters recency: h= past hour, d= day, w= week, m= month, y= year. Use readfetch_map/readfetch_crawl when you already know the site; readfetch_* URL tools when you have the link.

searchweb searchserpresultssnippets
Examples it gives
  • {"limit":5,"query":"example"}

crawl

Paid routes require a funded Base USDC wallet. Use readfetch-client / @readfetch/client or the MCP signing proxy (@readfetch/mcp-x402-proxy). Direct calls without a signing client will stop at 402. Start a bounded async crawl from one seed URL. Returns job_id, status (queued), pages_quoted, and price_usd — then poll readfetch_crawl_status with that id until status is complete or failed. A complete job includes per-page url and Markdown in the status payload. Cap scope with max_pages (default 20, max 100) and max_depth (default 2, max 3); include/exclude filter paths by prefix (* suffix on include). Prefer readfetch_batch for a fixed URL list; readfetch_map to list URLs without fetching bodies; readfetch_text for a single page.

crawlsiteasyncjobmarkdown
Examples it gives
  • {"max_depth":2,"max_pages":20,"url":"https://example.com"}

crawl_status

FREE — no payment or wallet: Poll a crawl job started with readfetch_crawl. FREE — no payment or wallet; unauthenticated. Pass `id` from the crawl response. Returns job_id, status (queued, running, complete, or failed), completed/total counts, and a growing `pages` list (url plus Markdown) as results land. Stop polling when status is complete or failed. Results are kept for one hour after the job finishes.

crawljobstatus
Examples it gives
  • {"id":"example"}

probe

FREE — no payment or wallet: Free preflight on a URL before any paid readfetch_* call: HTTP status, content type, byte size, title, language, and whether a bot wall is waiting (`challenge`). When the response is HTML and not a challenge page, the JSON includes **`preview`**: up to **400 characters** of the text readfetch_text would return (same extractor). Use readfetch_probe instead of readfetch_text when choosing a route or estimating size; if `challenge: true`, use readfetch_scrape (then readfetch_residential if still blocked), not readfetch_text. Plain HTTP only — no browser render.

probemetadatapreflightcontent typebot detection
Examples it gives
  • {"timeout_s":10,"url":"https://example.com"}

Technical agent card

Copied from the agent's card. The operator controls these values; agenttru.st has not verified them.

Provider
readfetch.com — what this agent says about itself; other agents claiming the same provider are not thereby related
Protocol
a2a
Version
0.1.0+16
Auth schemes
x402
Extensions
https://x402.org
Every endpoint is paid with x402 (USDC on Base); an unpaid call answers 402 with the quote.
A2A protocol extensions the card declares. A declared payment extension (AP2, x402) means the operator says the agent can transact, not that agenttru.st has seen it do so.
Card completeness
complete all eight fields required by a2a.proto v1.0
View all card details
Capabilities
extensions pushNotifications streaming
Agent card
https://readfetch.com/.well-known/agent-card.json

Operate this agent and would rather not be listed? Request removal.