Ask before you scrape: is a site open, may I fetch this URL, and how do I extract a page. No key.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Does robots.txt allow fetching this exact URL? Fetches the live robots.txt and applies the longest-match rule for a user agent (default: * plus GPTBot, ClaudeBot, Google-Extended, CCBot, PerplexityBot). Returns allowed or not, the rule that decided it, and any crawl delay. A courtesy check, not a legal opinion.
The full URL you want to fetch
optional, e.g. GPTBot
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Does robots.txt allow fetching this exact URL? Fetches the live robots.txt and applies the longest-match rule for a user agent (default: * plus GPTBot, ClaudeBot, Google-Extended, CCBot, PerplexityBot). Returns allowed or not, the rule that decided it, and any crawl delay. A courtesy check, not a legal opinion.
| Argument | Type | Description |
|---|---|---|
| url* | string | The full URL you want to fetch |
| user_agent | string | optional, e.g. GPTBot |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "The full URL you want to fetch"
},
"user_agent": {
"type": "string",
"description": "optional, e.g. GPTBot"
}
}
}Can I scrape this site, and how? Returns a verdict (open, guarded, hostile, blocked), a hostility score, a recommended approach with steps and risks, bot protections, robots.txt and AI-crawler policy, machine-readable surfaces (sitemap, llms.txt, JSON-LD), and eu_ai_training: the signals the EDPB draft Guidelines 03/2026 on web scraping for generative AI count against collecting personal data (robots.txt, ai.txt, CAPTCHAs, login walls), as none, some or strong. Signals, not legal advice. Uses a weekly-probed dataset of several hundred sites; for any other domain it probes live from a datacenter IP.
| Argument | Type | Description |
|---|---|---|
| domain* | string | A domain such as reddit.com |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "A domain such as reddit.com"
}
}
}What should I build with this site, and how? Give a domain and, optionally, a goal in plain words (for example "price alerts", "sales leads", "new jobs", "change log", "knowledge base"). Returns the best-matching workflow for that site: what it does, its cadence, a trigger, collect, shape, store, act pipeline, the fields to keep, and step-by-step build recipes for n8n, Make, Zapier and Apify (or just one with platform). Workflows marked found_on_this_site come from what the weekly probe saw on the site itself. Also returns the other workflows, the golden data, and the guardrails.
| Argument | Type | Description |
|---|---|---|
| goal | string | optional, what you want to achieve |
| domain* | string | A domain such as amazon.com |
| platform | string | optional, only return this platform (n8n also returns n8n_workflow, an importable file):'s recipe |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"goal": {
"type": "string",
"description": "optional, what you want to achieve"
},
"domain": {
"type": "string",
"description": "A domain such as amazon.com"
},
"platform": {
"enum": [
"n8n",
"make",
"zapier",
"apify"
],
"type": "string",
"description": "optional, only return this platform (n8n also returns n8n_workflow, an importable file):'s recipe"
}
}
}List the sites in the dataset, optionally by category or verdict. Use it to find easy targets or to see what is covered.
| Argument | Type | Description |
|---|---|---|
| limit | integer | default 50, max 200 |
| verdict | string | |
| category | string | e.g. shop, jobs, news, property, travel, gov |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"description": "default 50, max 200"
},
"verdict": {
"enum": [
"open",
"guarded",
"hostile",
"blocked"
],
"type": "string"
},
"category": {
"type": "string",
"description": "e.g. shop, jobs, news, property, travel, gov"
}
}
}Find sites in the dataset by a word: a name, host, category (jobs, shop, news, gov), country or verdict. Use it to discover what is covered before calling check_site.
| Argument | Type | Description |
|---|---|---|
| limit | integer | default 25, max 100 |
| query* | string |
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"description": "default 25, max 100"
},
"query": {
"type": "string"
}
}
}Headline numbers across the dataset: verdict mix, how many sites block AI crawlers (and which), protection vendors, by category and country.
No arguments.
{
"type": "object",
"properties": {}
}Draw a page's anatomy as an Excalidraw diagram: its regions, the ranked ways to get its data, proof rows, the best route and what the page is made of. Returns a download link for the .excalidraw file (give it to the user; it opens at excalidraw.com or in Obsidian) and a file_name. With include_scene, also the scene itself (a few hundred KB).
| Argument | Type | Description |
|---|---|---|
| url* | string | Full page URL, e.g. https://example.com/products |
| include_scene | boolean | also return the full Excalidraw scene JSON (large). Default false: just the download link |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Full page URL, e.g. https://example.com/products"
},
"include_scene": {
"type": "boolean",
"description": "also return the full Excalidraw scene JSON (large). Default false: just the download link"
}
}
}How do I extract the data from THIS page? Fetches one public page and returns a ranked extraction plan: embedded JSON, JSON-LD, repeated records with CSS selectors and field names, tables, feeds, hidden API calls. Each source has a reliability, proof rows pulled from the real page, and the plan notes pagination and blockers. Set include_code for a starter Python script. Works on the raw HTML only, so JavaScript-built pages report a blocker instead of data. Use check_site first to learn whether the site allows scraping at all.
| Argument | Type | Description |
|---|---|---|
| url* | string | Full page URL, e.g. https://example.com/products |
| include_code | boolean | also return a starter Python script |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Full page URL, e.g. https://example.com/products"
},
"include_code": {
"type": "boolean",
"description": "also return a starter Python script"
}
}
}