Skip to main content
Glama

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.

One tool list for every provider

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 fetchira

Or install on macOS with Homebrew:

brew install ImmuneFOMO/tap/fetchira

On Linux or macOS without Homebrew:

curl -fsSL https://raw.githubusercontent.com/ImmuneFOMO/fetchira/main/install.sh | sh

See 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.

Local dashboard

Related MCP server: DeepSeek Web Search MCP

Choose a guide

I want to…

Guide

Install, connect an agent, or choose a skill

Setup

Search, research, generate images, or continue a session from a shell

CLI

Manage accounts, quotas, proxies, or troubleshoot a failure

Configuration

Share one private server through CLI or MCP

Hosted deployment

Build, test, contribute, or release

Contributing · Releasing

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 check

CLI 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.

Apache-2.0 license · Report a security issue

Available Tools

6 tools
browserB

Load a URL in a headless browser (hyperbrowser, browserless, steel) and return the page as markdown.

NameRequiredDescriptionDefault
urlYesThe URL to load in a headless browser.
actionsNoReserved for multi-step automation; ignored in v1.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
fileNoAbsolute paths of images/files to attach (local stdio only, not hosted HTTP). Use this to edit an existing/generated image.
pathNoLocal 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.
promptYesWhat to draw, or how to edit the attached image.
sessionNoResume a ChatGPT image conversation to edit its previous image.
providerNoForce 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

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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=…).

NameRequiredDescriptionDefault
fileNoAbsolute 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.
modeNoProvider-specific mode. grok: "auto"/"fast"/"expert"/"heavy" (search defaults to fast, deep_research to heavy then expert); keenable "realtime"/"pro"; nimble "standard".
depthNoDepth: "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).
modelNoWeb-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.
queryNoThe search query (or a follow-up message when `session` is set). Optional only when polling a running deep-research `session` for its report.
topicNoResearch niche: "web" (default), "news", or "academic" — steers to a fitting backend.
domainsNoRestrict to these domains; prefix one with "-" to exclude it (e.g. ["nature.com","-reddit.com"]).
recencyNoRecency filter: "day"/"week"/"month"/"year" or an ISO date (e.g. "2024-01-01").
sessionNoResume token from a previous web-provider result; continues that conversation on the same provider. Web providers only.
providerNoForce a specific provider instead of the priority order.
max_resultsNoMaximum number of results (default 5, capped at 20).

TDQS

A4.3/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
urlYesThe URL to read and return as clean markdown.
modeNoProvider-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.
providerNoForce a specific provider instead of the priority order.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

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.

NameRequiredDescriptionDefault
providerNoA provider to get the full capability sheet for (niches, modes, example calls + live limits). Omit for the compact all-provider quota snapshot.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 6 tool updatesv0.1.0
    • First observedbrowser
    • First observedcreate_image
    • First observeddeep_research
    • First observedread
    • First observedsearch
    • First observedusage

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation4/5

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.

Naming Consistency3/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityActive
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables 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 npm
    3
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Read 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 PyPI
    110
    Apache 2.0