Four tools with basic descriptions and schemas, but significant gaps in parameter documentation and output structure. Tool names follow verb_noun convention (health_check, list_available_feeds, get_latest_news, search_news), which is good. However, parameter descriptions are embedded in tool docstrings rather than in schema annotations, making them invisible to strict schema parsers. Output schemas are not documented. Error handling is minimal. The server lacks tool annotations (readOnlyHint, destructiveHint) despite all tools being read-only. No pagination guidance despite tools returning lists.
Get the latest news articles from RSS feeds. Args: category: Optional category to filter by (tech, general, business, science, travel, politics). If None, fetches from a sample of all feeds. limit: Maximum number of articles to return (default: 5, max: 20)
Check if the News MCP server is healthy and running.
List all available news feeds and their categories.
Search for news articles matching a query. Args: query: Search term to look for in news articles limit: Maximum number of articles to return (default: 5, max: 20)
Parameter descriptions embedded in tool docstrings, not in JSON Schema. Schema shows only type and description at parameter level, but lacks enum constraints for 'category' parameter (should enumerate: tech, general, business, science, travel, politics). LLMs cannot parse docstring constraints.
Output schemas not documented. Tools return Dict[str, Any] with no specification of fields, types, or structure. LLMs cannot plan downstream calls or extract required data. E.g., get_latest_news returns articles but field names (title, link, summary, published, source) are inferred from code, not declared.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All four tools are read-only and idempotent, but this is not declared in the schema. Agents cannot distinguish safe tools from destructive ones without explicit hints.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | <=2025-11-25 | v2 |
No pagination or result-limiting guidance in tool descriptions. get_latest_news and search_news accept 'limit' parameter but do not document max results, default behavior, or pagination strategy. Description says 'max: 20' but does not explain what happens if more results exist.
Error handling is minimal. Code returns empty lists or generic error dicts on failure (e.g., fetch_rss_feed returns [] on exception). No recovery guidance for LLMs. E.g., if a feed is unreachable, the tool should suggest alternatives or retry strategies, not silently return empty results.