Read URL as Markdown
read_urlFetch any web page and get clean, LLM-ready Markdown with full content, automatic JS rendering, and honest errors when access is blocked.
Instructions
Fetch a web page and return its content as clean, LLM-ready Markdown. Full content by default (no truncation). Handles HTML, plain text, Markdown, and JSON responses. JavaScript-heavy pages are rendered automatically in a real browser when the static HTML is an empty SPA shell. Returns an honest typed error when the site blocks access or the content cannot be read — it never silently returns partial or fake content.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| raw | No | If true, return the raw page HTML instead of extracted Markdown. Default: false. | |
| url | Yes | The URL to fetch (http or https). | |
| render | No | JS rendering in a real browser: true = always render, false = never render. Default: automatic — renders only when the static HTML turns out to be an empty SPA shell. | |
| headers | No | Extra HTTP headers to send, e.g. an Authorization bearer token or a Cookie for pages behind a login. Example: {"Authorization": "Bearer ...", "Cookie": "session=..."}. | |
| max_length | No | Maximum number of characters to return. Default 0 = unlimited (full page). If output is truncated, the response says so and tells you how to continue. | |
| start_index | No | Character offset to start from, for paging through a long page. Default: 0. |