Model Context Protocol server for wallabag read-it-later instances
wallabag-mcp has 17 well-named tools with consistent verb_noun patterns (wallabag_list_entries, wallabag_get_entry, wallabag_delete_entry). All tools have descriptions (10 - 200 chars, within baseline). Input schemas are present and typed for all tools. However, output schemas are NOT documented, tools return formatted strings rather than structured objects, forcing LLMs to parse unstructured text. Error handling is generic ('Error X: {exc}') without recovery guidance. No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels. Parameter descriptions are adequate but lack format constraints (e.g., 'page' has no min/max bounds stated in description). Missing idempotency guidance for write operations.
Save a URL as a wallabag entry.
Add one or more tags to a wallabag entry.
Mark a wallabag entry as archived/read.
Create an annotation on a wallabag entry.
Delete a wallabag annotation.
Delete a wallabag entry.
Delete a wallabag tag globally.
Output schemas not documented. All tools return formatted strings (via _json() and _format_entry_*() helpers) rather than structured JSON objects. LLMs cannot parse unstructured text reliably and must infer field names, types, and availability. This violates pattern:response-shaper and increases hallucination risk.
No tool annotations despite clear risk levels. Tools marked DESTRUCTIVE (wallabag_delete_entry, wallabag_delete_tag, wallabag_delete_annotation) and WRITE (wallabag_add_entry, wallabag_update_entry, etc.) lack readOnlyHint, destructiveHint, and idempotentHint annotations. LLMs cannot distinguish safe from dangerous operations without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Get a wallabag entry/article by id.
Verify wallabag API connectivity and authentication with a tiny read-only request.
List annotations for a wallabag entry.
List wallabag entries/articles with filters and pagination.
List tags known to the wallabag account.
Ask wallabag to refetch/reparse the original article URL.
Mark a wallabag entry as starred/favourite.
Mark a wallabag entry as unarchived/unread.
Remove starred/favourite state from a wallabag entry.
Update metadata/state for a wallabag entry.
Generic error handling without recovery guidance. All tools catch exceptions and return 'Error X: {exc}' strings. LLMs receive no actionable guidance on whether to retry, ask the user, or abandon the operation. Violates pattern:recovery-guide.
Parameter constraints not stated in descriptions. 'page' and 'per_page' lack min/max bounds in descriptions (only visible in code defaults). 'sort' and 'order' lack enum constraints. LLMs cannot validate inputs without explicit format/range documentation in descriptions.
No idempotency or confirmation guidance for destructive operations. wallabag_delete_entry and wallabag_delete_tag lack dry-run or confirmation steps. Agents cannot safely retry on ambiguous failures without risking duplicate deletions.