fetchira

Fetchira
Web search, page reading, deep research and image generation through one router. Use the CLI or connect your agent through MCP. Bring an API key or a supported web session; Fetchira routes requests across your configured accounts and providers.

Fetchira covers 24 providers, 21 through APIs and 3 through browser sessions, behind six MCP tools. Connected one by one, the 17 providers that publish an official MCP server add about 95k tokens of tool definitions to every request, a median of 3.7k per server; the whole Fetchira tool list is about 2.7k. One router picks the account with quota left, fails over on errors and keeps every provider's limit in one place. Provider names and logos belong to their respective owners.
Start locally
Install and open the dashboard with one command (macOS or Linux, needs Node.js):
npx -y fetchiraOr install on macOS with Homebrew:
brew install ImmuneFOMO/tap/fetchiraOn Linux or macOS without Homebrew:
curl -fsSL https://raw.githubusercontent.com/ImmuneFOMO/fetchira/main/install.sh | shSee installation for Linux arm64, building from source and PATH setup.
Add a provider and make a request:
fetchira add serper --key 'YOUR_SERPER_KEY'
fetchira search "latest Rust release"
fetchira read "https://example.com"Get a Serper key at serper.dev, or run fetchira providers to choose
another provider. Each provider has its own plan and quota; paid features can consume a
paid balance. For browser login instead of an API key, run fetchira add gemini_web.
MCP is optional. Run fetchira setup to choose local accounts or an existing hosted server.
For an agent, fetchira install offers CLI only, MCP, or MCP with CLI fallback, then installs
the matching skill in your selected agents. Restart the agent after installation.
fetchira ui opens the local dashboard.

