Skip to main content
Glama
OpenSERP

OpenSERP

Official

@openserp/mcp

npm version license

Live search on six engines (Google, Bing, Yandex, Baidu, DuckDuckGo, Ecosia), image search and single/batch page extraction for AI agents. Results keep the source engine and rank. Runs against a self-hosted OpenSERP server or OpenSERP Cloud.

When OPENSERP_API_KEY is not set, the server uses OSS mode at http://localhost:7000 and writes:

[openserp-mcp] No OPENSERP_API_KEY set - using OSS mode at http://localhost:7000.
[openserp-mcp] Get an API key: https://openserp.org/dashboard/keys
[openserp-mcp] Docs: https://openserp.org/docs | Issues: https://github.com/openserpapi/mcp/issues

Set OPENSERP_API_KEY to use OpenSERP Cloud. API keys are available at https://openserp.org/dashboard/keys. Set OPENSERP_BASE_URL to target another compatible OpenSERP API base URL.

Install

npm install -g @openserp/mcp

You can also run it without installing:

npx -y @openserp/mcp --stdio

Related MCP server: wigolo

Tools

Tool

Use it when

search

The engine matters (Yandex for Russian, Baidu for Chinese), or you page with start

any_search

You want a preferred engine with fallbacks, in your order

fast_search

Any engine will do; picks the healthiest, fastest one

mega_search

You compare engines or want wider coverage; results keep engine and rank

image_search

Images from one engine

mega_image

Images merged from several engines

extract

Reading one page as Markdown

batch_extract

Reading several pages (up to 20) in one call; a failed URL doesn't fail the batch

list_engines

Searches keep failing and you need a healthy engine

get_usage

Checking the Cloud credit balance or what the last call cost

extract and batch_extract cut long pages to fit an agent's context: 20,000 characters per page, or 40,000 shared across a batch (at least 2,000 per URL). Cut content ends with a [truncated: ...] line and is flagged (truncated / metadata.truncated). Pass maxChars to read more.

Quick Examples

Ask your MCP client to:

  • Search Google for current docs and return the top 5 URLs.

  • Compare Google and Bing results for an SEO keyword.

  • Extract clean Markdown from a URL before passing it to an LLM.

  • Ground an answer in several sources at once with batch_extract - up to 20 URLs in one round-trip, where a dead link returns an error item instead of failing the batch.

  • Read a geo-fenced page as a local visitor by passing region: "DE".

  • Check remaining Cloud credits with get_usage.

Cloud search parameters

Cloud requests use Authorization: Bearer with OPENSERP_API_KEY. For paging, use start and keep limit: 10; pass the previous response's pagination.next_start while has_more is true. Google, Bing, and Yandex take multiples of 10; Baidu supports early pages, Ecosia any offset, and DuckDuckGo only the first page. mega_search with mode: "balanced" rejects start > 0; use search, any_search, or fast_search for later pages.

Cloud web search supports date: "20250101..20251231" on Google and Ecosia. Unsupported offsets or date filters return 400 invalid_request without charge; adjust the request before retrying.

list_engines returns Cloud capabilities plus operational status. Omit engines to use defaults. Any starts engines in your order, overlapping slow attempts; Fast prioritizes recent health and latency. Read meta.engine_used for the winner; engines_tried and engines_skipped may be absent.

Tool errors include the public HTTP status, error code, request ID, and retry delay when present. Honor retry_after for 429 and 503; 503 engine_unavailable carries a 60-second delay. The server does not retry automatically.

Claude Desktop

Local OSS mode:

{
  "mcpServers": {
    "openserp": {
      "command": "npx",
      "args": ["-y", "@openserp/mcp"]
    }
  }
}

Cloud mode:

{
  "mcpServers": {
    "openserp": {
      "command": "npx",
      "args": ["-y", "@openserp/mcp"],
      "env": {
        "OPENSERP_API_KEY": "osk_live_..."
      }
    }
  }
}

Cursor

For stdio use, add an MCP server entry:

{
  "mcpServers": {
    "openserp": {
      "command": "npx",
      "args": ["-y", "@openserp/mcp"],
      "env": {
        "OPENSERP_API_KEY": "osk_live_..."
      }
    }
  }
}

For remote-style HTTP use, run:

npx -y @openserp/mcp --http --host 127.0.0.1 --port 3333

Then point a streamable HTTP MCP client to:

http://127.0.0.1:3333/mcp

Clients that still use the older SSE transport can connect to:

http://127.0.0.1:3333/sse

