AgentReader

Превращает любой URL или PDF в чистый Markdown/JSON для AI-агентов. Удалённый MCP (read_url, search, get_balance) + REST API; 5 бесплатных чтений в день, затем $0.005 за вызов через x402 USDC на Base, без необходимости в аккаунте.

Размещённый MCP-сервер

npx add-mcp 'https://agentreader.xyz/mcp'

Устанавливается в Claude Code, Codex, Cursor и другие

Документация

AgentReader

Read the web pages your AI agent's fetch can't.

Built-in fetch tools return empty JavaScript shells, cookie walls, raw PDF bytes, or HTML where menus and ads burn thousands of tokens. AgentReader returns the actual content as clean, compact Markdown or JSON. If a site blocks bots, you get a clear error fast and pay nothing. 5 free reads a day, then $0.005 per call in USDC via x402, no account needed.

Connect your agent Try a read in your browser Pricing

The problem

Agents fetch web pages all the time, and the result is often useless. These are the cases AgentReader is built for:

JavaScript-only pages
Many sites send an almost empty HTML shell and build the page in the browser. AgentReader detects this and renders the page in headless Chromium.

Cookie and consent walls
Instead of the article you get "accept cookies". AgentReader accepts the consent dialog and reads the page behind it.

PDFs
Raw PDF bytes are useless to a model. AgentReader extracts the title, text and simple tables.

Token-heavy HTML
Navigation, scripts, ads and markup can be 90%+ of a page. AgentReader keeps the main content, with headings, lists, tables and absolute links.

What it can't do: some sites (large news and shopping sites, for example) block automated readers with bot protection. AgentReader doesn't try to get around that. You get a blocked error within seconds and are not charged, so your agent can move on.

What you get

A real example: the React docs page react.dev/learn, measured on 18 Oct 2026 with the cl100k_base tokenizer.

Plain HTTP fetch: 265 KB of HTML, ~91,900 tokens

<!DOCTYPE html><html lang="en" dir="ltr"><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width, initial-scale=1" data-next-head=""/><script async="" src="https://www.googletagmanager.com/gtag/js?id=G-B1E83PJ3RT"></script><title data-next-head="">Quick Start – React</title><link rel="canonical" href="https://react.dev/learn" data-next-head=""/><link rel=…
(15 script tags, inline styles, navigation for the whole site…)

AgentReader: 17 KB of Markdown, ~4,100 tokens

# Quick Start

Welcome to the React documentation! This page will give you an introduction to 80% of the React concepts that you will use on a daily basis.

### You will learn

-   How to create and nest components
-   How to add markup and styles
-   How to display data
-   How to render conditions and lists
…

Same content, about 22 times fewer tokens. Savings vary by page: simple pages shrink less, heavy pages more. Some agent tools already convert HTML to text, but they usually can't render JavaScript, get past consent walls or read PDFs.

With format=json you also get structured fields: title, author, date, siteName, lang, wordCount, links[], tables[] and meta (for example whether a browser was used).

Connect

AgentReader is a remote MCP server at https://agentreader.xyz/mcp (streamable HTTP) with the tools read_url, search and get_balance, and a plain REST API. No key is needed for the 5 free reads a day.

Claude Code

claude mcp add --transport http agentreader https://agentreader.xyz/mcp

# with an API key for prepaid credits:
claude mcp add --transport http agentreader https://agentreader.xyz/mcp --header "Authorization: Bearer ar_..."

Cursor (~/.cursor/mcp.json) and other clients with an mcpServers config

{
  "mcpServers": {
    "agentreader": {
      "url": "https://agentreader.xyz/mcp",
      "headers": { "Authorization": "Bearer ar_..." }
    }
  }
}

Leave out headers if you don't have a key.

Claude Desktop and claude.ai

Settings → Connectors → Add custom connector, then paste https://agentreader.xyz/mcp. Custom connectors can't send an API key header, so this uses the free daily reads.

opencode (opencode.json)

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "agentreader": {
      "type": "remote",
      "url": "https://agentreader.xyz/mcp",
      "enabled": true,
      "headers": { "Authorization": "Bearer ar_..." }
    }
  }
}

REST (curl or any HTTP client)

