# AgentReader > Web reader for AI agents: fetch any URL and get clean, LLM-ready Markdown or structured JSON. Read web pages, scrape JavaScript-rendered sites (headless Chromium), convert PDF to Markdown/text, extract the main article (title, author, date, links, tables) without ads or navigation. REST API + MCP server. Free tier, then prepaid credits or pay-per-call in USDC on Base via x402. No signup required. ## When to use - You need the text of a web page, blog post, docs page, news article or PDF (fetch / browse / scrape / read URL) - A plain HTTP fetch returns an empty JavaScript shell (SPA): render=always - You want structured fields (title, author, date, links, tables) instead of raw HTML: format=json ## Read a URL - GET https://agentreader.xyz/v1/read?url= -> text/markdown - GET https://agentreader.xyz/v1/read?url=&format=json -> {url,title,author,date,siteName,description,lang,contentType,markdown,text,wordCount,links[],tables[{caption,headers,rows}],meta} - Options: render=auto|never|always (headless Chromium for JS pages), nocache=1. POST with a JSON body also works. - Auth (optional, for prepaid credits): Authorization: Bearer ar_... or x-api-key: ar_... ## MCP - Streamable HTTP: https://agentreader.xyz/mcp - Tools: read_url(url, format?, render?), get_balance() - Server card: https://agentreader.xyz/.well-known/mcp/server-card.json ## Pricing - Free: 5 calls/day per IP, no key needed - Credit bundle: 500 calls for $1 USDC ($0.0020/call), no expiry - Credit bundle: 5000 calls for $8 USDC ($0.0016/call), no expiry - Pay per call: $0.005 USDC via x402. Use the always-paid endpoint https://agentreader.xyz/v1/x402/read?url=, or /v1/read once the free calls run out - API keys only hold prepaid credits; one is issued automatically when you buy a bundle without a key. - Order: free daily calls (only without a key), then credits, then per-call x402. ## Buying credits (x402) 1. GET https://agentreader.xyz/v1/credits/bundles lists bundles; POST https://agentreader.xyz/v1/credits/buy?bundle=500 (send your key, or none to receive a new key) 2. The server answers HTTP 402 with an x402 v2 challenge (PAYMENT-REQUIRED header + JSON body; scheme "exact", USDC, network eip155:8453). Pay with any x402 v2 client (@x402/fetch, @x402/axios, python x402) and retry with the PAYMENT-SIGNATURE header. v1 clients: send "X402-Version: 1" for a v1 challenge and pay with X-PAYMENT. 3. GET https://agentreader.xyz/v1/balance shows free calls and credits. ## Machine-readable - OpenAPI: https://agentreader.xyz/openapi.json - x402 resources: https://agentreader.xyz/.well-known/x402 - MCP registry entry: https://agentreader.xyz/server.json - Health: https://agentreader.xyz/health ## Contact - contact@agentreader.xyz