A privacy-first, zero-AI-cost 'chat with your documents' MCP assistant (CLI over stdio + FastAPI web app over Streamable HTTP).
Folio provides 7 tools with basic descriptions and input schemas, but falls short of production quality. Tool names follow verb_noun convention (list_roots, read_file, edit_file, search, answer, summarize), which is good. However, descriptions are minimal (10-50 chars for most tools), parameter descriptions are sparse or missing, and output schemas are not documented. The 'answer' and 'summarize' tools lack clarity on what they return and when to use them vs. similar tools. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present. Error handling is not visible in the provided code. The edit_file tool is marked WRITE but has no confirmation/dry-run pattern. Overall, definitions are skeletal, sufficient for basic operation but well below the 70+ bar for production recommendation.
Answer a question about the documents by retrieving relevant lines and providing a direct answer.
Edit or create a file within the granted roots.
List the contents of a directory (files and subdirectories) within the granted roots.
List the folders the user has granted access to.
Read the contents of a text file within the granted roots.
Search for a word or phrase across files in the granted roots.
Summarize the contents of a file.
Output schemas not documented. Tools like 'answer', 'summarize', and 'search' do not declare what fields they return, forcing LLMs to guess structure and preventing downstream tool chaining.
Ambiguous tool purposes. 'answer' and 'summarize' both process documents but lack clear distinction, when should an LLM choose one over the other? No guidance on prerequisites or return format.
Destructive tool (edit_file) lacks confirmation/dry-run pattern. No evidence of user confirmation before overwriting files, risking accidental data loss.
Parameter descriptions are minimal or absent. 'path' parameter in list_dir, read_file, and edit_file lacks detail on format (relative vs. absolute), encoding, or path traversal constraints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot infer which tools are safe to retry or which modify state without explicit hints.