- name
- web-fetch
- description
- Fetch a known URL and return the page as markdown, plain text, raw HTML, or a downloaded image file using the local fetch.js helper. Use this whenever the user gives or implies a specific URL and wants you to retrieve, inspect, quote, summarize, convert, or save that page or asset. Prefer this skill over web-search when discovery is not needed, including for docs pages, blog posts, raw HTML inspection, and direct image downloads.
- compatibility
- opencode
- metadata
- runtime
- node
- transport
- fetch
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 markdownnode ./fetch.js --url "https://example.com/page" --format text --timeout 20node ./fetch.js --url "https://example.com/page" --format htmlnode ./fetch.js --url "https://example.com/logo.png" --output /tmp/logo.pngHow 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