Skip to main content
Glama

search

Read-onlyIdempotent

Query multiple web engines in Chinese, English, or code, filter results by time range or site, and fetch full article content for chosen results without API keys.

Instructions

Search the web across multiple engines (Chinese/English/Code). Supports multi-query fan-out ('queries'), timeRange filtering, site limits, fetchTop article content, and no API keys required.

Input Schema

NameRequiredDescriptionDefault
siteNoRestrict search to specific site domain(s) (e.g. ['github.com', 'developer.mozilla.org'])
limitNoTarget total results after merging all engines (default: server DEFAULT_SEARCH_LIMIT, usually 10). Not a per-engine quota: once enough results are collected, slower engines may be cancelled (see cancelledEngines). Pass explicit `engines` to disable early cancellation.
queryNoSingle search query (required if 'queries' is omitted; use 'queries' for multi-intent fan-out)
enginesNoSearch engines to use (default: auto-routes by query language; explicit engines do not cascade unless minResults is specified)
queriesNo1-4 queries run concurrently and merged (required if 'query' is omitted)
verboseNoInclude verbose diagnostic fields (engineMetrics, full failure hints, and redundant source hostnames); default false to save tokens
fetchTopNoTwo-in-one search & fetch: automatically fetch full readable Markdown content for top N results (0~3) in a single turn
timeRangeNoPublication time range filter ('day', 'week', 'month', 'year')
minResultsNoAuto-run additional engines when fewer usable results come back (default: 5 when engines omitted, 0 when engines explicitly specified)
searchModeNoExecution mode: 'request' (HTTP only), 'auto' (HTTP with browser fallback), or 'playwright' (headless browser only)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.5.1
    • changedInput schema / additionalProperties
      Previous value: -trueNew value: +{}
  2. Changed10 schema fields changedv1.3.10
    • changedInput schema / additionalProperties
      Previous value: -falseNew value: +true
    • changedInput schema / properties / engines / description
      Previous value: -"Search engines to use (default: server default, which may auto-route by query language)"New value: +"Search engines to use (default: auto-routes by query language; explicit engines do not cascade unless minResults is specified)"
    • changedInput schema / properties / engines / items / description
      Previous value: -"Search engine name. Valid values (normalize alias to canonical name): baidu, bing, csdn, duckduckgo, exa, brave, juejin, startpage, sogou, github, stackoverflow, hackernews, arxiv"New value: +"Search engine name. Valid values (normalize alias to canonical name): baidu, bing, bing-news, csdn, duckduckgo, exa, brave, juejin, startpage, yahoo, sogou, github, stackoverflow, hackernews, arxiv, code"
    • changedInput schema / properties / fetchTop / description
      Previous value: -"Two-in-one search & fetch: automatically fetch full readable Markdown content for top N results (0~3) in a single turn (up to 4000 chars per article)"New value: +"Two-in-one search & fetch: automatically fetch full readable Markdown content for top N results (0~3) in a single turn"
    • changedInput schema / properties / limit / description
      Previous value: -"Max results (default: server DEFAULT_SEARCH_LIMIT, usually 10)"New value: +"Target total results after merging all engines (default: server DEFAULT_SEARCH_LIMIT, usually 10). Not a per-engine quota: once enough results are collected, slower engines may be cancelled (see cancelledEngines). Pass explicit `engines` to disable early cancellation."
    • changedInput schema / properties / minResults / description
      Previous value: -"Auto-run additional engines when fewer than this many USABLE results (relevant, non-entry-page) come back (default: server DEFAULT_MIN_RESULTS, usually 5; max 50 — larger values only burn the search deadline)"New value: +"Auto-run additional engines when fewer usable results come back (default: 5 when engines omitted, 0 when engines explicitly specified)"
    • changedInput schema / properties / queries / description
      Previous value: -"1-4 queries run concurrently and merged (required if 'query' is omitted) — for covering multiple intents in one call (e.g. official docs / Chinese community / English). Response includes 'cached: true' only when all sub-queries hit the TTL cache."New value: +"1-4 queries run concurrently and merged (required if 'query' is omitted)"
    • addedInput schema / properties / searchMode / description
      Added value: +"Execution mode: 'request' (HTTP only), 'auto' (HTTP with browser fallback), or 'playwright' (headless browser only)"
    • addedInput schema / properties / site
      Added value: +{
      +  "description": "Restrict search to specific site domain(s) (e.g. ['github.com', 'developer.mozilla.org'])",
      +  "items": {
      +    "type": "string"
      +  },
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / timeRange
      Added value: +{
      +  "description": "Publication time range filter ('day', 'week', 'month', 'year')",
      +  "enum": [
      +    "day",
      +    "week",
      +    "month",
      +    "year"
      +  ],
      +  "type": "string"
      +}
  3. Changed3 schema fields changedv1.2.1
    • changedInput schema / properties / engines / items / description
      Previous value: -"Search engine name. Valid values (normalize alias to canonical name): baidu, bing, csdn, duckduckgo, exa, brave, juejin, startpage, sogou"New value: +"Search engine name. Valid values (normalize alias to canonical name): baidu, bing, csdn, duckduckgo, exa, brave, juejin, startpage, sogou, github, stackoverflow, hackernews, arxiv"
    • addedInput schema / properties / fetchTop
      Added value: +{
      +  "description": "Two-in-one search & fetch: automatically fetch full readable Markdown content for top N results (0~3) in a single turn (up to 4000 chars per article)",
      +  "maximum": 3,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • changedInput schema / properties / limit / type
      Previous value: -"number"New value: +"integer"
  4. Changed2 schema fields changedv1.0.25
    • changedInput schema / properties / queries / description
      Previous value: -"1-4 queries run concurrently and merged (required if 'query' is omitted) — for covering multiple intents in one call (e.g. official docs / Chinese community / English)"New value: +"1-4 queries run concurrently and merged (required if 'query' is omitted) — for covering multiple intents in one call (e.g. official docs / Chinese community / English). Response includes 'cached: true' only when all sub-queries hit the TTL cache."
    • addedInput schema / properties / verbose
      Added value: +{
      +  "description": "Include verbose diagnostic fields (engineMetrics, full failure hints, and redundant source hostnames); default false to save tokens",
      +  "type": "boolean"
      +}
  5. Changed2 schema fields changedv1.0.21
    • changedInput schema / properties / queries / description
      Previous value: -"1-4 queries run concurrently and merged (dedup by URL) — for covering multiple intents in one call (e.g. official docs / Chinese community / English)"New value: +"1-4 queries run concurrently and merged (required if 'query' is omitted) — for covering multiple intents in one call (e.g. official docs / Chinese community / English)"
    • changedInput schema / properties / query / description
      Previous value: -"Single search query (use queries for multi-intent fan-out)"New value: +"Single search query (required if 'queries' is omitted; use 'queries' for multi-intent fan-out)"
  6. Changed2 schema fields changedv1.0.17
    • changedInput schema / properties / minResults / description
      Previous value: -"Auto-run additional engines when fewer than this many USABLE results (relevant, non-entry-page) come back (default: server DEFAULT_MIN_RESULTS, usually 5)"New value: +"Auto-run additional engines when fewer than this many USABLE results (relevant, non-entry-page) come back (default: server DEFAULT_MIN_RESULTS, usually 5; max 50 — larger values only burn the search deadline)"
    • addedInput schema / properties / minResults / maximum
      Added value: +50
  7. Changed8 schema fields changedv1.0.15
    • removedInput schema / properties / engines / default
      Removed value: -[
      -  "bing"
      -]
    • addedInput schema / properties / engines / description
      Added value: +"Search engines to use (default: server default, which may auto-route by query language)"
    • removedInput schema / properties / limit / default
      Removed value: -10
    • addedInput schema / properties / limit / description
      Added value: +"Max results (default: server DEFAULT_SEARCH_LIMIT, usually 10)"
    • changedInput schema / properties / minResults / description
      Previous value: -"Auto-run additional engines when fewer than this many results come back (default: disabled)"New value: +"Auto-run additional engines when fewer than this many USABLE results (relevant, non-entry-page) come back (default: server DEFAULT_MIN_RESULTS, usually 5)"
    • addedInput schema / properties / queries
      Added value: +{
      +  "description": "1-4 queries run concurrently and merged (dedup by URL) — for covering multiple intents in one call (e.g. official docs / Chinese community / English)",
      +  "items": {
      +    "maxLength": 500,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 4,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / query / description
      Added value: +"Single search query (use queries for multi-intent fan-out)"
    • removedInput schema / required
      Removed value: -[
      -  "query"
      -]
  8. First observedv1.0.11

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, and open-world semantics, so the description only needs to add context. It contributes 'no API keys required' (a real auth disclosure) and the multi-engine fan-out model, but omits rate-limit behavior, latency expectations, and that early engine cancellation can drop results — that last point lives only in the schema's 'limit' description.

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?

One front-loaded sentence naming the core action, followed by a capability list — efficient and scannable. The trailing 'no API keys required' is slightly tacked on but genuinely informative, so little is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a 10-parameter, multi-engine tool with no output schema, so the description should explain the shape of results (merged ranked results with source metadata, cancelledEngines diagnostics on early termination). It instead lists inputs already documented in the schema, leaving the agent to guess what comes back and how results are merged/ranked.

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?

With 100% schema description coverage, the baseline is 3. The description name-drops 'queries', 'timeRange', 'site', and 'fetchTop', which helps an agent notice key capabilities, but adds no syntax or semantics beyond what the schema already spells out (e.g. the fetchTop 0-3 range and its Markdown return are schema-only).

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 concrete verb+resource: 'Search the web across multiple engines', with qualifiers (Chinese/English/Code corpora). This distinguishes it from the sibling fetchWebContent, which retrieves content from a known URL rather than discovering URLs. It does not name any sibling explicitly, so an agent must infer the boundary.

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?

Usage is implied by the features listed (multi-query fan-out, timeRange, site restriction, fetchTop), but the description never says when to pick this tool over fetchWebContent or queryDocs, nor when to prefer 'query' versus 'queries'. The when-not guidance is absent entirely.

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