Web Fetch
Use this skill when the target URL is already known and the job is retrieval, not search.
Common cases:
- fetch a documentation page the user already linked
- pull an article into readable markdown or plain text before summarizing it
- inspect raw HTML to debug markup, metadata, or page structure
- download a remote image to a local path for later inspection or processing
If the user needs help finding the right page first, use web-search before this skill.
Command
Run:
node ./fetch.js --url "https://example.com"
Optional flags:
--format markdown|text|html--timeout <seconds>--output <path>for image responses
Choose the right format
Default to markdown unless the user clearly wants something else.
markdown: best for readable docs, articles, and summarizationtext: best when the user wants the cleanest plain-text extractionhtml: best when inspecting source markup, metadata, links, embeds, or page structure--output <path>: use when the response is an image and you want a stable saved file path instead of a temp file
Examples:
node ./fetch.js --url "https://example.com/docs" --format markdown
node ./fetch.js --url "https://example.com/page" --format text --timeout 20
node ./fetch.js --url "https://example.com/page" --format html
node ./fetch.js --url "https://example.com/logo.png" --output /tmp/logo.png
How to work with the result
The CLI prints a <web_fetch> block.
For text-like responses it includes:
titleurlmimeformatcontent
For image responses it includes:
titleurlmimeimage
After fetching:
- Read the returned fields carefully.
- Use only the parts relevant to the user's request.
- Summarize or quote concise excerpts instead of dumping the whole page unless the user asked for the full content.
- If you fetched HTML, explain notable structure or metadata rather than pasting large raw blobs unless needed.
- If you downloaded an image, tell the user the saved file path.
Behavior and limits
Keep these in mind while using the tool:
http://URLs are tried ashttps://first, then retried as plain HTTP if needed.- Default timeout is 30 seconds; maximum is 120 seconds.
- Responses larger than 5MB are rejected.
- Browser-like headers are used, with a retry path for some Cloudflare 403 challenge responses.
- SVG is treated as text, not as a binary image attachment.
Failure handling
If the fetch fails:
- verify the URL is complete and starts with
http://orhttps:// - retry with a different format only if the user's goal changed
- if the page is too large, blocked, or times out, tell the user plainly and suggest a narrower target URL or an alternate source