Skip to main content
Glama
phalkmin

trendzeist-mcp

trendzeist-mcp

Turn Google Trends into your next 10 blog posts — in one call.

trendzeist-mcp gives your AI assistant ranked breakout / rising / evergreen topics, the questions people actually ask, an AEO opportunity finder that scores question clusters with trend, news coverage, Wikipedia presence and citability hints, plus interest curves, regional demand, real-time trends, who covers a topic in Google News and Wikipedia attention. Free, local, private. No API key, no account, no browser.

SEO and AEO: find the questions people ask — and answer engines answer — then make your site the source they cite. Measuring your own visibility inside ChatGPT / Perplexity / AI Overviews is out of scope; this server tells you what to write, not who cites you.

You:   Give me blog post ideas about home espresso for US readers.
Agent: → discover_topics(["espresso", "espresso machine"], geo="US")
       ← 1 breakout, 14 rising, 14 evergreen candidates with growth %, angles and 6 questions
       → mine_questions("espresso machine", geo="US")
       ← 30 long-tail questions: how-to 18, comparison 6, definition 4, listicle 2
       → compare_keywords(["how to descale espresso machine", "best coffee beans for espresso"])
       ← "Interest in 'how to descale espresso machine' rose 120% ... peaking 2026-08-30 (rising)."
       "1. How to Descale Your Espresso Machine (how-to, rising +120%, publish now) ..."

Built with

trendzeist-mcp is a thin MCP layer over pytrends-modern, which handles all Google Trends requests. Trendzeist adds the MCP tools and prompt, request throttling, a persistent disk cache, strict input validation, LLM-friendly JSON output and the ranked discover_topics workflow. Other runtime dependencies: mcp (official MCP Python SDK), pandas, platformdirs and requests. All MIT/BSD/Apache licensed. Google Autocomplete, Google News RSS and the Wikimedia REST API are called directly with requests (keyless).

Related MCP server: google-search-trends-mcp

Quick start

# any one of these
uvx trendzeist-mcp
pipx run trendzeist-mcp
pip install trendzeist-mcp && trendzeist-mcp
docker run -i --rm ghcr.io/phalkmin/trendzeist-mcp

Claude Desktop — add under mcpServers in claude_desktop_config.json (macOS ~/Library/Application Support/Claude/, Windows %APPDATA%\Claude\, Linux ~/.config/Claude/):

"trendzeist": { "command": "uvx", "args": ["trendzeist-mcp"] }

Claude Code: claude mcp add trendzeist -- uvx trendzeist-mcp Cursor / VS Code / Codex: same command/args shape — see llms-install.md (written so you can paste it to an AI assistant and let it do the install).

Tools

Tool

What you get

discover_topics

Ranked blog topics from 1-5 seeds: breakout > rising > evergreen, deduped, each with a title angle and an explainable score; plus questions[] people ask and suspect[] spam-like rising queries kept out of the ranking. Pass site_queries (what your site already ranks for) to mark each topic covered / partial / gap

mine_questions

Long-tail questions about a seed from Google Autocomplete (how to, why, what is, vs …), deduped and angle-tagged — FAQ / AEO fuel

aeo_opportunities

Question clusters per seed × angle, scored with the seed's recent trend (direction_now, growth_3m over 12 months), Google News coverage (publishers to quote / pitch), Wikipedia presence, your site's coverage (site_queries) and citability hints — one call, partial failures per source

what_changed

What moved since your last snapshot (1-90 days): new and promoted breakouts (investigate now), new rising (consider), cooled / dropped queries (refresh existing post, or review — verify with interest_over_time before retiring), rank moves and a direction_now flip — from the local observation archive

seasonality

When demand peaks each year (5-year weekly data): peak_months, seasonal_strength, next_peak, publish_by (6 weeks before), one-sentence insight

compare_channels

Where a topic grows: web / YouTube / News / Images / Shopping with growth_3m, direction_now, fastest_channel, momentum (growing / flat / all_declining) and a format_hint (video tutorial, buying guide, newsjacking piece …)

trend_history

Everything the local archive has seen about a keyword: first_seen, breakout_episodes (separate runs; recurring = durable page) vs breakout_observations (polling count), direction_timeline per timeframe, seen_under_seeds — free, no requests

news_coverage

Who covers a topic in Google News: headlines, publisher frequency table, recency histogram, coverage label

wiki_attention

Exact-title Wikipedia article and daily pageviews (direction, growth); has_article=false and optional related_article when only a different search hit is found

trendzeist_status

Health of every source (live / error / idle), cache usage, observation archive (rows, dates, last error), effective settings — free, no requests

interest_over_time

0-100 interest curve with mean, peak, direction (whole window), direction_now (recent slope), growth_3m / growth_12m and a plain-English insight

compare_keywords

Head-to-head share and winner for 2-5 keywords

related_queries

Top & rising related searches with breakout flags, angles and questions[]

related_topics

Top & rising Knowledge-Graph topics (best-effort)

interest_by_region

Where demand lives: COUNTRY (worldwide), REGION (within a country), CITY / DMA (US or worldwide)

suggest_keywords

Disambiguate a term into Google entities (title, type, mid)

trending_now

What's trending right now, with news headlines; topic_filter keeps only trends mentioning your words

list_categories

Find Google Trends category ids to narrow any query

Prompts: blog_ideas_from_trends(topic, audience, geo) (guided ideation), content_brief(topic, audience, geo) (titles, outline, FAQ, regions, publishers), answer_brief(question, geo) (a citable answer: direct answer, statistic, quote, sources, FAQ, schema) and weekly_review(seeds, geo, site_queries) (content meeting: publish now / plan for a date / refresh / retire). A ready-made agent skill lives in SKILL.md.

