Fetch Router

Registre officiel IA et agents

Verified web fetch for agents: detects blocks and empty JS pages, falls back, bills only on success.

Que pouvez-vous faire avec Fetch Router ?

  • fetch_page (url, mode?, expect_text?, expect_selector?, max_cost?): returns markdown (default) or HTML, plus which route delivered it and what was tried. max_cost caps credits: 1 = plain HTTP only, 5 (default) allows a browser. If the page can't b...
  • domain_reliability (domain): pass rate per route for a site over the last 30 days, from real verified fetches. Free, no key needed.

Installation

Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).

Remote (streamable-http)
Claude Code
claude mcp add --transport http fetch-router 'https://fetchrouter.dev/mcp' --header 'X-API-Key: <Fetch Router API key (free, 500 credits): https://fetchrouter.dev/#signup>'
Configuration JSON (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "fetch-router": {
            "type": "http",
            "url": "https://fetchrouter.dev/mcp",
            "headers": {
                "X-API-Key": "<Fetch Router API key (free, 500 credits): https://fetchrouter.dev/#signup>"
            }
        }
    }
}

Documentation

Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.

Sommaire
  1. fetchrouter-mcp
  2. When to use it
  3. When not to use it
  4. Setup
  5. Tools
  6. How well does it work?
  7. Pricing
  8. Environment (stdio)
  9. Development

fetchrouter-mcp

MCP server for Fetch Router: web fetch for AI agents that only bills when the page actually loaded.

Agents often get a 200 OK that is really a Cloudflare challenge, a DataDome block or an empty React shell, and then summarise the error page. Fetch Router checks every page for HTTP errors, block and challenge pages (Cloudflare, DataDome, PerimeterX, Akamai, Imperva, Kasada…), login walls, empty JavaScript shells and text you expect to see. If a check fails it retries through another route, such as a headless browser. Failed fetches cost nothing.

When to use it

  • Your agent reads pages it didn't choose: search results, links from users, sites you don't control.
  • You need to know whether a page really loaded, not just that the request returned 200.
  • Some targets are single-page apps that need a browser, and you don't want to run Playwright yourself.
  • You want to pay per page that works, not per request.

When not to use it

  • Crawling a whole site, mapping links or search. Use a crawler (Firecrawl, Crawl4AI, Apify). Fetch Router does one URL at a time.
  • Pages behind a login or paywall. Not supported, by policy.
  • One or two sites you know well. A plain fetch or your own Playwright script is cheaper.
  • Heavily protected retail and travel sites today. Premium unblocking routes aren't live for customer traffic yet. See the benchmark for what passes.

Setup

Get a free key (500 credits, no card) at https://fetchrouter.dev/#signup.

Remote (no install). Streamable HTTP at https://fetchrouter.dev/mcp, with your key in a header:

claude mcp add --transport http fetchrouter https://fetchrouter.dev/mcp --header "Authorization: Bearer fr_..."

Other clients: URL https://fetchrouter.dev/mcp, header Authorization: Bearer fr_... (or X-API-Key: fr_...).

Claude Code plugin (MCP server plus a verified-fetch skill; asks for your key once and stores it securely):

claude plugin marketplace add JonnoGit/fetchrouter-mcp
claude plugin install fetchrouter@fetchrouter

Local (stdio via npx).

{
  "mcpServers": {
    "fetchrouter": {
      "command": "npx",
      "args": ["-y", "fetchrouter-mcp"],
      "env": { "FETCHROUTER_API_KEY": "fr_..." }
    }
  }
}

Claude Code: claude mcp add fetchrouter -e FETCHROUTER_API_KEY=fr_... -- npx -y fetchrouter-mcp

Tools

  • fetch_page (url, mode?, expect_text?, expect_selector?, max_cost?): returns markdown (default) or HTML, plus which route delivered it and what was tried. max_cost caps credits: 1 = plain HTTP only, 5 (default) allows a browser. If the page can't be loaded, the error says why (blocked:cloudflare, http_404, expect_text_missing…) and nothing is billed.
  • domain_reliability (domain): pass rate per route for a site over the last 30 days, from real verified fetches. Free, no key needed.

How well does it work?

A fixed list of 166 public pages in six site types is fetched every night with plain HTTP and with a headless browser, from a datacenter IP. Results, method and CSV: https://fetchrouter.dev/benchmark

Pricing

1 credit ($0.001) per static page, 5 per browser-rendered page, failures free. Details: https://fetchrouter.dev/#pricing

Environment (stdio)

VariableDefault
FETCHROUTER_API_KEYrequired
FETCHROUTER_BASE_URLhttps://fetchrouter.dev
FETCHROUTER_MAX_CHARS60000 (longer pages are truncated)

Development

npm install
npm run build
FETCHROUTER_API_KEY=fr_... node dist/index.js

The tool definitions live in src/tools.ts and are shared with the hosted endpoint at https://fetchrouter.dev/mcp.

MIT licensed. Operated by One + Done LLC. Contact: hello@fetchrouter.dev

Questions fréquentes

Qu'est-ce que Fetch Router ?

Verified web fetch for agents: detects blocks and empty JS pages, falls back, bills only on success.

Comment installer Fetch Router ?

Il fonctionne comme serveur distant. Dans Claude Code : claude mcp add --transport http fetch-router 'https://fetchrouter.dev/mcp' --header 'X-API-Key: <Fetch Router API key (free, 500 credits): https://fetchrouter.dev/#signup>'. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.

Faut-il une clé API pour Fetch Router ?

Oui. Il attend X-API-Key, à renseigner dans sa configuration.

Fetch Router est-il open source ?

Oui. Son code est sur GitHub sous licence MIT.

Qui maintient Fetch Router ?

Il est publié par JonnoGit. AI.tn le référence sans le maintenir ni le recommander.

Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.