MCP server for managing and processing documents with tools for reading, editing, and formatting documents
DocumentMCP has critical definition gaps. Tool schemas are present but descriptions are minimal (10-50 chars, well below the 194-char baseline). The 'format' tool is registered as a prompt, not a tool, creating confusion. The 'summarize' tool appears twice with identical definitions but different file locations, suggesting incomplete refactoring. Parameter descriptions exist but are sparse. No output schemas documented. Error handling is minimal, tools raise ValueError without recovery guidance. The server lacks tool annotations (readOnlyHint, destructiveHint) despite having both read and write operations.
Edit a document by replacing a string in the documents content with a new string
Rewrites the contents of the document in Markdown format.
Read the contents of a document and return it as a string
Summarize text using Claude via sampling
Summarize text using Claude via sampling
format tool registered as @mcp.prompt() instead of @mcp.tool(), breaking tool discovery and composition. Prompts are not tools and cannot be chained by agents.
Duplicate 'summarize' tool definitions in mcp_server.py and sampling/server.py with identical schemas but different implementations. Unclear which is active; creates ambiguity for LLM tool selection.
Tool descriptions are 25 - 50 characters, far below the 194-char baseline. 'Edit a document by replacing a string...' lacks context on when to use it vs other tools, and does not state that it modifies state (required for command tools).
No output schemas documented. Agents cannot infer what fields to expect from tool responses, forcing them to guess or make follow-up calls. edit_document returns nothing; read_doc_contents returns a string but no schema declared.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 36 | <=2025-11-25 | v2 |
Error handling is minimal. Tools raise ValueError('Doc with id {doc_id} not found') without recovery guidance. No pattern like 'Try list_documents() to see available IDs' to guide the agent's next step.