Each says that supplying an output path writes to disk, creates parent directories and overwrites what is already there, and that omitting it returns the content as a string instead — with the binary formats saying outright that a path should almost always be given. generate_html is the deliberate exception, marked read-only with no file I/O. The lossy conversions are labelled rather than left to be discovered: convert_to_txt calls itself destructive and says formatting is permanently lost, and the table-only formats state that non-table content is ignored and that an input with no tables yields an empty result. The two Chromium-backed tools are the only ones with an external dependency, and they name the environment variable that points at the browser.
A Markdown conversion and repair toolkit of 34 tools: document and data formats, wiki and chat markups, structural extraction, linting and repair, and a batch converter that runs many documents into many formats in one call.
- Document formats: convert_to_docx, convert_to_pdf and convert_to_image, all binary and best written to a path, plus convert_to_latex with KaTeX math passed through as native LaTeX, convert_to_rtf, convert_to_html as a complete styled document, and convert_to_txt, which strips formatting outright.
- Data formats: convert_to_csv and convert_to_xlsx, which read GFM pipe-tables and ignore everything else, and convert_to_json and convert_to_xml, which turn the document into a structured tree of sections, headings, paragraphs, lists, code blocks and tables.
- Markup for wherever the text is actually going: Slack mrkdwn, Discord, JIRA wiki markup, Confluence with its info and note panels, AsciiDoc, reStructuredText, MediaWiki, BBCode, Textile, Org Mode, and email-optimised HTML with styles inlined for Outlook, Gmail and Apple Mail.
- Cleanup before conversion: repair_markdown for unclosed code fences, broken tables, stray emphasis markers, missing heading spaces and broken links; lint_markdown, which returns a JSON array of issues with line, column, severity, rule name and a fixable flag; and harmonize_markdown, which normalises headers, list markers, code fences and indentation without changing meaning.
- Reading the document rather than converting it: analyze_document with line, word, character, paragraph and sentence counts and an estimated reading time, extract_structure for the heading outline with code and link summaries, extract_code_blocks with language and line numbers, extract_links with type and line, and generate_toc to a chosen depth.
- html_to_markdown for the return trip, and generate_html, which returns a self-contained document as a string and writes nothing to disk.
- batch_convert, which runs many documents into many formats in a single call, processing each item independently so one failure does not stop the rest.
An output path for the binary formats — DOCX, PDF, PNG and XLSX — since the tools themselves say a path should almost always be provided. A locally installed Chrome, Edge or Chromium for convert_to_pdf and convert_to_image, which render through headless Chromium; PUPPETEER_EXECUTABLE_PATH overrides the auto-detection. A writable destination, since the converters create parent directories and overwrite existing files.
One command — npx -y @xjtlumedia/markdown-mcp-server
