An MCP server that delivers blockchain news and in-depth articles from BlockBeats for AI agents.
This server has critical definition quality gaps that would prevent confident production use. Both tools have verb-starting names (get_latest_news, get_latest_articles) which is correct, but the schemas contain only input parameters without documented return types. Tool descriptions are present but generic, they lack guidance on when to use each tool vs. the other, what distinguishes them in practical terms, and what the LLM should expect in the response. Parameters have type definitions (integer, string) and default values, but lack constraints (enums for type/lang, min/max for size/max_pages). Most critically, there is no documented output schema, forcing LLMs to guess what fields they receive back. Error handling is minimal, the tools return raw error strings rather than actionable recovery guidance. The descriptions repeat parameter documentation in the docstring rather than explaining intent and use cases.
Fetch the latest blockchain in-depth articles up to max_pages. Parameters: size (int): Number of articles per page (default: 5). max_pages (int): Maximum number of pages to fetch (default: 1). type (str): Article type filter, e.g., 'push' for important articles (default: 'push'). lang (str): Language of the articles, 'en' for English, 'cn' for Simplified Chinese, 'cht' for Traditional Chinese (default: 'en').
Fetch the latest blockchain fast news articles up to max_pages. Parameters: size (int): Number of articles per page (default: 5). max_pages (int): Maximum number of pages to fetch (default: 1). type (str): News type filter, e.g., 'push' for important news (default: 'push'). lang (str): Language of the news, 'en' for English, 'cn' for Simplified Chinese, 'cht' for Traditional Chinese (default: 'en').
Missing output schema documentation. Tools return formatted strings but LLMs have no formal schema to parse structured responses. No documented return type, field names, or structure.
Parameter 'type' and 'lang' lack enum constraints. Descriptions list allowed values (push, en, cn, cht) as free-text examples rather than formal enums. LLMs may hallucinate invalid values like 'important' or 'es'.
Numeric parameters lack min/max constraints. 'size' and 'max_pages' have no documented bounds, LLMs could pass size=999999 or max_pages=1000, causing API abuse or context window exhaustion.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 40 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 51 | - | v1 |
Tool descriptions are generic and repetitive. Both docstrings simply repeat parameter details instead of explaining when/why to call each tool. No clarity on what 'fast news' vs 'in-depth articles' means to a user, or when to choose one over the other.
Error handling returns raw strings with no recovery guidance. 'Error fetching news: <error>' or 'No fast news articles found.' give LLMs no actionable next steps (e.g., retry, check parameters, fall back to another tool).
No pagination or result limits documented. Tools can fetch up to max_pages * size articles but no guidance on typical response size or token cost. Agents may inadvertently request hundreds of articles.
Response is unstructured text (formatted string) rather than structured JSON. LLMs must parse free-text output (ID:..., Title:..., Content:...) instead of extracting from typed fields. This wastes tokens and increases parsing errors.