Google Trends MCP Server
This server lets AI clients (Claude, Cursor, VS Code, Codex, etc.) query Google Trends and get worked-out analysis — trending topics, keyword interest, seasonality, momentum and share of search — with no API key or browser required.
Discover what's trending now — full Trending Now lists per country/region with search volume, growth, start time, category, status and the queries inside each trend (
trending_now,trend_details,trending_feed,trending_across_countries,match_trends).Explore keywords — interest over time (up to 5 terms, from 1 hour to 2004–today), interest by country/region/city/metro, related queries and topics, period-over-period and location comparisons (
interest_over_time,interest_by_region,related_queries,related_topics,compare_periods,compare_locations,keyword_overview).Get analysis, not charts — growth verdicts (breakout/rising/stable/declining), yearly seasonality and peak months, publishing calendars, brand share of search vs competitors, ranked comparisons of 6–25 terms, spike detection and long daily history (
trend_momentum,seasonality,content_calendar,share_of_search,compare_many,find_spikes,daily_history,keyword_ideas).Build history Google doesn't keep — snapshot trending lists before Google drops them (~1 week), search that saved history, maintain a watchlist and get direction reports, and run read-only SQL over the local data file (
snapshot_trending,trending_history,watchlist_add,watchlist_remove,watchlist_report,history_sql).Look up codes and stay healthy — resolve locations, categories and topics; check capabilities, endpoints and session/cache state; clear cache (
find_location,find_category,find_topic,get_capabilities,check_endpoints,clear_cache).Reuse ready-made workflows — four MCP prompts (
trend_report,newsjacking_brief,seasonal_content_plan,market_comparison) plus guide resources for newsjacking, content planning and market comparison.Run flexibly and safely — works over stdio or HTTP, offline from cache, with pacing/back-off/caching to avoid blocks, honest 0–100 index labelling, and no sign-in or Google account needed (except optionally for
related_topics).
Provides tools for accessing Google Trends data, including trending searches with real search volumes, interest over time, interest by region, related queries and topics, seasonality, momentum, share of search, and historical snapshots. Supports Web, YouTube, News, Images, and Shopping search types within Google Trends.
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 Trends MCP Serverwhat's trending in the United States right now?"
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 Trends MCP Server — gtrends-mcp-full
The complete MCP server for Google Trends. Ask Claude, Cursor, Windsurf, VS Code, Codex or any other MCP client what people are searching, where, when, and what is taking off right now — and get analysis back, not a chart to squint at.
32 tools · Trending Now with real search volumes · interest over time, by region and related searches · seasonality, momentum and share of search · no API key, no browser, no sign-in.
Project page · Quick start · Tools · Prompts · Configuration · How it stays unblocked · FAQ · Docs
What you get
✅ Complete | Everything the Google Trends website shows: the full Trending Now list (hundreds of trends per country, with search volume, growth, start time, category and the queries inside each one), the news behind a trend, interest over time down to the minute, interest by country, region, city and metro area, related queries and topics, every category and location, Web, YouTube, News, Images and Shopping search. |
🔑 Nothing to set up | No API key, no Google Cloud project, no sign-in, no headless browser. Install it and ask. |
🧠 Answers, not charts | Is it growing or fading? When does it peak, and when must the content be live? Who is winning share of search? What suddenly jumped, and when? Worked out for you and returned as short tables your AI can reason about. |
📈 Past the limits of the website | Compare 25 terms on one scale instead of five. Daily data over years instead of nine months. Trending Now history kept for as long as you like instead of one week. |
🛡️ Built to keep working | Paced requests, a persistent session, back-off instead of hammering, and a cache that still answers — and says so — when Google will not. Related-searches and chart requests are budgeted separately, so a limit on one never takes down the rest. |
🎯 Honest numbers | Every value is labelled for what it is: Google's 0–100 index, never a search count. Partial periods are marked. A failure is an error with its reason and what to do next, never an empty result. |
💸 Free and light | MIT licensed. Two dependencies. Runs on your machine; nothing is sent anywhere but Google. Tested on Linux, macOS and Windows with Python 3.10–3.13. |
Works with: Claude Desktop · Claude Code · Cursor · Windsurf · VS Code (Copilot agent mode) · OpenAI Codex CLI · any MCP client over stdio or HTTP.
Related MCP server: Google Trends MCP
Tools
32 tools in 5 groups. You don't call them yourself — ask in plain language and your AI picks the right one.
🗄️ works on the local data file, no request to Google
🔥 Trending now
Tool | What it gives you | Ask it like this |
| The full Trending Now list for a country or region: search volume, growth, start time, still active or over, category, and the other queries people type for the same story. Filter by category, status, volume or text | "What's trending in Germany in the last 4 hours?" · "Active sports trends in the US above 100K searches" |
| One trend in full: every query inside it, the news articles behind it, and its hour-by-hour curve for the past week | "Why is 'pentobarbital' trending?" |
| The top daily trends with headlines and links — the fastest answer to "what's in the news there today" | "Give me today's top searches in Iran with the headlines" |
| Trends that are live in several countries at once, grouped even when titles differ | "What is trending in both the US and the UK right now?" |
| Which current trends touch your subjects, brands or products — for newsjacking | "Is anything about electric cars, Tesla or charging trending today?" |
🔎 Explore a keyword
Tool | What it gives you | Ask it like this |
| The whole Trends page in one call: curve, direction, top places, rising and top related queries | "Give me the Google Trends picture for 'heat pump' in the UK" |
| The main chart for up to 5 terms on one scale — any range from one hour to 2004-today, any location, category and search type, with operators ( | "Compare tesla and byd over 5 years in Germany" · "YouTube interest in 'lofi' this week" |
| Where a term matters most: countries, regions, cities or metro areas. With several terms: who leads where | "Which US states search 'tesla' the most?" · "Where does byd beat tesla?" |
| What else people search around a term — the top queries and the rising ones, with breakouts flagged | "What are the rising searches around 'solar panels'?" |
| The people, brands and things searched alongside a term, with topic ids | "Which topics are related to 'tesla'?" |
| One term in two time ranges on one scale: this year against last, this quarter against the one before | "Is 'sunscreen' ahead of last summer?" |
| One term in up to 5 countries or regions side by side | "Compare interest in cricket in India, the UK and Australia" |
🧠 Analysis
Tool | What it gives you | Ask it like this |
| A verdict per term — breakout, rising, stable, declining or new — with year-over-year change, last quarter vs the one before, long-run slope and distance from its peak | "Which of these eight product ideas is actually growing?" |
| The yearly rhythm: a month-by-month index, peak and low months, how reliably it repeats, year-by-year growth, the next six months, and the date content should be live | "When do people search for air conditioners, and when should I publish?" |
| A publishing calendar for up to 8 topics, sorted by what is due first; evergreen topics listed separately | "Build me a content calendar for these topics" |
| Your brand's share of searches against up to 4 competitors — overall, at the start, at the end, and the change in points | "What's Toyota's share of search against Honda, Ford and Tesla?" |
| 6 to 25 terms ranked on a single scale, past the five-term limit of the website | "Rank these 20 car brands by search interest in the US" |
| The moments a term jumped: when each spike began, peaked and ended, and how many times the usual level it reached | "When did searches for 'earthquake' spike in the last five years?" |
| Day-by-day interest over years (the website stops at about nine months), plus the weekday pattern | "Daily interest in 'pizza delivery' for 2024 and 2025 — which weekday is biggest?" |
| Rising and top related queries for up to 5 seeds, merged and de-duplicated, breakouts first | "Give me keyword ideas around 'electric bike' and 'e-scooter'" |
🗄️ History that Google does not keep
Tool | What it gives you | Ask it like this |
| Saves the current Trending Now list to a local file. Google drops a trend after about a week; this keeps it | "Save today's trends for the US, UK and Germany" |
| Searches everything saved: when something trended, how big it got, how long it lasted | "Did anything about 'iphone' trend in the US last month?" |
| Puts terms on a watchlist, per location, with a note | "Watch 'heat pump' and 'solar panels' in the UK" |
| The watchlist measured now: direction, what changed since the last report, and whether a term is trending today | "How is my watchlist doing?" |
| Takes terms off the watchlist | "Stop watching 'fax machine'" |
| Read-only SQL over the saved trends, snapshots, watchlist and readings | "Which categories trended most in Germany this month?" |
🧭 Lookups and utilities
Tool | What it gives you | Ask it like this |
| The code for any country, region, state or metro area, or the list of places inside one | "What's the Google Trends code for Tehran province?" |
| Category ids, to pin an ambiguous word to one meaning | "Limit 'jaguar' to cars" |
| Google's topics for a name — one id that covers every language and spelling of a thing | "Use the company Tesla, not the word" |
| Settings, session state, cache and history coverage, the tool list | "Is the Trends server set up correctly?" |
| Asks each Google Trends endpoint one question and reports which still answer | "Why did the last Trends call fail?" |
| Drops saved answers, optionally resets the session | "Refresh the trending data" |
The full reference with every parameter is in docs/tools.md — generated from the code, so it is never out of date.
Prompts
Four ready-made workflows that appear in your client's prompt menu. Each chains several tools and says what the finished answer must contain.
Prompt | What it produces |
| A full read on one keyword: direction, seasonality, the events behind its spikes, rising themes, and what to do about it |
| Today's trends that fit your subjects, the story behind each, the queries to target, an angle and a risk note |
| A twelve-month publishing plan for a list of topics |
| Share of search for a brand against its competitors, who wins where, and what is rising around each |
Two reference pages are also exposed as MCP resources: gtrends://guide (how to read the numbers, time ranges, operators, topics) and gtrends://trending-categories.
Quick start
You need Python 3.10 or newer and uv (or pip).
1. Add it to your client
Nothing to download first: uvx fetches the package from PyPI and runs it.
Claude Code
claude mcp add gtrends -- uvx gtrends-mcp-fullClaude Desktop, Cursor, Windsurf, VS Code — add this to the client's MCP configuration:
{
"mcpServers": {
"gtrends": {
"command": "uvx",
"args": ["gtrends-mcp-full"],
"env": {
"GTRENDS_GEO": "US",
"GTRENDS_TIMEZONE": "America/New_York"
}
}
}
}Both env entries are optional. There is nothing else to configure: no key, no sign-in.
2. Check it
uvx gtrends-mcp-full doctordoctor asks every Google Trends endpoint one question; all eight should say OK. On the very first run a chart endpoint may report that the session is still being validated — that passes after a minute and a half and does not come back.
3. Ask
What's trending in the US right now, and which of it is about technology? Is "heat pump" growing in the UK? When does it peak? Rank these 15 car brands by search interest in Germany. What is Toyota's share of search against Honda and Ford this year?
From the command line
With the package installed (uv tool install gtrends-mcp-full or pip install gtrends-mcp-full):
gtrends-mcp-full doctor # configuration and endpoint check
gtrends-mcp-full trending US # print what is trending now
gtrends-mcp-full snapshot US,GB,DE # save Trending Now to the local history (for cron)
gtrends-mcp-full --transport streamable-http --port 8000 # serve over HTTP instead of stdioKeep a trending history by scheduling the snapshot, for example every six hours:
0 */6 * * * gtrends-mcp-full snapshot US,GB,DEReading the numbers
Everything Google Trends returns is an index from 0 to 100, not a search count: the share of all searches a term had, rescaled so the highest point in that one request is 100. Three things follow, and the tools are built around them:
Only terms in the same request are comparable.
compare_many,share_of_search,compare_periodsandcompare_locationsbuild one scale for you.Across places it is a share of local searches. A small country can outrank a large one.
The last point of a range is usually incomplete. It is marked, and left out of averages.
The exception is Trending Now, which carries real — bucketed — search volumes ("200K+").
A search term is matched literally. To count two wordings as one, join them in a single term with + (e-mail + email); for the name of a thing, find_topic gives a topic id that Google resolves across languages and spellings.
Configuration
Every setting is optional.
Variable | Default | What it does |
| worldwide | Default location code ( |
|
| Language of the names Google returns (locations, categories, topics) |
| this machine's | IANA timezone for times in results and for hourly data, e.g. |
| none | HTTP(S) proxy URL for requests to Google |
|
| Seconds between requests to Google |
|
| Seconds a chart answer is reused |
|
| Seconds a Trending Now answer is reused |
|
| Seconds one tool call may spend waiting on Google before it reports back |
| none | A signed-in Google session (raw |
| off | Answer from the cache only, never contact Google |
|
| Where the data file and session cookie live |
|
| The data file: cache, trending history, watchlist |
| none | Host names allowed in HTTP mode behind a reverse proxy. HTTP mode has no authentication and will not start on a public address without this — see Security |
How it stays unblocked
Google Trends has no public API for general use, so this server speaks to the same endpoints as the Trends website. Those endpoints are rate-limited and unforgiving of scripts that behave like scripts. What the server does about it:
One long-lived session. Google refuses the chart endpoints without its session cookie, and turns away a cookie it has only just issued for the first minute and a half. The server fetches one cookie when it starts, lets it mature in the background, stores it, and reuses it on every later run. The endpoints that work without a cookie — Trending Now, the feed, lookups — never wait for it.
Pacing. Requests are spaced: 1.5 s by default, 2 s for charts, and 6 s between two related-searches requests, the touchiest endpoint. After a refusal the gap widens for five minutes.
Back-off, then silence. A real rate limit is retried a few times with growing delays. If it persists, the server stops asking that group of endpoints for a few minutes instead of making the block worse — the other groups keep working.
A cache with a fallback. Every answer is stored. Ask twice, one request. When Google refuses, an older answer is served and labelled with its age.
Fewer requests by design. One chart request can carry five terms; a second chart for the same question reuses the first one's tokens.
A time budget. A tool call reports back within the budget with what it has, naming what is missing, rather than hanging your client.
check_endpoints (or gtrends-mcp-full doctor) tells you at any moment which endpoints answer, and whether a failure is a rate limit, a changed endpoint or the network.
FAQ
Is this the official Google Trends API?
No. Google announced an official API in 2025, but it is a closed alpha for approved testers. This server uses the endpoints behind the Trends website, which need no key. They are undocumented and can change; when one does, check_endpoints says which, and the fix is a package update.
Do I need a Google account?
No. One tool, related_topics, returns an empty list to anonymous sessions — Google withholds it — and says so. Supplying a signed-in cookie unlocks it; everything else works without.
Can it give me search volumes? Trending Now carries real volumes, in buckets (2K+, 200K+). Everything else is the 0–100 index, which measures relative interest. No tool pretends otherwise.
I asked for the same thing twice and one number moved by a point. Google Trends is computed from a sample of searches, so repeated requests can differ slightly. The cache returns the same answer within its lifetime.
A tool says Google is rate-limiting.
Wait a few minutes; cached answers keep working. If it happens often, ask for several keywords in one call instead of one call each, raise GTRENDS_MIN_INTERVAL, or set GTRENDS_PROXY.
A tool says the session is still being validated. That is the first ninety seconds after the very first start. Trending tools work in the meantime, and it does not happen again: the session is stored.
Why does a small country outrank a big one? Because the index is a share of that place's own searches, not a count.
Where is my data?
In one SQLite file on your machine (~/.config/gtrends-mcp-full/trends.sqlite): cached answers, the Trending Now snapshots you saved, and your watchlist. Nothing is sent anywhere except the requests to Google Trends.
Development
uv venv && uv pip install -e ".[dev]"
uv run pytest # no network needed: the tools run against a fake Google Trends
uv run ruff check src tests
python scripts/gen_tools_doc.py # after changing a tool's signature or docstring
python scripts/record_fixtures.py # re-record the real answers the contract tests replay (about 15 requests to Google)See CONTRIBUTING.md and CHANGELOG.md.
Related
gsc-mcp-full — the companion Google Search Console MCP server: 37 tools, every API endpoint, hourly data and history beyond 16 months.
License
MIT. Not affiliated with or endorsed by Google. Google Trends is a trademark of Google LLC. Use of Google Trends data is subject to Google's terms of service.
Available Tools
32 toolscheck_endpointsARead-onlyIdempotent
Ask each Google Trends endpoint one small question and report which ones answer.
Google Trends has no public API; this server uses the endpoints of the Trends website, which can change without notice. Run this when a tool fails unexpectedly: it separates "Google is rate-limiting me" from "this endpoint changed" from "the network is down". Sends about 12 requests and never answers from the cache.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds meaningful context beyond the annotations: it discloses that Trends has no public API, that endpoints can change without notice, that roughly 12 requests are sent, and that results are never served from cache. The annotation set (readOnly, idempotent, openWorld, non-destructive) already covers the safety profile, and the description enriches it with cost and caveat 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?
Three sentences, each earning its place: what it does, why it exists, and when to run it. The purpose is front-loaded and the framing caveat follows naturally.
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 detail is not required. For a zero-parameter diagnostic, the description supplies the why, the when, and the operational cost (requests, cache behavior), leaving nothing an agent needs to invoke it 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?
The tool takes no parameters, so the baseline is 4; the description correctly implies it is argument-free by describing a fixed probe of all endpoints. No additional parameter semantics are needed or missing.
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 action (probe each Google Trends endpoint with a small request) and the output (which ones answer). An agent can immediately distinguish this diagnostic tool from the data-retrieval siblings like interest_over_time or trending_now.
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 names the trigger condition ('Run this when a tool fails unexpectedly') and the diagnostic decisions it disambiguates: rate-limiting, endpoint change, or network failure. This routes the agent away from guessing or blindly retrying failed sibling calls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_cacheAIdempotent
Delete saved answers so the next call asks Google again.
what: "expired" (default — only answers too old to be used even as a fallback), "all", or one kind: trending, timeseries, regions, related, explore. reset_session: also forget the stored session cookie and any back-off, for a clean start after a block. Saved Trending Now history and the watchlist are never touched.
| Name | Required | Description | Default |
|---|---|---|---|
| what | No | expired | |
| reset_session | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: it discloses exactly what is removed (cached answers, session cookie, back-off state) and, crucially, what is preserved ('Saved Trending Now history and the watchlist are never touched'). This confirms and enriches the destructiveHint=false / idempotentHint=true profile rather than contradicting it.
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 the core action and the rejection/safety caveat is well placed at the end. The 'what' enumeration line is dense but each token maps to a real option, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter cache-clearing tool with an output schema, the description covers destruction scope, parameter values, and side effects. An agent has everything needed to invoke it correctly; return values are handled by the output 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?
Schema description coverage is 0%, so the description carries the full burden and does so: it defines the default value of 'what' ('expired — only answers too old to be used even as a fallback'), lists the alternative scopes (all, trending, timeseries, regions, related, explore), and explains reset_session's side effects. Both parameters are fully specified in prose.
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 ('Delete saved answers') and even the downstream effect ('so the next call asks Google again'). No sibling tool clears cache, so the agent can place it immediately among the trending/history tools.
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 clear context for use: 'reset_session' is 'for a clean start after a block', and the 'what' values enumerate the scopes. It stops short of an explicit when-to-use-this-vs-alternatives statement, but no competing cache tool exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_locationsBRead-onlyIdempotent
One term in up to 5 countries or regions side by side: where it matters more, and whether the curves move together.
geos: comma-separated location codes (US, GB, DE) — countries or regions, not worldwide. The values say how large a share of each place's own searches the term takes, so a small country can score above a large one; they are not search counts.
| Name | Required | Description | Default |
|---|---|---|---|
| geos | Yes | ||
| points | No | ||
| keyword | Yes | ||
| category | No | ||
| property | No | web | |
| timeframe | No | 12m |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/openWorld/idempotent/destructive, so the remaining burden is low. The description adds genuinely useful interpretive context: values are relative share of each place's own searches, not raw counts, so a small country can outrank a large one. That prevents a real misreading of the output, though nothing is said about rate limits or failure modes.
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 short, front-loads the core capability, then separates the geos format note into its own block. Every sentence carries information, with no 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?
An output schema exists, so return-value explanation is not required. However, with 5 of 6 parameters undocumented and no explicit when-to-use routing against several close siblings, the definition is only adequate for a tool this configurable.
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 load. It documents only 'geos' well (comma-separated codes, countries or regions, not worldwide), while keyword, points, category, property, and timeframe are left completely opaque — notably timeframe and property, which materially change results.
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 concrete verb and resource ('one term in up to 5 countries or regions side by side') plus the analytical payoff ('where it matters more, and whether the curves move together'), which is more specific than the bare tool name. It does not explicitly differentiate itself from near-siblings like trending_across_countries or compare_many, so it stops 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?
Usage is implied by the scope constraint ('up to 5 countries') and the format note for geos, but there is no explicit statement of when to pick this over compare_many, trending_across_countries, or interest_by_region. An agent must infer the selection condition from the sibling list alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_manyARead-onlyIdempotent
Rank 6 to 25 terms on one scale — past Google Trends' limit of five per comparison.
Google rescales every comparison to its own maximum, so two separate five-term charts cannot be read against each other. This tool runs the terms in groups that all contain one shared anchor term and uses it to bring every group onto a single scale.
anchor: the shared term. Blank = chosen automatically (a mid-sized term among the first five, which keeps both large and small terms measurable). Returns each term's average, peak and latest value, where the largest average is 100. Costs two requests per group of four terms.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | ||
| anchor | No | ||
| category | No | ||
| keywords | Yes | ||
| property | No | web | |
| timeframe | No | 12m |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuine value beyond that: cost ('two requests per group of four terms') and output scaling ('largest average is 100'). However, it discloses no rate-limit ceiling, error behavior, or auth context. Given annotations carry the safety burden, a 3 reflects useful but not rich added 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?
Front-loaded with the core purpose, then the rescaling rationale, then anchor, then return/cost. Each paragraph earns its place, though the rescaling explanation runs slightly long for a definition.
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 format needn't be explained (though partially is). But with 0% schema coverage, a 6-parameter tool leaves five parameters wholly undocumented in both schema and description — a real gap 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 coverage is 0%, so the description must compensate. It explains 'anchor' well (shared term, blank = auto, mid-sized selection rationale), but leaves geo, category, property, timeframe, and the required keywords format undocumented. It compensates for one of six parameters, so the baseline 3 is appropriate at best.
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 (rank) and resource (6-25 terms) plus the scope that distinguishes it from single-comparison siblings: 'past Google Trends' limit of five per comparison.' The rescaling rationale makes its unique role unmistakable.
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 scope condition (6-25 terms, beyond the five-term limit) clearly cues when to reach for this over the native comparison, and the anchor guidance covers the main decision point. It stops short of naming a specific sibling alternative or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_periodsARead-onlyIdempotent
One term in two time ranges on the same scale: this year against last year, this quarter against the one before.
period: the range to look at (3m, 12m, 2026, 2026-03, or explicit dates; not hours). against: "year_before" (same dates a year earlier), "previous" (the range just before), or another range. The two curves are aligned by position, so day 10 of one sits beside day 10 of the other.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | ||
| period | No | 12m | |
| points | No | ||
| against | No | year_before | |
| keyword | Yes | ||
| category | No | ||
| property | No | web |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world behavior, so the bar is lower. The description adds real behavioral context the annotations cannot: the two curves are aligned by position, so day 10 of one sits next to day 10 of the other. That alignment rule meaningfully affects how results should be read.
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 definition is front-loaded with the core concept and then uses labeled lines for the parameters that need explanation. It is compact and every sentence contributes; only the slightly terse opening framing ('one term') costs it a point.
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 explanation. However, for a 7-parameter tool with zero schema descriptions, the description omits too many parameters (points, geo, property, category) to be considered fully complete, even though the central comparison semantics are well covered.
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% across 7 parameters, so the description carries the full burden. It documents the two most distinctive parameters well, spelling out accepted period formats and the three 'against' values, but leaves points, geo, property, and category entirely unexplained — notably 'points', which controls resolution and is not self-evident from its name.
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 capability: plotting one term across two time ranges on a shared scale, with concrete examples ('this year against last year'). It is clearly differentiable from nearby siblings like interest_over_time and compare_locations, though it never names them explicitly.
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 opening examples imply when the tool fits, and the 'against' options hint at comparison modes, but there is no explicit statement of when to prefer compare_periods over compare_locations, compare_many, or interest_over_time. Usage is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
content_calendarBRead-onlyIdempotent
A publishing calendar from seasonality: for up to 8 topics, when each peaks and the date its content must be live.
Each term's five-year rhythm is measured; the result is sorted by what needs publishing soonest. Terms without a yearly pattern are listed as evergreen. lead_weeks: how long before demand starts to climb the content should be published.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | ||
| category | No | ||
| keywords | Yes | ||
| property | No | web | |
| lead_weeks | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish this as a safe, idempotent read. The description adds real behavioral context beyond them: each term's five-year rhythm is measured, output is sorted by soonest publishing need, and terms lacking a yearly pattern are flagged as evergreen.
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?
Reasonably short and front-loaded with the core purpose, but the text is broken into awkward fragments and the trailing 'lead_weeks' line reads as a dangling note rather than integrated guidance.
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 not be explained, and annotations cover safety, so the description's focus on output semantics and lead_weeks is well placed. However, the three unexplained input parameters (geo, category, property) leave a gap for a five-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% for five parameters, so the description carries the full burden. It explains lead_weeks precisely and implies that keywords is the topic list, but geo, category, and property are left entirely undocumented — most of the parameter surface contributes nothing.
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 output: a publishing calendar derived from seasonality, giving peak timing and the must-be-live date for up to 8 topics. It is clearly distinguishable from the related 'seasonality' sibling by its publishing-deadline framing, though it never names that sibling to draw the contrast explicitly.
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 is implied by the publishing-planning framing and the 'up to 8 topics' limit, but there is no explicit when-to-use statement or comparison to alternatives like seasonality or interest_over_time. An agent can infer the scenario but receives no routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
daily_historyARead-onlyIdempotent
Day-by-day interest over a long range — Google Trends itself only gives daily data for up to ~9 months.
The range is fetched as overlapping 8-month windows and the windows are joined on one 0-100 scale using the days they share. Up to about 4 years (8 windows, two requests each). Also returns the weekday pattern: which days of the week the term is searched most.
start, end: YYYY-MM-DD; end defaults to today. points: rows to return (the daily series is averaged down to this many); the summary is always given.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| geo | No | ||
| start | Yes | ||
| points | No | ||
| keyword | Yes | ||
| category | No | ||
| property | No | web |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, openWorld, non-destructive), and the description adds real operational disclosure: the data is stitched from overlapping 8-month windows joined on shared days, scaled to one 0-100 series, with a ~4-year cap of eight windows at two requests each. That request/limit context is valuable and not in the schema, though return-shape details are left to the output 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?
Content is mostly front-loaded and every paragraph earns its place — the windowing mechanics, the cap, the weekday add-on, then parameter notes. Slightly sprawling with the hard line break mid-sentence, but no 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?
For a 7-parameter tool with an output schema, the description covers the non-obvious mechanics (windowing, scale, cap) and the two most important parameter semantics. The undocumented geo/category/property parameters are the remaining gap, though they are largely self-explanatory.
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 burden, and it only partially compensates: start/end format (YYYY-MM-DD, end defaults to today) and points (the series is averaged down to that many rows, summary always included) are explained, but geo, category, property, and keyword 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?
States a specific verb+resource: day-by-day interest data over a long range, explicitly contrasted with the ~9-month daily limit that Google Trends imposes. That framing makes it clearly separable from interest_over_time and other siblings without naming 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 a clear use condition — you need daily granularity over ranges beyond ~9 months, up to about 4 years — and notes it also returns a weekday pattern. It stops short of explicitly naming the sibling to use for shorter ranges, so the exclusion is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_categoryARead-onlyIdempotent
Find the id of a Google Trends category ("Autos & Vehicles" = 47) to narrow a term to one meaning.
A category limits a search term to searches Google files under that subject — "jaguar" in
Autos & Vehicles is the car, in Pets & Animals the cat. Pass the id as category to the explore tools.
With no keyword at all, a category id shows interest in the whole subject.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world safety, so the bar is lower. The description adds genuine behavioral context about what a category does to search results (narrowing 'jaguar' to the car vs. the cat) and how the output id is consumed downstream.
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 the numeric example; the middle paragraph earns its place by explaining the narrowing semantics. The third sentence is a small tag-on but still informative, with little waste.
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. For a simple two-parameter lookup the description covers intent well, but it leaves the `limit` parameter and the exact query semantics unaddressed, which is the remaining 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 coverage is 0% for two parameters. The text implies `query` is a category name to look up, but never says so directly, and `limit` (default 25) is completely unexplained. With no schema descriptions, the description should compensate but does not.
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: 'Find the id of a Google Trends category', with a concrete example ('Autos & Vehicles' = 47). It implies a lookup role distinct from find_topic/find_location, but never names or contrasts those siblings, so an agent must infer the boundary.
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 usage context: pass the returned id as `category` to the explore tools, and note that with no keyword a category id shows interest in the whole subject. It stops short of an explicit when-not-to-use or a direct comparison to find_topic/find_location.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_locationARead-onlyIdempotent
Find the location code (geo) for a country, region, state or metro area by name.
query: part of a name ("tehran", "calif", "bavaria") or a code ("IR").
inside: a code whose sub-locations to list instead ("IR" → its provinces, "US-CA" → its metro areas).
Codes look like IR, US, US-CA, US-CA-807. Every other tool takes them as geo; blank means worldwide.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| inside | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld behavior, so the safety profile is covered. The description adds value beyond that: it explains the code format taxonomy (IR, US, US-CA, US-CA-807) and clarifies that a blank result means worldwide scope, which the annotations do not convey.
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 the core purpose in the first sentence, then uses compact labeled lines for the two parameters. Dense but every line earns its place; the code-format line is slightly terse but functional.
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 not be described, and the description covers both input modes, the geo-code format, and the blank-means-worldwide convention. The only omission is the meaning of 'limit', which is minor given its default.
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 it documents both query (partial name or code, with examples) and inside (a code whose sub-locations to enumerate, with an arrow example) well beyond the bare schema. Only 'limit' is left unexplained, though its default of 25 makes it largely self-evident.
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 ('Find the location code (geo) for a country, region, state or metro area by name'), which instantly separates it from sibling lookup tools like find_category and find_topic. The output is named explicitly (a code), so an agent knows exactly what it retrieves.
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?
Explains how to drive the two core modes: 'query' for a partial name or code, 'inside' to list sub-locations of a known code. It also gives the critical downstream context that 'every other tool takes them as `geo`; blank means worldwide,' which is genuine usage guidance. It stops short of naming an explicit alternative tool or a when-not condition, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_spikesARead-onlyIdempotent
The moments a term suddenly jumped: when each spike started, when it peaked, how long it lasted and how big it was.
A spike is a run of points at least threshold times the term's usual level around that
date (its median over the surrounding year). Use it to date events, launches, outages and
news cycles, or to tell a one-off burst from real growth.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | ||
| limit | No | ||
| keyword | Yes | ||
| category | No | ||
| property | No | web | |
| threshold | No | ||
| timeframe | No | 5y |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, open-world, and non-destructive behavior. The description adds meaningful algorithmic context by defining a spike as a run of points at least `threshold` times the term's usual level around that date, based on the surrounding year's median.
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 front-loaded with the returned spike attributes, then defines the core spike concept and use cases. It is efficient and avoids repetition, though the first sentence is somewhat indirect rather than leading with a direct action verb.
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 need not be described. However, with 7 parameters and no schema descriptions, the description is incomplete because it only clarifies `threshold` and leaves the remaining parameters undocumented.
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 7 parameters, so the description must compensate. It explains only `threshold`; the other six parameters, including required `keyword`, plus `geo`, `limit`, `category`, `property`, and `timeframe`, are not given meaning in either the schema or the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a specific analytical resource: detecting spikes in a term's search interest and returning start, peak, duration, and magnitude. It is more concrete than a tautology, but it does not explicitly differentiate itself from sibling tools such as interest_over_time or trend_details.
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 explicit use cases: dating events, launches, outages, news cycles, and distinguishing one-off bursts from real growth. It does not state when not to use it or name alternative sibling tools, so it falls short of the highest usage-guidance bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_topicARead-onlyIdempotent
Find the Google Trends topics for a piece of text and the ids that select them.
A search term ("tesla") counts only searches containing that exact wording, in one language. A topic ("Tesla — Automotive company", id /m/0dr90d) counts every search about the thing, in any language and spelling, and leaves out other meanings (the band, the inventor). Pass a topic id wherever a keyword is expected.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, open-world, idempotent, and non-destructive behavior. The description adds semantic transparency by explaining how topics count searches versus exact terms, which helps an agent understand the tool's results, though it omits operational details like rate limits.
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?
Four sentences, front-loaded with purpose, then a concise explanation, then a usage directive. No redundant or filler content; every sentence serves the explanation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an existing output schema and comprehensive safety annotations, the description provides sufficient context: what the tool does, the distinction from keyword search, and how to use the returned ids. No critical gaps for an agent to invoke it 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 coverage is 0% for the single 'text' parameter. The description implies the parameter is a search term/keyword and gives an example ('tesla'), but does not specify format, whether phrases are allowed, or how the text maps to returned topics, so it only partially compensates.
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 (Find) and resource (Google Trends topics), and clarifies output (ids that select them). It distinguishes from keyword search by contrasting search terms and topics, making the tool's scope unmistakable.
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?
Explains the conceptual difference between search terms and topics and instructs to pass a topic id wherever a keyword is expected. This provides clear context for when to use the output, but does not name sibling tools or explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_capabilitiesARead-onlyIdempotent
Version, settings, session and cache state, saved history and the list of tools. Call this first when unsure.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety behavior is covered. The description adds that the response inventory includes session/cache state and saved history, which is mild extra context, but it says nothing beyond that about what reading this state does or how fresh it is.
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?
It is two tight fragments with the contents front-loaded and the usage cue at the end; nothing is padded. The list-style phrasing is slightly ambiguous about whether these are returned or configured, which keeps it from a 5.
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-shape detail is unnecessary, and annotations cover the safety profile. For a simple, parameter-free discovery tool the description is nearly complete, lacking only an explicit 'first call in a session' framing.
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, so the schema carries no semantic burden and the baseline for zero-param tools applies. Nothing in the description is needed to compensate for parameter documentation.
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 enumerates what the tool surfaces (version, settings, session/cache state, saved history, tool list), which is specific for a zero-param introspection call, but it uses a bare noun list with no verb and no differentiation from siblings like check_endpoints or clear_cache. An agent can infer it is a discovery/state tool, but the phrasing leaves the action 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?
'Call this first when unsure' gives an explicit, actionable trigger for invocation. It stops short of naming when-not-to-use conditions or alternative siblings, so it is clear context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
history_sqlARead-onlyIdempotent
Run a read-only SQL SELECT on the local data file, for questions the other history tools do not cover.
Tables: trending(geo, title, qkey, started, ended, volume, growth, categories, breakdown, first_seen, last_seen) — one row per saved trend; times are unix seconds UTC; categories and breakdown are JSON lists. snapshots(id, taken_at, geo, hours, trends) — one row per snapshot_trending run. watchlist(keyword, geo, note, added_at) readings(keyword, geo, taken_at, latest, average, yoy, label) — one row per watchlist_report measurement. Example: SELECT title, volume, datetime(started,'unixepoch') FROM trending WHERE geo='US' ORDER BY volume DESC LIMIT 20
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds important operational context beyond annotations: it identifies the local data file, lists the available tables and columns, notes unix-second UTC times, and marks JSON-list fields.
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 the first sentence. The table definitions and example are information-dense and directly support query construction, with no redundant or filler text.
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 tool is complex, but annotations and an output schema already cover safety and return structure. The description supplies the data model, key column semantics, and an example, though it omits the limit parameter and any further query restrictions such as row caps or forbidden statements.
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 should compensate for both parameters. It explains the query parameter well by describing allowed SQL and providing table schemas, but it says nothing about the limit parameter, its default of 100, or how row limiting interacts with returned results.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Run a read-only SQL SELECT on the local data file.' It also distinguishes the tool from sibling history tools by saying it is for questions they do not cover, which is enough for an agent to identify its role.
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 clear context for when to use SQL instead of other history tools: 'for questions the other history tools do not cover.' However, it does not name specific alternative tools or state exclusions such as preferring structured tools whenever possible.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
interest_by_regionARead-onlyIdempotent
Where a term is most popular: countries, regions, cities or metro areas ranked by interest.
With one term, each place gets 0-100 relative to the strongest place — interest as a share of that place's own searches, so a small region can outrank a large one. With 2-5 terms, each place shows how its interest splits between them (percentages), i.e. who wins where.
geo: blank = worldwide (ranks countries); a country ranks its regions; a region its cities. resolution: auto, country, region, city, or dma (US metro areas). include_low_volume: also list places with little search volume.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | ||
| limit | No | ||
| category | No | ||
| keywords | Yes | ||
| property | No | web | |
| timeframe | No | 12m | |
| resolution | No | auto | |
| include_low_volume | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered. The description adds real behavioral value beyond that: the 0-100 normalization relative to the strongest place, the percentage split for multi-term queries, and what include_low_volume does. It does not mention rate limits or pagination, which limits it from 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 description is compact and front-loaded, leading with the core purpose before the term-count behavior and parameter semantics. The shorthand 'geo: ... resolution: ...' structure is efficient, though slightly terse for readers unfamiliar with the domain.
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 not be explained, and the description still usefully clarifies the 0-100 scale and percentage semantics. The main remaining gap is the four undocumented parameters, but the core call-correctly information is present for an 8-param read-only 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% across 8 parameters, so the description must compensate, and it only covers geo, resolution, include_low_volume, and implicitly keywords. limit, category, property, and timeframe are left entirely undocumented in both places, so the description only partially closes the 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?
The description gives a specific verb+resource ('where a term is most popular') and immediately defines the output unit as places ranked by interest, distinguishing it from siblings like interest_over_time or compare_locations. The one-term vs 2-5-term explanation makes the ranking semantics 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?
It conveys clear usage context: blank geo ranks countries, a country ranks its regions, a region ranks its cities, and how results differ for one term versus 2-5 terms. It does not explicitly name an alternative tool to use instead, so the routing guidance is implicit rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
interest_over_timeARead-onlyIdempotent
Search interest over time for up to 5 terms on one shared scale — the main Google Trends chart.
keywords: comma-separated terms or topic ids (find_topic). Operators work inside a term:
a + b either wording, a -b excluding b, "a b" exact phrase. Blank with a category
measures the whole category.
timeframe: 1h, 4h, 1d, 7d, 1m, 3m, 12m, 5y, all; any 6m / 2y / 45d; a year 2024; a month
2024-03; or explicit dates "2024-01-01 2024-12-31". Short ranges come back by the minute
or hour, up to ~9 months daily, up to 5 years weekly, longer monthly.
geo: location code (find_location); blank = default location, usually worldwide.
category: category id (find_category) to pin down an ambiguous term.
property: web, youtube, news, images or shopping.
points: rows of data to return (longer series are averaged down); 0 = summary only.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | ||
| points | No | ||
| category | No | ||
| keywords | No | ||
| property | No | web | |
| timeframe | No | 12m |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld safety, lowering the bar, yet the description adds real behavioral context: result granularity scales with timeframe (minute/hour up to ~9 months daily, 5 years weekly, longer monthly) and long series are averaged down to the requested points. That is substantive detail an agent cannot get from 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 one-line purpose, then a clean per-parameter list. It is dense but each line maps to an otherwise undescribed parameter, so little is wasted given the 0% schema coverage; only minor tightening is possible.
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 six optional parameters, an output schema present, and no schema descriptions, the definition still documents every input, the default-location behavior, and the resolution/averaging semantics. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden and does so thoroughly: keyword operators ('a + b', 'a -b', '"a b"'), timeframe shorthand (1h...all, 6m/2y/45d, year, month, explicit date pairs), geo, category, property enum values, and the meaning of points=0. Every one of the six parameters is explained.
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 opening sentence states a specific verb, resource and scope: 'Search interest over time for up to 5 terms on one shared scale — the main Google Trends chart.' This is unambiguous and hints at primacy among siblings, but it never names an alternative (compare_periods, trend_details, keyword_overview) to sharpen the distinction.
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 is implied through dense parameter guidance and useful pointers to helper tools (find_topic, find_location, find_category), which tell the agent how to construct a call. However, there is no explicit when-to-use vs. when-not guidance against the many overlapping siblings that also return trend data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyword_ideasBRead-onlyIdempotent
Keyword ideas from what people actually search next: rising and top related queries for up to 5 seed terms, merged.
The same query coming from several seeds is listed once; each idea shows which seeds it came from — an idea related to several seeds sits at the centre of the subject. Rising ideas are sorted breakouts first: these are the searches that did not exist a period ago. Costs two paced requests per seed.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | ||
| limit | No | ||
| seeds | Yes | ||
| category | No | ||
| property | No | web | |
| timeframe | No | 12m |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 real behavioral context beyond that: the two-request-per-seed cost/pacing, deduplication of queries appearing under multiple seeds, per-idea seed attribution, and the breakouts-first sort order for rising ideas.
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?
Four short sentences, front-loaded with the core purpose, followed by deduplication/sorting behavior and cost. The line 'an idea related to several seeds sits at the centre of the subject' is slightly decorative but still conveys that multi-seed ideas are signals.
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?
Output schema exists so return values need no explanation, and cost/merge/sort behavior is well covered. What is missing is guidance on the five undocumented filter parameters (geo, timeframe, category, property, limit), which matters 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 coverage is 0% across 6 parameters, so the description carries the burden and only partially does so. It constrains `seeds` to at most 5 terms and explains the merge semantics, but geo, category, property, timeframe, and limit are left entirely undefined in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (related/rising keyword queries) and a specific verb-like output ('Keyword ideas from what people actually search next'), naming the two result flavors (rising and top). It does not, however, distinguish itself from the very similar sibling related_queries, so an agent must infer the boundary.
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 is implied: feed it up to 5 seed terms to get merged idea lists. There is no statement of when to prefer this over related_queries, trending_now, or keyword_overview, and no exclusions or prerequisites beyond the seed count constraint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyword_overviewARead-onlyIdempotent
The whole Google Trends page for one term in a single call: curve, direction, top places, related searches.
Use it as the first look at a keyword. It makes four requests; a part that Google refuses is reported and the rest is still returned.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | ||
| keyword | Yes | ||
| category | No | ||
| property | No | web | |
| timeframe | No | 12m |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, open-world. The description adds genuine, non-redundant behavior: it fans out to four requests and degrades gracefully, reporting a refused part while still returning the rest. That partial-failure semantics is exactly the kind of context annotations cannot express.
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 sentences, front-loaded with the composite scope before the usage cue and the fan-out caveat. Every sentence adds information; only minor polish is missing.
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 composite scope, first-look guidance, and partial-failure behavior are covered, and the presence of an output schema means return values need no explanation. However, with five undocumented parameters at 0% coverage, an agent cannot confidently set geo, timeframe, or category from the description alone.
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 five parameters (geo, category, property, timeframe, keyword), and the description mentions none of them. It gives no syntax, format, or default guidance (e.g. '12m' timeframe strings, geo codes, category IDs), so it fails to compensate for the empty schema descriptions.
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 ('whole Google Trends page for one term in a single call') and enumerates the bundled outputs (curve, direction, top places, related searches). This implicitly distinguishes it from the granular siblings (interest_over_time, related_queries, interest_by_region) by signalling it is the aggregate first-pass tool.
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?
'Use it as the first look at a keyword' gives explicit positioning guidance for when to reach for this tool. It does not name an alternative or state when not to use it (e.g. when only one data section is needed), 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.
match_trendsARead-onlyIdempotent
Which current trends touch your subjects — for newsjacking and timely content.
terms: comma-separated words or phrases that define your niche (brands, products, people, subjects). A trend matches when its title or any query inside it contains one of them as whole words, in any letter case: "ai" finds «ai news», not «rain». geo: country or region code; blank = the default location, else US.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | ||
| hours | No | ||
| limit | No | ||
| terms | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), so the description adds real value by disclosing the matching rule: whole-word, case-insensitive containment in trend title or query, with the concrete 'ai' vs 'rain' example. It also clarifies geo defaulting behavior. Return shape is left to the output 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?
Front-loaded with the purpose, then compact per-parameter notes. No filler sentences, though the geo phrasing ('blank = the default location, else US') is slightly tangled and costs a little clarity.
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 not be described, and the matching semantics are well covered. However, the omission of hours and limit semantics, which control the time window and result count, leaves a meaningful gap for a 4-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 all parameter meaning. It documents 'terms' thoroughly with format and matching semantics and explains 'geo' defaulting, but leaves 'hours' and 'limit' entirely unexplained despite both being part of the 48h/25-item behavior.
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 names the resource (current trends) and the operation (matching them against your subjects), with the use case (newsjacking/timely content) making the intent concrete. It is distinguishable from siblings like trending_now or trend_details, though it never directly names an alternative.
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 is implied through the newsjacking/timely-content framing, which tells the agent the scenario this tool serves. There is no explicit when-not-to-use guidance or routing to sibling tools such as trending_feed or keyword_overview.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seasonalityARead-onlyIdempotent
The yearly rhythm of a term: which months it peaks and dips, how reliably, and when to publish for it.
Uses five years of data by default ("all" goes back to 2004). Growth or decline is removed first, so a rising term is not mistaken for a seasonal one. Returns a month-by-month index (100 = an average month), the peak and trough, how consistent the pattern is from year to year, year averages, the months ahead on the current rhythm, and a publishing date.
lead_weeks: how long before demand starts to climb the content should be live.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | ||
| keyword | Yes | ||
| category | No | ||
| property | No | web | |
| timeframe | No | 5y | |
| lead_weeks | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds genuinely useful context: the 5-year default, that 'all' extends to 2004, and that growth/decline is detrended so rising terms are not mistaken for seasonal. This detrending disclosure is behavioral context the annotations cannot provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and the parenthetical asides are efficient, though the return-value list in the middle sentence is somewhat baggy and the trailing lead_weeks definition feels detached.
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 describing return fields is optional (though done well). However, for a 6-parameter tool at 0% schema coverage, leaving geo/category/property semantics entirely unexplained is a real 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 coverage is 0%, so the description must carry the parameter burden. It explains timeframe ('all' = back to 2004) and defines lead_weeks, but geo, category, and property remain undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific analysis (seasonal rhythm of a term: peak/dip months, reliability, publishing timing) with a clear verb-resource framing. It is readily distinguishable from siblings like interest_over_time (raw series) or content_calendar (scheduling).
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 is only implied - the tool is for understanding seasonality and choosing a publish date - but the description never says when to prefer it over interest_over_time, compare_periods, or content_calendar. No exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snapshot_trendingAIdempotent
Save the current Trending Now list to the local history, so it can still be searched after Google drops it.
Google shows a trend for about a week; after that there is no way to ask what was trending.
Each call stores every trend for the given countries (a trend seen again is updated, not
duplicated). Run it on a schedule — gtrends-mcp-full snapshot US,GB from cron does the
same — and use trending_history to query the result.
geos: comma-separated country or region codes (up to 12); blank = the default location, else US. hours: look-back window to save, 1-191. 24 is right for a daily schedule.
| Name | Required | Description | Default |
|---|---|---|---|
| geos | No | ||
| hours | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true; the description reinforces this by stating that re-seen trends are updated rather than duplicated, which explains the idempotency in user terms. It also discloses the retention rationale and per-country scope. It does not say where history is stored or whether writes need any setup, so it stops short of full disclosure.
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 action and rationale, then parameters, then the scheduling hint. The embedded CLI invocation and the 'run it on a schedule' aside add a little redundancy against the cron sentence, but every sentence still carries usable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained. The description covers purpose, motivation, scheduling guidance, parameter formats, dedupe behavior, and the sibling tool for retrieval, which is everything an agent needs to call it 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%, so the description carries the load and does so well: geos is described as comma-separated country/region codes, up to 12, with blank meaning the default location else US; hours is bounded 1-191 with 24 recommended for a daily run. Both parameters gain meaning absent from the bare 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 verb and resource ('Save the current Trending Now list to the local history') and immediately explains the motivating constraint (Google drops trends after about a week). It is clearly distinguishable from trending_now (live read) and trending_history (the query side, which it names).
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 tells the agent to run it on a schedule, gives a concrete example (cron with `gtrends-mcp-full snapshot US,GB`), recommends hours=24 for a daily cadence, and routes follow-up queries to trending_history. When-to-use and what-to-do-next are both spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trend_detailsARead-onlyIdempotent
Everything about one current trend: every query in it, the news behind it, and its hour-by-hour curve.
trend: the trend's title, or any words it contains. geo: country or region code; blank = the default location, else US. with_chart: also fetch the last 7 days of hourly interest for the title (two more requests).
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | ||
| news | No | ||
| hours | No | ||
| trend | Yes | ||
| with_chart | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld/destructive=false, so safety is covered. The description adds real value beyond them: with_chart triggers 'two more requests,' disclosing a cost/latency trait, and geo blank resolves to a default location. That is meaningful behavioral context the structured fields do not carry.
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?
A front-loaded summary sentence followed by short per-parameter clarifications; nothing is padded. The parameter notes are compact and each 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 return values need not be explained, and the headline purpose is captured. But with news and hours undocumented and no routing guidance among the dense sibling set, the definition is not fully complete for a 5-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 description must compensate. It documents trend, geo, and with_chart semantics well, but the news (default 5) and hours (default 48) parameters get no explanation at all, leaving two of five parameters opaque.
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-driven scope: fetching every query, news, and hourly curve for 'one current trend.' This pins down the resource clearly, though it does not explicitly name a sibling (e.g. snapshot_trending or trend_momentum) to disambiguate among the many trend_* tools.
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?
'one current trend' implies context, and the geo: blank default note hints at usage, but there is no explicit when-to-use vs alternatives guidance despite a crowded sibling set (interest_over_time, daily_history, trending_now, etc.). Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trending_across_countriesARead-onlyIdempotent
Trends that are live in several countries at once — the stories that travel.
Pulls Trending Now for each country and groups trends that are the same search (the same title, or one country's title appearing among another's queries).
geos: comma-separated country codes, up to 12. Blank = US, GB, CA, AU, IN, DE, FR, BR. min_countries: only show trends found in at least this many of them.
| Name | Required | Description | Default |
|---|---|---|---|
| geos | No | ||
| hours | No | ||
| limit | No | ||
| min_countries | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world safety, so the bar is lower. The description adds genuine behavioral detail beyond them: how trends are grouped (same title, or one country's title appearing among another's queries) and the default geo set when blank.
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?
Content is front-loaded with the core idea first, then mechanism, then parameters. The bulleted param notes are efficient; the only mild waste is repeating 'Pulls Trending Now' which the title already implies.
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. The description covers the essential selection semantics (geo set, cross-country threshold), leaving only the hours and limit parameters unaddressed.
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 full burden. It explains geos (comma-separated codes, max 12, blank = default list of 8 countries) and min_countries (threshold), but leaves hours and limit completely 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 a specific analysis (trends live in several countries at once) and explains the mechanism (pull Trending Now per country, group identical searches). This clearly distinguishes it from siblings like trending_now and compare_locations.
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 clear context for when this cross-country view applies versus the single-country trending tools, and the 'the stories that travel' framing signals intent. It stops short of explicitly naming a sibling as the alternative or stating when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trending_feedARead-onlyIdempotent
The top daily search trends with the news stories behind each — Google's public trending feed.
Lighter than trending_now (about 10-20 trends, one request) and it carries headlines and links, which makes it the quickest answer to "what is in the news in today". geo: country code; blank = the default location, else US.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld/non-destructive, so safety is covered. The description adds real behavioral context beyond that: expected volume (~10-20 trends), single-request cost, and that results include headlines and links. Only a note on pagination/rate behavior is missing.
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 sentences, front-loaded with the resource definition and followed by the sibling comparison and the geo semantics. Efficient, with only mild informality ('the news stories behind each').
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 explanation, and the description covers volume, content, locale semantics, and sibling routing. The only gap is the undocumented limit parameter.
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. It does well for geo (country code, blank = default location, else US) but says nothing about the limit parameter, leaving one of two params 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+resource ('top daily search trends with the news stories behind each') and explicitly frames it as Google's public trending feed. It is immediately distinguishable from trending_now in both what it returns and its weight.
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?
Names the sibling alternative (trending_now) and gives the condition that selects this tool: lighter, one request, carries headlines and links, best for 'what is in the news in <country> today'. Usage is explicit rather than implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trending_historyARead-onlyIdempotent
Search the saved Trending Now history: when something trended, how big it got and how long it lasted.
Works on what snapshot_trending has stored — no network. With no filter it lists the biggest saved trends of the period.
contains: text the trend's title or queries must contain, as whole words. geo: one location code; blank = every saved location. days: how far back to look, counted from the trend's start.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | ||
| days | No | ||
| limit | No | ||
| contains | No | ||
| min_volume | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, but the description adds genuine behavioral context: it operates offline on previously stored snapshots and defaults to listing the biggest saved trends when unfiltered. It does not state pagination or result-size behavior.
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 core purpose is front-loaded in the first sentence, and the parameter notes are compact and non-redundant. The layout is slightly fragmented 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 return values need not be explained, and annotations cover the safety profile; however two of five params are undocumented and there is no explicit alternative-tool routing, leaving minor but real gaps for an agent.
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 full param burden, yet it documents only 3 of 5 params (contains, geo, days) — with useful detail (whole-word matching, single location code, blank = all, days counted from trend start). limit and min_volume are left completely undefined in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) and resource (saved Trending Now history) plus the value dimensions returned (when, how big, how long). It also distinguishes itself from live siblings by naming snapshot_trending as the data source, so an agent can separate it from trending_now/trending_feed.
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?
'Works on what snapshot_trending has stored — no network' and 'with no filter it lists the biggest saved trends' imply usage context, but there is no explicit when-to-use-this-vs-trending_now/trend_details guidance or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trending_nowARead-onlyIdempotent
What people are searching right now: the full Trending Now list for a country or region.
Each trend has its search volume, growth, start time, whether it is still active, its category and the other queries people type for the same story.
geo: country or region code (US, GB, DE, IR, US-CA). Blank = the default location, else US. hours: look-back window — 4, 24, 48 or 168 (any value 1-191). category: filter by name, e.g. "sports", "technology", "business" (see the header of the result). status: "active" (still trending), "ended" or "all". sort_by: "volume", "growth" or "recent". contains: keep trends whose title or queries contain this text, as whole words.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | ||
| hours | No | ||
| limit | No | ||
| status | No | all | |
| sort_by | No | volume | |
| category | No | ||
| contains | No | ||
| min_volume | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a read-only, idempotent, open-world, non-destructive operation, so the safety profile is covered. The description adds genuinely useful behavior in the 'contains' whole-word matching rule and the note that categories appear in the result header, but it says nothing about pagination/limit behavior or rate limits, which are real gaps for a list tool.
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 core purpose is front-loaded in the first sentence, followed by a tight bullet list of parameters; almost every line carries new information. Slightly telegraphic fragment style but no wasted sentences.
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, the description need not explain return values, and annotations cover the safety profile, so the remaining burden is parameter meaning — which is largely met for a zero-coverage schema. Only limit and min_volume semantics are missing, a minor 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%, so the description must carry the load, and it does document six of eight parameters with concrete meaning: geo syntax (US, GB, DE, IR, US-CA), hours values, category examples, status and sort_by options, and the whole-word semantics of contains. limit and min_volume are left undocumented, which keeps it short of 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?
The description states a specific verb and resource — retrieve the full Trending Now list for a country or region — and scopes it to real-time search behavior. It is clear, but it never names how it differs from close siblings such as trending_feed, snapshot_trending or trending_history, so the agent must infer the distinction.
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 is implied through the documented filters (status active/ended/all, sort_by, category) rather than stated as when-to-use guidance. There are no explicit exclusions or pointer to an alternative tool, leaving selection among the many trending_* siblings to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trend_momentumBRead-onlyIdempotent
Is each term growing, fading, flat or exploding — with the numbers behind the verdict.
Each term (up to 8) is measured on its own scale, so a small term's shape is not flattened by a large one. Per term: year-over-year change of the last quarter, last quarter against the quarter before, the long-run slope, where it stands against its own peak, and a label: breakout, rising, stable, declining or new.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | ||
| category | No | ||
| keywords | Yes | ||
| property | No | web | |
| timeframe | No | 5y |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds substantive behavior beyond that: each term is normalized to its own scale so small terms aren't flattened, and the five-label taxonomy (breakout/rising/stable/declining/new) is disclosed. It does not state rate limits or how the scale is computed, but this is genuinely additive 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?
The opening line is front-loaded and useful, but the second paragraph is a long comma-run that lists metrics in prose where a compact list would read faster. Nothing is outright wasted, yet the phrasing is denser than it needs to 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?
With an output schema present, the description need not explain return values, yet it spends most of its length doing exactly that while omitting usage guidance and parameter meaning. For a read-only analysis tool with 0% schema coverage, it is adequate but leaves the invocation side underspecified.
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 four of five parameters (geo, category, property, timeframe) are entirely undocumented anywhere. The description contributes only the implicit cap of 8 keywords, leaving geo/category/property/timeframe formats and defaults unexplained, which is a real gap for a 5-param tool.
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: it measures whether each keyword is growing, fading, flat or exploding, and enumerates the per-term metrics and labels. It is clear what the tool produces, but it never names or contrasts a sibling (interest_over_time, trend_details, seasonality), so an agent must infer where it fits in the family.
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?
There is no when-to-use statement, no prerequisites, and no exclusion pointing to an alternative tool. The description only explains what the output contains, leaving the agent to guess when momentum is the right call versus interest_over_time or compare_periods.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watchlist_addAIdempotent
Put terms on the watchlist so watchlist_report tracks their direction over time.
keywords: comma-separated terms or topic ids. geo: the location to track them in (blank = default). note: an optional label, e.g. the client or campaign they belong to.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | ||
| note | No | ||
| keywords | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (not read-only, idempotent, non-destructive, closed-world), so the description need not restate it. The description adds that entries persist and are tracked over time, but does not say what happens on a duplicate keyword or whether a prior entry is overwritten — the one behavior an idempotent add tool should clarify.
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 lines with no filler; the purpose sentence comes first and each parameter line is a compact definition. Slightly terse for a mutation tool, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and annotations cover the mutation/safety profile. All three parameters are semantically covered, leaving only duplicate-handling behavior as a minor gap for a 3-param idempotent add 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?
With 0% schema description coverage, the description carries the full burden and largely does: keywords accepts comma-separated terms or topic ids, geo is the location with blank meaning default, and note is an optional label like a client or campaign. Only keyword multiplicity/format edge cases (spacing, mixed ids and terms) remain unspecified.
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 ('Put terms on the watchlist') and ties it to a downstream sibling, watchlist_report, which tracks direction over time. It is clearly the add-side counterpart to watchlist_remove, though it never names that sibling explicitly.
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 link to watchlist_report implies the use case (set up tracking), but there is no explicit when-to-use / when-not guidance and no mention of alternatives such as watchlist_remove or watchlist_report for reading results. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watchlist_removeADestructiveIdempotent
Take terms off the watchlist. Blank geo removes them from every location; their past readings are kept.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | ||
| keywords | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds genuinely new context beyond them: that past readings are retained, which scopes exactly what destruction occurs, and that a blank geo clears the term from every location.
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 waste; the core action is front-loaded and the geo-scoping caveat follows immediately. Every clause 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 return values need no explanation, and annotations cover the safety profile. For a two-parameter mutation, the description covers the key retention and geo-scope behaviors; only keyword input format and failure cases are left implicit.
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. It meaningfully clarifies 'geo' (blank removes from every location) but says nothing about 'keywords' format, even though that is the required parameter. Half the parameters are effectively documented.
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 ('Take terms off') and resource ('the watchlist'), which clearly distinguishes it from the sibling watchlist_add. No sibling is named explicitly, but the add/remove pair is unambiguous from the name and description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what removal does but gives no guidance on when to use this versus watchlist_add or watchlist_report, and no prerequisites or state conditions are mentioned. Usage is only implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watchlist_reportAIdempotent
The watchlist measured now: each term's direction, what changed since the last report, and whether it is trending today.
Every run stores a reading per term, so the next report can say "was stable, now rising".
Terms are measured over five years, one at a time (two requests each): limit terms per
call, offset to continue. Also checks today's Trending Now list for each term.
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | ||
| limit | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, openWorldHint=true, and the description resolves the non-obvious part of that profile by stating 'Every run stores a reading per term' and that it measures 'two requests each'. This explains the persistence side effect behind readOnlyHint=false and the external calls behind openWorldHint, adding real value beyond the annotations. It does not describe failure modes or rate limits, keeping it short of 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 core purpose is front-loaded in the first sentence, followed by the persistence note and the pagination mechanics, with no filler. Three short sentences and a parenthetical keep it tight, though the 'was stable, now rising' illustration is slightly decorative rather than load-bearing.
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 detail is appropriately omitted. The description covers the report's content, the side effect, and pagination, which is what an agent needs to call it. The only real gap is the undocumented geo parameter for this openWorld 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 parameter burden, and it explains limit ('terms per call') and offset ('to continue') with a clear pagination model. However, the geo parameter is never mentioned, so a third of the parameters remain undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: it reports the watchlist's measured direction, change since last report, and trending status per term. That clearly distinguishes it from siblings like watchlist_add, watchlist_remove, and trending_now. It stops short of naming an alternative for overlapping use cases, so it is clear but not fully differentiated.
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 is implied rather than stated: you run it to get a watchlist report, and the pagination sentence ('limit terms per call, offset to continue') gives a partial workflow. There is no explicit when-to-use guidance, no exclusions, and no pointer to an alternative tool for a similar need.
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.
32 tool updates
v0.1.0- First observed
check_endpoints - First observed
clear_cache - First observed
compare_locations - First observed
compare_many - First observed
compare_periods - First observed
content_calendar - First observed
daily_history - First observed
find_category - First observed
find_location - First observed
find_spikes - First observed
find_topic - First observed
get_capabilities - First observed
history_sql - First observed
interest_by_region - First observed
interest_over_time - First observed
keyword_ideas - First observed
keyword_overview - First observed
match_trends - First observed
related_queries - First observed
related_topics - First observed
seasonality - First observed
share_of_search - First observed
snapshot_trending - First observed
trend_details - First observed
trend_momentum - First observed
trending_across_countries - First observed
trending_feed - First observed
trending_history - First observed
trending_now - First observed
watchlist_add - First observed
watchlist_remove - First observed
watchlist_report
TDQS
Scored across 32 tools
Most tools target clearly distinct operations, and descriptions go to lengths to distinguish them (e.g. trending_now vs trending_feed vs trend_details). However there is a dense cluster of time-series analysis tools (interest_over_time, daily_history, compare_periods, compare_many, trend_momentum, find_spikes, seasonality) whose boundaries, while documented, still invite misselection.
Nearly all names are snake_case and readable, with some verb_noun forms (find_location, compare_locations, clear_cache) and some noun phrases (seasonality, daily_history, content_calendar). Conventions are mixed in verb/noun ordering but no camelCase or chaos, so it stays predictable.
At 32 tools this sits at the heavy end for a single-domain server. The breadth of Google Trends analysis justifies many of them, but several analysis tools (seasonality vs content_calendar, related_queries vs keyword_ideas) overlap enough that consolidation would help.
The surface covers trending now, historical trending via snapshots, over-time and by-region interest, related queries/topics, multi-term and multi-period comparisons, seasonality, momentum, spikes, share of search, watchlists and raw SQL. Core Trends workflows and edge cases (anonymous-session limitations, endpoint health) are all addressed with no obvious dead ends.
Maintenance
Related MCP Connectors
Google Trends: Search, Images, News, Shopping over time, growth metrics. Free key at trendsmcp.ai
Bulk Google Trends: interest over time, regions, rising queries and plain-English trend summaries.
SEO & marketing toolkit for AI agents: GA4, Search Console, AdSense, GTM, PageSpeed, Trends.
Google Trends in bulk: interest over time, by region, related and rising queries, trending now.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to access Google Trends data for comparing keywords, discovering trending searches, and analyzing regional interest through natural language.2MIT
- AlicenseBqualityDmaintenanceEnables Claude to query Google Trends data such as keyword interest, related queries, and regional popularity, with robust proxy rotation to bypass Google's anti-bot measures.540 npm1MIT
- AlicenseAqualityDmaintenanceProvides free Google Trends data (interest over time, term comparison, related queries, trending now, regional breakdown) to MCP-compatible AI clients without needing an API key.5100 npm2MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to query Google Trends data, including search interest over time, regional breakdowns, trending searches, and keyword ideas.MIT