Bookmark and link manager for AI agents with tags, categories, and search. Reads free, writes require Veyra.
Server has 6 tools with complete schemas and descriptions, but quality is uneven. All tools follow verb_noun naming (list_, get_, search_, save_, update_, delete_). Descriptions are present (avg ~90 chars) but lack actionable detail, they state WHAT but not WHEN or WHY. Parameters have types and descriptions, but several lack constraints (e.g., 'query' in search_bookmarks has no length/format guidance). No output schemas documented. Error handling is minimal, responses are JSON blobs without recovery guidance. Veyra token exposure as a parameter violates secret-injection pattern. No tool annotations (readOnlyHint, destructiveHint). Composition is sound: tools are single-purpose and chainable.
Delete a bookmark by ID. Requires Veyra commit mode (Class B — €0.02).
Retrieve a bookmark by ID. FREE — no token required.
List bookmarks, optionally filtered by tag or category. FREE — no token required.
Save a new bookmark. Requires Veyra commit mode (Class A — €0.005).
Search bookmarks by query (matches url, title, tags, category). FREE — no token required.
Update a bookmark's tags or category. Requires Veyra commit mode (Class A — €0.005).
Veyra token exposed as tool parameter (veyra_token in save_bookmark, update_bookmark, delete_bookmark). Credentials must never appear in parameters, they are logged in traces and prompt history. Use server-side secret injection via environment variables.
No output schemas documented. LLMs cannot plan downstream calls or extract fields without knowing response structure. Document what list_bookmarks, get_bookmark, search_bookmarks return (e.g., bookmark object fields, count, pagination).
Descriptions lack actionable context. 'List bookmarks, optionally filtered by tag or category' does not explain WHEN to call this vs search_bookmarks, or what structure is returned. Add: 'Returns all bookmarks or filtered subset. Use search_bookmarks for keyword matching.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Agents cannot distinguish safe reads from destructive writes without explicit hints. Mark list_bookmarks, get_bookmark, search_bookmarks as readOnly; delete_bookmark as destructive.
Error responses are unstructured JSON without recovery guidance. 'BookmarkNotFound' tells the agent nothing. Return: '{error: "BookmarkNotFound", id: "...", suggestion: "Call list_bookmarks() to see available IDs."}'