readfetch

io.github.readfetchPublished by GitHub account readfetchv0.1.12Updated Nov 1, 2026

Stdio MCP: free probe; paid web reading (text/map/scrape) via x402 on readfetch.com

VerifiedSTDIODesktop onlyWeb Search & ScrapingFinance

Overview

AI-generated overview

Local stdio proxy that gives an assistant readfetch's web reading tools — text extraction, scraping, crawling, search and screenshots — paying per call in…

What you can do
  • Fetch and read pages: extract main content as Markdown or text, pull a single section, read PDFs, or send arbitrary HTTP requests
  • Render and capture: JavaScript-rendered scraping, residential-IP scraping, and PNG/JPEG screenshots of pages or elements
  • Discover and crawl: map a site's robots.txt, sitemaps and feeds, run bounded async crawls and poll their status
  • Search and batch: web search with titles and snippets, up to 50 URLs per call, and stateless change detection by hash
  • Preflight and feedback: free URL probe with status, size and bot-wall check, plus free issue reporting
When to use it
Use it when an assistant needs to read, scrape, crawl or search the public web and you are willing to pay per call from a crypto wallet instead of holding a search or scraping subscription. The free probe and crawl-status tools make it easy to try before spending.
Requirements
Node.js 20+ and an npm package run locally over stdio. A Base mainnet wallet with a little USDC, supplied as the EVM_PRIVATE_KEY environment variable, is needed for paid tools; the free probe, crawl status and feedback tools work without it. Optional READFETCH_MCP_URL, READFETCH_MAX_PAYMENT_USD and READFETCH_DEV settings. Network access to readfetch.com.
Before you install
The private key in EVM_PRIVATE_KEY lets any tool the model invokes spend USDC from that wallet until it is empty, bounded only by the per-payment cap; use a dedicated low-balance wallet and never commit the key. Most tools cost money, including no-change diff answers, and residential scraping is priced higher with no retries. READFETCH_DEV must not be combined with a production upstream URL. Requests go to readfetch.com.

Installation

In SourceWeft

  1. Open readfetch in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

readfetch MCP + x402 signing proxy

Most MCP hosts (Cursor, Claude Desktop, etc.) cannot attach PAYMENT-SIGNATURE on tools/call. This stdio MCP server lists tools from https://readfetch.com/mcp, executes tools/call against /v1/{endpoint} on the same host (so HTTP 402 triggers @x402/fetch payment), and signs retries automatically.

Requirements

  • Node.js 20+
  • A wallet on Base mainnet with a little USDC for paid tools (readfetch_text, …). tools/list does not load your key; the first tools/call does.
  • Private key in env — never commit it

Cursor / Claude MCP config

json
{  "mcpServers": {    "readfetch": {      "command": "npx",      "args": ["-y", "@readfetch/[email protected]"],      "env": {        "EVM_PRIVATE_KEY": "0xYOUR_KEY"      }    }  }}

From a checkout:

json
{  "mcpServers": {    "readfetch": {      "command": "node",      "args": ["/absolute/path/to/readfetch/tools/mcp-x402-proxy/index.mjs"],      "env": {        "EVM_PRIVATE_KEY": "0xYOUR_KEY"      }    }  }}

