Skip to main content
Glama

search-boost-mcp

Multi-Engine-Web-Suche MCP-Server für Coding-Agenten. Eine CLI-Installation bindet ihn in Cursor, Cursor CLI, Codex, Claude Code, Grok Build und Antigravity ein.

search-boost-Familie

Projekt

Für

Link

search-boost (dieses Repo)

Cursor · Codex · Claude · Grok · Antigravity via MCP

Sie sind hier

dsh-search-boost

DeepSeek Harness Bundle-Plugin

GitHub · npm

pi-search-boost

pi Erweiterung

GitHub · npm

Suchmaschinen sind in lib/search/ eingebunden (ursprünglich von dsh-search-boost): In der kostenlosen Schicht laufen Bing, DuckDuckGo, Yahoo und Exa-frei parallel; die api-Schicht fügt Antigravity CLI (wenn verfügbar) und beliebig viele tastaturgestütze Tavily-/Brave-/Exa-Engines hinzu, die Sie konfigurieren (ein Schlüssel reicht; alle drei werden für die beste Fusion empfohlen). Ebenfalls enthalten: X/Twitter-Fallback, Jina-Seitenabruf und Deep-Research-Durchläufe.

Chinesische Dokumentation → README_zh.md

Neu in v0.1.4

  • Single-Engine-API-Schicht – die API-Stufe verwendet die von Tavily/Brave/Exa, die Sie konfigurieren oder aktivieren; es sind nicht alle drei Schlüssel erforderlich.

  • Pro-Engine-Routing – optionale enabledEngines oder pro-Engine enabled: false in ~/.search-boost-keys.json.

  • Teilschlüssel-Meldungen – doctor, status, keys-Wizard und fused_search warnen, wenn weniger als drei schlüsselbasierte Engines aktiv sind, und empfehlen, alle drei zu konfigurieren.

Neu in v0.1.2

  • Eigenständiger Engine-Pool in lib/search/: Bing + DuckDuckGo + Yahoo + Exa-frei für allgemeine Suche; derselbe Pool versorgt den x_search-Fallback mit site:-Abfragen.

  • x_search-Fallback fügt automatisch site:x.com für die Domainensuche über mehrere Engines hinzu, sodass der Schlüsselwortmodus ohne XAI-Anmeldeinformationen funktioniert.

  • Keine externe dsh-Repo- oder npm-Abhängigkeit – die Engine-Logik ist in diesem Repository enthalten.


Installation (empfohlen)

Erfordert Node ≥ 22.13.

npm install -g search-boost-mcp
search-boost setup          # interactive: keys → layer → agents
# or non-interactive:
search-boost install -y     # all detected agents

Starten Sie jeden Agenten nach der Installation neu, damit MCP neu geladen wird.

Einzeiler nach Agent

search-boost install -t cursor -y
search-boost install -t codex,claude -y --auto-allow
search-boost install -t grok -y --auto-allow
search-boost install -t antigravity --workspace --auto-allow -y

Vorschau ohne Schreiben: search-boost install --dry-run -y

Installation überprüfen

search-boost doctor          # health checks (offline, pass/warn/fail)
search-boost doctor --json   # machine-readable report for CI/scripts
search-boost status          # install dashboard (keys, layer, agents)

Exit-Codes: 0 fehlerfrei · 1 Fehler (oder Warnungen mit --strict) · 2 nur Warnungen.

Optional: search-boost doctor --probe fügt einen Live-Such-Smoke-Test hinzu (benötigt Netzwerk; Phase 2).

Dann bestätigen Sie in Ihrem Agent:

Agent

Kurzprüfung

Cursor

Einstellungen → MCP → search-boost verbunden; Tools aufgelistet

Cursor CLI

Gleicher MCP-Eintrag in ~/.cursor/mcp.json

Codex

codex-Sitzung listet mcp__search-boost__*-Tools

Claude Code

MCP-Bedienfeld zeigt search-boost; Tools ohne Verweigerungsaufforderung aufrufbar (wenn --auto-allow)

Grok Build

grok mcp doctor search-boost · grok inspect

Antigravity

