MCP server giving AI agents local file-integrity tools — hash, verify, compare (free), plus directory manifest & duplicate-finder (Pro). Files never leave the machine.
VaultHash has clear, well-structured tool definitions with proper Zod schemas and consistent error handling. All 5 tools have descriptions (10 - 50 chars) and input schemas with typed parameters. However, descriptions are terse (below the 50 - 200 char LLM-optimized baseline), parameter descriptions lack context about constraints and use cases, and output schemas are not formally documented. Tools follow verb_noun naming (file_hash, verify_hash, etc.) but descriptions do not explain WHEN to use each tool or dependencies between them. No tool annotations (readOnlyHint, idempotentHint) despite all being read-only. Error handling wraps exceptions but does not guide recovery or categorize errors.
Pro: hash every file under a directory (recursively) into a sha256sum-style manifest.
Compute the checksum (sha256 by default) of a local file.
Report whether two local files have identical content (by sha256).
Pro: find files with identical content (by hash) anywhere under a directory.
Check whether a local file matches an expected checksum.
Descriptions are terse (10 - 50 chars) and lack LLM-optimized context. 'Compute the checksum (sha256 by default) of a local file' does not explain WHEN to use file_hash vs verify_hash vs files_compare, or what the output format is.
Output schemas are not documented. Tools return text strings (e.g., 'MATCH ✅' or 'sha256 <hash>'), but LLMs cannot plan downstream calls or extract structured data without knowing the response format.
No tool annotations despite all tools being read-only. Missing readOnlyHint would help agents understand these tools are safe to call without side effects.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
Parameter 'algo' lacks description context. The enum constraint is present, but LLMs need guidance on when to use sha256 vs sha1 vs sha512 vs md5, and what the default behavior is.
Error handling returns raw exception messages ('Error: ' + e.message) without recovery guidance. An LLM encountering 'Error: ENOENT' has no actionable next step.