MCP server for interacting with Raindrop.io bookmarks and collections
The server implements 8 well-named tools with consistent verb_noun conventions (search_bookmarks, get_bookmark, create_bookmark, etc.). All tools have input schemas visible in handler_test.go with typed parameters and descriptions. However, descriptions are uniformly in Japanese and very brief (10-20 chars translated), falling below the 50-200 char LLM-optimized baseline. Parameter descriptions are present but minimal. Output schemas are not explicitly documented, only inferred from test code showing JSON wrapper responses. Error handling is basic (returning error text) but lacks recovery guidance. No pagination limits documented for search_bookmarks despite accepting perpage parameter. Tool composition is sound, 1:1 responsibility mapping with appropriate risk classifications.
新しいブックマークを作成する
新しいコレクションを作成する
ブックマークを削除する
IDを指定してブックマークの詳細を取得する
Raindropのコレクション一覧を取得する(ルート+子コレクション)
ブックマークを検索する
既存のブックマークを更新する
All tool descriptions are in Japanese (e.g. 'ブックマークを検索する') and extremely brief (10-20 characters). LLM selection accuracy degrades with non-English, undersized descriptions. Baseline effective description length is 50-200 chars.
Output schemas are not explicitly documented in tool definitions. Tests show JSON wrapper responses (e.g. '{"bookmarks": [...]}' for search_bookmarks), but the LLM cannot predict response structure from the tool definition alone. All tools should declare their return type and fields.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 51 | 2026-07-28+ | v2 |
既存のコレクションを更新する
search_bookmarks accepts 'perpage' parameter (1-50, default 25) but no pagination limit is enforced or documented in the tool description. No guidance on max results or when to paginate.
Error responses contain only raw error text (e.g. 'api error', 'not found') without recovery guidance. Tests show errors are returned as TextContent, but LLM receives no hint whether to retry, ask the user, or abort. Pattern requires: classify as retryable/user-fixable/fatal and suggest next steps.
delete_bookmark is a destructive operation with no confirmation or dry-run step. Agents make mistakes, irreversible operations should support a confirmation pattern or require explicit intent.
Parameter descriptions are minimal and many lack constraint details. E.g. 'sort' parameter lists enum values ('−created', '−lastUpdate', 'title', '−title', 'domain') in description but not formally as JSON Schema enum constraint. Formal enums are machine-parseable and prevent LLM hallucination.