curl "https://agentreader.xyz/v1/read?url=https://react.dev/learn"
curl "https://agentreader.xyz/v1/read?url=https://react.dev/learn" -H "Authorization: Bearer ar_..."   # use prepaid credits

Keys and payment

  • No key: 5 free reads a day per IP address.
  • API key (Authorization: Bearer ar_..., or x-api-key): uses the prepaid credits on that key. You get a key when you buy a bundle or card pack.
  • x402, no key: when free reads run out, the server answers HTTP 402 with a payment request. An agent with an x402 client pays $0.005 in USDC on Base and retries. https://agentreader.xyz/v1/x402/read?url=… always uses x402.

Options

For GET /v1/read. The MCP tool read_url takes the same url, format, mode, render and extract arguments. Unknown values return a 400 error that explains the valid ones.

ParameterValuesDefaultWhat it doesWhen to use itExample
urlany http(s) URL(required)The page, PDF or RSS/Atom feed to read. Also accepted as u or link, without https://, or path style /v1/read/https://….Always. URL-encode it if it has its own?query./v1/read?url=https://react.dev/learn
formatmarkdown, jsonmarkdownmarkdown returns the text only. json adds title, author, date, links, tables and metadata.json when your code needs fields; markdown to pass straight to a model./v1/read?url=https://arxiv.org/pdf/1706.03762&format=json
modeauto, article, links, fullautoarticle: main content only. links: list of headlines with links. full: the whole page, including non-article parts. auto picks article or links based on the page. RSS/Atom feeds always return their items.links for homepages and index pages; full when the main-content extraction misses something./v1/read?url=https://www.bbc.com/news&mode=links
renderauto, never, alwaysautoWhether to load the page in headless Chromium. auto does so only when plain fetching returns too little.always if a JavaScript page comes back incomplete; never for speed when you know the page is static./v1/read?url=https://react.dev/learn&render=never
extractcomma list of field names, or a JSON schema(none)Returns named fields (title, author, date, price, currency, image, brand, sku, rating, availability, summary…) from JSON-LD, OpenGraph, microdata and meta tags. No LLM. Missing fields are null. In JSON as fields, in Markdown as front matter.Product pages, articles and other pages with structured data./v1/read?url=https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html&format=json&extract=title,price,currency
nocache1offSkips the 10-minute result cache and reads the page again.When the page changed in the last few minutes./v1/read?url=https://react.dev/learn&nocache=1

POST /v1/read with the same fields in a JSON body also works.

Pricing

You only pay for successful reads. Blocked sites, timeouts and errors are free.

OptionWhat you getPrice
Free5 calls/day per IP, no key$0
Pay per callNo account. Via x402 once free calls run out, or always at /v1/x402/read$0.005 per call in USDC on Base
Credit bundle500 calls for $1 USDC, no expiry$0.0020/call, one x402 payment
Credit bundle5,000 calls for $8 USDC, no expiry$0.0016/call, one x402 payment
Card pack7,000 calls, no expiry$10 by card (buy)

A search costs the same as a read. Buying without a key gives you a new API key that holds the credits. Keys don't include the free daily calls. Pay by card at agentreader.xyz/buy; the card provider handles verification, and credits arrive once the payment confirms on Base.

curl -X POST "https://agentreader.xyz/v1/credits/buy?bundle=500" -H "Authorization: Bearer ar_..."   # 402 with x402 payment request; pay and retry
curl "https://agentreader.xyz/v1/balance" -H "Authorization: Bearer ar_..."                                  # free calls left and credits

Also included

FAQ and limits

Does it work on every site?

No. Sites with strong bot protection (Cloudflare challenges, DataDome, PerimeterX) usually block it. You get a blocked error quickly and pay nothing. Pages behind a login aren't supported.

How fast is it?

Static pages usually take under a second or two. Pages that need a browser take longer, often several seconds. Results are cached for 10 minutes.

Do I need an account or a crypto wallet?

No account. For the free tier you need nothing. Beyond that, an agent can pay per call with x402, or you can buy a credit pack by card and use the API key.

What is blocked?

Private and internal network addresses, and non-http(s) URLs. Requests are rate limited.

Where are the machine-readable docs?

llms.txt · OpenAPI · MCP server card · x402 resources · status