Persistent, semantic, evaluated news intelligence layer for AI agents — built on top of GNews.
gnews-agent has well-structured tool definitions with complete schemas and reasonable descriptions. All 5 tools have input schemas with typed parameters and descriptions. However, descriptions are terse (avg ~60 chars, below the 194-char baseline), lack WHEN-to-use guidance, and several tools have underdocumented dependencies. The monitor_topic tool is stateless (v1 limitation) and lacks confirmation patterns for webhook registration. Output schemas are not explicitly documented. Error handling is minimal, no recovery guidance or actionable error messages visible in the code.
Cited LLM brief on a topic. Requires LLM key.
Sentiment scoring for a topic. Requires LLM key.
Day-by-day article counts (keyless).
Register a topic monitor. Webhook URL is SSRF-validated.
Semantic search over locally-stored articles.
Descriptions lack WHEN-to-use guidance and prerequisites. 'Semantic search over locally-stored articles' does not explain when to use semantic vs keyword search, or that articles must be pre-ingested. LLMs cannot infer these distinctions.
get_brief and get_sentiment require an LLM key but do not document this as a prerequisite or error condition. If the key is missing, the tool will fail with no guidance on how to recover.
monitor_topic is stateless (v1 limitation per code comment). The description does not warn that webhook registration is acknowledged but polling is not yet implemented. Agents may expect immediate monitoring and be surprised when no webhooks fire.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Output schemas are not documented in tool descriptions. Agents cannot plan downstream calls or extract fields without trial-and-error. E.g., search_news returns 'list[dict[str, Any]]', what fields does each dict contain?
No error handling or recovery guidance visible. If search_news returns no results, or get_brief fails due to missing LLM key, the agent has no actionable next step.