web_fetch
Fetch a URL and return clean, readable content in Markdown, with page boilerplate stripped. Supports JavaScript rendering for single-page apps and term-based filtering.
Instructions
Fetch a URL and return clean, readable content — Markdown by default (structure preserved: headings, lists, links, code, tables), with page boilerplate (nav/footer/cookie bars) stripped via readability extraction. Far fewer tokens than a raw text dump. format='text' for plain text, 'html' for raw HTML (raw_html=true is an alias). Static HTTP fetch by default; render=true loads the page in headless Chromium so client-rendered/SPA content is captured (runs all JS, then extracts) — pass project to render a page behind that project's login (host fetch tools can't). contains=[words] only returns the content if the page contains the term(s) (contains_mode any|all), else omits it to save tokens. save=true (or save_path) writes the full content to disk and returns saved_path. TLS verified by default (verify_ssl=false for dev certs).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to fetch | |
| save | No | Write the full (un-truncated) content to data/fetches/ and return saved_path (default: false). | |
| format | No | Output shape (default: markdown). markdown = readable structured Markdown; text = readable plain text; html = raw HTML. | |
| render | No | Load in headless Chromium and run JS before extracting (default: false). Use for client-rendered/SPA pages where a static fetch returns little. Slower than static. | |
| project | No | With render=true, load the page in this project's authenticated context — read pages behind a login. | |
| contains | No | Only return content if the page contains these term(s) (case-insensitive). Otherwise content is omitted (matched=false) to save tokens. | |
| raw_html | No | Alias for format='html' (default: false). | |
| readable | No | Extract main content, dropping nav/footer/boilerplate (default: true). false = whole-page dump. Ignored for format=html. | |
| save_path | No | Explicit file path to save to (implies save=true). | |
| max_length | No | Max returned content length in characters (default: 50000). Saved files are never truncated. | |
| verify_ssl | No | Verify TLS certificates (default: true). Set false for self-signed certs on local/dev servers. | |
| contains_mode | No | Match if ANY term is present (default) or require ALL. |