MCP server for managing and editing documents with support for reading, editing, and formatting documents
DocumentMCP has 2 tools with basic definitions. Both tools have descriptions and input schemas, but descriptions are minimal (14-36 chars vs baseline 194 chars), parameters lack guidance on expected formats/constraints, and there is no documented output schema. The edit_document tool modifies state but the description does not explicitly say so. No error recovery guidance. Naming follows verb_noun convention but descriptions are too terse to help LLM selection. read_document is read-only; edit_document is destructive but lacks confirmation pattern.
Edit the a document by replacing a string in the document's content with a new string
Read the contents of a document and return them as a string
Descriptions are too short (14-36 chars) to guide LLM tool selection. Baseline is 194 chars. 'Read the contents of a document and return them as a string' and 'Edit the a document...' lack context on when to use, what to expect, and prerequisites.
edit_document modifies state (destructive) but description does not explicitly warn of this or mention idempotence/side effects. LLM cannot determine if retry is safe.
No output schema documented for either tool. LLMs cannot know what fields to expect or how to chain results to downstream tools.
Parameter descriptions lack constraints and format guidance. 'doc_id: Id of the document to read' does not tell LLM valid formats, length, or examples. 'old_string' and 'new_string' lack guidance on escaping, newlines, or maximum length.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 44 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 43 | - | v1 |
Error handling is missing recovery guidance. ValueError 'Doc with id ... not found' will not help LLM know to call list_docs() first or try a different ID.
edit_document should require confirmation before execution (dry-run or confirm step) to prevent accidental data loss.
No error categorization (retryable vs user-fixable vs fatal). LLM cannot determine next action on failure.