Output conventions

  • Every result carries schema_version (currently 3; bumped only when a field is removed or changes meaning) and _meta with requests_made, cache_hit, cache_hits, cache_misses for that call — so the model knows when to slow down. _meta.archive_error appears only when the local archive could not be written (the tool result is unaffected).

  • Explainable score. discover_topics.topics[] and aeo_opportunities.opportunities[] carry score (0-100) and score_breakdown with five components, each {points, max, reason}: demand 25 (questions found or top-query popularity), momentum 25 (direction_now + breakout / rising), freshness 15 (Google News, 0 when not fetched), gap 20 (vs. site_queries: gap 20 / partial 10 / covered 0; neutral 10 without them), aeo 15 (question-shaped; definition angle with no Wikipedia article). Compare scores within one call only.

  • Observation archive. Every fresh fetch (not cache hits) of related queries, trend labels, trending searches and mined questions becomes one snapshot (unique id; an empty Google answer is a snapshot too) with normalised rows in archive.sqlite3 next to the disk cache (stdlib sqlite3, 365-day retention, opened lazily). Related-query snapshots hold the complete lists regardless of a caller's limit, so comparisons never invent drops. what_changed and trend_history read it; trendzeist_status.archive reports it. Suspect rising queries never enter it. Archive errors never fail a tool. TRENDZEIST_ARCHIVE=0 turns it off.

  • Site coverage is conservative. An aeo_opportunities cluster is covered only when every question in it is covered; a mix is partial (see coverage_counts), so exclude_covered can never hide an unanswered question.

  • angle is one of how-to | comparison | listicle | definition | news (or null) — the title format the query suggests. Pair it with evidence: how-to → steps + numbers, comparison → table + quotes, definition → cite a primary source, news → dated publisher quotes.

  • Anything silently adjusted is reported: clamped limits add a note, empty results add a reason.

  • Two trend labels. direction compares the first and last third of the window (rising | falling | stable | new | no_interest | insufficient_data; new = no interest in the first third). direction_now compares the last quarter of the window with the quarter before it and answers "is it still growing now?". A topic that peaked mid-window reads direction: rising (or new) and direction_now: falling; the insight sentence says so. Composites (discover_topics, aeo_opportunities) always fetch the seed trend on today 12-m (echoed as query.trend_timeframe) and score on direction_now.

  • Suspect rising queries. Search-manipulation campaigns attach one name to many unrelated "Breakout" queries. related_queries flags such items suspect: true with a suspect_reason; discover_topics moves them to suspect[]; aeo_opportunities ignores them. Google's is_breakout value is kept, only the trust changes.

  • citability_hints (on aeo_opportunities) encode the GEO paper (Aggarwal et al., KDD 2024): citing sources, quotations and statistics each lifted AI-engine visibility 30-40%; keyword stuffing did nothing.

  • Language follows the market. With TRENDZEIST_HL unset, geo="BR" queries Google with hl=pt-BR (≈50 countries mapped), so related queries come back in Portuguese. The effective language is echoed as query.hl. Google News always uses the market's mapped edition (e.g. BR:pt), even when TRENDZEIST_HL pins the Trends UI language.

  • Authority channels: pass gprop="news" or gprop="youtube" to any explore tool to see what news outlets and video audiences are searching for — the sources answer engines cite most. gprop="images" and "froogle" (Shopping) also work.

Why this one?

trendzeist-mcp

typical alternatives

Ranked topic discovery in one call

✅ discover_topics

❌ raw primitives only

Guided ideation prompt

✅ blog_ideas_from_trends

❌

Multi-source, keyless

✅ Trends + Autocomplete + News + Wikipedia

single source, or paid aggregators

Knows when and what's worth it

✅ what_changed, seasonality, compare_channels, site_queries gaps

❌ data only, no editorial reading

Related queries + breakout detection

✅

often missing in hosted/paid servers

Cost / auth

free, none

API key, monthly quota

Browser required

no

Chrome for some Python libraries

Cache survives client restarts

✅ safe JSON disk cache

usually in-memory or none

Rate-limit friendly

✅ throttled per HTTP request

❌ bursts, frequent 429s

Run from source

git clone https://github.com/phalkmin/trendzeist-mcp && cd trendzeist-mcp
uv sync --group dev
uv run pytest -q                 # offline tests
uv run pytest -q -m live         # optional: live canary against Google
uv run trendzeist-mcp              # stdio server
npx @modelcontextprotocol/inspector uv run trendzeist-mcp   # interactive debugging

Point a client at the clone with "command": "uv", "args": ["--directory", "/path/to/trendzeist-mcp", "run", "trendzeist-mcp"].

Configuration (env vars)

Variable

Default

Meaning

TRENDZEIST_HL

(unset → follows geo)

Pin the Trends/Autocomplete UI language (e.g. en-US); Google News uses its country edition independently. When unset, language follows geo (BR → pt-BR, unknown → en-US)

TRENDZEIST_TZ

360

Timezone offset in minutes

TRENDZEIST_MIN_INTERVAL

2.0

Minimum seconds between every HTTP request to Google hosts (Trends cookie / token / data, RSS, Autocomplete, News)

TRENDZEIST_WIKI_MIN_INTERVAL

0.5

Minimum seconds between Wikimedia requests (separate lane from Google)

TRENDZEIST_EXPLORE_TTL

900

Cache seconds for Trends explore, News search

TRENDZEIST_RSS_TTL

300

Cache seconds for the trending RSS feed

TRENDZEIST_STATIC_TTL

86400

Cache seconds for categories, suggestions, Autocomplete, Wikipedia

