Skip to main content
Glama

search_web

Read-only

Search the web across Google Custom Search, Brave, Exa, or SearXNG, filter by file type or language, and optionally save full JSON results to disk for later analysis.

Instructions

Search the web with Google Custom Search, Brave, Exa or SearXNG (engine key, or the server default). Optional search_genre filtering (file types or language; see get_search_genres). Supply output_path in the request to persist the full unsliced result set to disk as JSON and receive a slim response.

Input Schema

NameRequiredDescriptionDefault
requestYesDict with: query (required), num_results, search_genre (optional, one of: pdf, documents, presentations, spreadsheets, japanese, english; adds a filetype/language operator to the query, other values return an error), engine (optional, one of: auto, google_custom, brave, exa, searxng; default from SEARCH_ENGINE, auto tries the configured engines in SEARCH_ENGINE_ORDER and moves to the next one on errors other than zero results), result_type (optional; default web; one of web, discussions, faq, videos, news, or several as a list or a comma-separated string; everything except web runs on brave only; news is a separate Brave News Search request; results holds web when requested, else the first type, and the other types go to extra_results; discussions are forum posts with the forum name, answer count, post score, question and top comment; faq are question and answer excerpts; Brave returns these sections for some queries only, and num_results only shortens them), language, region, recent_days, content_limit (int), content_offset (int). Optional persistence keys: output_path (absolute file path, auto .json extension — full unsliced results written to disk BEFORE content_limit/content_offset slicing), include_content_in_response (bool, default False — when True keeps results in the response too, still subject to slicing), overwrite (bool, default False).

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.4.2

TDQS

A3.8/5.0
Behavior4/5

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

With readOnlyHint=true covering the safety profile, the description still adds real behavioral detail: output_path writes the full unsliced result set to disk BEFORE content_limit/content_offset slicing and returns a slim response. That persistence side effect is useful context not present in the annotations, though it sits somewhat in tension with readOnlyHint and is not reconciled.

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?

Three dense sentences, front-loaded with the core action and back-loaded with the persistence nuance. Nothing is wasted, though the parenthetical engine clause is slightly compressed to the point of ambiguity about what 'engine key' means.

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

Completeness4/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 no explanation, and the description cross-references get_search_genres for the one enum-like parameter that matters. The main gap is the absence of routing guidance among six search siblings, which the rich schema cannot supply.

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 baseline is 3, but the description earns extra credit by surfacing the two highest-leverage parameters and their semantics: search_genre routing to get_search_genres, and output_path plus the pre-slice write ordering. It does not restate engine/result_type behavior, but the schema already does that thoroughly.

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 opens with a specific verb and resource ('Search the web') and immediately names the four backends, which implicitly separates it from the single-engine sibling search_google. It does not explicitly contrast against search_google, batch_search_web, or search_and_crawl, so an agent must infer the boundary, but the multi-engine scope is clear.

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 context is implied rather than stated: use search_genre 'see get_search_genres' for file-type or language operators, and add output_path when persistence is needed. There is no explicit when-to-use-this-vs-search_google or batch_search_web guidance despite six closely related siblings.

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