Skip to main content
Glama
readfetch

@readfetch/mcp-x402-proxy

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
READFETCH_DEVNoSet to 1 only for local MCP URLs (localhost / 127.0.0.1 / [::1]) and enables Sepolia there. Never set it when READFETCH_MCP_URL points at production.
EVM_PRIVATE_KEYYesPrivate key for a wallet on Base mainnet with USDC for paid tools. tools/list does not load your key; the first tools/call does. Never commit it.
READFETCH_MCP_URLNoOptional upstream MCP URL. Must be https for readfetch.com / www.readfetch.com, or localhost / 127.0.0.1 / [::1] with READFETCH_DEV=1. Upstream redirects are rejected.https://readfetch.com/mcp
READFETCH_EXPECTED_PAYTONoOptional expected payee address. On readfetch.com upstream, payments must match this address (defaults to the catalog payee).
READFETCH_MAX_PAYMENT_USDNoOptional cap for each x402 authorization in USD. Maximum is 100.1

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
readfetch_textA

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.

readfetch_mapA

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.

readfetch_scrapeA

Load a public URL in headless Chromium and return Markdown, plain text, or HTML (format, plus status_code, title, cache_status, 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). fresh: true bypasses cache. 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.

readfetch_residentialA

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.

readfetch_fetchA

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.

readfetch_batchA

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.

readfetch_pdfA

Extract text from a PDF (%PDF- magic, not Content-Type): send exactly one of url (downloaded through egress) or content_base64 (inline bytes, ≤ 20 MB). Returns per-page text in pages, one concatenated markdown body, plus title and metadata; $0.005 per document, not per page. max_pages limits how many pages are extracted (default 50, max 200); a document above the cap or above 200 pages returns 413 and is not billed. Image-only/scanned PDFs may return empty text with billed: false and a hint. Use readfetch_text or readfetch_scrape for HTML pages; use readfetch_batch for many HTML URLs, not PDFs.

readfetch_sectionA

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.

readfetch_diffA

Stateless change detection: send the hash you hold, get changed/unchanged and a bounded diff. A no-change answer is billable.

readfetch_screenshotA

Capture a public URL in headless Chromium and return PNG or JPEG as JSON (image_base64, mime, width, height, status_code, billed) — not a hosted URL. Scope: viewport (full_page: false), the full scrollable page (default), or one element (selector). mode is the whole-call budget: fast (15 s), render (30 s, default), or full (60 s, always full-page). Set width/height before navigation (default 1280×800); use delay_ms after load for SPAs and lazy media. Prefer readfetch_text or readfetch_scrape for readable text, readfetch_pdf for PDF documents, readfetch_fetch for raw HTTP. Blank or bot-check frames may still include an image but billed: false with a hint; paid x402 like other routes.

readfetch_searchA

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.

readfetch_crawlA

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 completed or failed. Completed jobs include 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.

readfetch_crawl_statusA

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, completed, or failed), completed/total counts, and a growing pages list (url plus Markdown) as results land. Stop polling when status is completed or failed. Results are kept for one hour after the job finishes.

readfetch_probeA

FREE — no payment or wallet: Free preflight on a URL: 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 /v1/text would return (same extractor). Optional preview only — not the full article. Plain HTTP (no browser render).

readfetch_feedbackA

FREE — report integration, docs or site issues for a prior call. Bind with request_id from X-Request-Id. Paid delivery disputes use /v1/claims, not this tool.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.3/5.0

Scored across 15 tools

Disambiguation4/5

Descriptions explicitly route the agent between overlapping extraction tools (text = no JS, scrape = Chromium render, residential = IP-blocked sites, section = single selector, batch = many URLs), which resolves most ambiguity. Some boundary cases remain (text vs scrape vs residential on a JS-heavy blocked site), but the 'prefer X when Y' guidance is unusually explicit.

Naming Consistency5/5

Every tool uses the readfetch_ prefix followed by a lowercase snake_case noun (text, scrape, fetch, batch, pdf, screenshot, search, crawl, crawl_status, probe, feedback). The pattern is uniform and predictable, with the nested crawl_status being the only compound and it reads naturally.

Tool Count5/5

15 tools sits at the top of the well-scoped range but each maps to a distinct capability of a scraping proxy (discovery, extraction variants, rendering, raw HTTP, utilities). Nothing appears redundant enough to cut without losing a real use case.

Completeness4/5

The surface covers the full pipeline: discovery (map, search, probe), extraction (text, scrape, section, batch, pdf), crawling (crawl + crawl_status), raw HTTP, screenshots, and change detection. Minor gaps exist—no crawl cancel/delete, no structured/schema extraction, and the referenced claims/refund route is not exposed as a tool—but agents can work around these.

Maintenance

ActivityMaintained
ResponsivenessNo issues