TRENDZEIST_MAX_MEMORY_ENTRIES

256

In-memory cache entries (disk is unbounded, swept on expiry)

TRENDZEIST_MAX_SERIES_POINTS

60

Downsample interest curves to at most this many points (positive integer)

TRENDZEIST_RETRIES

3

Retry attempts on transient errors

TRENDZEIST_BACKOFF

1.5

Exponential backoff factor

TRENDZEIST_PROXIES

—

Comma-separated proxy URLs. Rotated per request for explore calls; RSS, Autocomplete, News and Wikipedia always use the first one

TRENDZEIST_CACHE_DIR

OS user cache dir

Persistent JSON cache location (0700); off to disable (also disables the archive)

TRENDZEIST_ARCHIVE

1

0 disables the observation archive (what_changed / trend_history then report available: false)

TRENDZEIST_ARCHIVE_DAYS

365

Retention for archive rows (pruned once per process on first write)

TRENDZEIST_LOG_LEVEL

WARNING

Python logging level (stderr)

Notes & limitations

  • Google rate-limits aggressively (HTTP 429). Every HTTP request is serialised and throttled; results are cached (15 min explore / News, 5 min RSS, 24 h categories / Autocomplete / Wikipedia) as plain JSON on disk so client restarts don't re-fetch. Memory cache is bounded and expired files are swept automatically. Errors come back as tool errors with guidance.

  • mine_questions issues up to 16 Autocomplete requests per uncached call (one per question prefix); at the default 2 s interval that is ~30 s worst case. It stops as soon as limit is met and returns partial results if Google starts refusing.

  • Values are Google's relative 0–100 index, not absolute search volume. growth_3m / growth_12m compare the mean of the last window with the window before it, so each needs two windows of data: growth_3m needs ≥ 6 months (today 12-m), growth_12m needs today 5-y. When either is null for that reason the summary carries a growth_note saying which timeframe to use.

  • Google rate-limits the first burst of a session hardest. Start with 1–2 seeds in discover_topics / aeo_opportunities; a 429 on the trend-context step no longer aborts the call (related queries are still fetched), and skip messages say when to retry.

  • Question prefixes in mine_questions are English; for native-language questions in a non-English market, pass a seed already phrased in that language.

  • related_topics frequently returns nothing from Google; related_queries is reliable.

  • Google's legacy daily trending_searches endpoint is gone (404); trending_now uses the RSS feed.

  • aeo_opportunities is the most expensive call: worst case 1 + 10 requests per seed (Wikipedia runs on its own lane). Google requests stop at the first 429; Wikipedia data is still returned. trendzeist_status shows which source is erroring without any request.

  • wiki_attention.has_article confirms an exact-title search match only; a different Wikipedia search hit appears as related_article, not as a citation or proof of a gap. Verify related titles and redirects manually before claiming an encyclopedic content gap.

  • Cache TTLs, memory-entry count and series-point cap must be positive integers; invalid values produce an actionable tool error rather than an opaque formatter failure.

  • what_changed needs a baseline: the first call records one and reports reason: "baseline recorded <date>; rerun after <date>" per seed. Snapshots accrue from everyday use (discover_topics, related_queries on today 3-m; trend labels on today 12-m), so a week of normal work is enough. trend_history is archive-only.

  • seasonality needs at least 3 full years of non-zero weekly data (today 5-y); younger topics return seasonal: null with a reason. Profile and strength use full years only; zero off-season interest is reported as seasonal with strength_note (ratio unbounded); in_peak_now flags that the peak month is the current one. compare_channels issues 5 requests and stops at the first 429 (skipped lists the rest); channels are separate 0-100 scales, and momentum: all_declining means fastest_channel is only falling least.

  • what_changed never says "retire": leaving Google's relative, bounded related list is not evidence of falling demand. Items get review: ... actions; confirm with interest_over_time on the item before retiring. A snapshot where Google returned nothing is reported as such, not as a mass drop.

  • Camoufox/browser mode from pytrends-modern is intentionally not used.

Disclaimer

This server talks to the same undocumented endpoints the trends.google.com frontend uses (plus Google Autocomplete and Google News RSS). They are unofficial and may change, rate-limit or disappear without notice. A weekly live canary runs in CI to catch breakage early. This project is not affiliated with, endorsed by, or sponsored by Google LLC. "Google Trends" is a trademark of Google LLC. You are responsible for complying with Google's terms of service in your jurisdiction.

Contributing

Issues and PRs welcome. Read AGENTS.md for architecture and conventions (also useful if you point a coding agent at the repo). Data-shape corrections after a Google change are the most valuable contribution — include the call you made and what came back.

License

MIT — see LICENSE. Built on pytrends-modern (MIT).

Available Tools

18 tools
aeo_opportunitiesA

