agent-web — URL to LLM-ready markdown: a polite, robots-respecting web page reader (free)
URL to clean markdown for LLMs: a polite, robots.txt-respecting web reader. Free, no API key
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"agent-web": {
"url": "https://agent-web.foomworks.workers.dev/mcp"
}
}
}Remote endpoints
https://agent-web.foomworks.workers.dev/mcpstreamable-httpWhat it can do
Tool inventory
Tools (5)
🟢read_url(url)
Fetch one publicly reachable URL and return clean, LLM-ready markdown (title + page description + word count + markdown). HTML pages are extracted to markdown — including HTML tables, which become GitHub-flavored Markdown tables; URLs pointing straight at a Markdown or plain-text document (raw READMEs, llms.txt, docs) are passed through verbatim. Polite by design: honors the origin's robots.txt for our user-agent, identifies honestly, read-only GET, never bypasses anti-bot/CAPTCHA/paywalls. Free. JavaScript-rendered pages are not supported yet.
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "absolute http(s) URL of a publicly reachable HTML page"
}
},
"required": [
"url"
]
}🟢read_url_preview(url)
Like read_url but returns only the page description + the first ~600 characters of the markdown (title + word count + a truncation flag) — a cheap way to check a page's relevance before pulling the full text. Free.
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "absolute http(s) URL of a publicly reachable HTML page"
}
},
"required": [
"url"
]
}🟢render_preview(url)
Free discovery stub for the screenshot/PDF render lane. Same robots/SSRF guards as read_url. Currently returns a 503 (no charge) until Cloudflare Browser Rendering is provisioned on this account.
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "absolute http(s) URL of a publicly reachable page"
}
},
"required": [
"url"
]
}⚪render_screenshot(url, fullPage, width)
PAID (x402): returns x402 payment instructions for a PNG screenshot of a publicly reachable URL, rendered via a real, robots-respecting headless browser. Use render_preview (free) first. Currently soft-skips 503 until Cloudflare Browser Rendering is provisioned.
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "absolute http(s) URL to screenshot"
},
"fullPage": {
"type": "boolean",
"description": "capture the full scrollable page (default: viewport only)"
},
"width": {
"type": "integer",
"description": "viewport width in pixels (default 1280)"
}
},
"required": [
"url"
]
}⚪render_pdf(url)
PAID (x402): returns x402 payment instructions for a PDF render of a publicly reachable URL, via a real, robots-respecting headless browser. Currently soft-skips 503 until Cloudflare Browser Rendering is provisioned.
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "absolute http(s) URL to render to PDF"
}
},
"required": [
"url"
]
}Community
Evidence