Optional: READFETCH_MCP_URL (default https://readfetch.com/mcp; https only for readfetch.com / www.readfetch.com, or localhost / 127.0.0.1 / [::1] with READFETCH_DEV=1). Upstream redirects are rejected. READFETCH_MAX_PAYMENT_USD (default 1, max 100) caps each x402 authorization. On readfetch.com upstream, payments must match READFETCH_EXPECTED_PAYTO (default catalog payee). READFETCH_DEV=1 is only for local MCP URLs and enables Sepolia there — never set it when READFETCH_MCP_URL points at production.

Wallet risk: any tool the model invokes (readfetch_crawl, batch, …) can spend USDC from your key until the wallet is empty (subject to the per-payment cap). Use a dedicated low-balance wallet.

Install from a checkout:

bash
cd tools/mcp-x402-proxynpm ci

npm ci in a git checkout uses the committed package-lock.json. npx @readfetch/mcp-x402-proxy installs exact dependency versions pinned in package.json (npm does not ship the lockfile in the published tarball).

Local smoke (checkout)

bash
npm ci && npm testnpm run smoke                                    # readfetch_probe (free)SMOKE_TOOL=readfetch_text npm run smoke          # paid REST path; needs Base USDC

From this directory — not the repo root:

bash
cd tools/mcp-x402-proxynpm login                    # user must own or belong to npm org @readfetchnpm publish --access public  # first publish of a scoped package

Wrong: npm publish @readfetch/mcp-x402-proxy from ReadFetch/ (404 — nothing to publish there).

If the @readfetch org does not exist on npmjs.com, create it or temporarily change name in package.json to an unscoped name you control.

Default tool path

  1. readfetch_probe with { "url": "…" } (free; may include preview ~400 chars when HTML, not a bot wall)
  2. readfetch_text with the same url
  3. If probe reports challenge: true, use readfetch_scrape (then readfetch_scrape_residential if needed)

Feedback (integration issues)

After a confusing 402, MCP result, or doc mismatch, call readfetch_feedback (free — no EVM_PRIVATE_KEY) with:

json
{ "request_id": "<X-Request-Id from that call>", "category": "integration", "message": "…" }

Paid delivery disputes use POST /v1/claims, not feedback. Details: readfetch.com/docs#feedback.

Without this proxy

  • REST: awal x402 pay https://readfetch.com/v1/text -d '{"url":"…"}' or @x402/fetch in your app
  • Direct MCP URL: only works if your host can set payment headers on the HTTP request to /mcp

See also readfetch integrations and SKILL.md.

Directory: Official MCP Registry io.github.readfetch/mcp-x402-proxy · Glama listing steps in readfetch/readfetch docs/GLAMA.md (operator).

Source: README.md at commit adc7e96

Tools

15

readfetch_text

/v1/text

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.

Parametersurlrequiredformatmax_bytestimeout_saccept_language

readfetch_map

/v1/map

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.

Parametersurlrequiredlimitmax_bytestimeout_s

readfetch_scrape

/v1/scrape

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.

Parametersurlrequiredauthmodefreshformatoptionsadvanced

readfetch_residential

/v1/scrape/residential

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.

Parametersurlrequiredauthmodefreshformatoptionsadvanced

readfetch_fetch

/v1/fetch

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.

Parametersurlrequiredbodybinarymethodheadersjson_bodymax_bytestimeout_sfollow_redirects

readfetch_batch

/v1/batch

Up to 50 URLs in one call and one payment. Results in input order; an undelivered page is not billed and is credited.

Parametersurlsrequiredfreshformatpipelinetimeout_saccept_language

readfetch_pdf

/v1/pdf

Documents, not pages: page text plus one Markdown body, priced per document.

Parametersurlfilenamemax_pagescontent_base64

readfetch_section

/v1/section

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.

Parametersurlrequiredmodeformatheadingselectormax_chars

readfetch_diff

/v1/diff

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

Parametersurlrequiredformattimeout_sprevious_hashprevious_content

readfetch_screenshot

/v1/screenshot

PNG or JPEG of a rendered page: viewport, full page, or one element.

Parametersurlrequiredmodewidthformatheightdelay_msselectorfull_page

readfetch_crawl

/v1/crawl

Bounded async crawl with a job id, a page cap quoted up front, and per-page Markdown.

Parametersurlrequiredexcludeincludemax_depthmax_pages

readfetch_crawl_status

/v1/crawl/{id}

FREE — no payment or wallet: Poll a crawl job by id. Free and unauthenticated; results are kept for one hour.

Parametersid

readfetch_probe

/v1/probe

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).

Parametersurlrequiredtimeout_saccept_language

readfetch_feedback

/v1/feedback

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.

Parametersmessagerequiredcategoryrequiredrequest_idrequired

Version history

1
  1. v0.1.12LatestNov 1, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts