Stdio MCP server for Google Trends MCP. Forwards tool calls to api.trendsmcp.ai with your API key. Provides access to Google Trends data, top trending items across multiple platforms, and historical trend analysis.
Server presents three well-named, read-only tools with comprehensive parameter descriptions. Naming follows verb_noun convention (get_growth, get_time_series, get_top_trends) clearly signaling intent. Descriptions are present and detailed (200-300+ chars), explaining WHAT each tool does, WHEN to use it, and dependencies between tools. Parameter descriptions are exceptionally thorough, including format requirements, valid values, and real-world examples (e.g., npm package names must be case-sensitive, Android bundle IDs required for app tools). Tool annotations correctly declare readOnlyHint and idempotentHint. However, output schemas are not documented, callers cannot see what fields to expect in responses. Error handling guidance is embedded in descriptions ('tell the user their plan limit is reached') but not structured as recovery patterns. No enumerated constraints in schema, parameter values are constrained only via description text, not JSON Schema enums.
Point-to-point growth for a keyword on one or more sources. Each window is a preset string (12M, 3M, YTD, and the other listed periods). Values are on a 0-100 scale, plus absolute volume when available. Prefer this over get_time_series for growth questions. app downloads and app rankings are keyword sources (Android bundle ID). They are not the App Store / Google Play live boards on get_top_trends. If the request is rate limited or the monthly quota is used up, tell the user their plan limit is reached.
Full historical series for one keyword and one source (0-100 values, plus volume when available). Use for charting or custom math. Not for live 'what's trending now' boards (use get_top_trends). For most growth questions, use get_growth. If the request is rate limited or the monthly quota is used up, tell the user their plan limit is reached.
Live top-trending board for exactly one feed type. No keyword. For 'Amazon Best Sellers by Category', 'Google Trends by Category', 'Top Websites', and 'Substack by Category', always pass category. Default sort is current rank. Use sort='rank_change' for climbers vs a prior snapshot (window 1d, 3d, 7d, 14d, or 30d). App Store Top Free, App Store Top Paid, and Google Play are live store boards, not keyword lookups. For an app's history use get_growth or get_time_series with source app downloads or app rankings and an Android bundle ID. Do not use get_time_series for live boards. If the request is rate limited or the monthly quota is used up, tell the user their plan limit is reached.
Output schemas not documented. Tools return JSON responses but callers cannot see what fields to expect. This forces LLMs to infer response structure, risking extraction errors and wasted tokens parsing unstructured output.
Parameter constraints embedded only in descriptions, not in JSON Schema enums. E.g., percent_growth values ('7D', '1W', '14D', etc.) and type values (20+ valid feed types) are listed as prose. LLMs cannot parse these as machine-readable enums, risking hallucinated values.
No pagination or limit guidance. get_top_trends accepts 'limit' and 'offset' parameters, but no max is specified in the tool description. Tool does not state what happens if limit exceeds 200 or if results are truncated.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 71 | 2026-07-28+ | v2 |
Error handling is descriptive but not actionable in a structured way. Descriptions mention 'rate limited' and 'quota used' but do not return structured error codes. An LLM receiving a timeout cannot distinguish a retryable rate limit from a fatal quota exhaustion without parsing the error message.
get_top_trends parameter 'category' is required for some feed types but optional for others. The description states 'always pass category' for 4 types and 'omit on a first pull' for others, conditional logic that could be clearer. Dependency between 'type' and 'category' is documented but easy to miss.