AEO opportunity finder. For 1-5 seeds: question-shaped searches (Trends + a capped Autocomplete pass) clustered by seed and title angle, each scored with the seed's recent trend (direction_now over 12 months, growth_3m), Google News coverage (who to quote / pitch), Wikipedia presence, the site's own coverage and the evidence type that makes the answer citable (score_breakdown explains every point). site_queries = queries the site already ranks for (fill from a Search Console MCP or page titles); clusters then carry coverage covered / partial / gap and exclude_covered drops covered ones. Spam-like rising queries are ignored. Up to ~1+10 requests per seed; partial failures per source in errors. limit: clusters (1-25).

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNo
limitNo
seedsYes
timeframeNotoday 3-m
site_queriesNo
exclude_coveredNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it discloses the request budget (~1+10 per seed), per-source partial failures surfaced in `errors`, that autocomplete is capped, that spam-like rising queries are ignored, and that clusters carry covered/partial/gap with exclude_covered dropping covered ones. These are exactly the operational traits an agent needs before calling a multi-source network tool.

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 dense but mostly information-bearing sentences; nothing reads as filler. It is a run-on block though, and the bare 'limit: clusters (1-25)' trailing sentence is awkwardly detached from the rest of the description.

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 not be explained, yet the description still adds useful semantics (score_breakdown, coverage categories, errors). For a complex composite tool it is nearly complete, with the only real gap being the unexplained geo and timeframe inputs.

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, and it explains four of six parameters meaningfully: seeds (1-5), site_queries (definition plus suggested source), exclude_covered (drops covered clusters) and limit (clusters 1-25). It leaves geo and timeframe entirely undocumented, so two parameters remain opaque to the agent.

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 concrete composite purpose: it finds AEO opportunities by clustering question-shaped searches and scoring them against trend, news, wiki, site-coverage and citability signals. This implicitly distinguishes it from single-source siblings like mine_questions, news_coverage and wiki_attention, which it composes. It never names an alternative or defines the 'AEO' acronym, so a reader must infer the domain.

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 the seed/site_queries framing and by the note to fill site_queries from a Search Console MCP or page titles, which tells the agent how to prepare input. However there is no explicit when-to-use-this vs. the many sibling tools (e.g. when to call this composite instead of mine_questions + news_coverage). The one actionable routing hint is about sourcing site_queries, not about tool selection.

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

compare_channelsB

Which Google property a topic grows on: web, youtube, news, images, shopping, each with direction / direction_now / growth_3m, plus fastest_channel and a format_hint (video tutorial, buying guide, newsjacking piece ...). 5 requests (web first; the rest are skipped on a 429). Channels are separate 0-100 scales: compare growth, never means.

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNo
keywordYes
timeframeNotoday 12-m

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose meaningful behavior: 5 requests with web queried first and the remainder 'skipped' on a 429 (rate-limit handling), plus the crucial semantic that channels are separate 0-100 scales. This is genuine behavioral context beyond the schema. It omits auth requirements and any error behavior beyond 429, keeping 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?

It is compact and front-loads the core purpose before the output shape and the request/scale caveats. Some terse shorthand ('direction / direction_now / growth_3m') is dense but each clause carries information.

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 description covers behavior and interpretation well. However, for a 3-parameter tool with 0% schema coverage, the near-total absence of parameter semantics leaves the definition incomplete for correct invocation.

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 the schema provides no descriptions, so the description must compensate. It only loosely implies the keyword via 'a topic' and says nothing about geo or timeframe, leaving two of three parameters entirely undocumented.

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 names the resource (Google properties/channels: web, youtube, news, images, shopping) and specifies the comparison output (direction, direction_now, growth_3m, fastest_channel, format_hint). It is far from a tautology and lets an agent understand what the tool produces. It stops short of explicitly distinguishing itself from the sibling compare_keywords, so a 5 is not warranted.

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 explicit when-to-use guidance and no mention of when to prefer this over siblings like compare_keywords or trending_now. The only usage-adjacent content is an interpretive caveat ('compare growth, never means'), which is not routing guidance.

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

compare_keywordsA

Compare 2-5 keywords head-to-head: relative share, leader and trend direction for each. Use to pick the strongest angle among alternatives.

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNo
gpropNo
categoryNo
keywordsYes
timeframeNotoday 12-m

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses the core behavior (comparison, relative share, leader, trend direction) but doesn't mention limitations like data availability, normalization, or how 'leader' is determined. It's adequate but not rich.

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 sentences, front-loaded with the core action and output, followed by a clear use case. No wasted words.

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 tool has an output schema, so return values are covered. However, with no annotations and 0% schema coverage, the description should explain more about the optional parameters and any constraints (e.g., keyword count limits, required format). It's adequate for a simple comparison tool but leaves some gaps.

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 explains the 'keywords' parameter implicitly (2-5 keywords) but doesn't explain 'geo', 'gprop', 'category', or 'timeframe'. The description adds some meaning for the main parameter but leaves the optional parameters 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?

The description uses a specific verb ('Compare') and resource ('keywords head-to-head'), and clearly states what it produces: relative share, leader, and trend direction for each keyword. It also distinguishes itself from siblings by focusing on comparison rather than single-keyword trends or related queries.

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 description explicitly states when to use this tool: 'Use to pick the strongest angle among alternatives.' This gives clear context for selection. It doesn't explicitly name alternatives or exclusions, but the sibling list and the comparison-focused wording make the intended use clear.

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

discover_topicsA

One-shot topic discovery for blog ideation. For 1-5 seed keywords, pulls 12-month trend context (direction, direction_now, growth_3m) plus rising/top related queries, de-duplicates and ranks candidates as breakout > rising > evergreen, each tagged with a title angle and an explainable score. questions collects question-shaped searches across seeds; suspect lists spam-like rising queries kept out of the ranking. site_queries = queries the site already ranks for (fill from a Search Console MCP or page titles): each topic then gets coverage covered / partial / gap, and exclude_covered drops the covered ones. Partial failures are reported per seed in errors instead of failing the call. First call of a session: start with 1-2 seeds to avoid a 429.

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNo
gpropNo
categoryNo
timeframeNotoday 3-m
max_per_seedNo
site_queriesNo
seed_keywordsYes
exclude_coveredNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral burden and does well: it discloses deduplication, ranking tiers, partial-failure reporting via errors, rate-limit caution, and coverage tagging. It still omits explicit safety/auth or read-only guarantees, but the behavioral picture is strong.

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 dense but front-loaded and nearly every sentence adds concrete information about behavior or parameters. It is a single long paragraph rather than structured bullets, which slightly reduces readability, but it avoids empty 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?