Related MCP server: DeepSeek Web Search MCP
Choose a guide
I want to… | Guide |
Install, connect an agent, or choose a skill | |
Search, research, generate images, or continue a session from a shell | |
Manage accounts, quotas, proxies, or troubleshoot a failure | |
Share one private server through CLI or MCP | |
Build, test, contribute, or release |
Hosted
To use an existing server, get its URL and API key from the administrator. Run
fetchira setup and choose Connect to a server to verify access before saving.
For scripted setup, save the connection and check it:
fetchira remote set https://fetchira.example.com/mcp --key 'fk_live_...'
fetchira remote checkCLI and MCP both use the configured server; generated images and PDFs are saved on your computer. Laptop file attachments require local mode through either interface. See hosted deployment to run your own server.
Available Tools
6 toolsbrowserB
Load a URL in a headless browser (hyperbrowser, browserless, steel) and return the page as markdown.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to load in a headless browser. | |
| actions | No | Reserved for multi-step automation; ignored in v1. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden; it discloses headless-browser execution and markdown output, which is useful context. It omits operational details such as auth/rate limits, JavaScript/wait behavior, timeouts, and failure handling, leaving clear gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler. The provider names add useful context without unnecessary bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple URL-fetch tool with full schema coverage, the description gives enough to invoke it correctly: the required url and markdown output are clear. It could be more complete about behavior without annotations, but the remaining gaps are modest.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so url and the ignored actions parameter are already documented in the schema. The description adds no parameter-level meaning beyond the high-level operation, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: loads a URL in a headless browser and returns the page as markdown. It is clear what the tool does, but it does not explicitly distinguish itself from siblings such as read or search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance beyond the implied operation of loading a URL. It does not explain how this differs from read or search, nor when a headless-browser fetch is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_imageA
Generate or edit an image via a logged-in web session. For a new image pass prompt; in local stdio mode, edit an existing image by passing its absolute path in file and describing the changes. To continue editing a ChatGPT-generated image in the same chat, pass the returned session back. Local stdio and the local hosted bridge save the result and return its path; use path to choose the local destination. Direct hosted HTTP returns inline artifacts without writing server paths.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Absolute paths of images/files to attach (local stdio only, not hosted HTTP). Use this to edit an existing/generated image. | |
| path | No | Local destination for stdio or the local hosted bridge. With a path, return the saved path without inline bytes; otherwise save under the local Fetchira home and include bytes. Direct hosted HTTP returns inline artifacts and never writes caller-supplied server paths. | |
| prompt | Yes | What to draw, or how to edit the attached image. | |
| session | No | Resume a ChatGPT image conversation to edit its previous image. | |
| provider | No | Force a specific provider (gemini_web / grok_web generate in-process over HTTP; chatgpt_web drives the browser). Otherwise the priority order applies, with failover. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose non-obvious traits: an authenticated web session is required, persistence differs by transport (stdio and local bridge write a file and return a path; direct hosted HTTP returns inline artifacts and never writes paths), and a session token enables follow-up edits. It omits side-effect details such as quota consumption on the underlying provider accounts, rate limits, or latency, which keeps it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, and the remaining sentences each map to a distinct mode/parameter decision. A few clauses restate schema descriptions almost verbatim, which is minor redundancy rather than bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter tool whose behavior changes with transport, the description covers the mode split, the persistence model, and the return shape (path vs. inline artifacts) even though no output schema exists. What remains unstated is failure behavior and the provider/failover mechanism, so it is strong but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description goes further by explaining the interaction between parameters – `prompt` and `file` combine for an edit, `session` is the value returned by a prior call, and `path` only matters for the modes that persist locally. It does not explain `provider` selection or failover, which is left entirely to the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair and resource ('Generate or edit an image') plus the channel ('via a logged-in web session'), so an agent knows exactly what the tool does. It also distinguishes its own sub-modes (new vs. edit vs. continue-session), and none of the siblings (browser, read, search, usage, deep_research) overlap with it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing for each path: pass `prompt` for a new image, pass `file` in local stdio mode to edit, pass `session` to continue a ChatGPT image chat. It covers the conditions for using each parameter but never states a when-not-to-use case or what happens on failure, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deep_researchA
Deep research over multiple sources (parallel, exa, tavily, tinyfish, linkup, you, gemini_web, grok_web, chatgpt_web); may take minutes. gemini_web and chatgpt_web first return a research PLAN plus a session: pass that session with query "start" to run it, or with a revised request to replace the plan. gemini returns the finished report in the same call; chatgpt runs ~5-30 min after "start" — call again with the returned session to fetch the report (model is ignored there). Knobs: topic, recency, domains, depth ("deep" is slower/pricier). Provider-specific extras → call usage(provider=…).
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Absolute paths of local files/images to attach and ask about. Local stdio only; hosted HTTP rejects file inputs because it cannot access the caller's filesystem. Web providers only; defaults to grok_web when no `provider` is forced. | |
| mode | No | Provider-specific mode. grok: "auto"/"fast"/"expert"/"heavy" (search defaults to fast, deep_research to heavy then expert); keenable "realtime"/"pro"; nimble "standard". | |
| depth | No | Depth: "standard" (default) or "deep" — deep is slower and may spend a paid balance (exa deep-reasoning, parallel core processor, linkup/you deep effort, grok heavy). | |
| model | No | Web-provider model and/or thinking level. Call usage with that provider for available names and levels; omit to use its default. Ignored by the API providers. | |
| query | No | The search query (or a follow-up message when `session` is set). Optional only when polling a running deep-research `session` for its report. | |
| topic | No | Research niche: "web" (default), "news", or "academic" — steers to a fitting backend. | |
| domains | No | Restrict to these domains; prefix one with "-" to exclude it (e.g. ["nature.com","-reddit.com"]). | |
| recency | No | Recency filter: "day"/"week"/"month"/"year" or an ISO date (e.g. "2024-01-01"). | |
| session | No | Resume token from a previous web-provider result; continues that conversation on the same provider. Web providers only. | |
| provider | No | Force a specific provider instead of the priority order. | |
| max_results | No | Maximum number of results (default 5, capped at 20). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses the long runtime, the async polling pattern for chatgpt_web, the session lifecycle, and that model is ignored during chatgpt report polling. It adds substantial operational context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description front-loads purpose and timing, then explains session flow, then lists knobs. It is dense but every sentence carries operational detail; it could be more scannable with bullets, but it remains readable and appropriately sized for a complex tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter tool with no annotations and no output schema, the description covers the critical multi-step session lifecycle, timing expectations, provider-specific behavior, and key knobs. It leaves return-format minutiae to runtime behavior but explains the essential async patterns an agent must know.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning about the session/query relationship, the cost and speed tradeoff of depth='deep', and how provider-specific extras are discovered via usage. It goes beyond the structured parameter definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Deep research over multiple sources' and lists the providers it can use. It implicitly distinguishes from siblings like search through 'deep research' and 'may take minutes', but does not explicitly name an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the session workflow for gemini_web and chatgpt_web (pass the session with query 'start' or a revised request) and that chatgpt requires a follow-up call 5-30 minutes later. It does not explicitly say when to choose this over search or browser, or when not to use it, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
readA
Read a URL and return its main content as clean markdown; auto-escalates to a headless browser when the plain read comes back empty. Provider-specific extras via mode (crawl, structured extract, screenshot…) → call usage(provider=…) for exact params & example calls.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to read and return as clean markdown. | |
| mode | No | Provider-specific escape hatch: firecrawl "crawl"/"extract", tavily "extract", serper "scrape", steel "screenshot"/"pdf", jina "screenshot"/"links", linkup "js", scrapingant "browser", zenrows "js". Call usage(provider=…) for the exact set. | |
| provider | No | Force a specific provider instead of the priority order. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden and does disclose the key non-obvious behavior: silent auto-escalation to a headless browser when the plain read returns empty, plus a provider override that bypasses the default priority order. It omits failure semantics, timeouts, auth requirements, and any cost/latency implications of the browser escalation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action and output format before the edge cases. The pointer to usage(provider=…) replaces what would otherwise be a long enumeration of per-provider modes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter read tool with no output schema and no annotations, the description covers output shape, escalation behavior, and provider selection adequately. The remaining gap is sibling disambiguation against 'browser', which matters because the description itself invokes headless browsing as an internal fallback.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3 and the schema already documents url, mode, and provider. The description reinforces mode as a 'provider-specific escape hatch' and points to usage(provider=…) for the exact value set, which is helpful but largely duplicates the schema's own explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read a URL') plus the output form ('return its main content as clean markdown'), which is far more informative than the bare name 'read'. It does not differentiate itself from the overlapping 'browser' sibling or from 'search', so the reader must infer those boundaries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (read a known URL; escalate automatically when plain read is empty) and routes the agent to usage(provider=…) for provider extras. However, it never says when to pick this over the 'browser' tool or when 'search' is the better starting point, and no exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchA
Web search across quota-aware providers. API providers return ranked title/url/snippet results; web providers (gemini_web, grok_web, chatgpt_web) return a synthesized answer with sources and a session token for follow-up turns. For chatgpt_web this is a full chat turn with web search on by default — mode="chat" answers from the model alone. In local stdio mode, attach files with file to ask about them. Niche knobs: topic, recency, domains. Provider-specific extras (scholar/patents/places, structured extract…) → call usage(provider=…) for exact params & example calls.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Absolute paths of local files/images to attach and ask about. Local stdio only; hosted HTTP rejects file inputs because it cannot access the caller's filesystem. Web providers only; defaults to grok_web when no `provider` is forced. | |
| mode | No | Provider-specific mode. grok: "auto"/"fast"/"expert"/"heavy" (search defaults to fast, deep_research to heavy then expert); keenable "realtime"/"pro"; nimble "standard". | |
| model | No | Web-provider model and/or thinking level. Call usage with that provider for available names and levels; omit to use its default. Ignored by the API providers. | |
| query | No | The search query (or a follow-up message when `session` is set). Optional only when polling a running deep-research `session` for its report. | |
| topic | No | Research niche: "web" (default), "news", or "academic" — steers to a fitting backend. | |
| domains | No | Restrict to these domains; prefix one with "-" to exclude it (e.g. ["nature.com","-reddit.com"]). | |
| recency | No | Recency filter: "day"/"week"/"month"/"year" or an ISO date (e.g. "2024-01-01"). | |
| session | No | Resume token from a previous web-provider result; continues that conversation on the same provider. Web providers only. | |
| provider | No | Force a specific provider instead of the priority order. | |
| max_results | No | Maximum number of results (default 5, capped at 20). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden and does so: it discloses the two distinct return shapes, that web-provider results carry a `session` token for follow-up turns, that chatgpt_web performs a full chat turn with web search on by default, that hosted HTTP mode rejects `file` inputs due to filesystem access, and that providers are consulted in a priority order unless forced. These are non-obvious traits an agent could not infer from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then layered detail about result shapes, provider-specific behaviour, and where to look for the long tail. It is dense rather than verbose — every sentence carries information, though the parenthetical shorthand ('Niche knobs', 'structured extract…') is slightly cryptic on first read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Ten parameters, no annotations, and no output schema — the description compensates by explaining return shapes, session continuation, and the mode/model knobs it deliberately does not enumerate, delegating that to `usage`. Nothing an agent needs in order to call it correctly or interpret the response is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description still adds cross-parameter meaning the schema lacks — that a follow-up message goes in `query` when `session` is set, that `file` implicitly targets grok_web when no provider is forced, and that `topic` steers backend selection rather than just labelling a niche. It does repeat some schema text (recency, domains, max_results) without enrichment.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Web search') plus the scope ('across quota-aware providers'), and splits the tool's behaviour into two concrete result classes: ranked title/url/snippet results from API providers versus synthesized answers with sources from web providers. An agent can tell what it will get back without opening the schema, and the description points to `usage` for anything outside this tool's core remit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete conditional guidance: use `mode="chat"` on chatgpt_web to answer from the model alone, attach `file` only in local stdio mode, and call `usage(provider=…)` for provider-specific extras like scholar/patents/places. What is missing is routing against the siblings — nothing says when to prefer `deep_research` or `browser` over this tool, and there are no exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
usageA
Show remaining free quota per account and provider for the current period, plus each account's assigned proxy. For logged-in web sessions (grok/gemini/chatgpt) also includes live per-tier limits and the selectable model/mode catalog with thinking levels — a locked mode (e.g. grok Expert/Heavy on a lapsed sub) reads 0/0. Pass provider for that backend's full capability sheet — its niches, escape-hatch mode values, and ready-to-copy example calls.
| Name | Required | Description | Default |
|---|---|---|---|
| provider | No | A provider to get the full capability sheet for (niches, modes, example calls + live limits). Omit for the compact all-provider quota snapshot. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full disclosure burden and does well: it explains that locked modes (grok Expert/Heavy on a lapsed sub) read 0/0, which is genuine interpretation guidance for the output rather than a restatement of the name. It also distinguishes the richer logged-in-session payload (live per-tier limits, model/mode catalog, thinking levels) from the basic snapshot. It omits auth prerequisites and whether calling it has any cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and default behavior are front-loaded in the first clause, and the optional-parameter expansion follows in a clearly conditional second sentence. The em-dash-heavy phrasing and jargon like 'escape-hatch `mode` values' cost a little readability but no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-optional-parameter, read-oriented introspection tool with no annotations and no output schema, the description does the heavy lifting: it describes both return shapes and how to interpret a degenerate 0/0 result. Only ancillary facts an agent might want — auth state, whether quota numbers are cached or live — are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline would be 3, but the description goes further by unpacking what the `provider` value actually yields — niches, escape-hatch `mode` values, and ready-to-copy example calls — and by giving a concrete example (grok Expert/Heavy on a lapsed sub) that maps the enum to observable behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Show remaining free quota per account and provider for the current period') and then enumerates the exact contents of the response, including assigned proxies and per-tier limits. The scope is unambiguous and cannot be confused with any sibling tool (browser, read, search, create_image, deep_research).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent how to choose between the two invocation modes: pass `provider` for that backend's full capability sheet, omit it for the compact all-provider snapshot. What is missing is any guidance on when this tool is not appropriate or what to do if a provider isn't configured.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.1.0- First observed
browser - First observed
create_image - First observed
deep_research - First observed
read - First observed
search - First observed
usage
TDQS
Scored across 6 tools
Most tools target clearly different actions (search, deep_research, create_image, usage), but browser and read overlap heavily since both load a URL and return markdown. The read description's note that it auto-escalates to browser helps, but an agent could still reasonably pick either for a simple fetch.
All names are lowercase snake_case and readable, but conventions are mixed: bare verbs (read, search), bare nouns (browser, usage), a verb_noun (create_image), and a compound (deep_research). No single predictable pattern guides naming.
Six tools is well within a healthy range and each earns its place: fetching, searching, deep research, image generation, and quota inspection. No obvious filler or missing companion tool.
The surface covers the core domain well: URL fetch via read/browser, search, multi-source research, image generation/editing, and quota introspection. Minor gaps include no explicit batch/multi-URL crawl tool (only available via provider-specific modes) and no dedicated session or result management beyond opaque tokens.
Maintenance
Related MCP Connectors
Budget-aware AI agent research router with provider selection, validation, and automatic fallback.
23 live research tools, from web search to SEC filings. Each call bills the scraper it runs.
Web search for AI agents — one tool across 6 engines, routed to the cheapest + cached.
Fan out deep research across multiple AI providers, synthesize into one unified report.
Related MCP Servers
- AlicenseAqualityCmaintenanceProvides unified web search across multiple providers (Google, Tavily, DuckDuckGo, Brave) with automatic fallback, maximizing free API quota usage for AI workflows.122 npm7MIT
- AlicenseCqualityBmaintenanceEnables unified web search across multiple providers (AnySearch, SearXNG, Tavily) and deep research via DeepSeek's web_search_20250305 tool, with optional OpenRouter reranking for improved result ordering.22MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI clients to perform unified web searches across multiple search providers with automatic key rotation, failover, and circuit breaking, and to inspect provider status and capabilities.79 npm3MIT
- AlicenseNot gradedqualityBmaintenanceRead any web page and search the web for free. Routes each page across 28 web tools cheapest first (plain HTTP, Jina Reader, Chromium, stealth browsers) and checks it's the page you asked for before returning it. Paid tools stay off unless you add keys.710 PyPI110Apache 2.0