Hydrafetch
by hydrafetch.com · remote · no sign-in to list tools · v1.0.0 · published by com.hydrafetch
Turn any URL into clean Markdown and structured data. Scrape, crawl, search and extract.
14 tools: 9 change things and 5 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things9Claude Code: ask: see these tools
- Only reads5Claude Code: allow: see these tools
1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http web https://api.hydrafetch.com/mcpFindings
Matches of fixed checks, with the text they matched.
- Warnscreenshot
The server marks "screenshot" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true}; The name "screenshot" says "screenshot": a word for reading.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
14 tools
Changes things 9Claude Code: ask
batchScrape a list of URLs you already have, such as pages found with map.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Scrape a list of URLs you already have, such as pages found with map. Waits for the batch to finish and returns the first page of results in the same call, so a short list needs one call; read further pages, or a batch still running, with batch_status. Each URL scraped costs 1 credit.
Annotations the server declares
- readOnlyHint: false
- openWorldHint: true
- destructiveHint: false
brandA company's brand from its domain: logos for light and dark backgrounds, its colours, name, description and social profiles.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it A company's brand from its domain: logos for light and dark backgrounds, its colours, name, description and social profiles. Use it to answer what a company is or how it presents itself.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
- destructiveHint: false
crawlDiscover and scrape the pages of a website as one background job, following its links from a starting URL.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Discover and scrape the pages of a website as one background job, following its links from a starting URL. Returns a crawl id straight away; read progress and results with crawl_status. Each page scraped costs 1 credit, so set limit to what you need.
Annotations the server declares
- readOnlyHint: false
- openWorldHint: true
- destructiveHint: false
extractPull specific fields out of one or more pages as JSON, shaped by a JSON schema or described in a prompt.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Pull specific fields out of one or more pages as JSON, shaped by a JSON schema or described in a prompt. Use it when you need values such as prices, names or dates rather than the whole page text.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
- destructiveHint: false
feedbackTell Hydrafetch whether an earlier result was accurate.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Tell Hydrafetch whether an earlier result was accurate. Use it after a scrape, search or other call returns missing, wrong or blocked content, so it gets looked at; a good rating is welcome too. Pass the requestId from that call's usage block, or the URL it read.
Annotations the server declares
- readOnlyHint: false
- openWorldHint: false
- destructiveHint: false
imagesHarvest a page's images with their metadata, without rendering it.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Harvest a page's images with their metadata, without rendering it. Cheaper than a screenshot and returns the source images rather than a picture of the page.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
- destructiveHint: false
logoA company's logo as a directly embeddable image URL, chosen for the background you name.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it A company's logo as a directly embeddable image URL, chosen for the background you name. Use this rather than brand when the mark is all you need: it costs a fifth as much and returns one asset instead of the whole record.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
- destructiveHint: false
screenshotRender a page in a real browser and capture a PNG, returning its public URL.1 finding
Why it is in this group
- The name "screenshot" says "screenshot": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
Findings
- Warn
The server marks "screenshot" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true}; The name "screenshot" says "screenshot": a word for reading.
Description, as the server wrote it Render a page in a real browser and capture a PNG, returning its public URL. Use when the question is what the page looks like rather than what it says.
Annotations the server declares
- readOnlyHint: false
- openWorldHint: true
- destructiveHint: false
styleguideA site's design tokens read from computed styles in a real browser: colours by role with contrast ratios, the dark theme colours when the site has one, the type scale, corner radiu…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it A site's design tokens read from computed styles in a real browser: colours by role with contrast ratios, the dark theme colours when the site has one, the type scale, corner radius and button styling, how panels, the header bar and panel titles are drawn, plus ready-made CSS, Tailwind and shadcn/ui stylesheets. Values defined through CSS variables come back resolved to the hex actually painted. To recreate how a site looks rather than only its tokens, take a screenshot of the page too.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
- destructiveHint: false
Only reads 5Claude Code: allow
batch_statusRead a batch started with batch: its progress, and one page of results in the order the URLs were sent.No findings
Why it is in this group
- The name "batch_status" says "status": a word for reading.
Description, as the server wrote it Read a batch started with batch: its progress, and one page of results in the order the URLs were sent. When nextOffset is not null, pass it as offset to read the next page of results.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
- destructiveHint: false
crawl_statusRead a crawl started with crawl: its progress, and one page of the scraped results.No findings
Why it is in this group
- The name "crawl_status" says "status": a word for reading.
Description, as the server wrote it Read a crawl started with crawl: its progress, and one page of the scraped results. When nextOffset is not null, pass it as offset to read the next page of results.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
- destructiveHint: false
mapList the URLs on a website, found through its sitemap and links, without fetching their content.No findings
Why it is in this group
- The description's first verb is "list": a word for reading.
Description, as the server wrote it List the URLs on a website, found through its sitemap and links, without fetching their content. Use it to see which pages exist before choosing which to scrape.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
- destructiveHint: false
scrapeFetch one web page and return its main content as clean markdown, with optional HTML, links or structured data.No findings
Why it is in this group
- The description's first verb is "fetch": a word for reading.
Description, as the server wrote it Fetch one web page and return its main content as clean markdown, with optional HTML, links or structured data. Use it to read a page whose URL you already have. For many pages of one site use crawl; for a list of URLs use batch.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
- destructiveHint: false
searchSearch the web and return ranked results: title, url and snippet.No findings
Why it is in this group
- The name "search" says "search": a word for reading.
Description, as the server wrote it Search the web and return ranked results: title, url and snippet. Set scrapeResults to also fetch each result as markdown, at 1 extra credit per page.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
- destructiveHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http web https://api.hydrafetch.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__web__scrape",
"mcp__web__map",
"mcp__web__crawl_status",
"mcp__web__batch_status",
"mcp__web__search"
],
"ask": [
"mcp__web__crawl",
"mcp__web__batch",
"mcp__web__brand",
"mcp__web__logo",
"mcp__web__extract",
"mcp__web__styleguide",
"mcp__web__screenshot",
"mcp__web__images",
"mcp__web__feedback"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as web. Review it before you use it.