Self-hosted Obsidian-style Markdown vault browser with optional web and MCP write access
Hatchdoor exposes 40 HTTP handlers as MCP tools but lacks critical definition quality. Tool names use inconsistent patterns (_handler suffix, no clear verb-noun structure). Descriptions are present but extremely terse (8-30 chars), far below the 50-200 char baseline for LLM optimization. Input schemas are either missing entirely or minimal (only vault_id visible for edit_vault; others inferred from handler names). No parameter descriptions, no output schemas documented, no error recovery guidance. The server appears to be a web/vault management API wrapped as MCP tools without proper tool design. Composition is poor: many tools operate on the same vault resource but lack clear differentiation (e.g., refresh_vault_handler vs sync_vault_handler vs retry_vault_handler). No evidence of idempotency, pagination, or structured output design.
Create a new vault
Demo mode read-only response
Disable a vault
Disconnect a vault
Edit vault configuration and settings
Enable a vault
Generate an MCP authentication token
Retrieve server settings
Input schemas missing or minimal for 39 of 40 tools. Only edit_vault shows a partial schema (vault_id). All others have no visible parameter definitions, violating the requirement that every tool must declare input types and descriptions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 36 | 2026-07-28+ | v2 |
Health check endpoint
List all vaults
Update server settings
Refresh a vault's index
Retry a failed vault operation
Reveal the MCP authentication token
Reveal the web authentication token
Serve single-page application index
Initialize server with no vaults
Synchronize a vault with its remote source
Stream vault collection events
Get vault note graph
Get recently modified notes in vault
Search notes in vault
Get vault statistics
Get vault note tree structure
Archive a note in vault
Retrieve asset from vault
Create a new note in vault
Delete a note from vault
Move a note within vault
Move and rename a note in vault
Download a note from vault
Retrieve a note from vault
Get links for a note in vault
Rename a note in vault
Resolve multiple wikilinks in vault
Resolve a wikilink in vault
Get detailed vault statistics
Update a note in vault
Upload an attachment to vault
Get write capabilities for vault
Descriptions are extremely terse (8-30 characters), far below the 50-200 character baseline for LLM optimization. Examples: 'Edit vault configuration and settings' (36 chars), 'Create a new vault' (18 chars), 'Health check endpoint' (20 chars). These lack context for tool selection and do not explain when or why to use each tool.
Tool naming inconsistency: 38 tools end with '_handler' suffix (e.g., create_vault_handler, list_vaults_handler), which is a code implementation detail, not an action verb. Only edit_vault and health_handler use cleaner names. The _handler suffix adds noise and violates verb_noun convention (should be create_vault, list_vaults, etc.).
No output schemas documented. LLMs cannot plan downstream tool calls or extract required fields (e.g., vault_id, note_id) without knowing what each tool returns. This breaks tool composition and forces agents to guess at response structure.
Ambiguous tool differentiation: refresh_vault_handler, sync_vault_handler, and retry_vault_handler all operate on vaults but lack descriptions explaining when to use each. Similarly, vault_scoped_move_note_handler and vault_scoped_move_rename_note_handler are unclear, can move_note also rename? This violates the single-responsibility principle and forces LLM guessing.