MCP-Konfiguration enthält search-boost; IDE nach Installation neu starten

Wenn Tools erscheinen, Aufrufe jedoch fehlschlagen, führen Sie search-boost serve in einem Terminal aus, um Startfehler zu sehen.

Installations-Flags (Kurzreferenz)

Flag

Wirkung

-t, --target

Welche(n) Agent(en) einbinden (cursor, codex, claude, grok, antigravity, cursor-cli, auto, all)

-y, --yes

Nicht-interaktiv: überspringt den Schlüssel-/Ebenen-Assistenten, verwendet --target=auto, impliziert --auto-allow und --replace-native

-t ohne -y

Immer noch nicht-interaktiv für dieses Ziel und ersetzt dennoch standardmäßig die native Suche – impliziert jedoch nicht --auto-allow; fügen Sie es explizit hinzu, wenn Sie keine Berechtigungsaufforderungen wünschen

--auto-allow

Genehmigt search-boost MCP-Tools vorab in der Agentenkonfiguration (Cursor CLI Allowlist, Codex default_tools_approval_mode, Claude/Grok/Antigravity-Berechtigungsregeln), sodass der Agent nicht bei jeder Sitzung nachfragt

--replace-native / --keep-native

Deaktiviert oder behält die integrierte Websuche bei, wo der Agent einen Schalter unterstützt (Codex web_search, Claude WebSearch). Standardmäßig wird im nicht-interaktiven Modus ersetzt.

--dry-run

Aktionen anzeigen, ohne Dateien zu schreiben

Für die vollständige Erstkonfiguration (API-Schlüssel + Ebenenauswahl) führen Sie search-boost setup oder search-boost install ohne -y aus.


Related MCP server: gemini-search-mcp

Was Sie erhalten

MCP-Tool

Zweck

fused_search

Parallele Suche über mehrere Engines, Deduplizierung, Cross-Ranking

fetch_page

Vollständiger Seitentext (Jina + HTML-Fallback, optionaler focus)

x_search

X/Twitter-Stichwort / Benutzer / Thread

deep_research

Ein Durchlauf pro Aufruf – mit suggested_queries wiederholen, bis Lücken leer sind, dann synthetisieren (~3 Durchläufe maximal)

search_layer

free (schlüssellos) vs. api (schlüsselbasierte Engines) anzeigen oder festlegen

search_stats

Cache-Treffer, Engine-Verfügbarkeit, Diagnose

Auch: Ressource search-boost://policy · Prompt search_routing

Ebenen

  • free – Bing + DuckDuckGo + Yahoo + Exa-frei; keine API-Schlüssel.

  • api – Engines der Kostenlos-Stufe plus Antigravity CLI (wenn verfügbar) und beliebige von Tavily / Brave / Exa, die Sie konfigurieren (ein Schlüssel funktioniert; alle drei für die beste Cross-Engine-Fusion empfohlen)

Schlüssel: search-boost config keys → ~/.search-boost-keys.json (Legacy ~/.dsh-search-boost-keys.json wird weiterhin gelesen; oder env TAVILY_API_KEY, BRAVE_API_KEY, EXA_API_KEY). Optionales Routing: enabledEngines: ["exa"] oder "engines": { "brave": { "enabled": false } } in der Schlüsseldatei.

Schlüssel erhalten: Tavily · Brave Search API · Exa

X/Twitter-Authentifizierung (optional): Verbessert die offizielle x_search, wenn Anmeldeinformationen vorhanden sind. Gespeichert in ~/.search-boost-xauth.json (Legacy ~/.dsh-search-boost-xauth.json wird weiterhin gelesen) oder via XAI_API_KEY / Grok /x-login. Dateipfad überschreiben: SEARCH_BOOST_XAUTH_FILE.

Konfigurationsdatei-Überschreibungen: SEARCH_BOOST_KEYS_FILE, SEARCH_BOOST_LAYER_FILE, SEARCH_BOOST_XAUTH_FILE (optionale Umgebungsvariablen, die auf benutzerdefinierte Pfade verweisen).


CLI-Spickzettel

Befehl

Wirkung

search-boost

Interaktives TUI

search-boost setup

