Turn any website into an RSS/JSON/Atom feed by monitoring for changes
FeedForge has well-structured tool definitions with complete input schemas and reasonable descriptions. All 5 tools are explicitly registered with proper JSON Schema. However, descriptions are generic and lack LLM-optimized guidance on WHEN to use each tool vs. alternatives. Parameter descriptions are minimal (e.g., 'The feed ID' lacks context on format or discovery). Output schemas are not documented, LLMs cannot predict response structure. Error handling is absent from descriptions. No tool annotations (readOnlyHint, destructiveHint). The create_feed tool modifies state but lacks confirmation/dry-run pattern. Overall: functional but below production baseline for agent-facing tools.
Immediately check a monitored feed for changes. Returns whether content changed and a diff if it did.
Monitor a URL for changes using a CSS selector. Returns a feed ID you can use to check for updates. The feed will be checked automatically at the specified interval.
One-shot extraction: fetch a URL and extract content using a CSS selector. No monitoring — just returns what's there now.
Show what changed in a feed since the last check. Returns the diff with added/removed content.
List all monitored feeds with their status and last check time.
Output schemas not documented. LLMs cannot predict response structure or plan downstream calls. E.g., create_feed returns {feed, initial_check, message} but this is not declared in the tool definition.
Descriptions lack LLM-optimized guidance. Generic text like 'The feed ID to check' does not explain format, discovery method, or when to use check_feed vs. get_changes. Should state: 'Feed ID returned by create_feed. Use to trigger immediate check; use get_changes to retrieve stored diffs.'
create_feed is a destructive/state-modifying tool but lacks confirmation or dry-run pattern. Agents may accidentally create duplicate feeds. Should support a 'dry_run' parameter or require explicit confirmation.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | <=2025-11-25 | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe reads from destructive writes without explicit hints. create_feed should have destructiveHint=true; check_feed and get_changes should have readOnlyHint=true.
Error handling not documented. No guidance on retryability, user-fixable errors, or recovery steps. E.g., 'Feed not found' response in get_changes is bare, should suggest 'Try list_feeds() to see available feeds.'