MCP server that exposes the Karakeep API (a bookmark/list management system) through OpenAPI specification, with curated route filtering to expose bookmarks, lists, and tags endpoints while excluding admin, backup, and asset endpoints.
This server auto-generates tool definitions from an OpenAPI spec via FastMCP's RouteMap pattern. All 15 tools have identical, minimal descriptions ('...generated from OpenAPI spec') that provide zero context for LLM selection. No input schemas are visible in the source code, they are inferred from the OpenAPI spec at runtime, making validation impossible. Parameter descriptions, enums, and constraints are not documented. Output schemas are not declared. Error handling is absent. The server exposes destructive operations (DELETE) without confirmation or permission gates. This is a thin HTTP-to-MCP proxy with no LLM-optimized tooling.
Delete a bookmark (generated from OpenAPI spec)
Delete a list (generated from OpenAPI spec)
Delete a tag (generated from OpenAPI spec)
List all bookmarks (generated from OpenAPI spec)
Get a specific bookmark by ID (generated from OpenAPI spec)
List all lists (generated from OpenAPI spec)
Get a specific list by ID (generated from OpenAPI spec)
All 15 tools have identical, trivial descriptions ('...generated from OpenAPI spec'). Descriptions must be 10 - 1024 chars and explain WHAT the tool does, WHEN to use it, and any prerequisites. LLMs cannot select tools without meaningful descriptions.
No input schemas are visible in source code. Tool definitions are auto-generated from OpenAPI spec at runtime via FastMCP.from_openapi(). Cannot verify parameter types, enums, constraints, or descriptions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 26 | 2026-07-28+ | v2 |
List all tags (generated from OpenAPI spec)
Get a specific tag by ID (generated from OpenAPI spec)
Create a new bookmark (generated from OpenAPI spec)
Create a new list (generated from OpenAPI spec)
Create a new tag (generated from OpenAPI spec)
Update a bookmark (generated from OpenAPI spec)
Update a list (generated from OpenAPI spec)
Update a tag (generated from OpenAPI spec)
Five destructive tools (DELETE /bookmarks/{bookmarkId}, DELETE /lists/{listId}, DELETE /tags/{tagId}) have no confirmation step, dry-run option, or permission gate. Agents can delete data without safeguards.
No error handling guidance. If a tool fails, the LLM receives raw HTTP errors with no recovery hints.
No output schemas documented. LLMs cannot plan downstream tool calls or extract required fields (e.g., IDs for chaining).