Erstkonfiguration (Schlüssel + Ebene + Installation)

search-boost install / uninstall

MCP + Prompts in Agenten einbinden / entfernen

search-boost serve

MCP stdio-Server ausführen (von Agenten verwendet)

search-boost status

Schlüssel, Ebene, konfigurierter Status pro Agent

`search-boost doctor [--quick

--probe] [--json] [--strict]`

Konfigurations-/Agenten-/Engine-Gesundheitschecks mit bestanden/warnen/fehlgeschlagen

search-boost status

Schlüssel, Ebene, Installationsstatus pro Agent (kein Urteil)

`search-boost config keys

layer

search`

Schlüssel, Standardschicht, natives Suchersatz

search-boost print <agent>

MCP-Ausschnitt ohne Schreiben anzeigen

search-boost agents

Maschinenlesbare Agentenliste

Installations-Flags: -t cursor,codex,…|auto|all · -y (nicht-interaktiv; impliziert --auto-allow + --replace-native) · --dry-run · --auto-allow (MCP-Tools vorab genehmigen – siehe Tabelle oben) · --replace-native / --keep-native · --scope user|project (Grok) · --workspace (Antigravity .agents/)


Unterstützte Agenten

Agent

MCP-Konfiguration

Installiert außerdem

Cursor IDE

~/.cursor/mcp.json

Hook, Skill

Cursor CLI

~/.cursor/mcp.json

Hook, Skill (CLI-Variante), optionales CLI-Auto-Allow

Codex CLI

~/.codex/config.toml

AGENTS.md, Skill

Claude Code

~/.claude.json

CLAUDE.md, Skill, Berechtigungen

Grok Build

~/.grok/config.toml

Regel, Skill · grok-plugin

Antigravity

~/.gemini/config/mcp_config.json

AGENTS.md, GEMINI.md, Skill, optionaler Workspace

Prompts verwenden Ermessensspielraum-des-Modells-Formulierungen (Suche, wenn Sie sich entscheiden – nicht bei jedem Zug erzwungen). Siehe agents/ für agentspezifische Vorlagen.

Native Websuche: Codex web_search und Claude WebSearch können mit --replace-native deaktiviert werden (Standard im nicht-interaktiven Modus). Cursor / Antigravity verlassen sich nur auf Skill- und Hook-Präferenz. Grok Native-Browsen bleibt eingeschaltet.

Antigravity + agy CLI: Auf der api-Ebene tritt die optionale Antigravity-CLI-Engine (agy im PATH) nur in den mittleren und komplexen fused_search-Stufen auf – nicht bei einfachen Suchvorgängen. Sie ist von einer lokalen Anmeldung und dem Plattform-Kontingent abhängig; Timeouts betragen ca. 45 s.


Grok-Plugin

Das Plugin wird im npm-Paket ausgeliefert (MCP per portablem npx, plus Skill).

Eine erneute Installation ist idempotent: search-boost install -t grok entfernt vor dem Schreiben eines neuen Blocks jeglichen vorherigen [permission]-Block von search-boost (markiert oder veraltet), sodass doppelte [permission]-Schlüssel den Start von grok nicht beeinträchtigen können. Wenn [ui] permission_mode = "always-approve" bereits gesetzt ist, überspringt --auto-allow das Einfügen von [permission] (always-approve genehmigt MCP-Tools global). search-boost doctor warnt vor doppelten oder redundanten Berechtigungsblöcken.

Aus einem Git-Clone (Repository-Stamm):

grok plugin install ./grok-plugin --trust
search-boost install -t grok -y --auto-allow

Nach npm install -g search-boost-mcp (kein Clone erforderlich):

# bash / macOS / Linux
grok plugin install "$(npm root -g)/search-boost-mcp/grok-plugin" --trust

# Windows PowerShell
grok plugin install "$(npm root -g)\search-boost-mcp\grok-plugin" --trust

search-boost install -t grok -y --auto-allow

Die gebündelte .mcp.json verwendet npx -y search-boost-mcp serve, sodass das Plugin auf jedem Rechner mit Node ≥ 22.13 funktioniert.

Details → grok-plugin/README.md


