URL to clean markdown for LLMs: a polite, robots.txt-respecting web reader. Free, no API key
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
absolute http(s) URL of a publicly reachable HTML page
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
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.
| Argument | Type | Description |
|---|---|---|
| url* | string | absolute http(s) URL of a publicly reachable HTML page |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "absolute http(s) URL of a publicly reachable HTML page"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| url* | string | absolute http(s) URL of a publicly reachable HTML page |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "absolute http(s) URL of a publicly reachable HTML page"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| url* | string | absolute http(s) URL to render to PDF |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "absolute http(s) URL to render to PDF"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| url* | string | absolute http(s) URL of a publicly reachable page |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "absolute http(s) URL of a publicly reachable page"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| url* | string | absolute http(s) URL to screenshot |
| width | integer | viewport width in pixels (default 1280) |
| fullPage | boolean | capture the full scrollable page (default: viewport only) |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "absolute http(s) URL to screenshot"
},
"width": {
"type": "integer",
"description": "viewport width in pixels (default 1280)"
},
"fullPage": {
"type": "boolean",
"description": "capture the full scrollable page (default: viewport only)"
}
}
}