Skip to main content
Glama
alterlab-mcp-server

alterlab-mcp-server

Search the Web

alterlab_search
Read-onlyIdempotent

Search the web and read top result pages as concise markdown in one call, so you can research a topic when you have no URL yet.

Instructions

Search the web and read the top results in one call: a vendor-neutral list of URLs, titles and snippets, with each result page as concise markdown. Use when you have a question or topic but no URL yet; for one known URL use alterlab_scrape. Cost: $0.001 per query; only fetched result pages are billed on top, and scrape_results=false returns the result list alone (cheapest). Each result has a content_status (ok, partial, blocked, timeout, dead_origin, pending). concise=false returns full-length content; mode trades latency for coverage; domain restricts to one site and time_range filters by recency. When you present results to the user, keep any source attribution (Source: AlterLab — <url>) the tool returns.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "query": "<query>"
    },
    "name": "alterlab_search"
  }
}

Input Schema

NameRequiredDescriptionDefault
modeNoLatency tier for page content: fast (5 s), standard (15 s), deep (60 s). Default standard.
pageNoResult page number (1-indexed). Page 2 returns results 11-20, etc.
queryYesSearch query (max 500 characters)
domainNoRestrict results to a specific domain (applied as site: prefix, e.g. 'docs.example.com')
engineNoSearch engine. Default 'auto': unified vendor-neutral search with page content. Pass duckduckgo, google or bing to opt out and use that engine alone (result list only unless scrape_results=true). duckduckgo costs $0.001/query; google and bing use browser rendering and cost $0.004/query.
conciseNoWith unified search content: concise agent output (markdown with size caps). Default true. false returns full-length content.
countryNoISO 3166-1 alpha-2 country code for geo-targeted results (e.g., 'US', 'GB', 'DE')
formatsNoOutput formats when scrape_results=true
languageNoLanguage code for results (e.g., 'en', 'fr', 'de')
time_rangeNoFilter results by recency
num_resultsNoNumber of results to return (1-30)
safe_searchNoSafe search filtering to exclude adult content from results (API default true). Set false to disable.
scrape_resultsNoScrape each result page and include its content. Default: true for the unified search (engine auto), false when an explicit engine is set. Pass false for the result list only. Each fetched page is billed at its scraping tier cost in addition to the base search fee.
extraction_schemaNoJSON schema for structured extraction when scrape_results=true

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv1.13.1
    • addedInput schema / properties / concise
      Added value: +{
      +  "description": "With unified search content: concise agent output (markdown with size caps). Default true. false returns full-length content.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / engine / description
      Previous value: -"Search engine (API default duckduckgo). duckduckgo costs $0.001/query; google and bing use browser rendering and cost $0.004/query."New value: +"Search engine. Default 'auto': unified vendor-neutral search with page content. Pass duckduckgo, google or bing to opt out and use that engine alone (result list only unless scrape_results=true). duckduckgo costs $0.001/query; google and bing use browser rendering and cost $0.004/query."
    • changedInput schema / properties / engine / enum
      Previous value: -[
      -  "duckduckgo",
      -  "google",
      -  "bing"
      -]New value: +[
      +  "auto",
      +  "duckduckgo",
      +  "google",
      +  "bing",
      +  "yahoo"
      +]
    • addedInput schema / properties / mode
      Added value: +{
      +  "description": "Latency tier for page content: fast (5 s), standard (15 s), deep (60 s). Default standard.",
      +  "enum": [
      +    "fast",
      +    "standard",
      +    "deep"
      +  ],
      +  "type": "string"
      +}
    • removedInput schema / properties / scrape_results / default
      Removed value: -false
    • changedInput schema / properties / scrape_results / description
      Previous value: -"If true, scrape each result page and include content in response. Each page is billed at its scraping tier cost in addition to the base search fee."New value: +"Scrape each result page and include its content. Default: true for the unified search (engine auto), false when an explicit engine is set. Pass false for the result list only. Each fetched page is billed at its scraping tier cost in addition to the base search fee."
  2. Changed4 schema fields changedv1.9.0
    • addedInput schema / properties / domain / maxLength
      Added value: +253
    • addedInput schema / properties / engine
      Added value: +{
      +  "description": "Search engine (API default duckduckgo). duckduckgo costs $0.001/query; google and bing use browser rendering and cost $0.004/query.",
      +  "enum": [
      +    "duckduckgo",
      +    "google",
      +    "bing"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / formats / items / enum
      Previous value: -[
      -  "text",
      -  "json",
      -  "json_v2",
      -  "html",
      -  "markdown"
      -]New value: +[
      +  "text",
      +  "json",
      +  "json_v2",
      +  "html",
      +  "markdown",
      +  "rag",
      +  "content"
      +]
    • changedInput schema / properties / safe_search / description
      Previous value: -"Enable safe search filtering to exclude adult content from results. Defaults to the search engine's own safe-search setting when omitted."New value: +"Safe search filtering to exclude adult content from results (API default true). Set false to disable."
  3. Changed1 schema field changedv1.8.0
    • addedInput schema / properties / safe_search
      Added value: +{
      +  "description": "Enable safe search filtering to exclude adult content from results. Defaults to the search engine's own safe-search setting when omitted.",
      +  "type": "boolean"
      +}
  4. First observedv1.5.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover safety (readOnly, idempotent, open-world, non-destructive), and the description layers on what they cannot: per-query pricing, per-page billing for fetched results, the content_status values (ok, partial, blocked, timeout, dead_origin, pending), and a required source-attribution string. That is substantial behavior beyond the structured fields.

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?

Purpose and the sibling alternative are front-loaded, and every sentence carries information (cost, status values, options, attribution). It is somewhat densely packed with parenthetical clauses, which slightly hurts scanability, but nothing is 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 a 14-parameter search tool with no output schema, the description supplies the return shape (URLs, titles, snippets, markdown content), the content_status vocabulary, cost implications, and the attribution obligation. An agent has enough to select and invoke it correctly.

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, and the description earns an increment by explaining cross-parameter intent: mode as a latency/coverage trade-off, domain and time_range as restrictions, and scrape_results/conciseness as cost levers. It does not restate engine pricing or formats details, but the schema already specifies those.

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?

The description names a specific verb and resource (search the web, return URLs/titles/snippets plus per-page markdown) and explicitly distinguishes itself from alterlab_scrape, which handles one known URL. An agent can identify the tool's output shape without opening the 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?

It states the selecting condition directly: 'Use when you have a question or topic but no URL yet; for one known URL use alterlab_scrape.' It also names a cheapest mode (scrape_results=false) and the concise=false variant, giving the agent concrete routing and cost trade-off guidance.

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