MCP server for managing and editing documents with support for reading, editing, and formatting documents through tools, resources, and prompts
DocumentMCP has two tools with basic schemas and descriptions, but significant gaps limit production readiness. Both tools have descriptions (10-20 chars baseline met), and input schemas are present with typed parameters. However, descriptions lack depth on WHEN to use each tool, error recovery guidance, and parameter constraints. No output schema documentation. Error handling exists but lacks actionable recovery hints. Tool names follow verb_noun convention (read_*, edit_*) but descriptions don't explain state-modifying consequences or prerequisites. Missing parameter descriptions for some fields and no enum constraints despite constrained inputs (doc_id is a fixed set).
Edit a document by replacing a string in the document's contents with a new string
Read the contents of a document and return it as a string.
No output schema documentation. LLMs cannot plan downstream calls or extract structured data from tool responses. read_doc_contents returns a string, edit_document returns a string, but what fields, types, or structure should the agent expect?
Parameter 'doc_id' accepts a fixed set of values (deposition.md, report.pdf, etc.) but is not declared as an enum. Free-form string invites hallucinated doc IDs. Should be enum: ['deposition.md', 'report.pdf', 'financials.docx', 'outlook.pdf', 'plan.md', 'spec.txt'].
edit_document description does not state that it modifies state. Agents need to know this is a destructive operation with side effects. Should include: 'This tool modifies the document permanently. Use with caution.'
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | <=2025-11-25 | v2 |
Error messages are generic ('Doc with id X not found', 'X not found in Y'). Should include recovery hints: 'Doc not found. Available docs: [list]. Try read_doc_contents with one of these IDs.'
Parameter descriptions are minimal. 'old_string' and 'new_string' lack guidance on exact matching, whitespace sensitivity, or what happens if the string appears multiple times. Should state: 'Must match exactly, including whitespace. If the string appears multiple times, only the first occurrence is replaced.'