Skip to main content
Glama
mamrrez

Google Trends MCP Server

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.

PyPI CI Python 3.10+ MCP SDK 2.x License: MIT

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

Tool

What it gives you

Ask it like this

trending_now

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"

trend_details

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?"

trending_feed

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"

trending_across_countries

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?"

match_trends

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

keyword_overview

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"

interest_over_time

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 (a + b, a -b, "a b")

"Compare tesla and byd over 5 years in Germany" · "YouTube interest in 'lofi' this week"

interest_by_region

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?"

related_queries

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'?"

related_topics

The people, brands and things searched alongside a term, with topic ids

"Which topics are related to 'tesla'?"

compare_periods

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?"

compare_locations

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

trend_momentum

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?"

seasonality

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?"

content_calendar

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"

share_of_search

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?"

compare_many

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"

find_spikes

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?"

daily_history

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?"

keyword_ideas

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

snapshot_trending

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"

trending_history 🗄️

Searches everything saved: when something trended, how big it got, how long it lasted

"Did anything about 'iphone' trend in the US last month?"

watchlist_add 🗄️

Puts terms on a watchlist, per location, with a note

"Watch 'heat pump' and 'solar panels' in the UK"

watchlist_report

The watchlist measured now: direction, what changed since the last report, and whether a term is trending today

"How is my watchlist doing?"

watchlist_remove 🗄️

Takes terms off the watchlist

"Stop watching 'fax machine'"

history_sql 🗄️

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

find_location

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?"

find_category

Category ids, to pin an ambiguous word to one meaning

"Limit 'jaguar' to cars"

find_topic

Google's topics for a name — one id that covers every language and spelling of a thing

"Use the company Tesla, not the word"

get_capabilities 🗄️

Settings, session state, cache and history coverage, the tool list

"Is the Trends server set up correctly?"

check_endpoints

Asks each Google Trends endpoint one question and reports which still answer

"Why did the last Trends call fail?"

clear_cache 🗄️

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

trend_report

A full read on one keyword: direction, seasonality, the events behind its spikes, rising themes, and what to do about it

newsjacking_brief

Today's trends that fit your subjects, the story behind each, the queries to target, an angle and a risk note

seasonal_content_plan

A twelve-month publishing plan for a list of topics

market_comparison

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-full

Claude 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 doctor

doctor 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 stdio

Keep a trending history by scheduling the snapshot, for example every six hours:

0 */6 * * * gtrends-mcp-full snapshot US,GB,DE

Reading 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_periods and compare_locations build 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

GTRENDS_GEO

worldwide

Default location code (US, IR, US-CA) when a tool is called without one

GTRENDS_HL

en-US

Language of the names Google returns (locations, categories, topics)

GTRENDS_TIMEZONE

this machine's

IANA timezone for times in results and for hourly data, e.g. Asia/Tehran

GTRENDS_PROXY

none

HTTP(S) proxy URL for requests to Google

GTRENDS_MIN_INTERVAL

1.5

Seconds between requests to Google

GTRENDS_CACHE_TTL

3600

Seconds a chart answer is reused

GTRENDS_TRENDING_TTL

300

Seconds a Trending Now answer is reused

GTRENDS_TIME_BUDGET

50

Seconds one tool call may spend waiting on Google before it reports back

GTRENDS_COOKIE / GTRENDS_COOKIES_FILE

none

A signed-in Google session (raw Cookie header, or a Netscape cookies.txt). Only needed for related_topics; see Security

GTRENDS_OFFLINE

off

Answer from the cache only, never contact Google

GTRENDS_CONFIG_DIR

~/.config/gtrends-mcp-full

Where the data file and session cookie live

GTRENDS_DB_PATH

<config dir>/trends.sqlite

The data file: cache, trending history, watchlist

GTRENDS_ALLOWED_HOSTS

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.

  • 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 tools
check_endpointsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_cacheA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
whatNoexpired
reset_sessionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_locationsB
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
geosYes
pointsNo
keywordYes
categoryNo
propertyNoweb
timeframeNo12m

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_manyA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNo
anchorNo
categoryNo
keywordsYes
propertyNoweb
timeframeNo12m

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_periodsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNo
periodNo12m
pointsNo
againstNoyear_before
keywordYes
categoryNo
propertyNoweb

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_calendarB
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNo
categoryNo
keywordsYes
propertyNoweb
lead_weeksNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_historyA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
geoNo
startYes
pointsNo
keywordYes
categoryNo
propertyNoweb

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_categoryA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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_locationA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
insideNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_spikesA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNo
limitNo
keywordYes
categoryNo
propertyNoweb
thresholdNo
timeframeNo5y

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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_topicA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_capabilitiesA
Read-onlyIdempotent

Version, settings, session and cache state, saved history and the list of tools. Call this first when unsure.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose3/5

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.

Usage Guidelines4/5

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_sqlA
Read-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

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: '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.

Usage Guidelines4/5

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_regionA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNo
limitNo
categoryNo
keywordsYes
propertyNoweb
timeframeNo12m
resolutionNoauto
include_low_volumeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_timeA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNo
pointsNo
categoryNo
keywordsNo
propertyNoweb
timeframeNo12m

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_ideasB
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNo
limitNo
seedsYes
categoryNo
propertyNoweb
timeframeNo12m

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_overviewA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNo
keywordYes
categoryNo
propertyNoweb
timeframeNo12m

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

seasonalityA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNo
keywordYes
categoryNo
propertyNoweb
timeframeNo5y
lead_weeksNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

trend_detailsA
Read-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).

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNo
newsNo
hoursNo
trendYes
with_chartNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

trend_momentumB
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNo
categoryNo
keywordsYes
propertyNoweb
timeframeNo5y

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_addA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNo
noteNo
keywordsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_removeA
DestructiveIdempotent

Take terms off the watchlist. Blank geo removes them from every location; their past readings are kept.

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNo
keywordsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_reportA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNo
limitNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

  1. 32 tool updatesv0.1.0
    • First observedcheck_endpoints
    • First observedclear_cache
    • First observedcompare_locations
    • First observedcompare_many
    • First observedcompare_periods
    • First observedcontent_calendar
    • First observeddaily_history
    • First observedfind_category
    • First observedfind_location
    • First observedfind_spikes
    • First observedfind_topic
    • First observedget_capabilities
    • First observedhistory_sql
    • First observedinterest_by_region
    • First observedinterest_over_time
    • First observedkeyword_ideas
    • First observedkeyword_overview
    • First observedmatch_trends
    • First observedrelated_queries
    • First observedrelated_topics
    • First observedseasonality
    • First observedshare_of_search
    • First observedsnapshot_trending
    • First observedtrend_details
    • First observedtrend_momentum
    • First observedtrending_across_countries
    • First observedtrending_feed
    • First observedtrending_history
    • First observedtrending_now
    • First observedwatchlist_add
    • First observedwatchlist_remove
    • First observedwatchlist_report

TDQS

A3.6/5.0

Scored across 32 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count3/5

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.

Completeness5/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables 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.
    5
    40 npm
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides 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.
    5
    100 npm
    2
    MIT