Local MCP server for comparing Markdown, text, and converted documents (DOCX, PDF, PPTX, XLSX, EPUB) — JSON, unified, and Markdown diff outputs
Two tools with complete input schemas and descriptions. Tool names follow verb_noun pattern (diff_documents, convert_document). Descriptions are adequate (100-150 chars) but lack actionable context for LLM selection. Parameters are well-typed with enums and descriptions, but output schemas are not documented. Error handling returns structured error objects with codes and messages, which is good, but lacks recovery guidance. Security is strong (local files, path validation, size caps). No tool annotations (readOnlyHint, etc.) present.
Convert a document (DOCX, PDF, PPTX, XLSX, EPUB, etc.) to Markdown or plain text.
Compare two documents (Markdown, text, or convertible formats) and return diffs in JSON, unified, or Markdown format.
Output schemas not documented. LLMs cannot infer what fields to expect from diff_documents (JSON, unified, markdown formats) or convert_document responses. This forces agents to guess at response structure.
Tool descriptions lack actionable context. 'Compare two documents' does not explain WHEN to use diff_documents vs convert_document, or what the three output formats are best for. LLMs need selection guidance.
Error responses return structured error codes (INVALID_PATH, FILE_TOO_LARGE, etc.) but lack recovery guidance. 'FILE_TOO_LARGE' tells the agent nothing about what to do next, should it split the file, compress it, or ask the user?
No tool annotations present. diff_documents and convert_document are read-only operations, but readOnlyHint is not declared. This prevents clients from optimizing caching or safety policies.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
normalize_opts parameter in diff_documents accepts a free-form object with undocumented keys (trim_trailing_whitespace, ignore_frontmatter, etc.). LLMs cannot infer valid keys or their types without explicit schema or enum constraints.