Skip to main content
Glama

Research the web

research
Read-only

Search the web and return ranked, relevant passages from multiple sources with provenance receipts, stripping hidden text and reporting failed sources.

Instructions

Search the web and return ranked passages drawn from several sources.

One call does what search + repeated read_url would: finds pages, reads them through the stealth browser, and returns the passages most relevant to query — each attributed to its source, with that source's provenance receipt and any stripped injection payloads. A source that fails is reported in sources rather than failing the whole call.

Prefer read_url when you already have the URL, and search when you only want links. This reads max_sources pages, rate limited per domain, so it is the slowest of the three and the one to avoid for a single known page.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYesThe question to research. Passages are ranked against it.
max_tokensNoToken budget for the returned passages. Omit to use the server's GROUNDHOG_MAX_TOKENS (20000 by default). Must be positive.
max_sourcesNoHow many pages to read. Values outside 1-10 are clamped rather than rejected. Each source is a full page fetch, so this is the main cost and latency control.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYes
backendYes
sourcesYes
passagesYes
truncatedYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.15.0
    • addedOutput schema / $defs / Threat / properties / seen
      Added value: +{
      +  "title": "Seen",
      +  "type": "integer"
      +}
  2. Changed1 schema field changedv0.13.0
    • changedOutput schema / $defs / Threat / properties / type / enum
      Previous value: -[
      -  "hidden_css",
      -  "report_truncated",
      -  "final_url_suppressed",
      -  "detection_degraded",
      -  "strip_incomplete",
      -  "zero_width",
      -  "bidi",
      -  "tag"
      -]New value: +[
      +  "hidden_css",
      +  "hidden_attribute",
      +  "hidden_template",
      +  "report_truncated",
      +  "final_url_suppressed",
      +  "detection_degraded",
      +  "strip_incomplete",
      +  "zero_width",
      +  "bidi",
      +  "tag"
      +]
  3. Changed2 schema fields changedv0.10.0
    • addedOutput schema / $defs / Source / properties / page_status
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "ok",
      +        "challenge",
      +        "blocked",
      +        "rate_limited",
      +        "not_found",
      +        "server_error",
      +        "unsupported_content",
      +        "unknown"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "title": "Page Status"
      +}
    • changedOutput schema / $defs / Source / required
      Previous value: -[
      -  "url",
      -  "title",
      -  "status",
      -  "threats",
      -  "provenance",
      -  "error"
      -]New value: +[
      +  "url",
      +  "title",
      +  "status",
      +  "page_status",
      +  "threats",
      +  "provenance",
      +  "error"
      +]
  4. Changed3 schema fields changedv1.0.0
    • addedInput schema / properties / max_sources / description
      Added value: +"How many pages to read. Values outside 1-10 are clamped rather than rejected. Each source is a full page fetch, so this is the main cost and latency control."
    • addedInput schema / properties / max_tokens / description
      Added value: +"Token budget for the returned passages. Omit to use the server's GROUNDHOG_MAX_TOKENS (20000 by default). Must be positive."
    • addedInput schema / properties / query / description
      Added value: +"The question to research. Passages are ranked against it."
  5. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnlyHint/openWorldHint annotations, the description discloses per-domain rate limiting, that each source is a full fetch (cost/latency driver), that a failing source is reported in `sources` rather than failing the whole call, and that results carry provenance receipts and stripped injection payloads. These are non-obvious operational traits that materially affect how an agent should call and interpret it.

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?

Three short paragraphs each doing distinct work: purpose/output shape, behavioral traits, then routing and cost. Everything is front-loaded and no sentence is redundant with another.

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?

Although an output schema exists (so return values need not be explained), the description still characterizes the return shape (ranked passages, per-source attribution, partial-failure reporting), which is enough for an agent to call it correctly and interpret results without surprises.

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 `query`, `max_tokens` and `max_sources` are already fully documented in the schema, including clamping behavior and token budget defaults. The description adds only a marginal note ('reads max_sources pages'), which largely restates the schema, so the baseline 3 is appropriate.

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 and return ranked passages') and immediately differentiates itself from siblings by framing the call as 'search + repeated read_url' in one. An agent can tell exactly what this tool produces (ranked, attributed passages) versus what read_url and search produce.

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?

Explicit routing rules are given: 'Prefer read_url when you already have the URL, and search when you only want links,' plus the negative guidance that this is 'the slowest of the three and the one to avoid for a single known page.' Both the when and the when-not are stated with the named alternatives.

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

Deploy Server

Other Tools