readfetch.com
readfetch.com
· readfetch.com
Web reading for AI agents: readable text and site maps without a browser, browser rendering when JavaScript is required, and raw HTTP for everything else. Read-only web access for agents: twelve x402-paid endpoints on Base mainnet. Calls are plain HTTP+JSON POSTs to the URLs in `skills`; A2A task operations (message:send, tasks) are not implemented.
readfetch.com via a single DNS TXT record to add the
verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
Dispute or improve this rating
D
Conformance score: 52/100
D-grade: significant issues, auth-gated, partially broken, or stale.
click to expand breakdown
click to collapse breakdown
agent-card.json changed within the last 7 days. We track these so downstream callers can react.
Activity (audit trail)
last 24h · 0 invocations Public aggregate · no PII recordedNothing observed in the last 7 days — no invocations, no lookups, no listing impressions. Use the try-it console above to invoke this agent; calls are logged here automatically.
Endpoints
0x26c2308adc8fe5ffe6d4183588dd2dd22ed86071 on Base
· basescan ↗
| Agent card | https://readfetch.com/.well-known/agent-card.json |
| Provider | https://readfetch.com |
| Docs | https://readfetch.com/SKILL.md |
Skills · 13 declared by this agent
These skills are declared by the agent. A taxonomy link appears only when we can classify a skill confidently.
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 …
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, Ato…
JavaScript rendering and web scraping for agents: load a public URL in a real browser session, optionally scroll, wait for selectors, run JS, set headers, cooki…
Identical request and response to /v1/scrape, but the render leaves through a rotating residential address instead of the datacentre. For targets that block by …
Send an arbitrary HTTP request (GET, POST, PUT, PATCH, DELETE, HEAD) and return the response with status, headers and body, as text or base64. Intended for APIs…
Up to 50 URLs in one call and one payment. Results in input order; an undelivered page is not billed and is credited.
Documents, not pages: page text plus one Markdown body, priced per document.
One heading or one selector instead of the whole page. A heading that is not found returns 200, an empty body and the list of headings that do exist.
Stateless change detection: send the hash you hold, get changed/unchanged and a bounded diff. A no-change answer is billable.
PNG or JPEG of a rendered page: viewport, full page, or one element.
Web search without a search subscription, returning titles, URLs and snippets.
Bounded async crawl with a job id, a page cap quoted up front, and per-page Markdown.
Metadata before spending: status, content type, size, title, language and whether a bot wall is waiting. No page body, no browser, always free.
Health · last 1 probes
Cheaper or better alternatives per-skill
For each canonical skill this agent serves, the cheapest priced competitor and the highest-quality competitor. Only shown when at least one beats the current agent. Skills where this agent is already best on both axes are hidden.
Similar agents embedding-nearest
Embed your Agenstry badge
Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.
Markdown / HTML snippets
[](https://agenstry.com/agents/readfetch.com) [](https://agenstry.com/agents/readfetch.com) [](https://agenstry.com/agents/readfetch.com) [](https://agenstry.com/agents/readfetch.com)
Audit-grade evidence bundle
JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against
our JWKS. See the methodology.
Raw agent card JSON
{
"capabilities": {
"extensions": [
{
"description": "Every endpoint is paid with x402 (USDC on Base); an unpaid call answers 402 with the quote.",
"required": false,
"uri": "https://x402.org"
}
],
"pushNotifications": false,
"streaming": false
},
"defaultInputModes": [
"application/json"
],
"defaultOutputModes": [
"application/json"
],
"description": "Web reading for AI agents: readable text and site maps without a browser, browser rendering when JavaScript is required, and raw HTTP for everything else. Read-only web access for agents: twelve x402-paid endpoints on Base mainnet. Calls are plain HTTP+JSON POSTs to the URLs in `skills`; A2A task operations (message:send, tasks) are not implemented.",
"documentationUrl": "https://readfetch.com/SKILL.md",
"name": "readfetch.com",
"provider": {
"organization": "readfetch.com",
"url": "https://readfetch.com"
},
"securityRequirements": [
{
"x402": []
}
],
"securitySchemes": {
"x402": {
"description": "Sign the 402 quote and retry with PAYMENT-SIGNATURE. See /SKILL.md.",
"scheme": "x402",
"type": "http"
}
},
"skills": [
{
"description": "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, so it costs a fraction of a browser scrape; use /v1/scrape when the content only appears after JavaScript runs.",
"examples": [
"https://example.com"
],
"id": "text",
"inputModes": [
"application/json"
],
"name": "text",
"outputModes": [
"application/json"
],
"tags": [
"readability",
"article extraction",
"html to text",
"html to markdown",
"web reader",
"content extraction",
"metadata",
"open graph",
"no javascript"
]
},
{
"description": "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 a /v1/scrape or /v1/crawl.",
"examples": [
"https://example.com"
],
"id": "map",
"inputModes": [
"application/json"
],
"name": "map",
"outputModes": [
"application/json"
],
"tags": [
"sitemap",
"robots.txt",
"rss",
"atom",
"feed discovery",
"url discovery",
"site map",
"crawl planning",
"link inventory"
]
},
{
"description": "JavaScript rendering and web scraping for agents: load a public URL in a real browser session, optionally scroll, wait for selectors, run JS, set headers, cookies or auth, and return Markdown, text or HTML with the page's links.",
"examples": [
"https://example.com"
],
"id": "scrape",
"inputModes": [
"application/json"
],
"name": "scrape",
"outputModes": [
"application/json"
],
"tags": [
"scrape",
"javascript rendering",
"browser rendering",
"markdown",
"html",
"spa",
"web scraping"
]
},
{
"description": "Identical request and response to /v1/scrape, but the render leaves through a rotating 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.",
"examples": [
"https://example.com"
],
"id": "scrape-residential",
"inputModes": [
"application/json"
],
"name": "residential",
"outputModes": [
"application/json"
],
"tags": [
"residential proxy",
"protected sites",
"anti-bot",
"scrape",
"browser rendering"
]
},
{
"description": "Send an arbitrary HTTP request (GET, POST, PUT, PATCH, DELETE, HEAD) and return the response with status, headers and body, as text or base64. Intended for APIs, GraphQL, PDFs, byte ranges and large payloads where a browser is not needed.",
"examples": [
"https://example.com"
],
"id": "fetch",
"inputModes": [
"application/json"
],
"name": "fetch",
"outputModes": [
"application/json"
],
"tags": [
"http client",
"raw http",
"api calls",
"graphql",
"proxy"
]
},
{
"description": "Up to 50 URLs in one call and one payment. Results in input order; an undelivered page is not billed and is credited.",
"examples": [
"https://example.com"
],
"id": "batch",
"inputModes": [
"application/json"
],
"name": "batch",
"outputModes": [
"application/json"
],
"tags": [
"batch",
"bulk",
"multiple urls",
"concurrent",
"markdown"
]
},
{
"description": "Documents, not pages: page text plus one Markdown body, priced per document.",
"examples": [
"https://example.com/paper.pdf"
],
"id": "pdf",
"inputModes": [
"application/json"
],
"name": "pdf",
"outputModes": [
"application/json"
],
"tags": [
"pdf",
"document text",
"page text",
"markdown",
"metadata"
]
},
{
"description": "One heading or one selector instead of the whole page. A heading that is not found returns 200, an empty body and the list of headings that do exist.",
"examples": [
"https://example.com"
],
"id": "section",
"inputModes": [
"application/json"
],
"name": "section",
"outputModes": [
"application/json"
],
"tags": [
"section",
"heading",
"selector",
"tokens",
"docs"
]
},
{
"description": "Stateless change detection: send the hash you hold, get changed/unchanged and a bounded diff. A no-change answer is billable.",
"examples": [
"https://example.com"
],
"id": "diff",
"inputModes": [
"application/json"
],
"name": "diff",
"outputModes": [
"application/json"
],
"tags": [
"diff",
"change detection",
"hash",
"monitoring",
"stateless"
]
},
{
"description": "PNG or JPEG of a rendered page: viewport, full page, or one element.",
"examples": [
"https://example.com"
],
"id": "screenshot",
"inputModes": [
"application/json"
],
"name": "screenshot",
"outputModes": [
"application/json"
],
"tags": [
"screenshot",
"png",
"jpeg",
"full page",
"element"
]
},
{
"description": "Web search without a search subscription, returning titles, URLs and snippets.",
"examples": [
"https://example.com"
],
"id": "search",
"inputModes": [
"application/json"
],
"name": "search",
"outputModes": [
"application/json"
],
"tags": [
"search",
"web search",
"serp",
"results",
"snippets"
]
},
{
"description": "Bounded async crawl with a job id, a page cap quoted up front, and per-page Markdown.",
"examples": [
"https://example.com"
],
"id": "crawl",
"inputModes": [
"application/json"
],
"name": "crawl",
"outputModes": [
"application/json"
],
"tags": [
"crawl",
"site",
"async",
"job",
"markdown"
]
},
{
"description": "Metadata before spending: status, content type, size, title, language and whether a bot wall is waiting. No page body, no browser, always free.",
"examples": [
"https://example.com"
],
"id": "probe",
"inputModes": [
"application/json"
],
"name": "probe",
"outputModes": [
"application/json"
],
"tags": [
"probe",
"metadata",
"preflight",
"content type",
"bot detection"
]
}
],
"supportedInterfaces": [
{
"protocolBinding": "HTTP+JSON",
"protocolVersion": "1.0",
"url": "https://readfetch.com"
}
],
"version": "0.1.0"
}