An MCP server that fetches and aggregates daily news from Nostr relays and RSS feeds including Stacker News and Hacker News
Server has 8 tools with basic schemas and descriptions, but significant gaps limit production readiness. All tools have descriptions (10-50 chars, mostly short), and input schemas are present with type definitions. However, descriptions lack depth, most are single-sentence statements without context on WHEN to use the tool or what it returns. Parameter descriptions are minimal (e.g., 'Maximum number of notes to fetch'). No output schemas documented. Error handling is absent, tools throw raw errors without recovery guidance. The update_config tool accepts untyped objects, creating validation risk. No tool annotations (readOnlyHint/destructiveHint) despite clear risk profiles. Naming is verb-forward (fetch_*, get_, update_) but generic, 'fetch_trending_notes' vs 'fetch_news_notes' differ only in adjective, risking LLM confusion.
Fetch notes from a named relay group in the configuration
Fetch items from a named RSS feed in the configuration
Fetch items from Hacker News RSS feed by type
Fetch news notes from configured relays
Fetch items from Stacker News RSS feed
Fetch trending notes from configured relays
Get the current configuration
Update the configuration with new relay groups or RSS feeds
No output schemas documented. Tools return NostrEvent[] or FormattedItem[] but LLMs cannot see field structure, forcing them to guess what data is available for downstream operations.
Descriptions are too short (10-50 chars) and lack context. 'Fetch trending notes from configured relays' does not explain WHEN to use this vs fetch_news_notes, what fields are returned, or how to handle errors. Baseline for A+ tools is 50-200 chars with WHAT/WHEN/RETURN guidance.
update_config accepts untyped objects (relays: object, rssFeeds: object) with no schema constraints. LLMs cannot validate structure before calling; server will silently accept malformed config. Requires JSON Schema with properties and required fields.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 38 | 2026-07-28+ | v2 |
No error handling guidance. Tools throw raw errors (e.g., 'Relay group not found') without recovery hints. Pattern requires: 'Relay group not found. Available groups: trending, news, custom. Try fetch_custom_relay_notes with a valid group name.'
No tool annotations. update_config is destructive (WRITE risk) but lacks destructiveHint. fetch_* tools are read-only but lack readOnlyHint. Annotations enable agents to reason about side effects and retry safety.