MCP server for Newsapi API with authentication and HTTP 402 payment protocol support
This server presents a mixed picture. Two tools are defined with reasonable parameter schemas and descriptions, but there are critical gaps in output documentation, error handling guidance, and parameter constraints. The naming follows verb-noun conventions correctly (search_everything, top_headlines), and parameter descriptions are present and moderately detailed. However, the descriptions lack depth on error cases, expected output structure, and disambiguation between the two similar search tools. Parameters accept string types that should be enums (language, sortBy, category, country). The incomplete code sample (function bodies cut off) prevents full assessment of output structure and error handling implementation. Both tools follow the pattern of accepting multiple optional filtering parameters, which is appropriate for search tools, but lack guidance on mutually exclusive parameter sets.
Search through millions of articles. NewsAPI requirement: you must provide at least one of: q, sources, or domains.
Get breaking news headlines. You must provide at least one of: country, category, or sources.
Parameter constraint violations: 'language', 'sortBy', 'category', and 'country' parameters accept free-form strings but should be enums. Allows hallucinated invalid values like language='xyz' or sortBy='invalid_order'.
No documented output schemas. The tool descriptions do not specify what fields are returned (e.g., does 'articles' list contain 'url', 'headline', 'source'?). LLMs cannot plan downstream operations without knowing response structure.
Incomplete error handling guidance. Descriptions mention 'NewsAPI requirement: you must provide at least one of: q, sources, or domains' for search_everything, but there is no documented error message or recovery path. What does the LLM do if it calls the tool without these? No guidance provided.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Insufficient disambiguation between search_everything and top_headlines. Both search for news articles using similar parameters (q, sources, category/country). The descriptions do not clearly explain WHEN to use each tool, what is the semantic difference from an LLM's perspective? This invites wrong tool selection.
Parameter 'from_' uses a Python-style underscore suffix to avoid the 'from' keyword. This is correct for implementation but the description should clarify the ISO 8601 format more explicitly (e.g., 'ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ or YYYY-MM-DD').
Pagination parameter description lacks bounds and default behavior. pageSize defaults to 20 (1 - 100 range stated), but 'page' parameter lacks a lower bound statement. What happens if page=0 or page=-1? Is 1-indexed or 0-indexed?
Mutually exclusive parameter groups documented in task description but not in individual parameter descriptions. For top_headlines: 'cannot be mixed with country or category' refers to 'sources', but this critical constraint is only in the tool description, not in the sources parameter itself. LLMs will miss this.