Environment

  • OPENSERP_API_KEY: Cloud API key from https://openserp.org/dashboard/keys.

  • OPENSERP_BASE_URL: API base URL override.

  • OPENSERP_BACKEND: Optional backend hint, oss or cloud.

  • OPENSERP_TIMEOUT_MS: SDK request timeout in milliseconds.

  • HOST: HTTP host, default 127.0.0.1.

  • PORT: HTTP port, default 3333.

Resources

Available Tools

10 tools
batch_extractExtract several URLsA

Extract LLM-ready content from up to 20 URLs in one request. Prefer this over repeated extract calls when grounding an answer in several pages: it is one round-trip, and a URL that fails returns an item with an error instead of failing the batch. Returns results (url, page_content as Markdown, error when that URL failed; metadata with title, mode_used and, when cut, truncated and total_chars) and meta (requested, succeeded, failed). Cloud: billed per URL like extract; failed and empty URLs are free.

NameRequiredDescriptionDefault
langNoPreferred page language, sent as Accept-Language, such as en or de.
modeNoauto (default): fast HTTP fetch, browser render if the page comes back empty. fast: HTTP only. rendered: always a browser, for JavaScript-heavy pages.auto
urlsYesAbsolute URLs to fetch and extract. Duplicates are dropped.
cleanNoArticle-only extraction (default true). Set false for landing pages, docs indexes and dashboards, where content sits in navigation or feature blocks.
regionNoTwo-letter country code applied to every URL, e.g. US or DE. On Cloud this adds 1 credit per extracted URL.
maxCharsNoMax characters of content per URL. Default splits 40000 across the batch (at least 2000 each). Longer pages are cut and marked metadata.truncated.
minRunesNoMinimum text length (in runes) before auto mode escalates to a browser render. 0 uses the built-in floor.
useLlmsTxtNoFor a site root URL, return the site's /llms-full.txt or /llms.txt instead when it has one.

TDQS

A5/5.0
Behavior5/5

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

