google-scrape-mcp
This MCP server lets AI agents scrape Google search surfaces, RSS/JSON feeds, and web pages without an API key, with browser fallback and honest status reporting.
Use unified
google_searchacross tabs: web, images, videos, news, books, shopping, scholar, patents, and AI Mode, with pages 1–10.Call specialized tools for web, image, video, books, shopping, news, News homepage, Scholar, Scholar cited-by, patents, finance quotes, FX rates, Bank Indonesia rates, translation, autocomplete, and Trends daily/interest.
Crawl any URL with
google_crawlto get title, meta, text, and outbound links.Choose engine mode:
auto,http,proxy, orbrowserto trade speed, proxying, and bot-challenge handling.Use the HTTP fast path with cached Google cookies, or Camoufox browser fallback for JS-heavy pages like Scholar and AI Mode.
Get honest result statuses:
ok,blocked,rate_limited,limited,empty, orerror; it never fabricates results.Access stable RSS/JSON endpoints: news, patents, trends, suggest, translate, and finance quotes.
Check health, proxies, cache, cooldowns, and forensics via
google_status; read runtime guidance viagoogle_help.
Scrapes Google Search without an API key, exposing a unified search tool plus 9 tabs (web, images, videos, news, books, shopping, scholar, patents, AI Mode) alongside utility tools for Google News, Scholar, Patents, Finance quotes, Translate, Suggest, Trends, URL crawling, and AI Mode synthesized answers with sources. Uses an HTTP fast path with bootstrap cookies and a Camoufox browser fallback, with proxy rotation, cooldowns, and explicit status reporting (ok/blocked/rate_limited) so results are returned honestly.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@google-scrape-mcpsearch Google News for the latest AI regulation updates"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
google-scrape-mcp

MCP server that gives AI agents real Google results with no API key: an HTTP fast path (0.3–2.9s searches when cookies are warm), a Camoufox browser fallback that actually runs the JS challenges, adaptive cooldowns derived from probing, and honest status codes instead of fabricated results.