Given an output schema, the description need not detail return values, yet it still explains output fields and failure modes well. The main gap is that several input parameters remain undocumented despite 0% schema coverage, so an agent lacks full parameter context.

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 for 8 parameters. It explains seed_keywords (1-5 seeds), site_queries, exclude_covered, and the resulting coverage labels, but leaves geo, gprop, category, timeframe, and max_per_seed unexplained, providing only partial compensation.

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 verb and resource: 'One-shot topic discovery for blog ideation,' and clarifies it pulls trend context plus related queries and ranks candidates. It does not, however, explicitly distinguish itself from siblings such as related_queries or trending_now, so it falls short of the top score.

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 usage context ('for blog ideation'), guidance to start with 1-2 seeds on the first call to avoid 429s, and explains when to supply site_queries. It does not state when-not to use this tool or name alternative sibling tools, so it is not fully explicit.

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

interest_by_regionB

Where a keyword is searched most. resolution: COUNTRY (geo='' only), REGION (states/provinces within geo), CITY and DMA (US metro areas; geo='US' or worldwide only). Non-US countries support REGION only.

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNo
gpropNo
limitNo
categoryNo
keywordsYes
timeframeNotoday 12-m
resolutionNoCOUNTRY

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden and does disclose the important constraint matrix between resolution and geo, including the non-US REGION-only limitation. It says nothing about read-only nature, rate limits, pagination, or error behavior, so it is only partially transparent.

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?

Two compact sentences with the core purpose front-loaded and no filler. The shorthand notation ('geo='' only') is dense but readable, and nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/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 0% schema description coverage and no annotations, the description covers only the resolution/geo interaction. The return shape is arguably handled by the output schema, but the remaining call-critical parameters are left entirely unexplained.

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 7 parameters, so the description must compensate. It explains the semantics and valid values of resolution and its coupling to geo, but says nothing about keywords, timeframe, gprop, category, or limit, leaving most parameters undocumented anywhere.

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 phrase 'Where a keyword is searched most' states the resource and the breakdown dimension (geography) clearly, which separates it from the time-oriented sibling interest_over_time. It is not a clean verb+resource statement and no sibling is named explicitly, so it lands just 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?

The resolution/geo compatibility rules ('COUNTRY (geo='' only)', 'CITY and DMA ... geo='US' or worldwide only') effectively tell the caller when a given configuration is legal, which is real usage guidance. However, there is no guidance on when to choose this tool over interest_over_time or related_queries.

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

interest_over_timeA

Search-interest time series (0-100) for 1-5 keywords, with per-keyword summary (mean, latest, peak, direction over the whole window, direction_now = recent slope, growth_3m/growth_12m % and a plain-English insight). Use direction_now to decide whether to write about a topic now; direction can be 'rising' or 'new' for a topic that peaked months ago. Long series are downsampled to ~60 points. gprop: '' (web), 'news', 'youtube' (authority channels answer engines cite), 'images', 'froogle'.

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNo
gpropNo
categoryNo
keywordsYes
timeframeNotoday 12-m

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does disclose meaningful traits: results are downsampled to ~60 points, direction_now is a recent slope, direction may read as rising/new on stale peaks, and gprop channels have differing authority for answer engines. It still omits read-only/safety framing and any rate-limit or quota expectations for a Trends-backed call.

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 single dense paragraph that front-loads what the tool returns and follows with parameter guidance; there is little waste. The embedded output-field inventory (mean, latest, peak, growth_3m/12m) is slightly list-heavy but each item is informative.

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 the description did not need to enumerate return values, yet it does so usefully. For a 5-param, zero-coverage read tool with no annotations, the main remaining gaps are the semantics of geo, category, and timeframe, which an agent needs in order to call 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%, so the description must compensate. It does well on two params (keywords bounded to 1-5, gprop values enumerated as ''/news/youtube/images/froogle with a rationale), but geo, category, and timeframe are never explained, leaving half the parameters semantically invisible to the agent.

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 opens with a specific verb+resource+scope: 'Search-interest time series (0-100) for 1-5 keywords'. It is easily distinguished from siblings like interest_by_region, trending_now, and compare_keywords because it explicitly frames the output as a per-keyword time series with direction metrics.

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?

It gives one concrete usage rule ('Use direction_now to decide whether to write about a topic *now*') and warns that 'direction can be rising or new for a topic that peaked months ago', which is a useful interpretive guardrail. However, it never says when to prefer this tool over compare_keywords or related_queries, so routing guidance is only implied.

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

list_categoriesA

Browse/search Google Trends category ids (e.g. 'coffee' -> Food & Drink > Coffee & Tea). Pass the id as category to other tools to narrow results.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
searchNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

There are no annotations, so the description carries full responsibility for disclosing behavior. It does strongly indicate a read/browse/search action and gives an example of the output form. However, it says nothing about how the limit parameter behaves, whether the empty search returns all categories, or if the list is sorted—a moderate gap for a read-only tool with no pre-existing annotation context.

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 entire description fits into two sentences and carries immediate value. The first word is the primary verb, a concrete example is embedded naturally, and the final sentence tells exactly what to do with the result. No repetition or filler—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?

