OpenRouter for the tool layer. Web search, scraping, document parsing, image generation, and code sandboxes behind a single endpoint — routed across providers with automatic failover.
# Same request. You pick the dimension; we pick the provider. curl https://api.route.tools/v1/tools/search \ -H "Authorization: Bearer rt_live_..." \ -d '{ "query": "cloudflare durable objects pricing", "routing": { "sort": "price" } # or "latency" or "quality" }'
Search APIs vary 30× in price for near-identical results. Send each call to the cheapest provider that meets the bar — automatically.
Scraper blocked? Provider down? Rate-limited? The call retries through the next provider before your agent ever notices. No more single-vendor risk.
Normalized request/response per category. Prepaid credits across every provider. Swap providers without touching your code.
| Category | Price range | Per | Providers |
|---|---|---|---|
| Web search | $1.20 – $8.40 | 1k searches | Serper · Brave Search · You.com · Exa |
| Web scrape | $0.36 – $1.92 | 1k pages | Jina Reader · Spider · Firecrawl · Browserbase Fetch |
| Doc parsing | $1.50 – $2.40 | 1k pages | Mistral OCR · LlamaParse · Reducto |
| Image gen | $0.03 – $0.06 | image | fal.ai · Replicate · OpenAI Images |
| Code sandbox | $0.0000 – $0.0000 | vCPU-second | E2B · Daytona · Modal |
Pay only for what you use. Prepaid credits, $2 free on signup.
# npm install route-tools import { RouteTools } from 'route-tools'; const rt = new RouteTools({ apiKey: process.env.ROUTE_TOOLS_API_KEY }); const { result, provider, usage } = await rt.search({ query: 'best vector databases 2026', routing: { sort: 'price' }, });
# Add the routed toolset to any MCP client (Claude, Cursor, ...) { "mcpServers": { "route-tools": { "url": "https://api.route.tools/mcp", "headers": { "Authorization": "Bearer rt_live_..." } } } }