litescrape-mcp-server
OfficialProvides DuckDuckGo web search with region, safety, and date filtering options, returning organic results.
Provides access to Google Search results, including organic results, Knowledge Graph, AI Overview, AI Mode, Shopping, and other Google Search modules, with localization, verticals, date filters, and pagination options.
Provides Google Maps place search and lookup by query or exact place identifier, returning details such as name, address, rating, hours, phone, website, and coordinates, with filters for price, rating, and opening hours.
Litescrape MCP Server
Google Search, Bing, DuckDuckGo and Google Maps results for any MCP client, free and without an API key. Add a key for Google AI Mode, Google AI Overview and Google Shopping, and to lift every limit.
Results come straight from the search engines' own pages as structured JSON, through the Litescrape API. Links are real destinations, never redirects, and nothing is cached: every call runs fresh.
Quick start
No account, no key, one line.
Claude Code
claude mcp add litescrape -- npx -y litescrape-mcp-serverCursor, Windsurf, Claude Desktop, Codex, Gemini CLI and most other clients (mcp.json, claude_desktop_config.json, or the client's MCP settings)
{
"mcpServers": {
"litescrape": {
"command": "npx",
"args": ["-y", "litescrape-mcp-server"]
}
}
}VS Code
code --add-mcp '{"name":"litescrape","command":"npx","args":["-y","litescrape-mcp-server"]}'Codex CLI
codex mcp add litescrape -- npx -y litescrape-mcp-serverGemini CLI
gemini mcp add litescrape npx -y litescrape-mcp-serverRequires Node.js 20 or newer.
Related MCP server: web-browser-mcp
What you get without a key
Tool | Returns | Free calls per network per UTC day |
| Google organic results in fast mode (title, link, snippet); shares the | 25 |
| The full Google results page: organic results, Knowledge Graph, AI Overview, ads, related questions and every other module Google served | 25 |
| Bing organic results, answer boxes, Knowledge Graph, Copilot answer and more | 50 |
| DuckDuckGo organic results with region, safety and date filters | 50 |
| Google Maps places (name, address, rating, hours, phone, website, coordinates) or one exact place | 50 |
One call runs at a time per network, and failed calls never count. When a limit is reached, the tool result says so and tells the model exactly how to add a key, so the agent can relay it to you.
Add an API key
A key unlocks google_ai_mode, google_ai_overview and google_shopping, removes the daily limits and allows concurrent calls. Get one at litescrape.com, then set LITESCRAPE_API_KEY in the server's environment:
{
"mcpServers": {
"litescrape": {
"command": "npx",
"args": ["-y", "litescrape-mcp-server"],
"env": {
"LITESCRAPE_API_KEY": "ls_live_..."
}
}
}
}With Claude Code: claude mcp add litescrape -e LITESCRAPE_API_KEY=ls_live_... -- npx -y litescrape-mcp-server
Tools
Tool | Key needed | What it does |
| No | Web search through Google, organic results only. Parameters: |
| No | Full Google Search page. Localization ( |
| No | Bing web search with |
| No | DuckDuckGo web search with |
| No | Places by query inside a viewport ( |
| Yes | Only the AI Overview for a Google search, or |
| Yes | Google AI Mode's generated answer with its cited sources; |
| Yes | The Google Shopping product grid, category blocks, sponsored listings and refinement chips; price, sale, shipping and small-business refinements, |
Parameter names and accepted values follow the Litescrape API reference.
Every tool accepts result_groups, a list of top-level groups to keep (for example ["organic_results", "knowledge_graph"]) so the model's context stays small. search_metadata is always included.
Results
A tool result is one text block: a one-line summary, a blank line, then the API's JSON response unchanged.
Google Search for "espresso machine": 10 organic results; also knowledge_graph, related_questions, ai_overview. Free allowance: 24 of 25 google_search calls left today (no API key set).
{"search_metadata":{...},"search_parameters":{...},"organic_results":[...],...}The same JSON is also returned as structuredContent for clients that read it.
Limits and errors
What happened | Tool result |
Daily allowance for that tool is used up | Error text naming the tool and the limit, when it resets (00:00 UTC), and how to add a key |
A keyless call is already in flight | The server waits for the API's |
A key-only tool was called without a key | Error text naming the tool and the free alternatives, and how to add a key; no request is made |
The upstream page could not be fetched | Error text with the API's |
Invalid arguments | Rejected by the tool schema before any request |
Requests time out after 120 seconds by default (the API's own deadline is 90 seconds). AI Mode is the slowest tool.
Configuration
Environment variable | Default | Meaning |
| unset | Bearer key; unset means the free keyless allowance |
|
| API origin, for self-hosted or staging deployments |
|
| Per-request timeout in milliseconds |
Every request identifies itself with X-Litescrape-Client: mcp/<version> and a litescrape-mcp-server/<version> user agent. The server writes protocol messages to stdout and its logs to stderr.
Development
npm install
npm run lint # prettier + tsc
npm test # vitest, including a real stdio round trip
npm run build # tsc -> dist/
npm run inspector # MCP Inspector against dist/index.jsnpm run dev runs the server from source with tsx. Releases are tagged with the package version (for example 0.1.0); the publish workflow builds and publishes to npm with provenance.
License
Available Tools
8 toolsbing_searchBing SearchARead-onlyInspect
Fetch a Bing web search results page as JSON: organic_results plus the modules Bing served (answer_box, knowledge_graph, copilot_answer, ads, related_questions, inline_videos, top_stories and more). Free without an API key: 50 calls per network per day.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Search query; Bing operators are preserved | |
| cc | No | Two-letter country code; conflicts with mkt | |
| lat | No | Latitude; supply together with lon | |
| lon | No | Longitude; supply together with lat | |
| mkt | No | Market such as en-US; conflicts with cc | |
| first | No | One-based organic result offset for pagination; default 1 | |
| device | No | Layout to request; default desktop | |
| filters | No | Native Bing display or date filters | |
| location | No | City-level search origin | |
| safeSearch | No | Default moderate | |
| result_groups | No | Return only these top-level result groups, e.g. ["organic_results", "knowledge_graph"]; omit for the complete response. search_metadata is always kept |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses the response composition (organic_results plus answer_box, knowledge_graph, copilot_answer, ads, related_questions, inline_videos, top_stories), the JSON format, and the operational constraints: free, no API key, and a daily rate limit. This adds meaningful behavioral context that annotations alone do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, with the core action and output shape front-loaded. Every sentence earns its place: the first defines the tool's purpose and response, and the second adds the important quota and API-key caveat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 11 parameters and no output schema, the rich parameter schema plus the description's module list and quota note make the tool adequately invocable. A little more detail about pagination behavior or result-group semantics would make it fully complete for such a parameter-heavy tool, but the existing context is strong.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 11 parameters already have schema descriptions, so the baseline is 3. The description adds value by enumerating plausible values for the result_groups parameter, such as organic_results, knowledge_graph, and top_stories, which is helpful for constructing calls even though most parameters are not individually discussed in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and object ('Fetch a Bing web search results page as JSON') and enumerates the returned modules, which clearly separates it from sibling tools like google_search or duckduckgo_search. The Bing resource is unambiguous and the description distinguishes this tool from generic search alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives practical selection context by noting that the tool is free, requires no API key, and has a daily quota of 50 calls. However, it does not explicitly contrast this tool with sibling search tools or state when to prefer it over google_search or duckduckgo_search, so the usage guidance is mostly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duckduckgo_searchDuckDuckGo SearchARead-onlyInspect
Fetch ranked DuckDuckGo web results (organic_results with title, link, snippet) with region, safety and date controls. Free without an API key: 50 calls per network per day.
| Name | Required | Description | Default |
|---|---|---|---|
| m | No | Result count 1-50; cannot be combined with search_assist | |
| q | Yes | Search query | |
| df | No | Date filter: d, w, m, y, or YYYY-MM-DD..YYYY-MM-DD | |
| kl | No | Region and language token such as us-en | |
| safe | No | 1 strict, -1 moderate (default), -2 off | |
| start | No | Result offset | |
| result_groups | No | Return only these top-level result groups, e.g. ["organic_results", "knowledge_graph"]; omit for the complete response. search_metadata is always kept | |
| search_assist | No | Default true; cannot be combined with m |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true trading safety. The description adds a concrete rate limit and the 'no API key' requirement, which are behavioral traits beyond the annotations. It does not contradict any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first states the core function and output, the second states cost and rate limits. Information is front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives a useful output hint (organic_results with title, link, snippet) and rate-limit context, which compensates for the lack of an output schema. The rich input schema covers parameter details, so the description is sufficient for an agent to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with every parameter already documented. The description only summarizes 'region, safety and date controls' without adding meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches ranked DuckDuckGo web results with specific fields (organic_results, title, link, snippet) and controls. This makes it immediately distinguishable from sibling search tools like google_search or bing_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Free without an API key: 50 calls per network per day' implies a usage context and cost advantage, but the description does not explicitly say when to choose this over alternatives like google_search or bing_search. Usage guidance is mostly implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ai_modeGoogle AI ModeARead-onlyInspect
Ask Google AI Mode a question and return its generated answer (ordered text_blocks: paragraphs, headings, lists, tables, code) with the sources it cited (references). Set continuable to get a token for follow-up questions; image_url adds a picture to the prompt. Slow: answers are generated per request. Requires an API key.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | The question to ask | |
| gl | No | Two-letter country for localization, e.g. "us" | |
| hl | No | Language code such as "en" or "en-GB"; default en | |
| uule | No | Pre-encoded Google location token; conflicts with location | |
| device | No | Layout to request; default desktop | |
| location | No | Named search origin such as "Austin, Texas"; conflicts with uule and lat/lon | |
| image_url | No | Public http(s) image to include in the prompt; cannot combine with a token | |
| continuable | No | Return a subsequent_request_token so the conversation can continue | |
| google_domain | No | Google domain such as google.co.uk; default google.com | |
| result_groups | No | Return only these top-level result groups, e.g. ["organic_results", "knowledge_graph"]; omit for the complete response. search_metadata is always kept | |
| subsequent_request_token | No | Token from a previous continuable answer; send with a new q. Expires after 30 minutes; cannot combine with image_url |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=true, so the agent already knows this is a safe read operation. The description adds valuable behavioral context beyond the annotations: it warns that the tool is slow (answers generated per request), explains the continuable token mechanism and its 30-minute expiry, and notes that image_url cannot combine with a token. These are exactly the kind of behavioral traits an agent needs to know. It doesn't describe rate limits or failure modes, but the annotations already cover the safety profile, so a 4 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with zero waste. The first sentence front-loads the core purpose and output format, the second explains the two most important optional parameters, and the third delivers the critical behavioral warning (slow) and the auth requirement. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 11 parameters, 100% schema coverage, and no output schema, the description is quite complete. It covers the core purpose, output structure, the continuable follow-up mechanism, the image_url constraint, the slowness warning, and the API key requirement. The only gaps are minor: it doesn't explain what happens with result_groups filtering or the uule/location conflict, but those are documented in the schema. The description is complete enough for an agent to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 11 parameters. The description adds meaning for a few key parameters: continuable (get a token for follow-up questions), image_url (adds a picture to the prompt), and subsequent_request_token (implied by the follow-up explanation). However, it doesn't add much beyond the schema for parameters like gl, hl, uule, device, location, google_domain, or result_groups. Since the schema does the heavy lifting, the baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Ask'), a specific resource ('Google AI Mode'), and the exact output shape (ordered text_blocks with sources). It also names the sibling tool google_ai_overview implicitly by distinguishing AI Mode from a plain search, and the sibling list confirms this is the AI-powered Q&A tool rather than a generic search. The description is unambiguous about what this tool does and how it differs from the other search siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use this tool: when you want a generated answer with cited sources, and it explicitly warns that it is slow because answers are generated per request. It also explains the continuable token mechanism for follow-up questions, which is a key usage pattern. However, it does not explicitly name alternatives or state when NOT to use this tool (e.g., when you need fast results, use google_search instead). The sibling list provides context but the description itself doesn't draw the contrast.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ai_overviewGoogle AI OverviewARead-onlyInspect
Return only the AI Overview Google generates for a search (ai_overview with ordered text_blocks and cited references), or null when Google shows none. Accepts the google_search parameters. Requires an API key.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search query; required unless ludocid or kgmid is supplied | |
| cr | No | Country restrict such as countryUS|countryCA | |
| gl | No | Two-letter country for localization, e.g. "us" | |
| hl | No | Language code such as "en" or "en-GB"; default en | |
| lr | No | Language restrict such as lang_en|lang_fr | |
| lat | No | Latitude; supply together with lon | |
| lon | No | Longitude; supply together with lat | |
| num | No | Requested result count, 1-100; Google may return fewer | |
| tbm | No | Vertical: lcl local, vid videos, nws news, shop shopping, pts patents | |
| tbs | No | Google search-filter string, e.g. qdr:w for the past week | |
| nfpr | No | 1 disables spelling auto-correction | |
| safe | No | SafeSearch | |
| uule | No | Pre-encoded Google location token; conflicts with location | |
| kgmid | No | Knowledge Graph machine ID such as /m/0k8z | |
| start | No | Result offset for pagination | |
| as_qdr | No | Date range: d, w, m or y with an optional count, e.g. d7 for the past week | |
| device | No | Layout to request; default desktop | |
| filter | No | 0 disables duplicate-content filtering | |
| radius | No | Radius in meters around the location or coordinates | |
| ludocid | No | Google CID of a local entity, for a targeted lookup | |
| location | No | Named search origin such as "Austin, Texas"; conflicts with uule and lat/lon | |
| as_sitesearch | No | Restrict results to this hostname | |
| google_domain | No | Google domain such as google.co.uk; default google.com | |
| result_groups | No | Return only these top-level result groups, e.g. ["organic_results", "knowledge_graph"]; omit for the complete response. search_metadata is always kept |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, the description adds the crucial null-when-absent behavior, the structure of the returned ai_overview object, and an API-key auth requirement. It could add rate-limit or failure-mode details, but the existing additions go well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the primary behavior and return contract, and then adds the parameter family and auth requirement. No sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 24-parameter tool with no output schema, the description covers the key contextual gaps: what is returned, when it returns null, and that an API key is required. The schema handles the parameter details, so the description is sufficiently complete, though it could mention limitations such as AI Overview availability by vertical or domain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the input schema already documents all 24 parameters. The description only adds the high-level statement that it 'accepts the google_search parameters', which orients the agent but does not add per-parameter semantics. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a precise operation ('Return only the AI Overview Google generates for a search'), specifies the output shape (ai_overview with ordered text_blocks and cited references), and states the null case. It also signals its relationship to the general search tools by saying it accepts the google_search parameters, which helps distinguish it from siblings like google_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose statement implies when to use the tool (when the AI Overview answer is needed), but it never states when not to use it or points to an alternative such as google_search or google_ai_mode. The guidance is inferred from the description rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_mapsGoogle MapsARead-onlyInspect
Search Google Maps for places (local_results with name, address, rating, reviews, hours, phone, website, coordinates) or fetch one exact place (place_results) by place_id, data_cid or data sequence. Filter by price, rating and opening hours. Free without an API key: 50 calls per network per day.
| Name | Required | Description | Default |
|---|---|---|---|
| m | No | Radius in meters; use with location or lat/lon | |
| q | No | Search text; required for type=search | |
| z | No | Zoom 3-30; use with location or lat/lon | |
| gl | No | Two-letter country for localization, e.g. "us" | |
| hl | No | Language code such as "en" or "en-GB"; default en | |
| ll | No | Viewport as @lat,lon,14z or @lat,lon,5000m | |
| lat | No | Latitude; supply together with lon | |
| lon | No | Longitude; supply together with lat | |
| data | No | Exact place by Google Maps data sequence | |
| type | No | search (default) for a query, or place for one exact place identified by place_id, data_cid or data | |
| start | No | Native Maps result offset | |
| nearby | No | Restrict results to places near the viewport | |
| data_cid | No | Exact place by decimal Google CID | |
| location | No | Named search origin such as "Austin, Texas"; conflicts with uule and lat/lon | |
| place_id | No | Exact place by Google place ID | |
| max_price | No | Price level upper bound | |
| min_price | No | Price level lower bound | |
| min_rating | No | Minimum rating preference | |
| open_state | No | Open now, or open 24 hours; cannot combine with open_on_day | |
| open_on_day | No | ||
| open_at_hour | No | Hour 0-23; requires open_on_day | |
| google_domain | No | Google domain such as google.co.uk; default google.com | |
| result_groups | No | Return only these top-level result groups, e.g. ["organic_results", "knowledge_graph"]; omit for the complete response. search_metadata is always kept |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already label it read-only and open-world; the description adds valuable operational context: no API key required, a concrete daily rate limit, and the output groups returned (local_results vs place_results with fields). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action and modes, then filters, then usage limits. No filler or redundant restatement of schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 23 parameters and no output schema, the combination of the high-coverage schema and description (mode selection, filters, return groups, rate limit) gives an agent what it needs to call the tool correctly. It could add a usage example or note on response size, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 96% schema coverage, the schema carries the parameter detail. The description still adds value by grouping the many parameters into modes and filter categories (price, rating, opening hours) and by naming the three identifier alternatives for exact-place lookup. This is more than baseline repetition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action ('Search Google Maps for places') and explicitly distinguishes two modes: broad search returning local_results and exact place fetch via place_id, data_cid, or data sequence. This makes its scope clear relative to generic web-search siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states clear use cases—searching for places with optional filters or retrieving a single place by identifier—and notes the free-tier constraint (50 calls/network/day). It doesn't explicitly name sibling alternatives or exclusion conditions, but the described scenarios are unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_searchGoogle SearchARead-onlyInspect
Fetch a first-party Google Search results page as JSON: organic_results plus whichever modules Google served (knowledge_graph, answer_box, ai_overview, ads, related_questions, related_searches, local_results, top_stories, inline_videos and more). Supports localization, verticals (news, videos, local, shopping, patents), date filters and site restriction. Free without an API key: 25 calls per network per day.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search query; required unless ludocid or kgmid is supplied | |
| cr | No | Country restrict such as countryUS|countryCA | |
| gl | No | Two-letter country for localization, e.g. "us" | |
| hl | No | Language code such as "en" or "en-GB"; default en | |
| lr | No | Language restrict such as lang_en|lang_fr | |
| lat | No | Latitude; supply together with lon | |
| lon | No | Longitude; supply together with lat | |
| num | No | Requested result count, 1-100; Google may return fewer | |
| tbm | No | Vertical: lcl local, vid videos, nws news, shop shopping, pts patents | |
| tbs | No | Google search-filter string, e.g. qdr:w for the past week | |
| nfpr | No | 1 disables spelling auto-correction | |
| safe | No | SafeSearch | |
| uule | No | Pre-encoded Google location token; conflicts with location | |
| kgmid | No | Knowledge Graph machine ID such as /m/0k8z | |
| start | No | Result offset for pagination | |
| as_qdr | No | Date range: d, w, m or y with an optional count, e.g. d7 for the past week | |
| device | No | Layout to request; default desktop | |
| filter | No | 0 disables duplicate-content filtering | |
| radius | No | Radius in meters around the location or coordinates | |
| ludocid | No | Google CID of a local entity, for a targeted lookup | |
| location | No | Named search origin such as "Austin, Texas"; conflicts with uule and lat/lon | |
| fast_mode | No | true returns only organic_results (faster and smaller); skips AI Overview, Knowledge Graph, ads and every other module | |
| as_sitesearch | No | Restrict results to this hostname | |
| google_domain | No | Google domain such as google.co.uk; default google.com | |
| result_groups | No | Return only these top-level result groups, e.g. ["organic_results", "knowledge_graph"]; omit for the complete response. search_metadata is always kept |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true; the description adds useful transparent details: results include whatever modules Google happens to serve, no API key is needed, and there is a 25-call-per-network-per-day limit. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with no filler. The most important information, what is returned and which service is queried, comes first, and the capability summary in the second sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 25 parameters and no output schema, the description covers the essential choices: result content, supported modules, localization/vertical/filter options, and quota constraints. It does not provide an example or elaborate on every behavior, but the rich schema plus these capabilities make it sufficiently complete for a tool-selection and invocation decision.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all 25 parameters. The description adds high-level groupings like 'localization, verticals, date filters' but does not explain any parameter beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Fetch') and resource ('Google Search results page as JSON'), and enumerates what is returned. It clearly distinguishes this first-party Google search tool from sibling tools like bing_search, duckduckgo_search, and google_maps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives strong context: it is for first-party Google results and lists supported capabilities like localization, verticals, and date filters. It does not explicitly name alternatives or say when not to use it, but the use case is clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_shoppingGoogle ShoppingARead-onlyInspect
Search Google Shopping and return the product grid (shopping_results with title, price, source, rating, thumbnail), category blocks, sponsored listings and the refinement chips Google renders (filters). Price bounds, sale, shipping and small business refinements are mutually exclusive; sort_by combines with one of them. Requires an API key.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Product query; required unless shoprs is supplied | |
| gl | No | Two-letter country for localization, e.g. "us" | |
| hl | No | Language code such as "en" or "en-GB"; default en | |
| num | No | Product count, 1-100 | |
| uule | No | Pre-encoded Google location token; conflicts with location | |
| start | No | Result offset | |
| device | No | Layout to request; default desktop | |
| shoprs | No | Refinement token from a previous response's filters | |
| on_sale | No | ||
| sort_by | No | 1 price low to high, 2 price high to low, 3 rating, 4 relevance | |
| location | No | Named search origin such as "Austin, Texas"; conflicts with uule and lat/lon | |
| max_price | No | Upper price bound | |
| min_price | No | Lower price bound | |
| free_shipping | No | ||
| google_domain | No | Google domain such as google.co.uk; default google.com | |
| result_groups | No | Return only these top-level result groups, e.g. ["organic_results", "knowledge_graph"]; omit for the complete response. search_metadata is always kept | |
| small_business | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint and openWorldHint already present, the bar is lower, but the description adds value by disclosing the response composition (shopping_results fields, category blocks, sponsored listings, refinement chips) and the API key requirement. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler. The first sentence front-loads the tool's purpose and output, the second captures the key parameter constraint, and the third states the operational prerequisite. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 17-parameter tool with no output schema, the description supplies the essential output shape and the most important parameter-combination constraint, while the schema covers individual parameter details. It could be more complete by explicitly routing the agent to this tool only for shopping queries versus generic search, but the core invocation knowledge is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 82%, so the schema already describes most parameters. The description adds crucial cross-parameter semantics not visible in the schema: the mutual exclusivity of price/sale/shipping/small_business refinements and the rule that sort_by combines with one refinement. This meaningfully improves correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 Google Shopping'. It then enumerates the concrete return components (product grid, category blocks, sponsored listings, refinement chips), which clearly distinguishes this tool from generic siblings like google_search, bing_search, and google_maps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives practical usage guidance: it states the API key prerequisite and explains that price bounds, sale, shipping, and small business refinements are mutually exclusive while sort_by can combine with one of them. It does not explicitly say 'for general web results use google_search', so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchWeb searchARead-onlyInspect
Search the web through Google and return ranked organic results (title, link, snippet) as JSON. Fast mode: no Knowledge Graph, ads or AI modules; use google_search for the full results page. Free without an API key (shares the google_search allowance).
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | What to search for | |
| gl | No | Two-letter country for localization, e.g. "us" | |
| hl | No | Language code such as "en" or "en-GB"; default en | |
| num | No | Requested result count, 1-100; Google may return fewer | |
| start | No | Result offset for pagination | |
| location | No | Named search origin such as "Austin, Texas"; conflicts with uule and lat/lon | |
| result_groups | No | Return only these top-level result groups, e.g. ["organic_results", "knowledge_graph"]; omit for the complete response. search_metadata is always kept |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description adds meaningful behavioral context: output format is JSON, results are organic, fast mode excludes Knowledge Graph/ads/AI modules, and usage is free but shares the google_search allowance. This gives the agent useful operational expectations beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler. The core purpose is front-loaded, followed by the key mode distinction and the cost/allowance note. Every sentence contributes actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with a rich schema and readOnly annotation, the description covers what the agent needs: return format, result type, mode limitations, and the alternative for full results. No critical gap is evident.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all seven parameters. The description adds no parameter-specific detail, but that is acceptable because the schema already carries the semantic load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches the web via Google and returns ranked organic results as JSON. It also distinguishes itself from google_search by noting it is fast mode without Knowledge Graph, ads, or AI modules, making the tool's identity unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent to use google_search for the full results page, providing a clear when-not-to-use signal. It does not explicitly contrast with bing_search or duckduckgo_search, but the Google-specific framing makes the intended context reasonably clear.
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.
8 tool updates
v0.1.1- First observed
bing_search - First observed
duckduckgo_search - First observed
google_ai_mode - First observed
google_ai_overview - First observed
google_maps - First observed
google_search - First observed
google_shopping - First observed
search
TDQS
Scored across 8 tools
Most tools are distinguishable by engine or domain, but 'search' and 'google_search' both return Google organic results (differing only by modules), and 'google_ai_overview' vs 'google_ai_mode' both produce AI-generated text with references, creating potential misselection. Bing and DuckDuckGo are clearly distinct, but the AI and Google search siblings blur boundaries.
The pattern is partially consistent with google_search, bing_search, and duckduckgo_search following an engine_search convention. However, the bare 'search' tool breaks the pattern, and google_maps, google_shopping, google_ai_overview, and google_ai_mode use a mixed domain/feature style rather than a uniform verb_noun structure.
Eight tools is a well-scoped set for a web research and scraping server, covering multiple search engines, maps, shopping, and AI-assisted search. Each tool adds a meaningful capability without bloat or redundancy.
The server covers core research needs: multiple engines, maps, shopping, and AI summaries. Minor gaps exist (e.g., no general URL fetcher, no dedicated news tool), but google_search's verticals and filters mitigate these, and no obvious dead-end workflow is present.
Maintenance
Related MCP Connectors
Provides AI assistants with access to Seltz's powerful Web Search capabilities.
Search Google straight from your AI agent. Web results, images, videos, news, products, scholarly ar
Web research for agents: quality-scored Google search, webpage extraction, and deep research.
The best web search for your AI Agent
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides web search and page fetch capabilities using a browser-based approach, enabling LLMs to search DuckDuckGo, Google, or Yandex and retrieve rendered HTML from URLs.4MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to perform query-driven web searches and fetch page content via Bing and DuckDuckGo engines, with automatic fallback and no API keys needed.MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to perform web searches, extract webpage content, and conduct end-to-end search-and-extract operations using multiple search providers and content extraction methods.-
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to search the web and extract content using multiple search providers, with caching, retry logic, and options for JavaScript-heavy page rendering.-