Fehlerbehebung

Symptom

Was zu tun ist

Ist search-boost in Ordnung?

search-boost doctor – bestanden/fehlgeschlagen/Warnung; --json für Skripte

Installation schlägt sofort fehl

Node ≥ 22.13 (node -v); aktualisieren, falls älter

MCP-Server fehlt im Agent

Installation erneut ausführen, Agent neu starten, search-boost status prüfen

Toolaufrufe blockiert / Genehmigung bei jedem Schritt

Erneut mit --auto-allow installieren oder einmal in der Agent-Benutzeroberfläche genehmigen

Keine Ergebnisse / leere Engines

search-boost doctor – Ebenen/Schlüssel/Engine-Prüfungen durchführen; free benötigt keine Schlüssel; api benötigt mindestens eine mit Schlüssel versehene Engine über search-boost config keys oder Umgebungsvariablen (alle drei empfohlen)

Netzwerk-/Proxy-Probleme

Phase 2: search-boost doctor --probe (noch nicht implementiert)

MCP startet nicht

search-boost doctor → mcp_launch_command, node_version; dann search-boost serve

Grok-Plugin MCP startet nicht

grok mcp doctor search-boost; sicherstellen, dass npx und Netzwerkzugriff funktionieren

grok scheitert an config.toml-Parsing

Doppelter [permission] – search-boost install -t grok -y --auto-allow ausführen

Antigravity agy läuft nie

Erfordert api-Ebene, agy im PATH und complexity mittel/komplex – nicht einfach

Timeouts / Abruffehler

Unternehmensproxy oder Firewall blockiert möglicherweise Bing/DDG/Jina; search-boost serve lokal ausführen, um stderr zu lesen


Entwicklung

git clone https://github.com/Mr-remon219/search-boost.git
cd search-boost && npm install
npm run check && npm run test:install && npm run smoke
node cli.mjs install --dry-run -y

Lokale Clone-Installationen schreiben node /path/to/cli.mjs serve (nicht npx). Es ist kein paralleles Checkout oder SEARCH_BOOST_DSH_ROOT erforderlich.


Lizenz

MIT


Links: Probleme · dsh-search-boost · pi-search-boost

Freundlicher Link: LINUX DO 社区

Available Tools

5 tools
fetch_pageFetch PageA
Read-only

Read a known HTTP(S) URL without searching again. Returns readable HTML or locally extracted PDF text, with retrieval route and any extraction limitations. Long bodies use bounded windows; continue from nextOffset using the cached read, not a new request. A focus miss is not evidence of absence: retry without focus. Binary bodies and PDFs with no extractable text return errors, not page text. Network safety, proxy policy, cancellation and size limits remain enforced through all supported fallbacks. This is not an authenticated browser.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYeshttp(s) URL to fetch
focusNoKeep matching paragraphs; omit for the readable body. Output may still be windowed; inspect nextOffset and limitations
offsetNoCharacter offset into the page body (default 0); pass nextOffset from a previous call to continue a long page from cache

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
viaYes
offsetNo
tookMsYes
contentYes
focusMissNo
truncatedNo
limitationNo
nextOffsetNo
totalCharsNo
windowNoteNo
word_countYes
requestedUrlNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover the safety profile (readOnly, openWorld, non-destructive); the description adds substantial behavior beyond them: binary bodies and text-less PDFs return errors, long bodies are windowed and continued from cache, network safety/proxy/cancellation/size limits persist through fallbacks, and it is explicitly not an authenticated browser. These are exactly the operational caveats an agent needs.

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?

Front-loaded with the core action, then dense but purposeful sentences covering return format, pagination, focus retry, error cases, and the auth boundary. No filler and no repetition of the schema or annotations.

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?

An output schema exists, so return-value documentation is not required, and the description still covers error outcomes, extraction limitations, pagination continuation, and the unauthenticated boundary. Nothing needed to invoke it correctly is missing.

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 description coverage is 100%, so the baseline is 3, but the description adds real semantics: offset continuation should use the cached read rather than a new request, and focus should be dropped on a miss because a miss is not evidence of absence. That goes beyond the schema's parameter descriptions without restating them.

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?