Given that an output schema exists, the description does not need to explain return fields. It sufficiently covers what the tool's purpose, how to invoke it, and how to apply results in the broader tool set. The only real gaps are the unresolved semantic of the limit parameter and some search matching details, which lower the score from a perfect context.

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%, so the description must take on the burden of explaining parameters. It gives an example of what 'search' is for ('coffee' -> category path) and implies 'browse' covers the limit case, but it never mentions the limit parameter by name or explains its behavior. With only 2 parameters, both undocumented at schema level, a clear explanation of one is not enough; this is a meaningful 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 starts with a specific verb and resource: 'Browse/search Google Trends category ids.' It gives a concrete example ('coffee' -> Food & Drink > Coffee & Tea) and explicitly explains its output is used by passing the id to other tools. This clearly distinguishes the function from its trend-analysis siblings, which operate on time series and related terms.

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 description states when to use the tool: when you need category IDs to narrow other tools' results. It does not explicitly mention when not to use it or name alternate siblings like suggest_keywords, but the use case is clear enough. It provides a strong implication of usage but leaves exclusions and alternatives unstated.

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

mine_questionsA

Long-tail questions people type about a seed, from Google Autocomplete ('how to', 'why', 'what is', 'vs' ... expansions), de-duplicated and tagged with a title angle. Feeds FAQ sections and answer-engine (AEO) content. Up to ~16 throttled requests per call; results cached 24 h. limit: 1-100.

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNo
seedYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Since no annotations are provided, the description carries the full burden of behavioral disclosure. It mentions throttling (up to ~16 requests per call), 24-hour caching, de-duplication, and tagging with a title angle. These are concrete behaviors that help the agent understand side effects and constraints. It does not mention read-only nature, but that is implied by the operation. The coverage is strong for a read-only mining tool.

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 a single, dense sentence that packs purpose, examples, behavioral details, and limit into a compact form. It is front-loaded with the core purpose. While it could be split for readability, every clause adds useful information, and it avoids redundancy. It is appropriately concise for the amount of detail.

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 are covered. However, the description lacks parameter semantics and explicit usage guidance. It does not explain how 'seed' and 'geo' affect results, nor does it mention any ordering or filtering behavior. The behavioral details (throttling, caching) are good, but the missing parameter explanations and sibling differentiation make the tool incomplete for an agent to call it correctly without additional context.

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%, so the description must compensate for parameter explanations. It only mentions 'limit: 1-100' in the description, providing a range for that parameter. However, it does not explain what 'seed' refers to (beyond being a starting topic) nor the meaning or possible values of 'geo'. With three parameters and 0% schema coverage, this is a significant gap that leaves the agent guessing about required input semantics.

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 clearly states the tool mines long-tail questions from Google Autocomplete for a given seed, with explicit examples of expansions ('how to', 'why', 'what is', 'vs'). It distinguishes itself from siblings like related_queries or suggest_keywords by focusing on question-form queries and mentions the downstream use (FAQ, AEO content). The verb 'mine' plus resource 'questions' is specific and unambiguous.

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 description implies usage by mentioning 'Feeds FAQ sections and answer-engine (AEO) content', which tells the agent when this tool is relevant. However, it does not explicitly contrast with sibling tools (e.g., related_queries, suggest_keywords) or state when not to use it. The context is present but not explicit, so the agent must infer the distinction.

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

news_coverageA

Who is covering a topic in Google News: recent headlines, a publisher frequency table (mention / pitch targets) and a recency histogram with a coverage label. One request, cached 15 min. limit = headlines returned (1-50).

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNoUS
limitNo
topicYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; it usefully discloses a 15-minute cache and the limit range (1-50), which the schema does not. However it says nothing about the geo parameter's behavior, error cases, or whether results are scoped or sampled, leaving meaningful behavioral gaps for a network-backed tool.

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?

Compact, front-loads the output-focused purpose, and appends operational facts (cache, limit) without padding. Slight awkwardness in the enumerated list, but no wasted sentences.

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-shape explanation is not strictly required, yet the description still names the outputs, adds caching and limit bounds, and gives a use-case hint. Only the geo parameter's meaning and scope remain unaddressed.

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 3 parameters, so the schema contributes nothing. The description rescues 'limit' by defining it as headlines returned with a 1-50 range (bounds absent from the schema), but 'topic' and 'geo' receive no semantic elaboration beyond their names.

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 ('who is covering a topic in Google News') and enumerates the three outputs returned: headlines, a publisher frequency table, and a recency histogram. The Google News source is named, which separates it from wiki_attention and interest_over_time among siblings.

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 parenthetical '(mention / pitch targets)' hints at a PR/media-outreach use case, but the description never states when to prefer this over siblings like trending_now or wiki_attention, nor any exclusions or prerequisites. Usage is only implied.

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

seasonalityA

When demand for a keyword peaks each year (5-year weekly data): monthly_index, peak_months, seasonal_strength, next_peak and publish_by (6 weeks before the peak), with a plain-English insight. One request; seasonal=null with a reason when fewer than 3 full years exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNo
keywordYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description must carry the behavioral burden, and it does disclose real behavior: the 5-year weekly data basis, that it is a single request, and that seasonal=null is returned with a reason when fewer than 3 full years exist. It does not cover auth, rate limits, or cost, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences, front-loaded with the purpose, then the return payload, then the edge case. Every clause carries distinct information and nothing is repeated from the schema.

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 not be spelled out, yet the description usefully names the key fields and the null-return condition. Combined with the keyword-only required parameter, an agent has enough to call it correctly; only parameter-level semantics are missing.

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%, so both parameters (keyword, geo) are undocumented in structured data. The description never compensates — it does not explain geo semantics (default empty string behavior) or keyword expectations. Parameter names are largely self-evident, which prevents a 1, but the gap is real.

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 names a specific resource and analytical output: when demand for a keyword peaks each year, returning monthly_index, peak_months, seasonal_strength, next_peak and publish_by. It is clearly distinct in spirit from siblings like trending_now or interest_over_time, but it never explicitly differentiates itself from them, which is the one gap separating it from 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 rather than stated: the agent can infer this is the tool for seasonal planning (e.g. publish_by timing), and the null-with-reason edge case is documented. However, there is no explicit when-to-use vs. when-to-prefer interest_over_time/trend_history guidance or any prerequisite statement.

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

