An MCP application that delivers curated positive and uplifting news stories.
Single tool with mixed quality. Tool name 'fetch_list_of_goodnews' follows verb-noun pattern but is awkward ('fetch_list_of' is redundant); should be 'get_positive_news' or 'fetch_positive_news'. Input schema is well-defined with proper enum constraint for category parameter and clear default. Description is adequate at ~80 chars but lacks context on when to use the tool or what 'positivity' ranking means. No output schema is documented, the tool returns a string, but the actual structure (JSON with articles) is not explicitly declared in the schema. No error handling guidance provided. Parameter description for 'category' is clear and well-formatted with enum values. The implementation is sound (async, uses Pydantic models internally), but the interface definition has gaps that would force LLMs to infer the output structure.
Fetch a list of headlines and return only top-ranked news based on positivity.
Tool name 'fetch_list_of_goodnews' is awkward. 'fetch_list_of' is redundant phrasing. Recommend: 'get_positive_news' or 'fetch_positive_news' for clarity.
Output schema not documented. Tool returns a string containing JSON, but the MCP tool definition does not declare the structured output format (articles array with title/description/url/urlToImage fields). LLMs cannot plan downstream calls or extract fields reliably.
No error handling guidance. Tool can fail (missing API keys, network errors, Cohere API issues) but provides no error descriptions or recovery suggestions. LLMs cannot self-correct on failure.
Tool description lacks context on WHEN to use it and WHAT 'positivity ranking' entails. At 80 chars, it is below the recommended 100 - 200 char range for production tools. Expand to explain use cases and the Cohere-based ranking mechanism.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 52 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 39 | - | v1 |
Category parameter description is adequate but does not explain what happens with 'all' category (it fetches from three separate categories). Clarify: 'all: Combines results from science, health, and technology.'
Tool depends on external API keys (NEWS_API_KEY, COHERE_API_KEY) managed via environment variables. Server-side secret injection is correct, but the tool description should acknowledge these dependencies or state that they are pre-configured.