Global open-source Agentic Trend Intelligence Platform — 35+ sources, plugin system, vector search, trend clustering, lifecycle prediction, 6-agent content factory, web dashboard, and 23-tool MCP server.
Server has 10 tools with generally clear names and documented schemas. Descriptions are present and reasonably detailed (avg ~250 chars), exceeding rubric baseline of 194. However, parameter validation is weak, many parameters accept free-form strings (sources, geo, lang, platform) without enums or strict constraints, violating the pattern:constrained-input rule. Error handling is absent from visible code, no recovery guidance or categorization. Output schemas are not explicitly documented in tool descriptions. Tool compositions are sound (single responsibility), but several tools mix multiple concerns (e.g., get_content_brief bundles hooks, strategies, dimensions, and platform specs into one response). Security: no visible credential handling issues, but no audit trail or permission checks evident. Overall, this is a competent trend-analysis toolkit with room for validation and error-handling rigor.
Get a structured writing brief for creating viral content. Returns hook examples, patent strategies, scoring dimensions, platform specs, and content type guidance. Use this data to craft original posts — the LLM creates the content, this tool provides the optimization framework. Args: topic: Subject to create content about (e.g. "AI tools", "Claude Code") content_type: Post style — opinion, story, debate, howto, list, question, news, meme platform: Target platform — threads (500 chars), instagram (2200), facebook (63206) lang: Language — "auto" (detect from topic), "en", "zh-TW" Returns: JSON with hook examples, CTA examples, patent strategies, scoring dimensions, platform specs, content type guidance, char limit, and quality gate thresholds
Get platform specifications for content adaptation. Returns character limits, content strengths, algorithm priorities, best posting times, and format guidelines for each platform. Use this to adapt content for specific platforms. Args: platform: Platform name — threads, instagram, facebook (empty = all platforms) lang: Language for descriptions — "en" or "zh-TW" (default: "zh-TW") Returns: JSON with platform specs (char limits, strengths, format tips, algo priority, best times)
Get a structured guide for creating Reels/Short video scripts. Returns scene structure, timing allocations, visual guidance, and editing tips. The LLM fills in original captions, voiceover, and visual directions. Styles: educational (problem→solution), storytelling (conflict→resolution), listicle (numbered points) Args: style: Script style — educational, storytelling, listicle duration: Target duration in seconds (default: 30) lang: Language for guide text — "auto", "en", "zh-TW" topic: Optional topic hint for auto language detection Returns: JSON with scene structure, timing, music suggestion, editing tips, and instructions
No enums for constrained parameters (sources, geo, platform, lang, content_type, style). Free-form strings invite hallucinated values. E.g., sources='twitter' will fail; 'x_trending' is correct. 'geo=UK' vs 'geo=GB' creates ambiguity.
Output schemas not documented in tool descriptions. LLMs cannot plan downstream calls or extract required fields (e.g., does get_trending return 'trend_id' for use in other tools?). No documentation of pagination, total count, or next_cursor for multi-result tools.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Get a structured review checklist for evaluating content quality. Returns platform limits, quality thresholds, and detailed checklist items. The LLM reviews the post against this checklist itself — the tool only provides criteria, not judgment. Checklist covers: - Character limit compliance - Overall score quality gate (>= 70) - Conversation durability gate (>= 55) - Hook effectiveness - CTA presence - Question/engagement triggers - Format/readability Args: platform: Target platform — threads (500 chars), instagram (2200), facebook (63206) lang: Language for checklist text — "auto", "en", "zh-TW" topic: Optional topic hint for auto language detection Returns: JSON with platform limits, quality gate thresholds, checklist items, and verdict rules
Get the 5-dimension scoring framework for evaluating posts. Returns evaluation criteria, high/low signal examples, and grade thresholds for each patent-derived dimension. The LLM uses this guide to score posts itself — no regex heuristics. Dimensions (weighted): - Hook Power 25% (EdgeRank Weight + Andromeda) - Engagement Trigger 25% (Story-Viewer Tuple + Dear Algo) - Conversation Durability 20% (Threads 72hr window) - Velocity Potential 15% (Andromeda Real-time) - Format Score 15% (Multi-modal Indexing) Args: lang: Language for criteria text — "auto", "en", "zh-TW" topic: Optional topic hint for auto language detection Returns: JSON with 5 dimensions (weight, criteria, signals), grade thresholds, and instructions
Query historical trend data for a keyword. Args: keyword: The keyword to look up (partial match supported) days: Number of days to look back (default: 30) source: Filter by source name (default: all sources) Returns: JSON with historical records including timestamps and scores
Get trending topics from free sources. Args: sources: Comma-separated source names (default: all). Built-in (20): google_trends, hackernews, mastodon, bluesky, wikipedia, github, pypi, google_news, lobsters, devto, npm, reddit, coingecko, dockerhub, stackoverflow, arxiv, producthunt, lemmy, dcard, ptt Plugins (17+): weibo, youtube_trending, threads, line_today, mobile01, bahamut, ettoday, yahoo_tw, udn, coinmarketcap, dexscreener, indie_hackers, x_trending, tiktok_trending, xiaohongshu, pinterest, linkedin_trending geo: Country code for regional trends (e.g. TW, US, JP) count: Number of results per source (default: 20) save: Save snapshot to history DB for velocity tracking (default: false) Returns: JSON with merged ranking + per-source results (includes direction/velocity if history exists)
List all available trend sources and their properties.
Search for a keyword across trend sources. Args: query: Search keyword sources: Comma-separated source names (default: all searchable) geo: Country code Returns: JSON with search results across sources
Take a trend snapshot: fetch from all sources and save to history DB. Args: sources: Comma-separated source names (default: all) geo: Country code for regional trends count: Number of results per source (default: 20) Returns: JSON with trending results (snapshot saved to DB for velocity tracking)
No error handling or recovery guidance visible in server.py. If a source fetch fails, does the tool return partial results or fail entirely? No 'retryable vs fatal' categorization. No guidance like 'Try with fewer sources' or 'This source requires plugin installation'.
Parameter descriptions lack validation rules. 'count' accepts 1 - 200 (enforced in code: max(1, min(count, 200))), but this constraint is not stated in the parameter description. LLMs cannot self-validate before calling. Similarly, 'days' lacks min/max guidance.
Tool composition: get_content_brief returns 'hook examples, patent strategies, scoring dimensions, platform specs, and content type guidance', five distinct concerns bundled into one response. Consider splitting into separate tools (get_hook_library, get_patent_strategies, get_content_dimensions) so agents compose precisely what they need.
Parameter 'sources' documented as comma-separated string with a list of 37 built-in and plugin sources (20 + 17+), but no enum provided. LLMs cannot discover valid values without manual docs. FastMCP should declare sources as an enum with all 37 options.
Language parameter 'lang' accepts 'auto', 'en', 'zh-TW' but no enum. Free-form 'lang=fr' will fail silently or return English fallback without telling the LLM.
No documentation of per-tool timeout or rate limits. External API calls (google_trends, hackernews, etc.) may hang or fail. No guidance on how long the LLM should wait or when to retry.