Give AI agents the right context, not your entire filesystem. A local, governed, metadata-only catalogue of the documents you already have — built for MCP.
Shelfmark has 5 tools with basic descriptions and minimal input schemas. Tool names follow verb_noun convention (corpus_stats, browse_folder, search_docs, get_file, search_emails), which is good. However, descriptions are terse (10-60 chars), lack context on WHEN to use each tool, and omit prerequisites. Most critically, input schemas are nearly empty: corpus_stats has {}, browse_folder has only 'prefix' with minimal description, search_docs/search_emails have only 'query'. No output schemas are documented. Error handling is absent, no guidance on what failures mean or how to recover. The server enforces governance (rights filtering, email sensitivity checks) but does not expose this in tool descriptions, leaving LLMs unaware of filtering behavior.
What is inside a folder: counts, sizes, facet mix.
What is here overall, plus an honest freshness line. Call first.
Full record for one file: rights, authorship, slide titles, identical copies, on-disk status.
Metadata full-text search with facet filters.
Full-text over an ingested .pst/.msg email archive (optional).
corpus_stats has empty input schema ({}). No parameters documented, no output schema defined. LLM cannot infer what this tool returns or how to use results downstream.
All tool descriptions are under 60 characters and lack WHEN/WHY context. E.g., 'What is here overall, plus an honest freshness line. Call first.' does not explain what 'freshness line' means or why it matters. Descriptions should be 50-200 chars with clear intent.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields. E.g., does get_file return a file_id for use in other tools? Does search_docs return a total_count for pagination?
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
Governance enforcement (rights='RESTRICTED' filtering, email sensitivity checks) is implemented server-side but not exposed in tool descriptions. LLMs are unaware that some results are silently filtered, leading to incorrect assumptions about completeness.
No error handling guidance. If search_docs returns no results, or if get_file encounters a missing file, the tool provides no recovery hint. Errors should guide LLMs on next steps (e.g., 'Try a broader query' or 'File not found; use browse_folder to list available files').