An AI automation that collects information from web sources and produces a digest, built as an MCP server plus a tool-using Claude agent.
Server has 6 tools with complete input schemas and descriptions. Naming follows verb_noun convention (fetch_*, save_*, list_*, search_). Descriptions are present (avg ~80 chars) but lack actionable context for LLM selection. Parameters have types but many lack descriptions (e.g., max_chars, limit, wait_until). Output schemas are not documented. Error handling is minimal, tools return error dicts but lack recovery guidance. No tool annotations (readOnlyHint/destructiveHint). Security: no secrets exposed as params, but no audit logging or permission gates.
Parse an RSS or Atom feed and return its recent entries.
Fetch a page with a headless browser so JavaScript-rendered content is included.
Fetch a web page and return its title, cleaned text, and outbound links.
List the most recently stored items.
Save a notable item to the store. Deduplicated on URL.
Search stored items by keyword in title or summary.
Output schemas not documented. LLMs cannot predict response structure (e.g., fetch_url returns {url, status, title, text, links} but this is not declared in tool definition). Agents must infer structure from examples, increasing hallucination risk.
Parameter descriptions missing or incomplete. 'max_chars' (fetch_url, fetch_rendered) lacks description of what happens when text exceeds limit. 'limit' (list_items, search_items, fetch_feed) has no description. 'wait_until' (fetch_rendered) undocumented. LLMs cannot reason about parameter effects.
No tool annotations. save_item is destructive (writes to store) but lacks destructiveHint. fetch_* tools are read-only but lack readOnlyHint. Agents cannot distinguish safe from unsafe operations without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2026-07-28+ | v2 |
Error handling lacks recovery guidance. fetch_rendered returns {'error': 'playwright not installed...'} but does not suggest next steps. fetch_url/fetch_feed may fail on network errors but return no actionable guidance. Agents cannot self-correct.
No pagination support. list_items and search_items accept 'limit' but return no cursor/offset for continuation. Large result sets risk context window exhaustion. No total count returned to guide agent planning.