The first sentence gives a specific verb (read/fetch) and resource (a known HTTP(S) URL) plus a distinguishing constraint ('without searching again') that separates it from the search siblings. It also states the return shape (readable HTML or locally extracted PDF text with retrieval route). An agent can select this over fused_search or x_search without opening either schema.

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 clearly sets the context of use (a URL you already know, avoiding a re-search) and gives concrete recovery guidance: 'A focus miss is not evidence of absence: retry without focus.' It stops short of explicitly naming the search siblings as the alternative when the URL is unknown, so routing is implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_layerSearch LayerA

Inspect the current search layer with layer=show (default, no change). layer=free or api persists a new default: only change it when authorized. free = free — compatibility default engine_pool=free (keyless). api = api — compatibility default engine_pool=hybrid (keyless plus configured APIs). For a single search, use fused_search.engine_pool instead; legacy api maps to hybrid, not the strict api pool.

ParametersJSON Schema
NameRequiredDescriptionDefault
layerNoshow (default) reads current state; free/api persist a new default and require authorization

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=false and destructiveHint=false, but the description adds critical behavioral context: layer=show causes no change, while free/api persist a new default and require authorization. It also discloses the compatibility mapping (legacy api maps to hybrid, not strict api pool), which goes beyond the structured fields.

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 is dense but mostly earns its length, with the default behavior and key warning front-loaded. The 'free = free' and 'api = api' phrasing is slightly redundant and could be tightened, but it remains efficient and readable.

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 a tool with one optional parameter, full schema coverage, and no output schema, the description covers all essential context: default behavior, persistence side effects, authorization requirement, engine_pool mapping, and the alternative tool for single searches. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds meaning beyond the enum descriptions by explaining the engine_pool implications of each value: free maps to engine_pool=free (keyless), api maps to engine_pool=hybrid, and legacy api does not map to the strict api pool. This is valuable semantic nuance that the schema alone does not convey.

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?

The description names a specific resource (the search layer) and a clear action set: inspect with layer=show or persist a new default with free/api. It also explicitly differentiates this tool from fused_search, making its purpose and scope unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: use layer=show to inspect, only change the default when authorized, and for a single search use fused_search.engine_pool instead. This routes the agent to the correct sibling in the exact condition that matters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_statsSearch StatsA
Read-only

Read-only search diagnostics: cache activity, engine configuration readiness and recent searches. Inspect result warnings as well; empty results do not prove absence or authorize changing credentials, permissions or defaults.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
layerYes
recentYes
enginesYes
xSourceYes
cacheHitsYes
startedAtYes
xOfficialYes
tierCountsYes
cacheMissesYes
keyedEnginesYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), so the bar is lower. The description adds genuine value beyond them: it discloses the diagnostic surfaces returned and warns that empty results do not authorize changing credentials, permissions, or defaults — a meaningful behavioral caveat for an agent acting on ambiguous results.

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?

Two front-loaded sentences: the first defines scope, the second carries the caution. No filler, though the second sentence packs three distinct warnings and is slightly dense.

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?

An output schema exists, so return values need not be described. With zero parameters and annotations covering the safety profile, the description supplies everything an agent needs to call this correctly, including the caveat about interpreting empty results.

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?

The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline of 4 applies; the description neither helps nor hurts parameter understanding.

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 names a concrete resource and enumerates what it exposes: cache activity, engine configuration readiness, and recent searches. It clearly reads as a diagnostics tool, distinct from the search/retrieval siblings (fused_search, fetch_page, search_layer), though it never names an alternative explicitly.

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?