suggest_keywordsA

Google's entity suggestions for a keyword (title, type, mid). Use to disambiguate ambiguous terms or find the canonical topic id.

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are present, so the description carries the burden. It discloses that this is a read-style suggestion API and what it returns. It does not mention errors, limits, or external dependencies, but for this simple tool the core behavior is clear.

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 dense sentences with no wasted words: output shape first, then concrete usage scenarios.

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 simple one-parameter read tool with an output schema, the description covers purpose, response fields, and usage context. It stops short of documenting edge cases or output size limits, but the core calling context is complete.

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 schema gives no parameter descriptions, so the description compensates by clarifying that the keyword is used to retrieve entity suggestions and can disambiguate ambiguous terms. It could add input format details, but the one-parameter surface is simple.

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 concrete operation—returning Google entity suggestions for a keyword—and identifies the response fields (title, type, mid), distinguishing it from trend/time-series siblings.

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 explicit use cases: disambiguate ambiguous terms or find the canonical topic ID. It doesn't name sibling tools or when not to use the tool, but the guidance is still actionable.

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

trend_historyA

Local archive of what the tools have seen about a keyword (as a seed or as a related query under other seeds) in the last days (1-365): first_seen / last_seen, breakout_episodes (separate breakout runs; >= 3 = recurring, durable page) vs breakout_observations (polling count), direction_timeline per timeframe and seen_under_seeds. Free: makes no network requests.

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNo
daysNo
keywordYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

No annotations exist, so the description carries the full burden. It discloses that the operation is local and free with no network requests, constrains `days` to 1-365, and explains the semantics of breakout_episodes (>= 3 = recurring, durable page) versus breakout_observations (polling count). It stops short of stating any auth or permission requirements.

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?

Single dense sentence with the core 'local archive' framing front-loaded, followed by field semantics and the free/no-network note. The parenthetical detail earns its place, though the sentence is long and packed.

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 documentation is a bonus rather than a requirement, and the description still outlines the key fields. The only real gap for an agent is the unexplained `geo` parameter; otherwise the tool is adequately covered for a local read.

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 explains `keyword` (seed or related query under other seeds) and bounds `days` to 1-365, but says nothing about the `geo` parameter, leaving one of three parameters semantically undocumented.

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 resource — a local archive of observations about a keyword — and distinguishes itself from live-data siblings by noting it 'makes no network requests'. It is clear what the tool returns, though it never names the sibling tools it contrasts with.

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: 'local archive' and 'Free: makes no network requests' suggest reaching for this instead of live-fetching tools, but there is no explicit when-to-use or when-not-to-use guidance and no named alternative.

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

trendzeist_statusA

Health of every data source (google_trends, google_autocomplete, google_news, wikipedia: live / error / idle with the last error), cache usage, observation archive (rows, dates, last_error) and effective settings. Free: makes no network requests.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations present, the description carries the full burden and does reasonably well: it discloses that the call performs no network requests, and it specifies the exact behavioral states reported (live / error / idle with last error, cache usage, archive rows/dates/last_error). It does not state auth requirements, rate limits, or confirm read-only semantics outright, but 'makes no network requests' strongly implies a side-effect-free read.

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?

A single dense sentence enumerating exactly what the status report contains, with the key constraint ('free, no network requests') placed last as a qualifier. No filler and nothing that fails to earn 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 not be spelled out, and the description still summarizes the reported categories usefully. The only gap is the absence of any trigger guidance for a diagnostics tool, which is minor given its zero-parameter simplicity.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies since no parameter semantics are required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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

States a specific purpose: reporting health of each data source (google_trends, google_autocomplete, google_news, wikipedia), cache usage, observation archive, and effective settings. The enumerated resources make it clearly a diagnostics/status tool, distinct from the data-querying siblings, though no sibling is named 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?

'Free: makes no network requests' implies this is a safe, costless call to make before or instead of network-dependent tools, which is real usage guidance. However, it never states the diagnostic conditions that should trigger a call (e.g., after an error, to check quota/state), so usage remains implied rather than explicit.

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

what_changedA

What changed for 1-5 seeds since the last snapshot at least since_days (1-90) old: new_breakouts and promoted (action: investigate now), new_rising (consider), cooled / dropped queries (review: verify with interest_over_time before retiring, or refresh existing post), rank_moves and a direction_flip on direction_now. Leaving Google's relative list is not proof of falling demand. Refreshes current data first (1 + N requests, cached), then compares complete snapshots from the local observation archive, which fills up as any tool fetches fresh data. No baseline yet -> per-seed reason with the date to rerun.

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNo
seedsYes
since_daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose real behavior: it refreshes data first ('1 + N requests, cached'), compares against a local observation archive that is populated by other tools, and returns a per-seed reason with a rerun date when no baseline exists. It also warns that leaving Google's relative list is not proof of falling demand. It stops short of stating auth/permission needs or result limits.

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 purpose is front-loaded and most content earns its place, but the body is a dense run-on of fragments and internal shorthand ('old:', 'direction_now', 'rank_moves') that forces the reader to decode labels. Readability suffers even though little is truly redundant.

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 shape needn't be explained, and the description still adds semantic meaning for the change categories and the no-baseline case. Combined with the refresh/archive behavior and the seeds/since_days constraints, an agent has enough to invoke it, with geo as the only 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 compensate. It adds two useful constraints absent from the schema: seeds limited to 1-5 and since_days bounded to 1-90. However, the third parameter (geo) is never explained, leaving one of three parameters 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 opening clause 'What changed for 1-5 seeds since the last snapshot' states a specific comparison/delta operation over a named resource, and the body names the change categories (new_breakouts, new_rising, cooled/dropped, rank_moves, direction_flip). It is clearly distinct from interest_over_time, which it explicitly routes to. The phrasing is cryptic but the purpose is recoverable.

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 per-outcome action guidance ('investigate now', 'consider', 'review: verify with interest_over_time before retiring, or refresh existing post') and names the alternative tool plus the condition for using it. It does not state when NOT to use this tool at all (e.g., for a single seed vs many), but the routing advice is concrete.

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

