Stdio MCP server for Trends MCP. Forwards tool calls to api.trendsmcp.ai with your API key.
Three tools with consistent high-quality descriptions and partial schemas. All tools have excellent descriptions (150-400 chars, well above baseline 194 char average) that include when to use them, prerequisites, and error guidance. All three are properly named with action verbs (get_*). Schemas are present with typed parameters and descriptions, though output schemas are not explicitly documented, responses are returned as JSON strings rather than structured objects. Tool annotations (readOnlyHint, idempotentHint) are correctly applied. Parameter descriptions are detailed and include format guidance (e.g., Android bundle ID format, preset strings for percent_growth). The primary weakness is the lack of explicit output schema documentation and pagination guidance for list-like results.
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 explicitly documented. Tools return JSON strings via json.dumps() rather than structured objects. LLMs cannot plan downstream operations without knowing the response field structure. get_growth, get_time_series, and get_top_trends all forward responses from external API but do not document what fields are in the response.
Pagination not addressed. get_top_trends accepts limit and offset parameters but the tool description does not explain how pagination works (e.g., total count, next_cursor, or whether results are capped). Without this, LLMs cannot reliably page through large result sets.
Error handling guidance is generic. Tool descriptions mention 'If the request is rate limited or the monthly quota is used up, tell the user their plan limit is reached' but do not indicate how the LLM should detect or recover from errors. The _unwrap() function raises RuntimeError with messages, but there is no structured error classification (retryable vs. user-fixable vs. fatal).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 73 | 2026-07-28+ | v2 |
API key exposure risk. The TRENDSMCP_API_KEY is injected via environment variable (correct), but the server also advertises a .mcp.json config with 'streamable-http' transport pointing to https://api.trendsmcp.ai/mcp with the API key in Authorization headers. This is a dual-mode server (STDIO + HTTP), creating a config management burden. The STDIO mode is incomplete for the scoring.