It gives interpretive guidance ('inspect result warnings', 'empty results do not prove absence') but never states when to call this tool versus the search siblings or when not to. Usage is implied by the diagnostics framing rather than spelled out.

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. 3 tool updatesv0.2.4
    • Changedfetch_page7 fields changed
      • changedInput schema / properties / focus / description
        Previous value: -"Keep paragraphs matching these terms (optional; full page is returned when omitted)"New value: +"Keep matching paragraphs; omit for the readable body. Output may still be windowed; inspect nextOffset and limitations"
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Character offset into the page body (default 0); pass nextOffset from a previous call to continue a long page from cache",
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / nextOffset
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / offset
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / requestedUrl
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / totalChars
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / windowNote
        Added value: +{
        +  "type": "string"
        +}
    • Changedfused_search2 fields changed
      • changedInput schema / properties / engine_weights / description
        Previous value: -"Override preset engine weights; never enables or selects engines"New value: +"Override preset engine weights; zero still calls the engine. Never enables or selects engines"
      • changedInput schema / properties / queries / description
        Previous value: -"Distinct query angles, not paraphrases; use up to 3 variants"New value: +"Distinct query angles, not paraphrases; complexity caps total variants at 1/2/3, including query and OR alternatives"
    • Changedx_search4 fields changed
      • addedOutput schema / properties / engineStats
        Added value: +{
        +  "additionalProperties": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "attempts": {
        +        "type": "number"
        +      },
        +      "errors": {
        +        "type": "number"
        +      },
        +      "note": {
        +        "type": "string"
        +      },
        +      "successes": {
        +        "type": "number"
        +      },
        +      "used": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "used",
        +      "errors"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / enginesUsed
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / inFlight
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / warnings
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
  2. 1 tool updatev0.2.3
    • Removedadaptive_search
  3. 7 tool updatesv0.2.2
    • Addedadaptive_search
    • Removeddeep_research
    • Changedfetch_page3 fields changed
      • changedInput schema / properties / focus / description
        Previous value: -"Keep paragraphs matching these terms (~90% token savings)"New value: +"Keep paragraphs matching these terms (optional; full page is returned when omitted)"
      • addedOutput schema / properties / focusMiss
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / limitation
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "kind": {
        +      "type": "string"
        +    },
        +    "message": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "message"
        +  ],
        +  "type": "object"
        +}
    • Changedfused_search37 fields changed
      • addedInput schema / properties / community
        Added value: +{
        +  "description": "Add X developer/community voices when relevant; default false; shares final max_results",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / complexity / description
        Added value: +"Budget, query variants and depth only; default medium"
      • changedInput schema / properties / complexity / enum
        Previous value: -[
        -  "auto",
        -  "simple",
        -  "medium",
        -  "complex"
        -]New value: +[
        +  "simple",
        +  "medium",
        +  "complex"
        +]
      • addedInput schema / properties / engine_pool
        Added value: +{
        +  "description": "Which engines to search. Omitted: compatibility layer free→free, api→hybrid",
        +  "enum": [
        +    "free",
        +    "api",
        +    "hybrid"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / engine_weights
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Override preset engine weights; never enables or selects engines",
        +  "properties": {
        +    "anysearch": {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "bing": {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "brave": {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "ddg": {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "exa": {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "exa-free": {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "tavily": {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "yahoo": {
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  },
        +  "type": "object"
        +}
      • changedInput schema / properties / engines / description
        Previous value: -"Engine subset override"New value: +"Optional exact engine selection overriding engine_pool; unavailable or disabled engines are skipped with warnings"
      • changedInput schema / properties / engines / items / enum
        Previous value: -[
        -  "bing",
        -  "ddg",
        -  "yahoo",
        -  "exa-free",
        -  "antigravity",
        -  "tavily",
        -  "brave",
        -  "exa"
        -]New value: +[
        +  "bing",
        +  "ddg",
        +  "yahoo",
        +  "exa-free",
        +  "anysearch",
        +  "tavily",
        +  "brave",
        +  "exa"
        +]
      • addedInput schema / properties / engines / minItems
        Added value: +1
      • addedInput schema / properties / exclude_domains / description
        Added value: +"Exclude these hostnames from results"
      • addedInput schema / properties / include_domains / description
        Added value: +"Restrict results to these hostnames, e.g. nodejs.org; useful for official sources"
      • addedInput schema / properties / layer / description
        Added value: +"Deprecated compatibility alias: free→free pool, api→hybrid pool; engine_pool takes precedence; not persisted"
      • addedInput schema / properties / min_score
        Added value: +{
        +  "description": "Minimum consensus-v2 quality score; old thresholds need recalibration, default 0",
        +  "minimum": 0,
        +  "type": "number"
        +}
      • changedInput schema / properties / queries / description
        Previous value: -"Extra query variants (max 3)"New value: +"Distinct query angles, not paraphrases; use up to 3 variants"
      • addedInput schema / properties / ranking
        Added value: +{
        +  "description": "Final engine-weight preset only; default balanced",
        +  "enum": [
        +    "balanced",
        +    "research",
        +    "fresh"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / recency / description
        Added value: +"Favor recent dated results; omit for historical or version-pinned documentation"
      • addedOutput schema / properties / communityUsed
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / effectiveWeights
        Added value: +{
        +  "additionalProperties": {
        +    "type": "number"
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / enginePool
        Added value: +{
        +  "enum": [
        +    "free",
        +    "api",
        +    "hybrid"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / engineStats / additionalProperties / properties / attempts
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / engineStats / additionalProperties / properties / successes
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / ranking
        Added value: +{
        +  "enum": [
        +    "balanced",
        +    "research",
        +    "fresh"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / results / items / properties / consensusBoost
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / results / items / properties / contributions
        Added value: +{
        +  "additionalProperties": {
        +    "type": "number"
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / results / items / properties / dateStatus
        Added value: +{
        +  "enum": [
        +    "known",
        +    "unknown",
        +    "conflicting"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / results / items / properties / engineRanks
        Added value: +{
        +  "additionalProperties": {
        +    "type": "number"
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / results / items / properties / evidenceScore
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / results / items / properties / id
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / results / items / properties / kind
        Added value: +{
        +  "enum": [
        +    "web",
        +    "x"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / results / items / properties / metadataDelta
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / results / items / properties / provenance
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "engine": {
        +        "type": "string"
        +      },
        +      "published": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "rank": {
        +        "type": "number"
        +      },
        +      "snippet": {
        +        "type": "string"
        +      },
        +      "title": {
        +        "type": "string"
        +      },
        +      "url": {
        +        "type": "string"
        +      },
        +      "variant": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "engine",
        +      "rank",
        +      "url",
        +      "title",
        +      "snippet",
        +      "published"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / results / items / properties / rankScore
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / results / items / properties / scoreVersion
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / results / items / properties / selectionScore
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / results / items / properties / username
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / properties / results / items / required
        Previous value: -[
        -  "title",
        -  "url",
        -  "domain",
        -  "snippet",
        -  "score",
        -  "engines",
        -  "published"
        -]New value: +[
        +  "title",
        +  "url",
        +  "domain",
        +  "snippet",
        +  "score",
        +  "scoreVersion",
        +  "rankScore",
        +  "evidenceScore",
        +  "consensusBoost",
        +  "metadataDelta",
        +  "engineRanks",
        +  "contributions",
        +  "provenance",
        +  "dateStatus",
        +  "engines",
        +  "published"
        +]
      • addedOutput schema / properties / scoreVersion
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "query",
        -  "layer",
        -  "tier",
        -  "tookMs",
        -  "cacheHit",
        -  "resultCount",
        -  "results"
        -]New value: +[
        +  "scoreVersion",
        +  "query",
        +  "layer",
        +  "tier",
        +  "tookMs",
        +  "cacheHit",
        +  "resultCount",
        +  "enginePool",
        +  "ranking",
        +  "effectiveWeights",
        +  "communityUsed",
        +  "results"
        +]
    • Changedsearch_layer1 field changed
      • addedInput schema / properties / layer / description
        Added value: +"show (default) reads current state; free/api persist a new default and require authorization"
    • Changedsearch_stats2 fields changed
      • addedOutput schema / properties / keyedEngines
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "configured": {
        +      "type": "number"
        +    },
        +    "enabled": {
        +      "type": "number"
        +    },
        +    "enabledNames": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "total": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "configured",
        +    "enabled",
        +    "total",
        +    "enabledNames"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "startedAt",
        -  "layer",
        -  "cacheHits",
        -  "cacheMisses",
        -  "tierCounts",
        -  "engines",
        -  "xOfficial",
        -  "xSource",
        -  "recent"
        -]New value: +[
        +  "startedAt",
        +  "layer",
        +  "cacheHits",
        +  "cacheMisses",
        +  "tierCounts",
        +  "keyedEngines",
        +  "engines",
        +  "xOfficial",
        +  "xSource",
        +  "recent"
        +]
    • Changedx_search10 fields changed
      • addedInput schema / properties / allowed_x_handles
        Added value: +{
        +  "description": "Only these authors; mutually exclusive with excluded_x_handles",
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / excluded_x_handles
        Added value: +{
        +  "description": "Exclude these authors; mutually exclusive with allowed_x_handles",
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • changedInput schema / properties / from_date / description
        Previous value: -"YYYY-MM-DD"New value: +"Inclusive start date, YYYY-MM-DD (UTC)"
      • addedInput schema / properties / max_results / description
        Added value: +"Requested result limit, 1–10"
      • addedInput schema / properties / post_id / description
        Added value: +"Real X post ID or status URL for type=thread"
      • addedInput schema / properties / query / description
        Added value: +"Search terms and X filters (e.g. from:OpenAI), or a natural-language topic for semantic mode"
      • changedInput schema / properties / to_date / description
        Previous value: -"YYYY-MM-DD"New value: +"Inclusive end date, YYYY-MM-DD (UTC)"
      • addedInput schema / properties / type / description
        Added value: +"Mode: keyword (default) or semantic uses query; user uses username; thread uses post_id"
      • addedInput schema / properties / username / description
        Added value: +"X account handle for type=user"
      • addedOutput schema / properties / note
        Added value: +{
        +  "type": "string"
        +}
  4. 2 tool updatesv0.1.6
    • Changeddeep_research1 field changed
      • addedInput schema / properties / round
        Added value: +{
        +  "description": "Research round number (auto-increments when omitted)",
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • Changedfused_search4 fields changed
      • addedOutput schema / properties / engineStats
        Added value: +{
        +  "additionalProperties": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "errors": {
        +        "type": "number"
        +      },
        +      "note": {
        +        "type": "string"
        +      },
        +      "used": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "used",
        +      "errors"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / enginesRequested
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / enginesUsed
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / warnings
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
  5. 6 tool updatesv0.1.2
    • First observeddeep_research
    • First observedfetch_page
    • First observedfused_search
    • First observedsearch_layer
    • First observedsearch_stats
    • First observedx_search

TDQS

A4.1/5.0

Scored across 5 tools

Disambiguation4/5

Tools have mostly distinct purposes: fused_search for general web search, x_search for X/Twitter, fetch_page for URL reading, and search_stats/search_layer for diagnostics/configuration. However, search_stats and search_layer both touch engine configuration, and fused_search's description references a non-existent adaptive_search tool, which could cause mild confusion.

Naming Consistency3/5

All names use snake_case, which is consistent. However, the naming patterns vary: fused_search (adjective_noun), fetch_page (verb_noun), x_search (noun_noun), search_stats (noun_noun), search_layer (noun_noun). There is no single predictable verb_noun convention, though names remain readable.

Tool Count5/5

5 tools is well-scoped for a search server: core search, specialized X search, page fetch, diagnostics, and configuration. Each tool has a clear role without redundancy.

Completeness3/5

The surface covers general search, X search, page fetch, stats, and layer configuration. However, the descriptions reference an adaptive_search tool for higher-quality intent-guided evidence selection that is not present, indicating a notable gap in the intended tool set.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server that enables coding agents to search X/Twitter and the web through the local Grok CLI, providing better search results than default Codex or Claude search without requiring an API key.
    24 npm
    7
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    MCP server for web search powered by Google AI Mode (Gemini). Enables any AI agent to search the web in real-time for free and without rate limits.
    2
    183
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A zero-config web search and fetch MCP server for LLM agents, featuring multi-backend metasearch, persistent rolling cache, and structured error envelopes for retry-friendly interactions.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for multi-engine web search and web page fetching, supporting parallel search, content extraction, and optional LLM-powered search summarization and deep search.
    5
    MIT