wiki_attentionA

Does Wikipedia have an exact-title article for a topic, and is attention growing? Exact article (title, encoded URL, wordcount), daily pageviews for days (7-90) with direction / growth / insight, or has_article=false with a related_article suggestion (when search finds a different title); verify gaps before citing. lang = Wikipedia edition ('en', 'pt', 'de'). Own rate lane; cached 24 h.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
langNoen
topicYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses a dedicated rate lane ('Own rate lane'), a 24-hour cache, and the branching failure mode (has_article=false with a related_article suggestion). It does not mention auth requirements or pagination, so it falls short of a perfect 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 question is front-loaded in the first sentence, followed by output shape and constraints. It is dense and slightly cramped, but every sentence carries information; no filler.

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 3-param tool with an output schema, the description is complete: it covers inputs, return shape, fallback behavior, caching, and rate-lane characteristics. An agent has everything needed to call it and interpret results despite zero schema description coverage.

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 must compensate, and it does: it documents the `days` range (7-90), `lang` as the Wikipedia edition with examples ('en', 'pt', 'de'), and `topic` implicitly via the exact-title lookup. It omits the default value for `days`/`lang` but adds real meaning beyond the bare schema.

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: it answers whether Wikipedia has an exact-title article for a topic and whether attention is growing. The output contract (exact article fields, daily pageviews, has_article=false fallback) is spelled out, so an agent can distinguish it from siblings like interest_over_time or news_coverage.

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?

It hints at usage ('verify gaps before citing') and describes what happens when no exact article exists, which implies a validation use case. However, it never explicitly contrasts itself with any sibling (e.g., interest_over_time for Google Trends vs. this for Wikipedia), leaving the when-to-choose decision to inference.

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. 7 tool updatesv0.5.0
    • Changedaeo_opportunities2 fields changed
      • addedInput schema / properties / exclude_covered
        Added value: +{
        +  "default": false,
        +  "title": "Exclude Covered",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / site_queries
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Site Queries"
        +}
    • Addedcompare_channels
    • Changeddiscover_topics2 fields changed
      • addedInput schema / properties / exclude_covered
        Added value: +{
        +  "default": false,
        +  "title": "Exclude Covered",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / site_queries
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Site Queries"
        +}
    • Addedseasonality
    • Addedtrend_history
    • Changedtrending_now1 field changed
      • addedInput schema / properties / topic_filter
        Added value: +{
        +  "default": "",
        +  "title": "Topic Filter",
        +  "type": "string"
        +}
    • Addedwhat_changed
  2. 4 tool updatesv0.4.0
    • Addedaeo_opportunities
    • Addednews_coverage
    • Addedtrendzeist_status
    • Addedwiki_attention
  3. 1 tool updatev0.3.0
    • Addedmine_questions
  4. 9 tool updatesv0.2.1
    • First observedcompare_keywords
    • First observeddiscover_topics
    • First observedinterest_by_region
    • First observedinterest_over_time
    • First observedlist_categories
    • First observedrelated_queries
    • First observedrelated_topics
    • First observedsuggest_keywords
    • First observedtrending_now

TDQS

A3.7/5.0

Scored across 18 tools

Disambiguation4/5

Most tools target a distinct data source or analysis (trending_now, interest_over_time, news_coverage, wiki_attention, seasonality, trend_history), and descriptions carefully explain when to use each. However, discover_topics and aeo_opportunities overlap substantially—both take 1-5 seeds, pull rising/top queries, cluster question-shaped searches, compute coverage and scores, and rank candidates—so an agent may struggle to choose between them for ideation vs AEO work. related_queries/related_topics also bleed into discover_topics' output.

Naming Consistency4/5

All names use snake_case consistently and are readable, with a mix of verb_noun (suggest_keywords, compare_keywords, mine_questions, discover_topics) and noun_phrase (related_queries, interest_over_time, trend_history) conventions. The style is uniform, though the verb-first pattern isn't universal and one tool carries a branded prefix (trendzeist_status).

Tool Count4/5

18 tools is slightly above the comfortable 3-15 band, but the server spans many genuinely different data sources (Google Trends, Autocomplete, News, Wikipedia) and analytical views (seasonality, channels, change detection), so each tool maps to a real capability. The main redundancy is the discover_topics/aeo_opportunities pair, which could arguably be merged.

Completeness5/5

The surface covers the full trend-research lifecycle: raw feeds (trending_now), keyword expansion (related_queries/topics, suggest_keywords, mine_questions), regional and temporal interest, seasonality, cross-channel growth, external sources (news, Wikipedia), multi-seed discovery/AEO scoring, change detection, and a local history archive, plus a health/status tool. No obvious dead ends for a read-only analytics domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides Google Search trend data as an MCP tool, with historical series, growth percentages, and live trending searches, no scraping or rate limits.
    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
    270 npm
    2
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables querying Google Trends data directly from conversational MCP clients, including search interest over time, related queries and topics, regional breakdowns, and trending searches, for market research without leaving the chat.
    11
    1
    MIT