Convert documents to Markdown from the CLI, or over MCP without spending tokens on the document.
Single tool with well-structured schema and comprehensive description. Tool name 'convert_to_markdown' follows verb_noun pattern. Input schema properly typed with descriptions. Output schema (ConvertResult) is fully documented with 10 typed fields. Description is detailed (450+ chars) and explains token-thrift design, caching behavior, and usage patterns. Tool annotations present (read_only_hint, idempotent_hint, open_world_hint). Main gaps: no enum constraints on 'source' parameter (accepts any string), no explicit error recovery guidance in description, and parameter descriptions could be more prescriptive about format/constraints.
Convert a document (PDF, Word, PowerPoint, Excel, HTML, EPUB, images, audio, and more) to Markdown. Accepts a local file path or an http(s) URL. IMPORTANT: this returns a FILE PATH, not the document text. The converted Markdown is written to disk and this tool reports where it is, how big it is, and its heading outline with line numbers. Read the file yourself with your own file-reading tool. To stay cheap, do not read the whole file unless est_tokens is small. Use the outline's line numbers to read only the sections relevant to the task (e.g. read from the line of the heading you want up to the line of the next one), or grep the file for a term. Repeat calls on the same document are served from cache for free; pass force=true to reconvert.
Parameter 'source' lacks format constraints. Description says 'local file path or http(s) URL' but no regex pattern, length limits, or validation rules are documented. LLMs may pass invalid paths or malformed URLs.
Error handling description missing. Tool raises ToolError for ConversionError but description does not explain what errors are possible (e.g., 'file not found', 'unsupported format', 'network timeout') or how to recover. Agents cannot plan fallbacks.
No pagination or result limits documented. While ConvertResult is a single object (not a list), the outline field returns a list of HeadingEntry with no stated maximum. Large documents could produce very large outlines, bloating context.
STDIO transport only. Server is not remotely accessible and cannot be used by hosted MCP clients. This is a hard architectural limitation, not a code quality issue, but it severely restricts deployment scenarios.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |