An MCP server for fetching and summarizing news headlines from the News API
This server has a single tool with severe definition quality issues. The tool name follows the verb_noun pattern correctly ('get_top_headlines'), but the description is incomplete, truncated, and incoherent. The description starts with 'Fet' (clearly a truncation error), contains run-on sentences, and mixes implementation concerns with usage guidance in an unprofessional manner. Parameters lack proper descriptions, the docstring repeats parameter names without explaining what values are acceptable or what constraints apply. The schema is present but underdescribed. No output schema is documented, forcing LLMs to guess at response structure. The implementation returns a raw requests.Response object rather than parsed, structured data. Error handling is absent, network failures, invalid API keys, and malformed requests will return raw HTTP errors with no recovery guidance. The tool is read-only (good), but lacks any validation or permission gates.
Fet Args: country_code (str): The short code of the country if provided, category: The news category if provided, q: The query (search term) if provided Returns: The object which have status, totalResults, articles, articles: have the top headlines as arrays This type of data and you have to summarized all the headlines in points with their sources and author, and provide the little description as well
Tool description is truncated and incoherent ('Fet...'). Description must be non-empty and clearly explain WHAT the tool does, WHEN to use it, and WHAT it returns. Current description is unprofessional and unhelpful for LLM selection.
Parameters lack actionable descriptions. 'country_code', 'category', and 'q' are named but not explained. The docstring repeats 'if provided' without clarifying expected format, constraints, or mutual exclusivity. LLMs cannot determine valid values or how parameters interact.
No output schema is documented. The description mentions 'status, totalResults, articles' but does not formally specify the response structure, field types, or pagination behavior. LLMs must guess what to extract from the response.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 35 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 24 | - | v1 |
Implementation returns raw requests.Response object without parsing or error handling. Network errors, API rate limits, and authentication failures will surface as unstructured HTTP status codes or stack traces instead of actionable error messages. No recovery guidance for the LLM.
API key exposed as environment variable without validation. While using dotenv is better than hardcoding, the tool does not verify the API key is present or handle InvalidAuthenticationException gracefully. If API_KEY is missing or invalid, the tool will fail with a confusing HTTP 401 without guidance.
Parameters use empty string defaults ('') instead of None or proper optionality. This invites the tool to construct malformed API URLs (e.g., '...&country=&category=&q=...') and silences failures. Optional parameters should be omitted from the URL if not provided, not passed as empty strings.
No enum or constraint on 'category' parameter. The description says 'if provided' but does not enumerate allowed values (general, business, entertainment, health, science, sports, technology). LLMs will hallucinate invalid categories like 'crypto' or 'sports-international'.
No result limit or pagination. The tool description promises 'top headlines' but does not specify how many results are returned or how to paginate. newsapi.org defaults to 20 articles per response; without explicit limit/offset parameters, large result sets could blow context windows and the tool cannot iterate over all available headlines.
Mixing implementation details with tool purpose in description. The phrase 'This type of data and you have to summarized all the headlines in points' sounds like a developer note, not a tool specification. Descriptions must be written for LLM instruction, not internal documentation.