Full-quality recording: assets/demo_real.mp4 (24s).
What you see in the recording: web 1.1s, images 0.8s, scholar 7.1s,
AI Mode 9.2s (2,548 chars), USD/IDR quote 0.5s.
1. What it does
Searches Google across web, images, videos, news, books, shopping, scholar, patents and AI Mode through one MCP server.
Answers each request with
status: ok | blocked | rate_limited | limited | empty | error. When Google blocks, it says so. It never invents results.Keeps a browser profile warm so HTML pages that need JavaScript (scholar, AI Mode) come back complete.
Exposes RSS/JSON endpoints (news, patents, trends, suggest, translate, finance) that are never blocked, for when reliability matters more than coverage.
Related MCP server: Google Search Tool
2. Install
pip install -e . # HTTP engine only
pip install -e ".[browser]" # + Camoufox browser engine
camoufox fetch # download the Camoufox browser onceCore dependencies: fastmcp, curl_cffi, beautifulsoup4, lxml,
defusedxml. Optional: camoufox for the browser engine.
Platform support, honestly:
Component | Platforms | Notes |
HTTP engine ( | Linux, macOS, Windows (x86_64 wheels; arm64 where published) | no browser needed |
Browser engine ( | Linux x86_64; upstream also ships macOS (Intel/Apple Silicon) and Windows x86_64 builds | ~660 MB download; ARM Linux and Android are not supported by upstream builds and need manual work. On those targets use the HTTP engine only and expect more |
3. MCP client config
{
"mcpServers": {
"google-scrape": {
"command": "google-scrape-mcp"
}
}
}Run google-scrape-mcp directly for stdio transport. Agents can call the
google_help tool for a runtime usage guide, or read
AGENT_GUIDE.md.
4. Tools (22)
Tool | Source | Notes |
| unified: | dispatcher for the tools below |
| organic results, featured snippet, related searches | HTTP fast path, browser fallback |
| direct image URLs, page URLs, dimensions | fast path |
|
| fast path |
|
| fast path |
| title, price, was-price, merchant, rating | fast path when the markup allows, browser otherwise |
| News RSS | never blocked |
| papers, venue, citations, PDF links | browser (HTTP 429) |
| Scholar | extra protection, often |
| Patents XHR JSON | never blocked |
| stocks, forex, crypto. | never blocked |
| fast FX from the SERP converter widget ( | returns |
| official Bank Indonesia transaction rates (sell/buy, 26 currencies) | browser render of the BI table, |
| unofficial | never blocked |
| autocomplete | never blocked |
| Trends RSS | never blocked |
| explore into multiline widgetdata | HTTP often 401, browser fallback |
| AI Mode ( | browser, JS streams the answer |
| read any URL: title, meta, text, links | live |
| agent usage guide | live |
| endpoints, proxies, cache, cooldowns, forensics | live |
5. Engines and the cookie fast path
Every search tool takes an engine argument:
auto(default): HTTP first, browser when needed.http: direct only. Fast, challenge-prone on flagged IPs.proxy: force the proxy pool.browser: Camoufox headless render, 5–15s.
The fast path works like this. A browser homepage visit mints fresh session
cookies (NID, AEC, SNID, GSP). Plain HTTP /search with those cookies,
a coherent Referer/Sec-Fetch-Site and a clean cookie jar passes in
0.3–2.9s. Surfaces proven to pass over HTTP: web, images, videos, books,
shopping. Scholar (HTTP 429) and AI Mode (answer is streamed by JS) stay on
the browser. Cookies are cached for 5 minutes and refreshed in the background
while tools are in use, so searches rarely pay the warm-up cost.
Behavior notes behind this are in RESEARCH.md.
6. Performance
Operation | Before | Now |
Web search (end-to-end) | ~1.0s | 0.3–0.7s |
Browser warm-up + cookies | 16.4s | 5.7s |
Scholar search | 11.3s | 4.2–4.4s |
AI Mode answer | 11.1s, sometimes truncated | 9–11s, complete |
SERP parse + | sequential | parallel, ~0.5s |
Mechanisms: one priority job for warm-up plus cookies, adaptive warm-up
skipping (GOOGLE_SCRAPE_WARM_TTL), selector and text-stability waits instead
of fixed sleeps, parallel /goto resolution, a background bootstrap keeper,
and a 1.5–3.5s human-like gap between browser jobs.
7. Anti-block research
The repository ships the methodology, not just the result:
python3 -m google_scrape_mcp.probe --quick|--full|--tls|--analyzeruns a controlled endpoint/engine matrix with human-like spacing.Blocked pages are sampled to
~/.cache/google-scrape-mcp/forensics/with counters inblock_stats.json, surfaced bygoogle_status.Adaptive cooldowns are per endpoint family (search/scholar/finance), with escalating backoff and a fail-fast browser cooldown. Burned browser profiles are rotated automatically.
Measured conclusions, including why raw HTTP /search always gets a JS
challenge and why cookies alone do not fix it, are in
RESEARCH.md.
8. Proxy pool
Accepted formats: http://host:port, https://host:port,
socks5://host:port (socks5h normalized), socks4://host:port, with
optional user:pass@, plus bare host:port and host:port:user:pass.
Sources, in priority order:
GOOGLE_SCRAPE_PROXIES: inline list (comma/space/newline separated) or a file path (starting with/,~, or ending in.txt).GOOGLE_SCRAPE_PROXY_FILES: colon-separated file paths.Defaults when present:
~/.config/google-scrape/proxies.txtand~/.cache/google-scrape-mcp/proxies_curated.txt.
Free lists can work here, but only when combined with the bootstrap
cookies: with fresh cookies, clean proxies can pass /search; without them
everything gets a JS challenge. curate is cookie-aware, clears the cookie
jar before probing, limits search concurrency (session cookies plus parallel
IPs looks anomalous), and writes the fastest proxies first.
python3 -m google_scrape_mcp.curate --limit 100 --workers 8Failed proxies get a cooldown. Browser fallback only uses proxies that have succeeded before, so a dead pool never burns minutes.
9. Environment variables
Variable | Default | Purpose |
|
|
|
|
| failed-proxy cooldown (s) |
| extra CA bundle for self-signed HTTPS proxies | |
|
| minimum delay between requests (s) |
|
| request timeout (s) |
|
| proxy attempts per request |
|
| response cache TTL, |
|
| max cache entries |
|
| curl_cffi TLS target |
|
| base HTTP cooldown after a block, doubles per level, capped at 1h |
|
| bootstrap cookie lifetime (s) |
|
| base browser cooldown after a block |
|
| skip the homepage warm-up if warmed more recently |
|
| human-like gap between browser jobs (s) |
|
| background bootstrap keeper, |
|
| save blocked-page samples |
| disable automatic |
10. Security
CodeQL (Python) and Bandit run on every push and weekly.
Dependabot keeps dependencies and GitHub Actions updated, grouped weekly.
Secret scanning with push protection is enabled.
mainis protected against force pushes and deletion, including admins.XML feeds are parsed with
defusedxmlwhen available.Reporting: see
SECURITY.md.
11. Project layout
src/google_scrape_mcp/
server.py MCP tools, engine orchestration, status
client.py HTTP path: sessions, cache, cooldowns, bootstrap cookies
browser.py Camoufox worker: persistent profile, challenges, rotation
parsers.py SERP/RSS/JSON parsing, AI Mode cleanup, shopping cards
proxies.py proxy pool: parsing, rotation, cooldowns, proven-only usage
forensics.py block taxonomy samples and counters
probe.py block-monitoring harness
curate.py proxy curation (liveness + /search capability)Docs: AGENT_GUIDE.md for agents,
RESEARCH.md for the anti-block notes.
12. Known limitations
google_scholar_cited_byis oftenblocked(Google protects that endpoint harder). Thecited_bycount fromgoogle_scholar_searchstill works.Shopping does not expose product URLs in the initial HTML; links render on click.
No Maps/local search, reverse image search, inline AI Overview, or flights.
Featured snippets for FX queries can be noisy;
fx_rateis the clean field.
13. Reliability: this is a cat-and-mouse game
This is an unofficial scraper fighting Google's bot detection. Pretending otherwise would be dishonest. Expect the following:
Raw HTTP
/searchfrom a flagged IP is challenged almost every time; the fast path exists because fresh browser cookies are attached. Browser profiles can burn out, and they get rotated, but sustained volume without good proxies will hitblockedregularly.Free and datacenter proxy pools are mostly dead or rejected. Residential proxies work better and cost money.
Browser sessions are heavy (hundreds of MB, 5-15s per render) and need the Camoufox binary; the fast path exists precisely to avoid them when possible.
RSS/JSON surfaces (news, patents, trends, suggest, translate, finance quotes) are the stable part. Search surfaces are the fragile part.
Results vary with IP reputation, region and time of day.
If you need guaranteed, stable Google results, use an official API. This project trades that stability for zero cost and no key.
14. Legal, ToS and proxy safety
Scraping Google Search violates Google's Terms of Service. You run this at your own risk. The MIT license grants no rights beyond the code and takes no responsibility for your use.
Rate limits, IP reputation and any account consequences are yours to manage. Do not use this for abuse or to attack services.
Treat every proxy as untrusted. A proxy operator can log, inject or modify traffic; a malicious one can serve you forged content. Free proxies are the worst case. Never route credentials or sensitive traffic through pool proxies, and read curated lists as "reachable", not "safe". Prefer residential/VPS proxies you control.
15. License
MIT, see LICENSE.
Available Tools
22 toolsgoogle_ai_modeGoogle Ai ModeARead-onlyIdempotent
Google Mode AI (udm=50): jawaban sintesis + sumber, cocok untuk pertanyaan langsung. Bentuk hasil: answer + sources.
engine: auto | http | proxy | browser (lihat google_web_search). Halaman Mode AI hampir selalu butuh JS; engine auto akan memakai browser.
Rate-limited by Google: avoid rapid repeats; when the result is blocked, wait or switch to an RSS-based tool.
| Name | Required | Description | Default |
|---|---|---|---|
| gl | No | us | |
| hl | No | en | |
| query | Yes | ||
| engine | No | auto |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations covering the safety profile (readOnly, idempotent, openWorld, non-destructive), the description adds genuinely novel context: Google rate-limiting, the fact that blocked results require waiting or switching tools, and that the AI Mode page nearly always needs JS so engine=auto falls back to browser. That is real behavioral value 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?
Front-loaded with the purpose and result shape, then engine notes, then rate-limit guidance — three tight blocks with no filler. Slightly fragmented by mixing languages and a parenthetical cross-reference, but every line 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?
An output schema exists, so the description needn't explain return values, and it is complete on rate-limiting, engine selection, and JS fallback. The main gap is that the localization parameters (gl/hl) are undocumented anywhere, leaving an agent guessing about their meaning.
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 0% with 4 parameters, so the description carries the burden. It usefully documents the engine parameter's values (auto|http|proxy|browser) and the JS/browser fallback behavior, which the schema does not express. But gl, hl, and query are left entirely unexplained, so compensation is only partial.
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+resource with scope: a Google AI Mode (udm=50) synthesis search returning 'answer + sources', positioned for 'pertanyaan langsung' (direct questions). It distinguishes itself contextually from generic listings and references the sibling google_web_search for engine semantics. It stops short of an explicit contrast with the many 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?
It gives implied usage ('cocok untuk pertanyaan langsung') and explicit failure-path guidance ('when the result is blocked, wait or switch to an RSS-based tool'), which names an alternative class of tool. However there is no clear when-not-to-use statement or routing rule against the concrete siblings (google_web_search, google_search).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_books_searchGoogle Books SearchBRead-onlyIdempotent
Scrape Google Books Search (tbm=bks): title, URL, snippet.
engine: auto | http | proxy | browser (lihat google_web_search).
Rate-limited by Google: avoid rapid repeats; when the result is blocked, wait or switch to an RSS-based tool.
| Name | Required | Description | Default |
|---|---|---|---|
| gl | No | us | |
| hl | No | en | |
| num | No | ||
| query | Yes | ||
| start | No | ||
| engine | No | auto |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, open-world), so the description earns credit for adding rate-limit behavior on Google's side and the engine fallback options. This is real behavioral context beyond the annotations, though it doesn't describe pagination or blocking symptoms in detail.
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?
Front-loads what the tool returns, then the engine note and rate-limit caveat in two short lines. Efficient and low-waste, though the parenthetical cross-reference and mixed-language phrasing add slight friction.
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?
An output schema exists, so return-value explanation is not required, and annotations handle safety. But with 6 parameters at 0% coverage and only one parameter addressed in prose, the description is incompletely specified for an agent trying to invoke it precisely.
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 0%, so the description carries the full burden for six parameters. It only clarifies 'engine' (auto | http | proxy | browser), leaving query, gl, hl, num, and start completely undocumented in both schema and text.
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 (scrape) plus resource (Google Books Search) and even names the output fields (title, URL, snippet). The resource is distinguishable from siblings like google_scholar_search or google_patents_search by name, though the description does not explicitly contrast them.
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?
Gives operational guidance on rate limits (avoid rapid repeats; when blocked, wait or switch to an RSS-based tool) and points at google_web_search for engine semantics. However it never states when to choose books search versus the many sibling search tools, which is the core selection question.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_crawlGoogle CrawlARead-onlyIdempotent
Crawl any URL (e.g. a search result): title, meta, text, outbound links.
Rate-limited by Google: avoid rapid repeats; when the result is blocked, wait or switch to an RSS-based tool.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| max_chars | No | ||
| include_links | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, non-destructive behavior, so the safety profile is covered. The description adds genuinely new operational context the annotations cannot convey: rate limiting by Google, avoiding rapid repeats, and what to do when a result is blocked.
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 compact sentences with no filler. The primary capability is front-loaded and the operational caveat follows immediately after.
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?
An output schema exists, so return values need not be restated, and the rate-limit/blocked behavior is well covered. However, with 0% parameter description coverage across three parameters, the definition is incomplete for correct invocation, particularly for max_chars and include_links.
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 0%, so nothing in the structured data explains url, max_chars, or include_links. The description names output fields but never defines max_chars (a default of 8000) or how include_links affects the returned outbound links, leaving two of three parameters unexplained.
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 (Crawl) and resource (any URL), and enumerates exactly what comes back: title, meta, text, outbound links. That output list also implicitly separates it from the sibling search tools, which return query results rather than page content.
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?
Gives a concrete use case ("e.g. a search result") and an explicit fallback path for the blocked case (wait, or switch to an RSS-based tool). It never names a specific sibling tool or states when not to use this one, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_finance_quoteGoogle Finance QuoteARead-onlyIdempotent
Scrape Google Finance quote: saham, forex, kripto.
Ticker: 'BBCA' + exchange 'IDX', 'AAPL' + 'NASDAQ', atau pair forex 'USD-IDR' (USDIDR/USD/IDR juga diterima, dinormalisasi otomatis).
Rate-limited by Google: avoid rapid repeats; when the result is blocked, wait or switch to an RSS-based tool.
| Name | Required | Description | Default |
|---|---|---|---|
| hl | No | en | |
| ticker | Yes | ||
| exchange | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the safety profile is covered. The description adds genuinely new behavioral context: Google imposes rate limits, rapid repeats risk blocking, and blocked results require waiting or an alternative tool. That's real operational guidance 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?
Three short, front-loaded blocks: purpose, ticker syntax, rate-limit caveat. No wasted sentences, though the mixed Indonesian/English phrasing adds mild reading friction.
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?
An output schema exists so return values needn't be described. With that covered, the description supplies the missing input-format guidance and the rate-limit behavior. Main residual gap is not clarifying its relationship to the overlapping google_fx_rate sibling.
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 0%, so the description must carry the load, and it does: it explains ticker format with concrete examples per exchange ('BBCA'+'IDX', 'AAPL'+'NASDAQ') and forex pair normalization ('USD-IDR', 'USDIDR/USD/IDR' accepted). It leaves 'hl' and 'exchange' defaults unmentioned, hence not a 5.
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+resource ('Scrape Google Finance quote') and enumerates covered asset classes (stocks, forex, crypto). It's clear what it does, though it doesn't explicitly distinguish itself from the sibling google_fx_rate, which presumably overlaps on forex quotes.
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?
Provides a useful rate-limit workaround ('wait or switch to an RSS-based tool'), which is a strong when-blocked alternative. But it never states when to use this over google_fx_rate for currency pairs, leaving sibling routing ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_fx_rateGoogle Fx RateARead-onlyIdempotent
Kurs langsung dari widget konverter SERP (mis. "1 USD to IDR").
Hasil: fx_rate {rate, from, to, formatted} + results biasa. Lebih tahan terhadap perubahan layout daripada halaman finance, karena membaea widget konverter yang muncul di SERP. Cocok untuk kurs cepat; untuk kurs resmi BI pakai google_kurs_bi.
Rate-limited by Google: avoid rapid repeats; when the result is blocked, wait or switch to an RSS-based tool.
| Name | Required | Description | Default |
|---|---|---|---|
| gl | No | us | |
| hl | No | en | |
| base | No | USD | |
| quote | No | IDR | |
| amount | No | ||
| engine | No | auto |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, open-world), but the description adds real operational context: Google rate-limiting, the blocked-result failure mode, and why it is more layout-resilient than finance pages. It stops short of describing pagination or latency, but the added context is substantive.
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?
Short and front-loaded: purpose, return shape, differentiation, and the rate-limit caveat each occupy about one sentence. Only the final rate-limit sentence is slightly tangential to selection, but it earns its place as an operational warning.
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?
An output schema exists, so return values need not be detailed, and the routing guidance is complete. However, with six undocumented parameters and no schema descriptions, an agent lacks guidance on locale/engine options, which keeps this from being fully complete.
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 0% across six parameters, so the description carries the full burden. The example '1 USD to IDR' loosely implies base/quote/amount, but gl, hl, and engine are never explained and no value formats or defaults are clarified beyond the schema itself.
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 and resource ('live rate from the SERP converter widget') with a concrete example ('1 USD to IDR') and names the output field fx_rate. It also distinguishes itself from the sibling google_kurs_bi, so an agent can route without opening either schema.
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?
Explicitly says when to use it ('quick rates') and when not to ('for official BI rates use google_kurs_bi'), plus a fallback path when results are blocked (wait or switch to an RSS-based tool). Both the alternative and the exclusions are stated outright.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_helpGoogle HelpARead-onlyIdempotent
Agent-facing usage guide: tool map, engine semantics, status contract and safe usage patterns. Read this before experimenting.
Rate-limited by Google: avoid rapid repeats; when the result is blocked, wait or switch to an RSS-based tool.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, openWorld and non-destructive. The description adds genuinely new behavioral context: Google-side rate limiting, avoiding rapid repeats, and the wait-or-switch R2B fallback when blocked. That is meaningful operational guidance beyond the structured hints.
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 tight sentences, front-loaded with the tool's identity and content, then the critical rate-limit guidance. No filler; every clause carries information the agent needs before experimenting.
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?
An output schema exists, so return-value explanation is unnecessary. Given the tool is a documentation/help endpoint, the description adequately signals its scope (tool map, engine semantics, status contract, safe usage) and the key operational caveat.
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?
The tool takes zero parameters, so there is nothing for the description to clarify beyond the schema. Baseline 4 applies since no parameter semantics are required.
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 purpose: an 'Agent-facing usage guide' covering tool map, engine semantics, status contract and safe usage patterns. This clearly separates it from the sibling search/fetch tools, though it does not name which sibling it complements. Verb+resource are concrete and 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?
'Read this before experimenting' gives explicit timing for invocation, and the rate-limit sentence routes the agent to an alternative ('switch to an RSS-based tool') when results are blocked. It provides clear context and a fallback path, but does not enumerate when-not-to-use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_image_searchGoogle Image SearchARead-onlyIdempotent
Scrape Google Images (tbm=isch): direct image URLs, page URLs, sizes.
engine: auto | http | proxy | browser (lihat google_web_search).
Rate-limited by Google: avoid rapid repeats; when the result is blocked, wait or switch to an RSS-based tool.
| Name | Required | Description | Default |
|---|---|---|---|
| gl | No | us | |
| hl | No | en | |
| num | No | ||
| page | No | ||
| query | Yes | ||
| engine | No | auto |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds genuinely non-obvious behavioral context: Google rate-limits this endpoint and results can come back blocked, with a documented recovery strategy. Pagination and output shape behavior are left unstated, keeping it below a 5.
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 short, front-loaded fragments with no filler — the resource and outputs come first, caveats second. The parenthetical '(lihat google_web_search)' is a slightly awkward cross-reference but costs little space.
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?
With an output schema present, return values need no prose, and annotations cover the safety profile. The description fills the remaining gaps an agent needs (engine modes, rate limiting, blocked-result fallback), though it leaves pagination/num semantics unclear.
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 0% across 6 parameters, so the description must carry the burden. It only documents the `engine` parameter's accepted values (auto/http/proxy/browser); gl, hl, num and page receive no explanation at all, and the schema offers none either.
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 and resource ('Scrape Google Images (tbm=isch)') plus the concrete outputs returned: direct image URLs, page URLs, sizes. This is enough to tell it apart from google_video_search and google_web_search without opening any schema.
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?
Gives real operational guidance: engine selection (auto/http/proxy/browser) and a fallback path ('when the result is blocked, wait or switch to an RSS-based tool'). It does not, however, state when to prefer image search over a sibling like google_web_search, so it stops short of explicit when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_kurs_biGoogle Kurs BiARead-onlyIdempotent
Kurs Transaksi Bank Indonesia (Jual/Beli) dari tabel resmi BI.
currency opsional: 'USD', 'EUR', dst (kosong = semua). Halaman BI JS-heavy, jadi engine auto memakai browser; engine 'http' dicoba dulu sebagai jalur murah.
Rate-limited by Google: avoid rapid repeats; when the result is blocked, wait or switch to an RSS-based tool.
| Name | Required | Description | Default |
|---|---|---|---|
| engine | No | auto | |
| currency | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld), and the description adds genuinely useful behavior: the page is JS-heavy so 'auto' routes to a browser, 'http' is tried first as a cheap path, and Google rate-limits/blocking can occur. That fallback ordering is not derivable from annotations or 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 compact sentences, front-loaded with the resource identity and followed by parameter and rate-limit notes. Slightly informal/mixed-language phrasing but no wasted filler.
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?
With an output schema present, return values need no explanation, and the annotations cover the safety profile. The description supplies the missing rate-limit caveat and engine fallback, so an agent has enough to invoke it correctly; only sibling differentiation and engine enum values are absent.
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 0%, so the description carries the burden and mostly does: currency examples and the empty-string default, plus engine behavior ('http' cheap first, browser for JS-heavy pages). It never enumerates the valid engine values, leaving some ambiguity for a 0%-coverage schema.
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 resource: Bank Indonesia transaction rates (buy/sell) from the official BI table. Clear verb+resource, though it never explicitly distinguishes itself from sibling google_fx_rate, which an agent might reasonably confuse it with.
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?
Provides operational guidance (wait or switch to an RSS-based tool when blocked) but gives no explicit when-to-use-this vs google_fx_rate or other rate tools. Currency semantics ('kosong = semua') are implied usage rather than selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_news_homepageGoogle News HomepageARead-onlyIdempotent
Scrape Google News homepage RSS: top headlines right now.
Rate-limited by Google: avoid rapid repeats; when the result is blocked, wait or switch to an RSS-based tool.
| Name | Required | Description | Default |
|---|---|---|---|
| gl | No | US | |
| hl | No | en-US | |
| ceid | No | US:en |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the read-only, idempotent, non-destructive, open-world profile. The description adds a trait annotations cannot express: Google rate-limits this endpoint, so rapid repeats may be blocked and recovery requires waiting or switching tools. That is materially useful operational context.
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, purpose front-loaded, no filler. The second sentence is dedicated to the one non-obvious operational risk, so 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 output schema covers return values and annotations cover safety, so those are not needed here. The remaining gap is the unexplained locale parameters, which matter for correct invocation of a region-varying feed but are absent from both the description and the schema.
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 three locale parameters (gl, hl, ceid) have 0% schema description coverage, and the description says nothing about them. For a region/language-sensitive endpoint, the agent gets no explanation of what gl, hl, or ceid control or how they interact, so the description fails to compensate for the coverage gap.
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 and resource ('Scrape Google News homepage RSS') plus the payload ('top headlines right now'), which cleanly distinguishes it from the sibling google_news_search by scope (homepage feed vs. query). It does not name that sibling explicitly, so differentiation is implicit rather than explicit.
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?
Provides a conditional fallback ('when the result is blocked, wait or switch to an RSS-based tool'), which is genuine usage guidance. However it never states when to prefer this over google_news_search, and the 'RSS-based tool' alternative is left unnamed, so routing remains inferential.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_news_searchGoogle News SearchBRead-onlyIdempotent
Scrape Google News: RSS dulu (no block); fallback tab News renderan bila RSS gagal.
engine: auto | http (RSS saja) | proxy | browser (tab News via Camoufox).
Rate-limited by Google: avoid rapid repeats; when the result is blocked, wait or switch to an RSS-based tool.
| Name | Required | Description | Default |
|---|---|---|---|
| gl | No | US | |
| hl | No | en-US | |
| num | No | ||
| ceid | No | US:en | |
| query | Yes | ||
| engine | No | auto |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/openWorld/idempotent, so the bar is lower, and the description still adds genuinely useful behavior: RSS-first vs rendered fallback, the Camoufox browser path, rate-limit exposure, and the blocked-result recovery path. 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?
Compact and front-loaded on the core operation, with the engine list and rate-limit note each earning their place. The mixed Indonesian/English phrasing and sentence fragments ('fallback tab News renderan bila RSS gagal') reduce immediate parseability for a general agent.
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?
An output schema exists so return values need not be described, and annotations carry the safety profile. What remains missing is documentation of the five non-engine parameters, which is a notable gap given 0% schema coverage.
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 0% across 6 params. The description meaningfully documents the 'engine' values (auto | http (RSS only) | proxy | browser), which the schema does not enumerate, but leaves query, gl, hl, num, and ceid completely unexplained. Partial compensation only.
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+resource (scrape Google News) and even describes the internal two-strategy mechanism (RSS first, rendered News tab fallback). It does not distinguish itself from the sibling google_news_homepage, so it falls short of a 5.
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?
Adds real operational guidance: engine modes, and a warning that Google rate-limits and that one should wait or switch to an RSS-based tool when blocked. However, it never names the specific alternative sibling (e.g. google_news_homepage) nor states when this tool is preferable to google_web_search or google_search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_patents_searchGoogle Patents SearchARead-onlyIdempotent
Scrape Google Patents XHR JSON: title, number, inventors, dates, PDF.
page: 1-based (1 = first page). NOTE: page number lives INSIDE the url= query string (page=N), not as an outer param.
Rate-limited by Google: avoid rapid repeats; when the result is blocked, wait or switch to an RSS-based tool.
| Name | Required | Description | Default |
|---|---|---|---|
| num | No | ||
| page | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive behavior, so the bar is lower; the description adds real value with the rate-limit/blocking disclosure and the wait-or-switch remediation. It does not note pagination termination or result caps, but the blocking behavior is the operationally important trait.
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?
Front-loaded with the core action and return fields, then the page gotcha, then the rate-limit caveat. Short and generally well ordered, though the 'url= query string' wording is slightly confusing given no url parameter exists in the 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?
An output schema exists so return values need no prose. The gaps are the undocumented num parameter and the absence of any query-format guidance for a patent search endpoint, which is a meaningful omission for a scraper-style tool.
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 0%, so the description must compensate. It does explain that page is 1-based and, crucially, that the page number lives inside the url= query string rather than as an outer param — a non-obvious trap. But num (result count) and the query syntax itself go entirely undocumented.
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 ('Scrape Google Patents XHR JSON') and enumerates the returned fields (title, number, inventors, dates, PDF), which cleanly separates it from the scholar/news/shopping siblings. An agent can tell what this does and what it yields without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is only implied — it is for patent lookups, and the description redirects to an 'RSS-based tool' when results are blocked, which is a genuine alternative signal. However, no guidance is given on when to prefer this over other search siblings or on what query forms are valid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_scholar_cited_byGoogle Scholar Cited ByBRead-onlyIdempotent
Scrape papers citing a Scholar cluster (from cluster_id in scholar results).
engine: auto | http | proxy | browser (lihat google_web_search).
Rate-limited by Google: avoid rapid repeats; when the result is blocked, wait or switch to an RSS-based tool.
| Name | Required | Description | Default |
|---|---|---|---|
| hl | No | en | |
| num | No | ||
| start | No | ||
| engine | No | auto | |
| cluster_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), and the description adds real behavioral context beyond them: the engine modes and the fact that Google rate-limits these calls and may return blocked results. It does not describe pagination behavior or result volume, but the added characteristics are substantive.
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?
Front-loaded with the core action, then engine options and the rate-limit caveat, with no filler. The mixed-language cross-reference '(lihat google_web_search)' is slightly opaque to an English reader but costs little space.
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?
An output schema exists, so return values need not be described, and the rate-limit warning is a genuine completion of the picture. What is missing is any explanation of the pagination parameters an agent must set to page through citing papers, which is a meaningful gap for a scraper tool.
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 0%, so the description must carry the burden, and it only partially does: it explains cluster_id's source and lists engine options. The pagination parameters (num, start) and hl are never explained in either place, leaving three of five parameters undocumented.
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 ('scrape') and resource ('papers citing a Scholar cluster') and clarifies the input's origin ('cluster_id from scholar results'), which cleanly separates it from google_scholar_search. It stops short of explicitly naming that sibling as the tool to call first, so it is clear but not fully differentiated in prose.
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?
Gives implied context via the parenthetical pointing to cluster_id from scholar results, and the rate-limit note ('avoid rapid repeats; when the result is blocked, wait or switch to an RSS-based tool') is useful operating guidance. However, it never states explicitly that you must run google_scholar_search first, nor names a concrete sibling alternative for fallback.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_scholar_searchGoogle Scholar SearchBRead-onlyIdempotent
Scrape Google Scholar: papers, authors/venue, citations, PDF links.
start: 0-based result offset (unified google_search computes it from page). engine: auto | http | proxy | browser (lihat google_web_search).
Rate-limited by Google: avoid rapid repeats; when the result is blocked, wait or switch to an RSS-based tool.
| Name | Required | Description | Default |
|---|---|---|---|
| hl | No | en | |
| num | No | ||
| query | Yes | ||
| start | No | ||
| engine | No | auto | |
| year_low | No | ||
| year_high | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false. The description adds a useful rate-limit warning and fallback to an RSS-based tool, but does not say whether results are cached, how blocking manifests, or what the response includes despite having an output schema. It adds context but not rich operational detail.
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 a compact list: purpose first, then parameter notes, then rate-limit caution. It is well front-loaded with no filler sentences, though the 'lihat google_web_search' reference is slightly opaque and parameter lines are terse.
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?
With 7 parameters at 0% schema coverage and an output schema present, the description should at least name the missing parameters or their intent. It adds the rate-limit fallback and covers two parameters, but leaves the remaining five untouched, which is thin for a tool with an open-world, network-heavy behavior.
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 0%, so the description must compensate fully. It explains only 'start' (0-based offset) and 'engine' (auto|http|proxy|browser) and gives a default for neither. It omits 'query', 'hl', 'num', 'year_low', 'year_high' entirely, so five of seven parameters are left undocumented.
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 the resource (Google Scholar) and enumerates what is returned (papers, authors/venue, citations, PDF links), so an agent understands what it does. However, it does not differentiate from siblings like google_web_search or google_scholar_cited_by; a scholar-specific sibling is not addressed.
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 usage context is only implied by the mention of 'start' for pagination and 'when the result is blocked, wait or switch to an RSS-based tool.' There is no explicit statement of when to pick this over google_web_search or google_scholar_cited_by.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_searchGoogle SearchARead-onlyIdempotent
One search tool for all Google tabs + pagination (pages 1-10).
tab: web | images | videos | news | books | shopping | scholar | patents | ai. page: 1-10 (each page = next result set; news slices the RSS feed). num: results per page. engine: auto (HTTP cepat, fallback browser bila diblokir) | http (tanpa browser) | proxy (paksa pool proxy) | browser (langsung Camoufox).
Rate-limited by Google: avoid rapid repeats; when the result is blocked, wait or switch to an RSS-based tool.
| Name | Required | Description | Default |
|---|---|---|---|
| gl | No | us | |
| hl | No | en | |
| num | No | ||
| tab | No | web | |
| page | No | ||
| query | Yes | ||
| engine | No | auto |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context: Google rate limiting on repeated calls, and engine-mode semantics (auto does HTTP with browser fallback when blocked, proxy forces a proxy pool, browser uses Camoufox directly).
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?
Purpose is front-loaded, and the parameter-by-parameter lines earn their place for a 7-param tool. The Indonesian parentheticals ('HTTP cepat, fallback browser bila diblokir', 'paksa pool proxy', 'langsung Camoufox') and irregular line wrapping hurt readability and are not universally parseable.
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?
An output schema exists, so return values need not be described. For a broad multi-surface search tool the description covers pagination, rate limits, and engine fallback adequately; the only real omission is the meaning of gl/hl and any explicit sibling-routing rule.
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 0%, so the description must carry the load, and it does for four of seven parameters: tab (nine named values), page (1-10, news slices RSS), num, and engine (auto/http/proxy/browser with fallback behavior). It leaves gl and hl entirely unexplained, which keeps it out of the top band.
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 first sentence states a specific verb and resource ('One search tool for all Google tabs + pagination') and enumerates the covered surfaces via the tab list. It is clear what the tool does, though it never says how it relates to the many specialized siblings (google_web_search, google_news_search, google_image_search, etc.) that appear to overlap with its tab values.
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 gives a when-not rule — 'Rate-limited by Google: avoid rapid repeats; when the result is blocked, wait or switch to an RSS-based tool' — plus guidance that page/news slices the RSS feed. However, it offers no routing advice for the obvious ambiguity: whether to use tab=web here or call google_web_search, or tab=news vs google_news_search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_shopping_searchGoogle Shopping SearchARead-onlyIdempotent
Scrape Google Shopping (tbm=shop): product title, URL, snippet.
engine: auto | http | proxy | browser (lihat google_web_search).
Rate-limited by Google: avoid rapid repeats; when the result is blocked, wait or switch to an RSS-based tool.
| Name | Required | Description | Default |
|---|---|---|---|
| gl | No | us | |
| hl | No | en | |
| num | No | ||
| query | Yes | ||
| start | No | ||
| engine | No | auto |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read-only, idempotent, open-world profile, but the description adds real behavioral context beyond them: Google rate-limiting, what happens when a request is blocked, and the fallback strategy. It does not describe pagination behavior or result size, so not a 5.
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 purpose is front-loaded in one line and the follow-on notes are short and non-redundant. Minor friction: the parenthetical is partly in another language ('lihat google_web_search') and the engine line is fragmentary, slightly hurting readability.
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?
An output schema exists, so return values need not be re-explained, and annotations cover the safety profile. The description is complete on operational constraints and fallback, but the thin parameter coverage across 6 params is the one real completeness gap.
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 0% across 6 parameters, so the description must carry the burden and largely does not. It only hints at engine modes (auto | http | proxy | browser, deferred to google_web_search), leaving gl, hl, num, and start entirely unexplained; the agent must guess country, language, count, and pagination offset semantics.
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 (Scrape), a specific resource (Google Shopping, tbm=shop), and the exact return payload (product title, URL, snippet). This clearly distinguishes it from siblings like google_web_search and google_image_search without needing to open a schema.
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 gives useful operational guidance (avoid rapid repeats, wait when blocked, switch to an RSS-based tool) but never states when to prefer this tool over google_web_search or other google_* siblings. Usage is implied rather than directed, so it lands at minimum-viable with real gaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_statusGoogle StatusARead-onlyIdempotent
Health check: which Google endpoints are reachable from this IP right now, plus proxy pool, cache, cooldowns and forensic counters.
Rate-limited by Google: avoid rapid repeats; when the result is blocked, wait or switch to an RSS-based tool.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds real value beyond that: Google-side rate limiting, the meaning of a blocked result, remediation steps, and the diagnostic payload returned (proxy pool, cache, cooldowns, counters).
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 tight sentences: the first front-loads what the tool reports, the second front-loads the operational constraint and remedy. No filler or repetition of the title.
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?
With zero parameters and an output schema already present, the description only needs to convey purpose, rate-limit behavior, and failure handling - all of which it does. An agent has everything required to call it and interpret a blocked result.
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?
The tool takes no parameters and the schema is fully covered, so there is nothing for the description to clarify. Baseline applies; the sentence about blocked results usefully explains result-state semantics rather than argument semantics.
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+resource: a health check of which Google endpoints are reachable from the current IP, and enumerates the returned diagnostics (proxy pool, cache, cooldowns, forensic counters). This cleanly distinguishes it from every search/crawl sibling in the list.
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?
Gives concrete when-not-to-do guidance - 'avoid rapid repeats' and, when blocked, 'wait or switch to an RSS-based tool' - which names a fallback class. It lacks an explicit positive trigger (e.g. 'call this first to diagnose reachability before running a search'), so it stops just short of a full when/when-not pairing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_suggestGoogle SuggestARead-onlyIdempotent
Google autocomplete suggestions (no block).
Rate-limited by Google: avoid rapid repeats; when the result is blocked, wait or switch to an RSS-based tool.
| Name | Required | Description | Default |
|---|---|---|---|
| hl | No | en | |
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the bar is lower, and the description still adds genuinely useful context: Google rate-limits this endpoint and results can come back blocked, with a recommended recovery path. It does not describe the shape or reliability of results beyond the blocking caveat.
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 short sentences with the capability front-loaded and the operational caveat second; no filler or repetition.
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?
An output schema exists, so return values needn't be explained, but with 0% schema coverage the description leaves both parameters undefined and never clarifies what 'no block' means. Adequate for the operation itself, incomplete for correct invocation.
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 0% for two parameters, and the description says nothing about either. In particular 'hl' (default 'en') is never identified as a language code nor is the expected format given for 'query', so the description does not compensate for the schema gap.
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 resource (Google autocomplete suggestions) with a qualifier, so an agent can tell it apart from the many sibling search tools. The parenthetical '(no block)' is cryptic and not explained anywhere, which slightly muddies the purpose.
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?
Gives behavioral usage guidance ('avoid rapid repeats', 'when blocked, wait or switch to an RSS-based tool'), which implies when the tool fails and what to do. However, it never says when to prefer this autocomplete tool over sibling search tools like google_search or google_web_search, so selection guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_translateGoogle TranslateARead-onlyIdempotent
Translate text via Google's unofficial gtx endpoint (no key).
Rate-limited by Google: avoid rapid repeats; when the result is blocked, wait or switch to an RSS-based tool.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| source | No | auto | |
| target | No | en |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the bar is lower; the description adds genuinely useful context by disclosing that the endpoint is unofficial, keyless, rate-limited, and can return blocked results. It stops short of describing retry timing or response shape, but that is a modest gap given the annotation coverage.
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 tight sentences with zero filler; the core purpose and the endpoint caveat are front-loaded before the rate-limit warning.
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?
An output schema exists, so return values need not be described, and the failure behavior is covered. However, with three parameters at 0% schema coverage, the description is not complete enough for an agent to know how to fill source/target 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 0% and the description says nothing about text, source, or target. It never explains that source defaults to 'auto' or that target defaults to 'en', nor the expected language-code format, so the undocumented parameters are left entirely unexplained.
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 (Translate) and resource (text) plus the underlying mechanism (Google's unofficial gtx endpoint, no key). No sibling does translation, so it is trivially distinguishable from the search/finance/trends tools listed.
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?
Gives operational guidance: avoid rapid repeats, and when results are blocked, wait or switch to an RSS-based tool. This is clear failure-mode routing, but it never says when to prefer this over any listed sibling or what to do for other translation needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_trends_dailyGoogle Trends DailyBRead-onlyIdempotent
Google daily trending searches RSS (no block): topic, traffic, links.
Rate-limited by Google: avoid rapid repeats; when the result is blocked, wait or switch to an RSS-based tool.
| Name | Required | Description | Default |
|---|---|---|---|
| hl | No | en-US | |
| geo | No | US |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, non-destructive behavior, so the bar is lower; the description still adds genuinely new context about Google rate-limiting/blocking and the retry-or-switch strategy. It stops short of describing pagination or result size, but the rate-limit disclosure is meaningful added value.
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 short sentences, zero filler, with the core purpose and the return fields front-loaded ahead of the rate-limit caveat. Appropriately sized for a simple two-parameter feed tool.
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?
An output schema exists and annotations cover the safety profile, so return values and safety need not be explained. However, with two undocumented parameters and no guidance on locale/region semantics, the definition is adequate but leaves a real gap an agent would hit on first call.
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 0% for both parameters (hl, geo), so the description carries the full burden of explaining them — and it mentions neither. An agent gets no hint that hl controls language/locale or geo controls the region for the trend feed.
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+resource (daily trending searches) and enumerates the returned fields (topic, traffic, links), which distinguishes it from the sibling google_trends_interest (interest-over-time) without naming it. Clear, but the sibling differentiation is only implicit.
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?
Offers operational guidance on rate limits ('avoid rapid repeats', 'wait or switch to an RSS-based tool') but never says when to choose this tool over the closely related google_trends_interest. Usage context is implied 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_trends_interestGoogle Trends InterestARead-onlyIdempotent
Google Trends interest-over-time via internal explore API (no key).
keywords: comma-separated, max 5 (e.g. "opencode, cursor, windsurf"). timeframe: e.g. 'now 7-d', 'today 12-m', 'today 5-y', 'all'. engine: auto (HTTP → fallback browser) | http (HTTP saja) | browser.
NOTE: endpoint widgetdata Trends sering menolak request non-browser (HTTP 400/401) walau token explore valid — bila itu terjadi, engine auto memakai Camoufox: fetch dijalankan dari dalam halaman Trends sehingga cookies/fingerprint ikut. Bila tetap gagal, status "limited".
Rate-limited by Google: avoid rapid repeats; when the result is blocked, wait or switch to an RSS-based tool.
| Name | Required | Description | Default |
|---|---|---|---|
| hl | No | en-US | |
| tz | No | ||
| geo | No | ||
| engine | No | auto | |
| keywords | Yes | ||
| timeframe | No | today 12-m |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/open-world/idempotent/non-destructive, but the description adds real behavioral context beyond them: HTTP 400/401 rejections from the widgetdata endpoint, the auto engine's Camoufox in-page fetch that carries cookies/fingerprint, the 'limited' status outcome, and Google-side rate limiting. The mixed Indonesian/Malay in the NOTE reduces clarity slightly.
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?
Purpose and the key parameter hints are front-loaded, but the NOTE is long and partially redundant, and the language switches mid-document (English/Indonesian), which costs readability. The engine parameter is described twice in slightly different terms.
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?
An output schema exists, so return values need not be explained, and the description does cover the failure/fallback and rate-limit behavior an agent needs. However, three parameters (hl, tz, geo) are undocumented anywhere, which leaves the definition incomplete for a 6-parameter tool.
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 0%, so the description must carry parameter meaning, and it only covers 3 of 6 params: keywords (comma-separated, max 5, with example), timeframe (concrete value examples), and engine (auto/http/browser semantics). hl, tz, and geo receive no explanation in either the schema or the description, leaving real gaps.
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 and resource – Google Trends interest-over-time – and scopes it with the mechanism (internal explore API, no key). The phrase 'interest-over-time' cleanly separates it from the sibling google_trends_daily (daily trending searches), so an agent can route without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is only implied: the tool is for interest-over-time queries, and a fallback is suggested 'when the result is blocked, wait or switch to an RSS-based tool.' The alternative is never named, and there is no explicit when-to-use/when-not guidance versus google_trends_daily or other sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_video_searchGoogle Video SearchARead-onlyIdempotent
Scrape Google Video Search (tbm=vid): title, URL, snippet.
engine: auto | http | proxy | browser (lihat google_web_search).
Rate-limited by Google: avoid rapid repeats; when the result is blocked, wait or switch to an RSS-based tool.
| Name | Required | Description | Default |
|---|---|---|---|
| gl | No | us | |
| hl | No | en | |
| num | No | ||
| query | Yes | ||
| start | No | ||
| engine | No | auto |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld/non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context beyond annotations: rate-limiting by Google, block-then-wait behavior, and an RSS fallback. Return format is not described, but the output schema covers that.
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 short lines with the purpose front-loaded and no filler. The mixed-language phrasing ('lihat google_web_search') is slightly rough but costs no meaningful space.
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 read-only scraper with an output schema, return values needn't be explained. The description covers rate limits and the engine option but leaves four of six parameters (gl, hl, num, start) unaddressed, leaving a gap for pagination and localization semantics.
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 0%, so the description must carry the burden. It clarifies the 'engine' parameter's allowed values (auto | http | proxy | browser) and points to google_web_search for detail, but leaves gl, hl, num, and start entirely unexplained, so compensation is partial.
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 ('Scrape') and resource ('Google Video Search (tbm=vid)') plus the returned fields (title, URL, snippet). The resource name clearly separates it from google_image_search, google_news_search, and google_web_search, though it never explicitly names a sibling it is not.
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?
Provides operational guidance ('avoid rapid repeats; when blocked, wait or switch to an RSS-based tool'), which implies when the tool fails. But it gives no explicit when-to-use vs the many other search siblings; usage is only implicit from the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_web_searchGoogle Web SearchARead-onlyIdempotent
Scrape Google Web Search: organic results, featured snippet, related searches.
engine: auto (HTTP cepat, fallback browser bila diblokir) | http (tanpa browser) | proxy (paksa pool proxy) | browser (langsung Camoufox headless, tanpa proxy/API key).
Rate-limited by Google: avoid rapid repeats; when the result is blocked, wait or switch to an RSS-based tool.
| Name | Required | Description | Default |
|---|---|---|---|
| gl | No | us | |
| hl | No | en | |
| num | No | ||
| query | Yes | ||
| start | No | ||
| engine | No | auto |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/openWorld/non-destructive, so the description adds the higher-value behavioral facts: Google rate-limits this endpoint, rapid repeats should be avoided, and blocked results can be routed to an RSS-based tool. That is meaningful context 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 first sentence is well front-loaded and earns its place. The engine block is a dense pipe-delimited list mixing English and Indonesian, which is harder to parse than a clean enumeration would be.
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?
An output schema exists, so return values need not be described. The description covers blocking behavior and engine modes, but leaves the locale/pagination parameters (gl, hl, num, start) undefined, which is a gap for a six-parameter tool.
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 0%, so the schema documents none of the six parameters. The description does explain the `engine` values (auto/http/proxy/browser) in useful detail, which is the most complex parameter, but gl, hl, num, start, and query remain completely unexplained anywhere.
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 (scrape) and resource (Google Web Search) plus the exact payload returned: organic results, featured snippet, related searches. This clearly distinguishes it from siblings like google_news_search, google_image_search, and google_scholar_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?
Gives real operational guidance: engine mode selection (auto/http/proxy/browser) and a rate-limit warning with an alternative ('switch to an RSS-based tool') when blocked. However, it never tells the agent when to prefer this over the sibling google_search, and the guidance is partly in Indonesian, reducing accessibility.
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.
2 tool updates
v0.8.0- Added
google_fx_rate - Added
google_kurs_bi
20 tool updates
v0.7.2- First observed
google_ai_mode - First observed
google_books_search - First observed
google_crawl - First observed
google_finance_quote - First observed
google_help - First observed
google_image_search - First observed
google_news_homepage - First observed
google_news_search - First observed
google_patents_search - First observed
google_scholar_cited_by - First observed
google_scholar_search - First observed
google_search - First observed
google_shopping_search - First observed
google_status - First observed
google_suggest - First observed
google_translate - First observed
google_trends_daily - First observed
google_trends_interest - First observed
google_video_search - First observed
google_web_search
TDQS
Scored across 22 tools
Many tools duplicate functionality: google_search can perform all the specialized searches (web, images, news, etc.), so it's unclear when to use a specialized tool versus the unified one. Descriptions mention engine and rate limits but don't resolve the core overlap.
All tools share the google_ prefix and snake_case, which is consistent. However, patterns vary (some are verb-based like google_translate, others are noun-based like google_finance_quote), so minor deviations exist.
22 tools is on the high end for a single server; while many verticals are distinct, the unified search tool makes several redundant, leading to over-provisioning.
The surface covers most major Google search verticals (web, images, video, news, books, shopping, scholar, patents, finance, trends, AI) plus utility tools. Missing verticals like maps, jobs, or local could be minor gaps for some use cases, but core scraping needs are met.
Maintenance
Related MCP Connectors
Search Google straight from your AI agent. Web results, images, videos, news, products, scholarly ar
Web search, browser automation, scraping, crawling and CAPTCHA solving for AI agents.
Web search, scraping, Google Trends and data lookups. Paid per call in USDC on Base via x402.
Real-time web search for AI agents: ranked results, source URLs, and optional AI answers.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables free web searching using Google search results with no API keys required, returning structured results with titles, URLs, and descriptions.132 npm5MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to perform real-time Google searches with anti-bot protection. Bypasses search engine restrictions using advanced browser automation to extract search results locally without requiring paid API services.6MIT
- AlicenseAqualityDmaintenanceEnables AI agents to perform Google searches and retrieve structured JSON results for 10 types including web, images, news, and shopping with live prices. Offers 1,000 free searches per month with no credit card required.138 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to perform real Google web searches and render web pages for content extraction using a local Chrome browser, with human-in-the-loop CAPTCHA verification, requiring no API keys.33 npmMIT