Since there are no annotations, the description carries the full burden of transparency. It successfully discloses critical behaviors: handling failure within the batch (one URL failure doesn't halt the process), the complete structure of the return value (results and meta), and the impact of length limits (truncation metadata).

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?

The definition is highly efficient. It front-loads the scope and primary use case and then dedicates the rest of the text to describing essential operational guarantees (failure handling, billing, output structure) without any fluff.

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?

Given that the tool is complex (8 parameters) and lacks formal output/annotation schemas, the description is exceptionally complete. It details input limits, operational guarantees, and the resulting data structure needed for an agent to predict the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds crucial contextual meaning beyond the schema definitions. It explains practical implications, such as the effect of `clean` (when NOT to use it), the operational difference between `mode` values, and how `maxChars` leads to truncation metadata.

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 tool clearly defines its purpose (Extract LLM-ready content) and immediately differentiates itself from its sibling tools (like standard 'extract') by defining its batch operation and primary use case.

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 provides explicit usage guidance: 'Prefer this over repeated extract calls when grounding an answer in several pages.' This clearly sets the context for when to use batch_extract versus its sequential alternative.

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

extractExtract URLA

Fetch one URL and return its main content as Markdown, e.g. to read a page found by search. Returns JSON: url, title, description, markdown, text, headings, links (first 50), lang and meta.mode_used. Content over maxChars (default 20000) is cut and the result gets truncated: true. For two or more pages use batch_extract. Pages behind logins or bot walls can fail or come back thin; try mode rendered or another source. Cloud: 1 credit for a fast fetch, 3 when the page needs a browser, +1 with region; failed and empty pages are free. Errors return isError with status and error code.

NameRequiredDescriptionDefault
urlYesAbsolute URL to fetch and extract.
langNoPreferred page language, sent as Accept-Language, such as en or de.
modeNoauto (default): fast HTTP fetch, browser render if the page comes back empty. fast: HTTP only. rendered: always a browser, for JavaScript-heavy pages.auto
cleanNoArticle-only extraction (default true). Set false for landing pages, docs indexes and dashboards, where content sits in navigation or feature blocks.
formatNojson (default) for the structured fields; markdown or text for the page content as plain text.json
regionNoTwo-letter country code to extract from, e.g. US or DE, for geo-fenced or localized pages. On Cloud this adds 1 credit per extracted URL.
maxCharsNoMax characters of page content (default 20000). Longer pages are cut and marked truncated.
minRunesNoMinimum text length (in runes) before auto mode escalates to a browser render. 0 uses the built-in floor.
useLlmsTxtNoFor a site root URL, return the site's /llms-full.txt or /llms.txt instead when it has one.

TDQS

A4.8/5.0
Behavior5/5

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

Since no annotations exist, the description carries the full burden of disclosure. It provides excellent transparency regarding behavioral traits like content truncation (`maxChars`), failure modes (logins/bot walls), and operational costs (credit usage).

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?

The definition is highly dense but well-ordered, following a logical flow: primary action, return data, operational limits, failure modes, and cloud billing. It maximizes information density while remaining coherent.

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?

Given the complexity and the absence of an output schema, the description is exceptionally complete. It defines the entire lifecycle of the tool, from successful return structure to operational costs and error handling.

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?

Although the schema coverage is 100%, the description adds significant value by detailing the expected output structure (url, markdown, text, etc.), defining the default limit (20,000 chars), and explaining the functionality of features like truncation.

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 tool clearly states its purpose is to fetch one URL and return its main content. It distinguishes itself from its sibling, batch_extract, by specifying it operates on a single URL.

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?

The definition provides explicit usage guidelines, advising the use of batch_extract for multiple pages. It also instructs users on what to try (mode rendered) when faced with failure conditions (logins, bot walls).

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

get_usageGet UsageA

Show the OpenSERP Cloud account behind OPENSERP_API_KEY: account (plan, credits_remaining) and lastResponse (request_id, credits used, engine) for the previous tool call in this session. Read-only and free. Use it to check the balance before a large batch or to see what a call cost. Self-hosted mode has no credits, so it returns an error there.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden, and it does useful work: it declares the operation read-only and free, and discloses the self-hosted failure mode. However, it says nothing about the error shape, whether a first call in a session has no lastResponse, or any rate/refresh behavior, leaving some invocation-risk questions unanswered.

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?

Every sentence earns its place: purpose and return shape first, then usage guidance, then the self-hosted caveat last. There is no redundant restatement of the title.

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?

With no output schema and no annotations, the description supplies both the return fields and the safety profile itself, which is exactly what an agent needs to decide to call it and interpret the result. The zero-parameter schema leaves nothing else to document.

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?

The tool takes zero parameters, so there is no parameter meaning to convey and the baseline of 4 applies. The description correctly implies parameter-free invocation rather than suggesting any input is expected.

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 resource (the OpenSERP Cloud account behind OPENSERP_API_KEY) and enumerates exactly what is returned: plan, credits_remaining, and lastResponse fields (request_id, credits used, engine). It is clearly distinguishable from the search/extract siblings, which consume credits rather than report them.

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 gives explicit when-to-use guidance ('check the balance before a large batch or to see what a call cost') and states a when-not-to-use condition (self-hosted mode has no credits and returns an error). No alternative tool could serve this purpose, so no routing gap remains.

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

list_enginesList EnginesA

List the engines this OpenSERP backend can use and whether they work right now. Self-hosted: each engine with initialized and circuit_state (open means it is failing, skip it). Cloud: per-engine web/image support and status (operational, loaded, down) with latency. Read-only and free. Call it when searches keep failing, then pick a healthy engine for search or the engines list.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations present, the description carries the full load and delivers the key traits: 'Read-only and free' declares both the safety profile and the cost model, and 'open means it is failing, skip it' pre-interprets a status value the agent would otherwise misread. It omits auth/prerequisite conditions and whether results are cached, so it is strong but not exhaustive.

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?

The purpose is front-loaded in the first sentence and the diagnostic use case lands last, which is the right ordering. Four sentences for a zero-param tool is slightly dense with backend-specific field lists, but every clause conveys real 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?

No output schema exists, and the description compensates by naming the concrete return fields for both self-hosted and cloud modes along with their semantics. For a zero-parameter read-only diagnostic tool this leaves no meaningful gap for an agent deciding whether to call it.

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?

The tool takes zero parameters, so the baseline is 4; there is nothing to misinterpret and the description correctly implies no arguments are needed.

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?

Specific verb+resource ('List the engines this OpenSERP backend can use') with scope limited to engine health rather than content, which cleanly separates it from the sibling search/extract tools. It goes further and enumerates the differing payload per deployment mode (initialized/circuit_state vs. web/image support, status, latency).

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 an explicit triggering condition ('Call it when searches keep failing') and a follow-up action ('pick a healthy engine for search'). It stops short of naming a specific sibling tool (e.g., any_search vs. fast_search) or stating when not to call it, so it is clear context without full alternative routing.

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

mega_imageMega Image SearchA

Search images on several engines and merge them into one list (mode balanced, the default); each image keeps its source engine and rank, and duplicates are dropped. Use it when one engine gives too few or too similar images; use image_search for a single engine. Balanced mode serves only the first page; mode any or fast returns the first engine that succeeds. Output fields match image_search. Cloud: any/fast cost 1 credit, balanced depends on engines and image volume. Errors return isError with status, error code and retry_after. On 429 or 503 wait retry_after; if an engine is blocked (CAPTCHA, 502/503), try another engine. Unsupported parameters return 400 and are not charged.

NameRequiredDescriptionDefault
dateNoPublished-date range YYYYMMDD..YYYYMMDD. Cloud web search supports Google and Ecosia; unsupported filters return 400 without charge.
fileNoFile extension filter, such as PDF.
langNoLanguage code, such as EN or de.
modeNobalanced (default): all engines in parallel, results merged. any: engines in your order until one succeeds; on Cloud slow attempts can overlap. fast: the healthiest, fastest engine. Only any and fast support start above 0.balanced
siteNoDomain filter, such as example.com.
textNoSearch query text. At least one of text, site, or file should be provided.
limitNoMaximum result count, 1-100. Keep 10 when paging with start.
mergeNotrue (default): one list from every engine that succeeded. false: keep only the first engine that returned results.
startNoResult offset. On Cloud, Google/Bing/Yandex use multiples of 10, Baidu supports early pages, Ecosia any offset, DuckDuckGo none. Balanced mega requires 0; unsupported offsets return 400.
dedupeNoDrop duplicate URLs across engines (default true).
filterNoLet the engine collapse near-duplicate results (default true, mostly affects Google).
formatNojson (default) for structured results; markdown, text or ndjson for compact plain text.json
regionNoMarket or location hint, such as US, DE, en-GB, Berlin, or a Yandex lr id.
enginesNoEngines to query, in priority order for any mode. Omit to use all available engines.
featuresNoAdd serp_features (AI summary, answer box, People Also Ask, related searches) when the engine shows them.

TDQS

A4.5/5.0
Behavior5/5

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

No annotations exist, yet the description covers the full behavioral envelope: credit costs per mode, cloud-specific behavior, error shape (isError with status, code, retry_after), 429/503 backoff instructions, blocked-engine fallback, and the fact that unsupported params return 400 uncharged. It also discloses the hard constraint that balanced mode only serves the first page.

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?

Front-loads purpose and the sibling alternative, then packs operational details into dense clauses. It is information-dense rather than padded, though the run-on semicolon chaining makes some of the error/cost guidance harder to scan.

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?

For a 15-parameter tool with no output schema it covers selection, modes, cost, errors and retry behavior thoroughly. The only gap is that return-shape documentation is delegated to 'Output fields match image_search', requiring a cross-reference to a sibling.

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% and the schema already explains mode, start offsets per engine, dedupe, merge, limit and format in detail. The description mostly restates the mode semantics and adds only the balanced/first-page constraint, so it does little beyond the schema baseline.

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 images on several engines and merge them into one list') plus the default mode and that each result keeps source engine and rank. It explicitly contrasts with image_search for single-engine use, so an agent can distinguish it from all siblings.

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?

Gives an explicit selection condition ('use it when one engine gives too few or too similar images') and names the alternative ('use image_search for a single engine'). It also codifies mode choice: balanced for merged first page, any/fast when one engine succeeding suffices.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updatesv0.1.8
    • Changedany_search9 fields changed
      • changedInput schema / properties / dedupe / description
        Previous value: -"Deduplicate by normalized URL."New value: +"Drop duplicate URLs across engines (default true)."
      • changedInput schema / properties / engines / description
        Previous value: -"Engines to query. Omit to use the default engine set."New value: +"Engines to query, in priority order for any mode. Omit to use all available engines."
      • changedInput schema / properties / extractMode / description
        Previous value: -"Extraction strategy for target pages."New value: +"auto (default): fast HTTP fetch, browser render if the page comes back empty. fast: HTTP only. rendered: always a browser, for JavaScript-heavy pages."
      • changedInput schema / properties / features / description
        Previous value: -"Include supported rich SERP features."New value: +"Add serp_features (AI summary, answer box, People Also Ask, related searches) when the engine shows them."
      • changedInput schema / properties / filter / description
        Previous value: -"Enable duplicate filtering."New value: +"Let the engine collapse near-duplicate results (default true, mostly affects Google)."
      • changedInput schema / properties / format / description
        Previous value: -"Response format."New value: +"json (default) for structured results; markdown, text or ndjson for compact plain text."
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum result count."New value: +"Maximum result count, 1-100. Keep 10 when paging with start."
      • changedInput schema / properties / merge / description
        Previous value: -"Merge successful engine results."New value: +"true (default): one list from every engine that succeeded. false: keep only the first engine that returned results."
      • changedInput schema / properties / minRunes / description
        Previous value: -"Minimum content length (in runes) before auto mode escalates to rendered extraction."New value: +"Minimum text length (in runes) before auto mode escalates to a browser render. 0 uses the built-in floor."
    • Changedbatch_extract5 fields changed
      • changedInput schema / properties / clean / description
        Previous value: -"Use article-only extraction when true."New value: +"Article-only extraction (default true). Set false for landing pages, docs indexes and dashboards, where content sits in navigation or feature blocks."
      • changedInput schema / properties / lang / description
        Previous value: -"Language hint."New value: +"Preferred page language, sent as Accept-Language, such as en or de."
      • changedInput schema / properties / minRunes / description
        Previous value: -"Minimum content length (in runes) before auto mode escalates to rendered extraction."New value: +"Minimum text length (in runes) before auto mode escalates to a browser render. 0 uses the built-in floor."
      • changedInput schema / properties / mode / description
        Previous value: -"Extraction strategy."New value: +"auto (default): fast HTTP fetch, browser render if the page comes back empty. fast: HTTP only. rendered: always a browser, for JavaScript-heavy pages."
      • changedInput schema / properties / useLlmsTxt / description
        Previous value: -"Prefer /llms-full.txt or /llms.txt for site roots."New value: +"For a site root URL, return the site's /llms-full.txt or /llms.txt instead when it has one."
    • Changedextract6 fields changed
      • changedInput schema / properties / clean / description
        Previous value: -"Use article-only extraction when true."New value: +"Article-only extraction (default true). Set false for landing pages, docs indexes and dashboards, where content sits in navigation or feature blocks."
      • changedInput schema / properties / format / description
        Previous value: -"Response format."New value: +"json (default) for the structured fields; markdown or text for the page content as plain text."
      • changedInput schema / properties / lang / description
        Previous value: -"Language hint."New value: +"Preferred page language, sent as Accept-Language, such as en or de."
      • changedInput schema / properties / minRunes / description
        Previous value: -"Minimum content length (in runes) before auto mode escalates to rendered extraction."New value: +"Minimum text length (in runes) before auto mode escalates to a browser render. 0 uses the built-in floor."
      • changedInput schema / properties / mode / description
        Previous value: -"Extraction strategy."New value: +"auto (default): fast HTTP fetch, browser render if the page comes back empty. fast: HTTP only. rendered: always a browser, for JavaScript-heavy pages."
      • changedInput schema / properties / useLlmsTxt / description
        Previous value: -"Prefer /llms-full.txt or /llms.txt for site roots."New value: +"For a site root URL, return the site's /llms-full.txt or /llms.txt instead when it has one."
    • Changedfast_search9 fields changed
      • changedInput schema / properties / dedupe / description
        Previous value: -"Deduplicate by normalized URL."New value: +"Drop duplicate URLs across engines (default true)."
      • changedInput schema / properties / engines / description
        Previous value: -"Engines to query. Omit to use the default engine set."New value: +"Engines to query, in priority order for any mode. Omit to use all available engines."
      • changedInput schema / properties / extractMode / description
        Previous value: -"Extraction strategy for target pages."New value: +"auto (default): fast HTTP fetch, browser render if the page comes back empty. fast: HTTP only. rendered: always a browser, for JavaScript-heavy pages."
      • changedInput schema / properties / features / description
        Previous value: -"Include supported rich SERP features."New value: +"Add serp_features (AI summary, answer box, People Also Ask, related searches) when the engine shows them."
      • changedInput schema / properties / filter / description
        Previous value: -"Enable duplicate filtering."New value: +"Let the engine collapse near-duplicate results (default true, mostly affects Google)."
      • changedInput schema / properties / format / description
        Previous value: -"Response format."New value: +"json (default) for structured results; markdown, text or ndjson for compact plain text."
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum result count."New value: +"Maximum result count, 1-100. Keep 10 when paging with start."
      • changedInput schema / properties / merge / description
        Previous value: -"Merge successful engine results."New value: +"true (default): one list from every engine that succeeded. false: keep only the first engine that returned results."
      • changedInput schema / properties / minRunes / description
        Previous value: -"Minimum content length (in runes) before auto mode escalates to rendered extraction."New value: +"Minimum text length (in runes) before auto mode escalates to a browser render. 0 uses the built-in floor."
    • Changedimage_search5 fields changed
      • changedInput schema / properties / engine / description
        Previous value: -"Search engine endpoint alias."New value: +"Engine to query: google, bing, yandex, baidu, duckduckgo (or duck), ecosia."
      • changedInput schema / properties / features / description
        Previous value: -"Include supported rich SERP features."New value: +"Add serp_features (AI summary, answer box, People Also Ask, related searches) when the engine shows them."
      • changedInput schema / properties / filter / description
        Previous value: -"Enable duplicate filtering."New value: +"Let the engine collapse near-duplicate results (default true, mostly affects Google)."
      • changedInput schema / properties / format / description
        Previous value: -"Response format."New value: +"json (default) for structured results; markdown, text or ndjson for compact plain text."
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum result count."New value: +"Maximum result count, 1-100. Keep 10 when paging with start."
    • Changedmega_image8 fields changed
      • changedInput schema / properties / dedupe / description
        Previous value: -"Deduplicate by normalized URL."New value: +"Drop duplicate URLs across engines (default true)."
      • changedInput schema / properties / engines / description
        Previous value: -"Engines to query. Omit to use the default engine set."New value: +"Engines to query, in priority order for any mode. Omit to use all available engines."
      • changedInput schema / properties / features / description
        Previous value: -"Include supported rich SERP features."New value: +"Add serp_features (AI summary, answer box, People Also Ask, related searches) when the engine shows them."
      • changedInput schema / properties / filter / description
        Previous value: -"Enable duplicate filtering."New value: +"Let the engine collapse near-duplicate results (default true, mostly affects Google)."
      • changedInput schema / properties / format / description
        Previous value: -"Response format."New value: +"json (default) for structured results; markdown, text or ndjson for compact plain text."
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum result count."New value: +"Maximum result count, 1-100. Keep 10 when paging with start."
      • changedInput schema / properties / merge / description
        Previous value: -"Merge successful engine results."New value: +"true (default): one list from every engine that succeeded. false: keep only the first engine that returned results."
      • changedInput schema / properties / mode / description
        Previous value: -"balanced merges results. Cloud any starts engines in your order, overlapping slow attempts; fast orders the same race by health and latency. Only any/fast support start above 0."New value: +"balanced (default): all engines in parallel, results merged. any: engines in your order until one succeeds; on Cloud slow attempts can overlap. fast: the healthiest, fastest engine. Only any and fast support start above 0."
    • Changedmega_search10 fields changed
      • changedInput schema / properties / dedupe / description
        Previous value: -"Deduplicate by normalized URL."New value: +"Drop duplicate URLs across engines (default true)."
      • changedInput schema / properties / engines / description
        Previous value: -"Engines to query. Omit to use the default engine set."New value: +"Engines to query, in priority order for any mode. Omit to use all available engines."
      • changedInput schema / properties / extractMode / description
        Previous value: -"Extraction strategy for target pages."New value: +"auto (default): fast HTTP fetch, browser render if the page comes back empty. fast: HTTP only. rendered: always a browser, for JavaScript-heavy pages."
      • changedInput schema / properties / features / description
        Previous value: -"Include supported rich SERP features."New value: +"Add serp_features (AI summary, answer box, People Also Ask, related searches) when the engine shows them."
      • changedInput schema / properties / filter / description
        Previous value: -"Enable duplicate filtering."New value: +"Let the engine collapse near-duplicate results (default true, mostly affects Google)."
      • changedInput schema / properties / format / description
        Previous value: -"Response format."New value: +"json (default) for structured results; markdown, text or ndjson for compact plain text."
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum result count."New value: +"Maximum result count, 1-100. Keep 10 when paging with start."
      • changedInput schema / properties / merge / description
        Previous value: -"Merge successful engine results."New value: +"true (default): one list from every engine that succeeded. false: keep only the first engine that returned results."
      • changedInput schema / properties / minRunes / description
        Previous value: -"Minimum content length (in runes) before auto mode escalates to rendered extraction."New value: +"Minimum text length (in runes) before auto mode escalates to a browser render. 0 uses the built-in floor."
      • changedInput schema / properties / mode / description
        Previous value: -"balanced merges results. Cloud any starts engines in your order, overlapping slow attempts; fast orders the same race by health and latency. Only any/fast support start above 0."New value: +"balanced (default): all engines in parallel, results merged. any: engines in your order until one succeeds; on Cloud slow attempts can overlap. fast: the healthiest, fastest engine. Only any and fast support start above 0."
    • Changedsearch7 fields changed
      • changedInput schema / properties / engine / description
        Previous value: -"Search engine endpoint alias."New value: +"Engine to query: google, bing, yandex, baidu, duckduckgo (or duck), ecosia."
      • changedInput schema / properties / extractMode / description
        Previous value: -"Extraction strategy for target pages."New value: +"auto (default): fast HTTP fetch, browser render if the page comes back empty. fast: HTTP only. rendered: always a browser, for JavaScript-heavy pages."
      • changedInput schema / properties / features / description
        Previous value: -"Include supported rich SERP features."New value: +"Add serp_features (AI summary, answer box, People Also Ask, related searches) when the engine shows them."
      • changedInput schema / properties / filter / description
        Previous value: -"Enable duplicate filtering."New value: +"Let the engine collapse near-duplicate results (default true, mostly affects Google)."
      • changedInput schema / properties / format / description
        Previous value: -"Response format."New value: +"json (default) for structured results; markdown, text or ndjson for compact plain text."
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum result count."New value: +"Maximum result count, 1-100. Keep 10 when paging with start."
      • changedInput schema / properties / minRunes / description
        Previous value: -"Minimum content length (in runes) before auto mode escalates to rendered extraction."New value: +"Minimum text length (in runes) before auto mode escalates to a browser render. 0 uses the built-in floor."
  2. 8 tool updatesv0.1.7
    • Changedany_search3 fields changed
      • changedInput schema / properties / date / description
        Previous value: -"Date interval in YYYYMMDD..YYYYMMDD format."New value: +"Published-date range YYYYMMDD..YYYYMMDD. Cloud web search supports Google and Ecosia; unsupported filters return 400 without charge."
      • changedInput schema / properties / engines / description
        Previous value: -"Engines to query. Omit to use all available engines."New value: +"Engines to query. Omit to use the default engine set."
      • changedInput schema / properties / start / description
        Previous value: -"Pagination offset."New value: +"Result offset. On Cloud, Google/Bing/Yandex use multiples of 10, Baidu supports early pages, Ecosia any offset, DuckDuckGo none. Balanced mega requires 0; unsupported offsets return 400."
    • Addedbatch_extract
    • Changedextract2 fields changed
      • addedInput schema / properties / maxChars
        Added value: +{
        +  "description": "Max characters of page content (default 20000). Longer pages are cut and marked truncated.",
        +  "maximum": 9007199254740991,
        +  "minimum": 500,
        +  "type": "integer"
        +}
      • addedInput schema / properties / region
        Added value: +{
        +  "description": "Two-letter country code to extract from, e.g. US or DE, for geo-fenced or localized pages. On Cloud this adds 1 credit per extracted URL.",
        +  "pattern": "^[a-z]{2}$",
        +  "type": "string"
        +}
    • Changedfast_search3 fields changed
      • changedInput schema / properties / date / description
        Previous value: -"Date interval in YYYYMMDD..YYYYMMDD format."New value: +"Published-date range YYYYMMDD..YYYYMMDD. Cloud web search supports Google and Ecosia; unsupported filters return 400 without charge."
      • changedInput schema / properties / engines / description
        Previous value: -"Engines to query. Omit to use all available engines."New value: +"Engines to query. Omit to use the default engine set."
      • changedInput schema / properties / start / description
        Previous value: -"Pagination offset."New value: +"Result offset. On Cloud, Google/Bing/Yandex use multiples of 10, Baidu supports early pages, Ecosia any offset, DuckDuckGo none. Balanced mega requires 0; unsupported offsets return 400."
    • Changedimage_search2 fields changed
      • changedInput schema / properties / date / description
        Previous value: -"Date interval in YYYYMMDD..YYYYMMDD format."New value: +"Published-date range YYYYMMDD..YYYYMMDD. Cloud web search supports Google and Ecosia; unsupported filters return 400 without charge."
      • changedInput schema / properties / start / description
        Previous value: -"Pagination offset."New value: +"Result offset. On Cloud, Google/Bing/Yandex use multiples of 10, Baidu supports early pages, Ecosia any offset, DuckDuckGo none. Balanced mega requires 0; unsupported offsets return 400."
    • Changedmega_image4 fields changed
      • changedInput schema / properties / date / description
        Previous value: -"Date interval in YYYYMMDD..YYYYMMDD format."New value: +"Published-date range YYYYMMDD..YYYYMMDD. Cloud web search supports Google and Ecosia; unsupported filters return 400 without charge."
      • changedInput schema / properties / engines / description
        Previous value: -"Engines to query. Omit to use all available engines."New value: +"Engines to query. Omit to use the default engine set."
      • changedInput schema / properties / mode / description
        Previous value: -"Mega execution mode."New value: +"balanced merges results. Cloud any starts engines in your order, overlapping slow attempts; fast orders the same race by health and latency. Only any/fast support start above 0."
      • changedInput schema / properties / start / description
        Previous value: -"Pagination offset."New value: +"Result offset. On Cloud, Google/Bing/Yandex use multiples of 10, Baidu supports early pages, Ecosia any offset, DuckDuckGo none. Balanced mega requires 0; unsupported offsets return 400."
    • Changedmega_search4 fields changed
      • changedInput schema / properties / date / description
        Previous value: -"Date interval in YYYYMMDD..YYYYMMDD format."New value: +"Published-date range YYYYMMDD..YYYYMMDD. Cloud web search supports Google and Ecosia; unsupported filters return 400 without charge."
      • changedInput schema / properties / engines / description
        Previous value: -"Engines to query. Omit to use all available engines."New value: +"Engines to query. Omit to use the default engine set."
      • changedInput schema / properties / mode / description
        Previous value: -"Mega execution mode."New value: +"balanced merges results. Cloud any starts engines in your order, overlapping slow attempts; fast orders the same race by health and latency. Only any/fast support start above 0."
      • changedInput schema / properties / start / description
        Previous value: -"Pagination offset."New value: +"Result offset. On Cloud, Google/Bing/Yandex use multiples of 10, Baidu supports early pages, Ecosia any offset, DuckDuckGo none. Balanced mega requires 0; unsupported offsets return 400."
    • Changedsearch2 fields changed
      • changedInput schema / properties / date / description
        Previous value: -"Date interval in YYYYMMDD..YYYYMMDD format."New value: +"Published-date range YYYYMMDD..YYYYMMDD. Cloud web search supports Google and Ecosia; unsupported filters return 400 without charge."
      • changedInput schema / properties / start / description
        Previous value: -"Pagination offset."New value: +"Result offset. On Cloud, Google/Bing/Yandex use multiples of 10, Baidu supports early pages, Ecosia any offset, DuckDuckGo none. Balanced mega requires 0; unsupported offsets return 400."
  3. 9 tool updatesv0.1.6
    • First observedany_search
    • First observedextract
    • First observedfast_search
    • First observedget_usage
    • First observedimage_search
    • First observedlist_engines
    • First observedmega_image
    • First observedmega_search
    • First observedsearch

TDQS

A4.4/5.0

Scored across 10 tools

Disambiguation4/5

The four web-search tools overlap in broad purpose, but the descriptions explicitly distinguish them by engine selection, parallel comparison, speed, and fallback ordering. Image search, extraction, account, and engine-status tools are clearly separated.

Naming Consistency4/5

All names use snake_case consistently, and variant prefixes such as mega_, fast_, any_, and batch_ are readable and systematic. The set is not strictly a uniform verb_noun pattern, but it remains predictable.

Tool Count5/5

Ten tools are well-scoped for a search API: four web-search variants, two image-search variants, two extraction tools, and two utility/status tools. Each tool has a distinct role and none feels redundant.

Completeness4/5

The surface covers core search, image search, content extraction, batching, usage, and engine health, which are the main workflows for this domain. Minor gaps exist around specialized verticals like news/video/scholar search, but agents can work around them with general search.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    An MCP server that integrates with SerpApi to retrieve search results from multiple search engines including Google, Bing, Yahoo, and others, enabling fast access to both live and archived search data.
    3
    183
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Provides local-first web intelligence over MCP with tools for search, fetch, crawl, extract, cache, find-similar, research, and autonomous agent loops, requiring no API keys.
    10
    1,154 npm
    5,527
    AGPL 3.0
  • A
    license
    A
    quality
    D
    maintenance
    Provides real-time Google search results (organic + knowledge graph) with country targeting, language, time filters, and pagination, at low cost.
    1
    5 npm
    MIT