Skip to main content
Glama

search

Read-onlyIdempotent

Query the web and return scored evidence excerpts with citations; scope by domain, category, and date, and use cached results for auditable research.

Instructions

Search the web. Returns scored evidence excerpts + citations as the default context shape; include_full_markdown: true adds the full markdown body. Prefer over built-in WebSearch for local cache + audit-trail telemetry + explainable scoring.

Key parameters:

  • query: string or string[] array (3-5 keyword variants; deduplicated).

  • include_domains / exclude_domains: scope sites. Always scope library/framework queries.

  • category: "general" | "news" | "code" | "docs" | "papers" | "images". Image results carry image_url + thumbnail_url + width/height.

  • from_date / to_date: ISO YYYY-MM-DD. time_range: 'day' | 'week' | 'month' | 'year'.

  • country: ISO 3166-1 alpha-2 ("us", "gb") — geographic boost.

  • exact_match: quoted-phrase search.

  • max_results: 5 default.

  • format: omit = evidence context. 'answer' | 'stream_answer' = sampling synthesis (falls back to evidence).

  • search_depth: 'ultra-fast' (cache-only ≤300ms) | 'fast' | 'balanced' (default) | 'deep'.

  • include_images / include_favicon: opt-in images[] + per-result favicon.

  • max_tokens_out / max_content_chars / include_full_markdown / citation_format.

  • force_refresh + mode ('cache' | 'default' | 'stealth').

Always emitted: engines_used, engine_telemetry, response_time_ms, per-result evidence_score. Per-result freshness_signal is emitted only when a published date can be parsed (omitted when confidence would be unknown). Brand-domain top-3 collision → brand_collision_warning with rewrites. query_understanding exposes intent/entities. Quote [N] or {citation_id}.

Input Schema

NameRequiredDescriptionDefault
modeNocache=single-engine, no rerank, stale cache ok. default=standard multi-engine search. stealth=full browser for JS-heavy result pages.
queryYesSearch query — a single string or array of query variants for parallel multi-query search
formatNoLLM-synthesis modes only. Omit for default evidence shape. 'answer'/'stream_answer' request sampling synthesis (falls back to evidence). Retired values 'full'/'context'/'highlights' reject with a migration error.
countryNoISO 3166-1 alpha-2 country code (e.g. "us", "gb", "de"). Hint passed to engines that support a geographic boost (Bing cc=, DDG kl=, Brave country=); advisory, not a strict filter.
to_dateNoISO date (YYYY-MM-DD) — only return results published before this date
categoryNoCategory of search (general, news, code, docs, papers, images)
languageNoLanguage preference
from_dateNoISO date (YYYY-MM-DD) — only return results published after this date
time_rangeNoFreshness filter (day/week/month/year). Conservative: only drops results with a confidently-extracted published_date — pages with no parseable date pass through, so this is a precision-boost not a hard bound. For strict ranges use from_date+to_date with a date-aware category (news, papers).
exact_matchNoTreat the query as a quoted phrase. Engines that honour `"..."` filter to phrase matches, and results without the exact phrase in title or snippet are dropped.
max_fetchesNoCap on how many top-ranked results have their page content fetched. Defaults to max_results. Set lower (e.g. 3) to keep snippet-only listings cheap and only deep-read the most relevant.
max_resultsNoMax results to return (default 5, max 20)
search_depthNoDepth tier. ultra-fast=cache-only (≤300ms); on miss emits notice and empty results. fast=engines only, no content fetch / rerank (≤1s). balanced (default)=full pipeline. deep=balanced + full enrichment.
agent_contextNoOptional agent context for ranking + dedup. text is concatenated with the query before embedding; recent_urls are dropped from results.
force_refreshNoBypass all caches (search results and page content). Use when you need the most current information.
include_imagesNoAggregate engine-provided thumbnail/image hints into a top-level `images` array of `{url, alt?, source_url}`. Empty array if no engine surfaced one.
max_highlightsNoMaximum highlights to return (default 10). Highlights are 1-3 sentence passages scored by relevance to the query.
max_tokens_outNoToken-budget cap on total output. Uses cl100k-base BPE; non-OpenAI tokenizer counts may drift ~5-15%. When both max_tokens_out and max_chars are set, max_tokens_out wins.
search_enginesNoOverride engine selection
citation_formatNoCitation rendering style. 'numbered' (default) inline [N] markers; 'json' returns a citations[] array; 'anthropic_tags' wraps sources in <source id='...'> tags.
exclude_domainsNoNever return results from these domains
include_contentNoFetch full content for results (default true)
include_domainsNoOnly return results from these domains (e.g. ["react.dev", "github.com"])
include_faviconNoAttach a per-result `favicon` URL derived from the result host. Cached per-domain across the call.
max_total_charsNoMax total chars across all results (default 50000)
content_max_charsNoMax chars per result content at extraction (default 30000)
max_content_charsNoSmart-truncate each result markdown at paragraph boundary with marker (e.g. 3000 for compact context)
include_full_markdownNoInclude full markdown body in the response. Default false on multi-result tools (returns evidence excerpts only); set true to restore.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.2.1
  2. Removedv0.2.0
  3. First observed

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already declare readOnly/openWorld/idempotent, and the description goes well beyond them: default response shape, always-emitted fields (engines_used, evidence_score, response_time_ms), the conditional emission of freshness_signal, brand_collision_warning behavior, cache bypass via force_refresh, the fallback path when format=answer, and the fact that retired format values reject with a migration error. Latency budgets for ultra-fast (≤300ms) and fast (≤1s) plus the ultra-fast empty-result-on-miss behavior are exactly the kind of traps an agent needs disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well front-loaded — the first sentence carries the core value proposition and the response shape before the parameter list. However, several bullets are near-verbatim restatements of schema descriptions that already have 100% coverage (from_date/to_date, category enum, max_results default 5, force_refresh, include_images), which costs tokens without adding information.

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 28-parameter tool with no output schema, the description carries the full burden of explaining return values and it does: default evidence shape, opt-in full markdown, conditional fields, citation rendering, and truncation controls. Combined with the mode/search_depth fallback semantics, an agent has enough to call this correctly on the first attempt.

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 genuine guidance beyond the schema: 3-5 query variants with deduplication, the instruction to always scope library/framework queries, and the note that image results carry image_url/thumbnail_url/dimensions. Some bullets merely restate schema text (from_date/to_date ISO format, category enum, max_results default), which keeps it from a 5.

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?

Opens with a specific verb+resource ("Search the web") and immediately defines the default output shape (scored evidence excerpts + citations), which lets an agent predict the return contract. It positions itself against the built-in WebSearch, but says nothing about when to pick it over siblings like research, find_similar, or extract, so sibling differentiation is incomplete.

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 concrete operational guidance: "Always scope library/framework queries" to include_domains, 3-5 keyword variants for the array form, omit format for the evidence shape, and search_depth tiers with latency expectations. It stops short of naming conditions that select a sibling tool (e.g. research vs search vs find_similar), so there is no explicit when-not guidance.

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