An opinionated MCP server for capturing Claude conversations into an Obsidian vault.
Three tools with complete schemas and descriptions, but significant gaps in error handling, output documentation, and parameter validation. capture_to_vault has good input validation logic (word count, kebab-case, date format) but error messages are not actionable for LLM recovery. list_recent_captures and read_capture_convention lack output schema documentation. No tool annotations (readOnlyHint/destructiveHint). Parameter descriptions are adequate but could be more prescriptive about constraints. Missing guidance on when to call each tool and how they compose.
Write a capture-worthy thought into the user's Obsidian vault. Follows the convention defined at $WISSENSVAULT/conventions/capture-format.md.
List the most recently written captures. Useful for orienting the model on what has already been captured.
Return the current capture-format convention. Useful for the model to read the spec before calling capture_to_vault.
Output schemas not documented. list_recent_captures and read_capture_convention return strings but LLM cannot infer structure (markdown list vs raw text vs JSON). Agents cannot reliably parse or chain results.
Error messages are not actionable for LLM recovery. Examples: 'ERROR: source invalid', 'ERROR: inhalt has X words', 'ERROR: too many collisions'. No guidance on what to do next (retry, adjust input, call another tool).
Missing tool annotations. capture_to_vault is destructive (writes files) but has no destructiveHint. list_recent_captures and read_capture_convention are read-only but have no readOnlyHint. Agents cannot infer safety properties.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
Parameter constraints not fully formalized. 'tags' and 'verbindungen' accept arrays but no min/max length specified. 'topic' requires 2-4 words but no validation in schema, only in docstring. 'inhalt' word count (50-300) enforced at runtime but not declared in schema.
No guidance on tool composition or discovery. Docstrings do not explain when to call list_recent_captures before capture_to_vault, or when to call read_capture_convention. LLM must infer intent from names alone.