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

A
Description quality
100%
Schema completeness
100%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~584Tokens (tool definitions)
~525 BTypical response size
Minimal attention impact (0.46% of 128k context)

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-http

What it can do

Tool inventory

Tools (5)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded5 tools
verifiedversion not recorded5 tools