fetchgate
Fetch any URL as clean Markdown or metadata, and buy digital goods via x402 — for AI agents.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"fetchgate": {
"url": "https://fetchgate.dev/mcp"
}
}
}Remote endpoints
https://fetchgate.dev/mcpstreamable-httpWhat it can do
Tool inventory
Tools (10)
🟢read_url(url)
Fetch a URL server-side and return its main content as clean Markdown, with scripts/styles/nav/ads/boilerplate stripped out. Wraps GET /v1/read. Free tier: 30 calls/day per caller; priced at $0.002/call via x402 once that's exhausted (see get_purchase_info for how the x402 flow works). Only http:// and https:// URLs are accepted; private/internal-network hosts are rejected.
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Absolute http(s) URL to fetch."
}
},
"required": [
"url"
],
"additionalProperties": false
}🟢get_metadata(url)
Fetch a URL server-side and return structured metadata: title, description, canonical URL, OpenGraph/Twitter card fields, favicon URL, language, and published/modified timestamps when present. Wraps GET /v1/meta. Same free tier as read_url; priced at $0.001/call via x402 once exhausted.
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Absolute http(s) URL to fetch."
}
},
"required": [
"url"
],
"additionalProperties": false
}🟢list_products
List Fetchgate's digital-goods catalog: id, name, description, priceUsd, currency, file format, size, sha256, and a walletless humanUrl checkout link for each product for sale. Wraps GET /v1/products. Free, no rate limit, no payment required just to browse.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢get_purchase_info(product_id)
Look up a product by id (from list_products) and explain exactly how to buy it: its price, and the x402 purchase flow step by step (the 402 challenge shape, the PAYMENT-SIGNATURE header, and the signed download URL you get back on success). Does not take payment itself — informational only, mirroring the pre-payment leg of GET /v1/buy/:id.
Input Schema
{
"type": "object",
"properties": {
"product_id": {
"type": "string",
"description": "Product id, from list_products' `id` field."
}
},
"required": [
"product_id"
],
"additionalProperties": false
}🟢get_agent_census(category)
Return the Agent Web Crawler Census: every named bot observed crawling a live, publicly-listed x402 + MCP endpoint over a 24-hour window, each with a case-insensitive regex `matcher` and a behavioural `category` (liveness-monitor, directory-crawler, price-scraper, security-research, ai-training, ...) so you can classify your own access log. Observed first-hand, not aggregated from third-party bot lists. Notable finding: of the named agent-web crawlers in the census, zero have ever presented a payment, and several declare that in their own User-Agent string. Wraps GET /v1/agent-census.json. Free, unmetered, no payment required. CC BY 4.0.
Input Schema
{
"type": "object",
"properties": {
"category": {
"type": "string",
"description": "Optional. Return only agents in this behavioural category, e.g. \"price-scraper\" or \"liveness-monitor\". Omit for the full census."
}
},
"additionalProperties": false
}🟢scan_for_prompt_injection(url, text)
Check untrusted content BEFORE acting on it. Give a `url` to fetch and scan a web page (its visible text and, separately, text hidden in HTML comments, alt/title/aria attributes and meta tags), or give `text` to scan a tool result, retrieved document or message you already have. Runs 120 detection rules covering instruction override, tool hijacking, data exfiltration, system-prompt extraction, jailbreak framing and encoding tricks (zero-width and Unicode-tag smuggling, homoglyphs, base64). Returns a 0-100 risk score, a recommended action (block / review / flag / none) and each match with its evidence. Heuristic: a clean result means nothing obvious tripped, not that the content is safe. Wraps /v1/scan. Same free daily tier as read_url; $0.003/call via x402 after that.
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Absolute http(s) URL of a page to fetch and scan."
},
"text": {
"type": "string",
"description": "Text to scan directly (use instead of url)."
}
},
"additionalProperties": false
}🟢search_x402_services(query, limit, max_price_usd, network)
Search for a pay-per-call (x402) API that does what you need. Unlike a raw directory, results are limited to endpoints that answered a real x402 payment challenge AND had at least 5 settled calls from at least 2 distinct payers in the last 30 days, so dead, never-bought and template-farm listings are left out. Each result has the endpoint URL, method, price in USD, networks, 30-day calls and unique payers, and a flag when the payer count looks farmed. Use it when you need a paid API (search, scraping, enrichment, LLM, market data…) and want one that demonstrably works. Wraps GET /v1/x402/search. Same free daily tier as read_url; $0.005/call via x402 after that.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "What the API should do, in a few words, e.g. 'web search' or 'email verification'."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25,
"description": "Results to return (default 10)."
},
"max_price_usd": {
"type": "number",
"description": "Only return endpoints priced at or below this, per call."
},
"network": {
"type": "string",
"description": "Payment network: base, solana, polygon, arbitrum, optimism, or a CAIP-2 id."
}
},
"required": [
"query"
],
"additionalProperties": false
}🟢check_x402_endpoint(url)
Decide whether an unfamiliar pay-per-call (x402) endpoint is worth paying. Sends one unpaid GET to read its live payment challenge (format, price, network, signing domain), then adds its settled-call and unique-payer history, whether its live price matches its listed price, and its domain's reputation (template farm or not, share of its endpoints that answer). Returns a verdict — ok, caution, avoid or unknown — with the reasons. Nothing is paid. Use before an agent sends money to an endpoint it has not used before. Wraps GET /v1/x402/check. Same free daily tier as read_url; $0.01/call via x402 after that.
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "The x402 endpoint URL to check."
}
},
"required": [
"url"
],
"additionalProperties": false
}🟢check_base_token(address)
Screen a token contract on Base before an agent buys it. Reads the contract (ERC-20 metadata, owner, upgradeable proxy, and mint / pause / blacklist / fee selectors in its bytecode) and its DEX liquidity (WETH and USDC held by its Uniswap and Aerodrome pools, read on-chain). Returns a verdict — ok, caution, avoid or unknown — with the reasons. A heuristic screen: it does not simulate a sell, read tax rates or check pool age. Wraps GET /v1/token/check. Same free daily tier as read_url; $0.01/call via x402 after that.
Input Schema
{
"type": "object",
"properties": {
"address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "The token contract address on Base."
}
},
"required": [
"address"
],
"additionalProperties": false
}🟢scan_mcp_server(url)
Connect to a remote Streamable HTTP MCP server, fetch its tools/list (sends only initialize, notifications/initialized and tools/list — never tools/call) and scan every tool name, description, parameter description and the server's initialize `instructions` string for tool-poisoning patterns: hidden-instruction markers, invisible Unicode, directives aimed at the model, credential/secret references, exfiltration shapes and instructions about other tools. Returns per-tool findings with severity, excerpt and a score band. Use it before installing or trusting a third-party server. Heuristic: a clean result means nothing obvious in what the server declares about itself, not that it is safe. Wraps GET /v1/mcp-scan. Free, rate-limited per caller; private/internal-network hosts are rejected.
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The MCP server's Streamable HTTP endpoint URL, e.g. https://example.com/mcp"
}
},
"required": [
"url"
],
"additionalProperties": false
}Community
Evidence