Server has 13 tools with consistent naming (verb_noun pattern) and descriptions present for all. However, parameter descriptions are often generic or incomplete. Input schemas are visible and mostly well-typed, but output schemas are not documented, tools return JSON strings without declared structure. Error handling is minimal (generic try-catch with string messages). No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels. Composition is sound: tools are single-responsibility and chainable via IDs. Naming is clear and action-oriented, but parameter constraints (enums, ranges) are largely absent.
Add a bookmark to Shiori.
Delete one Shiori bookmark by id.
Delete one or more bookmarks by id.
Get one Shiori bookmark by id from the bookmark list.
Get one Shiori bookmark by exact URL from the bookmark list.
Verify Shiori API connectivity and authentication with a small read-only request.
Output schemas not documented. Tools return JSON strings without declared structure. LLMs cannot plan downstream calls or extract fields reliably.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint) despite clear risk levels. Destructive tools (delete_bookmark, delete_bookmarks) lack confirmation or dry-run support.
Parameter constraints missing. No enums for tag names, no min/max for limit/offset, no regex patterns. LLMs can pass invalid values (e.g. limit=999999).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
List Shiori user accounts visible to the authenticated session.
List Shiori bookmarks from the default Shiori bookmarks endpoint.
List Shiori tags and bookmark counts.
Rename a Shiori tag.
Search Shiori bookmarks client-side by text and/or tag.
Update a Shiori bookmark using the full bookmark JSON object expected by the legacy API.
Patch common bookmark fields by fetching the current bookmark, modifying it, then sending Shiori's full update payload.
Error handling is generic. All tools catch exceptions and return string messages like 'Error adding Shiori bookmark: {exc}'. No recovery guidance or error classification.
shiori_update_bookmark requires raw JSON string input. No validation that JSON is valid or contains required 'id' field until runtime. LLMs may pass malformed JSON.