Skip to main content
Glama
lhswgzy

free-search-mcp-ts

by lhswgzy

Web search (multi-engine)

web_search
Read-only

Search multiple independent web engines at once and get one de-duplicated, re-ranked result list. Use it to find pages before fetching or reading them.

Instructions

Search the web across several independent engines at once and get back one de-duplicated, re-ranked result list. Results from every engine are merged with Reciprocal Rank Fusion, so a page several engines agree on outranks a page only one engine found — this is materially more stable than querying a single provider. Runs with no API key by default; engines that are blocked or failing are skipped automatically and reported. Prefer this over fetch_url when you do not yet know which page has the answer. Use research() when you want the pages read for you as well.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
siteNoRestrict results to one domain (host suffix match), e.g. "docs.python.org". Equivalent to adding site: to the query but applied after fusion, so it cannot be ignored by an engine.
queryYesThe search query. Natural language works; operators such as "site:example.com", quoted phrases and "filetype:pdf" are passed through to engines that support them.
formatNoOutput format. "markdown" (default) is compact and readable; "json" returns structured data for post-processing.
regionNoRegion hint such as "us", "cn", "de". Selects region-appropriate engines and result sets.
enginesNoEngines to use, in priority order. Omit for automatic tiered selection (keyless defaults first, then fallbacks, then matching subject indexes). Use ["all"] for every configured engine, or see the list_engines tool for ids.
languageNoLanguage hint such as "en", "zh", "ja". Also picks language-appropriate default engines.
freshnessNoOnly return results newer than this. Honoured by engines that support it (Google News, Bing, Serper, Tavily, Brave, Google CSE) and ignored by the rest.
max_resultsNoMaximum fused results to return (default 12).
safe_searchNoSafe-search level. Defaults to the server configuration ("moderate").
exclude_domainsNoDrop results from these domains.
include_domainsNoOnly keep results from these domains.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.5/5.0
Behavior4/5

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

Annotations only cover readOnly and openWorld, so the description carries the real behavioral burden and delivers: no API key by default, blocked/failing engines skipped and reported, and RRF fusion semantics explaining why results are stable. It stops short of describing latency, rate limits, or what the 'reported' failures look like, so a 5 is not warranted.

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?

Four sentences, each doing distinct work: capability, mechanism/justification, operational constraints, and sibling routing. Front-loaded with the core action and zero filler.

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 search tool with no output schema, the description covers capability, ranking behavior, failure handling, key requirements, and sibling routing, while the schema handles every parameter including output format. Nothing an agent needs to select or invoke it correctly is missing.

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 description coverage is 100%, so all 11 parameters are already documented, including site, engines, freshness, and max_results. The description adds no parameter-level detail beyond the schema (its site/fusion note duplicates the schema text), so the baseline 3 applies.

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 and resource (search the web), names the multi-engine scope, and describes the output shape ('one de-duplicated, re-ranked result list'). This distinguishes it cleanly from fetch_url, research, and list_engines without opening any schema.

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?

Explicitly routes between siblings: 'Prefer this over fetch_url when you do not yet know which page has the answer' and 'Use research() when you want the pages read for you as well.' Both the when and the when-not are stated with a selecting condition.

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