# Reported issues for mcp-omnisearch

Pod holds 24 of 30 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to [mcp-omnisearch](/mcp/mcp-omnisearch).

## Most discussed

### Cross-provider failover and cooldown after 429/outage

Parent: #187

## Current behavior

A 429, billing suspension, or timeout fails that one provider call. The tool does not automatically try the next configured search engine or cool the failing one down.

## Request

For single-path / auto-routed calls:

- On transient errors (429, 503, timeout), retry with the existing backoff helper, then fail over to the next eligible provider.
- After repeated failures, cool that provider down for a stepped window (e.g. 1m / 5m / 25m / 1h) so the next calls s

[Read the thread](https://github.com/spences10/mcp-omnisearch/issues/191) · 2026-08-16 · closed · external user · 1 comment

### Query-intent auto-routing when provider is omitted

Parent: #187

## Current behavior

The agent must pass `provider` on `web_search` / `ai_search` / `web_extract`. Omnisearch does not score the query and pick a backend.

## Request

When `provider` is omitted (or set to `auto`):

- Score configured providers from query signals (freshness, semantic discovery, docs/code, news, etc.).
- Pick **one** winner. This is not fan-out.
- Break ties with a documented priority list.
- If no provider is eligible, fail visibly (do not invent results).

Keep ex

[Read the thread](https://github.com/spences10/mcp-omnisearch/issues/190) · 2026-08-16 · closed · external user · 1 comment

### RRF merge, URL/title dedupe, and per-result provenance

Parent: #187

## Current behavior

Each search response is a single vendor list. There is no cross-provider merge, URL/title identity, or per-hit provenance from multiple engines.

## Request

When more than one provider returns results (see the fan-out issue):

- Canonicalize identity on URL and title.
- Fuse ranks with reciprocal rank fusion (RRF), e.g. `sum(1 / (k + rank))` with a documented `k` (hub default is 60).
- Keep a `sources` list on each fused hit: provider, original rank, optional 

[Read the thread](https://github.com/spences10/mcp-omnisearch/issues/189) · 2026-08-16 · closed · external user · 1 comment

### Optional concurrent multi-provider fan-out on web_search

Parent: #187

## Current behavior

`web_search` accepts one `provider` and performs one vendor call. Covering Exa + Tavily + Brave requires the agent to issue three tool calls, which most clients will not do.

## Request

Add an **optional** multi-provider path that is off unless asked for:

- Keep `provider: "exa"` (and the other current values) as a single-path call.
- Allow something like `providers: ["exa", "tavily", "brave"]` or `provider: "all"` / `mode: "parallel"`.
- Start the selected c

[Read the thread](https://github.com/spences10/mcp-omnisearch/issues/188) · 2026-08-16 · closed · external user · 1 comment

### [RFC] Agent-native payment gating for MCP Omnisearch — pay-per-search query via x402

Hi — I've been working on [Tomopay](https://github.com/tomopay/gateway), a payment gateway for MCP servers that lets agents pay per tool call via x402 (USDC stablecoins) or Stripe.

I forked your repo and added `withPayments()` — here's the working fork: https://github.com/tomopay/mcp-omnisearch

With this, agents using MCP Omnisearch would pay $0.01 per search query automatically. No API key management needed on the agent side.

Each provider call (Tavily, Kagi, Perplexity, Brave) could be gate

[Read the thread](https://github.com/spences10/mcp-omnisearch/issues/95) · 2026-04-01 · closed · external user · 1 comment

### invalid type for parameter 'provider' in tool web_search

I'm getting the error in the subject in cursor. Remove the `PATH` env var doesn't help much, using it just to verify i'm on the latest node version.

```js
"mcp-omnisearch": {
  "command": "npx",
  "args": ["-y", "mcp-omnisearch"],  
  "env": {
    "TAVILY_API_KEY": "XXX",
    "PATH": "/Users/oryba/.nvm/versions/node/v24.12.0/bin:${env:PATH}"
    },
},
```

[Read the thread](https://github.com/spences10/mcp-omnisearch/issues/66) · 2025-12-15 · closed · external user · 5 comments

### [Feature Request] Serp/Serper Support

Requesting addition of serp/serper search APIs

[Read the thread](https://github.com/spences10/mcp-omnisearch/issues/39) · 2025-08-26 · closed · external user · 5 comments

### Question on firecawl...

Hey there, is it possible to specify a firecrawl URL as an environment variable? I self host firecrawl and would like to use a local instance.

[Read the thread](https://github.com/spences10/mcp-omnisearch/issues/26) · 2025-08-06 · closed · external user · 3 comments

## Most recent

### Docker image crashes because MCPO and MCP dependencies are incompatible

Hello, I'm just getting started in self-hosted AI and appreciate your work on this versatile MCP. I'm attempting to set up a Docker Compose stack with Ollama, Open WebUI and this MCP. I support your decision not to publish a full Docker container, just a Dockerfile for us to build. However, it currently has a problem. I'm going to attempt a patch for this.

### Summary

The Docker image currently builds successfully but fails to start at runtime. The container enters a restart loop because the `

[Read the thread](https://github.com/spences10/mcp-omnisearch/issues/234) · 2026-08-18 · closed · external user · 1 comment

### Cost gates so expensive providers stay explicit-only

Parent: #187

## Current behavior

Any registered provider is equally callable. There is no way to keep an expensive or surprising engine (e.g. Parallel advanced, deep Exa) configured for explicit calls but out of `auto` / fan-out / failover.

## Request

Per-provider `auto_allow` (default true for current cheap/known engines; false for new expensive ones):

- Explicit `provider: "parallel"` still works when the key exists.
- `auto` routing, failover, and optional `all` fan-out skip `auto_allow=

[Read the thread](https://github.com/spences10/mcp-omnisearch/issues/207) · 2026-08-16 · closed · external user · 1 comment

### HTTP bearer auth and per-token rate limits for remote deploys

Parent: #187

## Current behavior

Omnisearch is typically stdio. Remote HTTP deploys (Docker, Kubernetes, ToolHive) need an auth story and a way to stop one client from blasting every vendor key.

## Request

When serving HTTP / Streamable HTTP off loopback:

- Require static bearer tokens (`AUTH_TOKENS`), unique and nonblank.
- Per-token sliding-window rate limit (hub default 120 req / minute).
- Unauthenticated traffic shares one tight bucket or is rejected.
- Keep `/health` (or equivalent) f

[Read the thread](https://github.com/spences10/mcp-omnisearch/issues/206) · 2026-08-16 · closed · external user · 1 comment

### get_provider_info tool for non-secret provider metadata

Parent: #187

## Current behavior

Clients discover providers by reading tool schemas or guessing env keys. There is no tool that lists configured, non-secret provider metadata at runtime.

## Request

Add `get_provider_info` (or a resource) that returns, for each registered provider:

- id, tools it serves (search / extract / ai / github)
- tags / weight if routing exists
- timeout, estimated cost
- enabled / cooldown / last error *type*
- no keys, no tokens, no raw secrets

## Why

Agents and 

[Read the thread](https://github.com/spences10/mcp-omnisearch/issues/205) · 2026-08-16 · closed · external user · 1 comment

### Optional downstream MCP backends for official remotes

Parent: #187

## Current behavior

Omnisearch talks to vendor HTTP APIs directly. It cannot treat an official remote MCP (Exa, Tavily, Firecrawl, Parallel, …) as a backend and only own planning / timeout / merge.

## Request

Optional provider type: downstream MCP (`transport` URL or `command` + env), with:

- mapped tool name
- query / limit argument names
- `result_path` and field aliases (title/url/snippet/score)
- per-provider timeout and estimated cost
- `$ENV` references for headers, no in

[Read the thread](https://github.com/spences10/mcp-omnisearch/issues/204) · 2026-08-16 · closed · external user · 1 comment

### Provider benchmark command

Parent: #187

## Current behavior

There is no built-in way to race configured providers on a fixed query suite and get a recommended priority order.

## Request

A CLI or MCP tool that:

- Runs a small fixed suite (docs, vendor release, community, non-English) against every configured search provider.
- Reports success rate, median latency, result volume, simple quality (unique URLs, snippet coverage).
- Prints a recommended `provider` priority and the exact config change to apply.
- Does **not

[Read the thread](https://github.com/spences10/mcp-omnisearch/issues/203) · 2026-08-16 · closed · external user · 1 comment

### Spam/mirror filter and domain diversity

Parent: #187

## Current behavior

Result lists are passed through as the vendor ranked them. SEO scrapers, content mirrors, and 10 hits from one domain all stay in place.

## Request

Optional quality layer (default can be conservative):

- Drop known Stack Overflow / GitHub content mirrors and SEO scrapers (`blocked_domains`, overridable).
- Cap results per registrable domain (e.g. max 2 keep position; overflow moves behind).
- Exempt `site:` / `include_domains` queries so constrained searches

[Read the thread](https://github.com/spences10/mcp-omnisearch/issues/202) · 2026-08-16 · closed · external user · 1 comment

### Adaptive routing from recent provider health

Parent: #187

## Current behavior

Provider choice does not learn from recent latency, empty results, or errors. A provider that is currently failing keeps getting selected until the agent notices.

## Request

If auto-routing ships:

- Record latency / error / empty-result outcomes in a small rolling window (e.g. last 50 calls / 7 days).
- Apply a bounded score adjustment (web-search-plus uses ±1.0) so currently healthy providers win close calls.
- Do not override strong explicit query-class si

[Read the thread](https://github.com/spences10/mcp-omnisearch/issues/201) · 2026-08-16 · closed · external user · 1 comment

### Locale defaults for country and language

Parent: #187

## Current behavior

Locale/region is left to each provider's defaults (often US/EN) or to operators in the query string. There is no server-wide country/language default.

## Request

- Config defaults: `country` (ISO 3166-1 alpha-2) and `language` (ISO 639-1 or `auto`).
- Per-call overrides win.
- Apply only to providers that have region/lang parameters; others unchanged.
- Return resolved locale + source (`config` | `param` | `inferred`) in metadata.
- Query language should not 

[Read the thread](https://github.com/spences10/mcp-omnisearch/issues/200) · 2026-08-16 · closed · external user · 1 comment

### News search vertical on web_search

Parent: #187

## Current behavior

`web_search` is a general web search. There is no first-class news vertical that maps to providers that have one (and reports `applied=false` for those that do not).

## Request

Add `search_type`: `search` (default) | `news`.

- Use a native news endpoint where it exists.
- Otherwise run normal search and set `search_type.applied=false`.
- Invalid values error clearly.

## Why

“What happened today” queries should not depend on the agent stuffing `news` into t

[Read the thread](https://github.com/spences10/mcp-omnisearch/issues/199) · 2026-08-16 · closed · external user · 1 comment

### Unified freshness filter (day / week / month / year)

Parent: #187

## Current behavior

Recency is provider-specific (Kagi `before:`/`after:`, Tavily date fields, etc.). There is no one `freshness` argument that the server translates per vendor.

## Request

Add a unified `freshness` on `web_search`: `day` | `week` | `month` | `year` (case-insensitive).

- Map to each provider's native parameter (Brave `pw`, Tavily dates, Exa `startPublishedDate`, …).
- If a provider has no recency support, still run the search and set `freshness.applied=false` in

[Read the thread](https://github.com/spences10/mcp-omnisearch/issues/198) · 2026-08-16 · closed · external user · 1 comment

### Additional providers: You.com, Parallel, Querit, TinyFish, Keenable

Parent: #187

## Current behavior

Search/extract lineup is Tavily, Brave, Kagi, Exa, Linkup, Firecrawl (+ GitHub as its own tool). That set is good. Several widely used agent-search APIs are missing.

## Request

Add opt-in providers (key missing = not registered, same as today):

- You.com (`YOU_API_KEY`) — fast LLM-ready web search + extract
- Parallel (`PARALLEL_API_KEY`) — search + long excerpts / extract; keep explicit-only if pricing is surprising
- Querit (`QUERIT_API_KEY`) — multilingua

[Read the thread](https://github.com/spences10/mcp-omnisearch/issues/197) · 2026-08-16 · closed · external user · 1 comment

### Opt-in routing and quality diagnostics on tool responses

Parent: #187

## Current behavior

Tool results do not explain *why* a provider was chosen, skipped, or cooled down. There is no opt-in quality report.

## Request

Add an opt-in flag (e.g. `quality_report: true`) that can include:

- selected provider and reason
- provider scores (if auto-routing exists)
- skipped / cooldown / auto-excluded providers
- result counts, duplicate-URL rate, extract-recommended hint

Default off so normal payloads stay small.

## Why

Without this, routing and failo

[Read the thread](https://github.com/spences10/mcp-omnisearch/issues/196) · 2026-08-16 · closed · external user · 1 comment

### Partial-success metadata for selected, failed, and timed-out providers

Parent: #187

## Current behavior

A provider error is typically the whole tool error. The caller does not get a structured split of which engines were selected, succeeded, failed, or timed out.

## Request

On multi-provider (and optionally auto-routed) calls, return metadata:

- `selected`
- `successful`
- `failed` (error *type* only, not raw exception text)
- `timed_out`
- optional `preempted` / cooldown skips

Keep returning whatever results did succeed.

## Why

Operators need to debug “why

[Read the thread](https://github.com/spences10/mcp-omnisearch/issues/195) · 2026-08-16 · closed · external user · 1 comment

### Request budgets: max providers, timeout, and estimated cost

Parent: #187

## Current behavior

There is no request-level cap on how many providers may run, how long the whole search may take, or how much estimated USD a plan may spend. Timeouts exist per HTTP call, not as an orchestrator budget.

## Request

Add optional request budgets:

- `max_providers` (mcp-search-hub default is 3 — a max, not a min)
- `timeout_seconds` for the whole fan-out (hub default 20s), cancel the rest
- optional `budget_usd` using per-provider estimated cost; reject impossibl

[Read the thread](https://github.com/spences10/mcp-omnisearch/issues/194) · 2026-08-16 · closed · external user · 1 comment

### Search result cache with TTL

Parent: #187

## Current behavior

Every `web_search` hits the vendor live. There is no query/provider/limit cache.

## Request

- Cache search results locally (or in-process) keyed by normalized query, provider, limit, and relevant filters.
- Default TTL on the order of 1 hour, configurable.
- Bypass flag for fresh results (`no_cache` / env).
- Cache write failures must be non-fatal.
- Do not cache a multi-provider response that is only a partial failure as if it were complete (mcp-search-hub r

[Read the thread](https://github.com/spences10/mcp-omnisearch/issues/193) · 2026-08-16 · closed · external user · 1 comment

The remaining reports are on [the project's issue tracker](https://github.com/spences10/mcp-omnisearch/issues).
