AI-powered RSS reader with preference learning, article scoring, and personalized digest generation. Integrates with FreshRSS, Cortex memory system, and OpenAI-compatible APIs.
YourRSS defines 18 tools with basic schemas and descriptions, but exhibits significant quality gaps. Tool names lack consistent verb-noun structure (e.g., 'recall', 'remember', 'forget' are non-standard; 'stats' lacks a verb). Descriptions are present but brief (avg ~60 chars, below the 194-char baseline). Parameter descriptions exist but lack detail on constraints, formats, and valid ranges. No output schemas are documented. Error handling is minimal, tools return raw API responses without recovery guidance. The Cortex integration exposes implementation details (agent_id, layer, source fields) that should be abstracted. FreshRSS tools require token parameters that should be injected server-side. No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels. Composition is reasonable (single responsibility per tool), but chaining is weak, responses don't consistently include IDs needed by downstream tools.
Authenticate with FreshRSS using ClientLogin API
Ensure Cortex agent exists, creating it if necessary
Concurrently fetch and parse RSS/Atom feeds from multiple sources
Delete a memory from the Cortex system by ID
Fetch articles from FreshRSS with filtering by time window, category, and read status
Retrieve list of RSS feed categories from FreshRSS
Retrieve list of subscribed RSS feeds from FreshRSS
Retrieve user preferences from Cortex memory across multiple categories
Tool names lack consistent verb-noun structure. 'recall', 'remember', 'forget', 'stats' are non-standard. LLMs expect get_*, list_*, create_*, search_*, update_*, delete_* patterns for intent inference.
Token/credential parameters exposed in tool signatures (FreshRSS 'token' param in getCategories, getFeeds, getArticles, unsubscribe, subscribe, authenticate). Credentials must be injected server-side via environment variables, not passed as parameters. Tokens in logs/traces leak secrets.
No output schemas documented. LLMs cannot plan downstream tool calls or extract required fields without knowing response structure. E.g., getArticles returns articles but schema for article objects is not specified.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | 2026-07-28+ | v2 |
Query Cortex memory system for stored memories matching a query
Record digest generation event in Cortex memory
Record that user disliked an article in Cortex memory
Record that user liked an article in Cortex memory
Store a memory in the Cortex system with category and importance
Score and rank articles using AI with optional preference-based boosting
Search the Cortex memory system for memories matching a query
Retrieve statistics from the Cortex memory system
Subscribe to an RSS feed in FreshRSS with optional category assignment
Unsubscribe from an RSS feed in FreshRSS
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. 'forget' is destructive, 'remember'/'recordLike' are writes, 'recall'/'search' are read-only. Annotations guide agent safety and retry logic.
Parameter descriptions lack constraint details. E.g., 'maxResults' has no min/max bounds; 'importance' lacks 0-1 range clarification; 'hours' and 'count' in getArticles lack bounds. LLMs pass invalid values without explicit constraints.