Skip to main content
Glama

AI Answer Copier — MCP-Powered Multi-Format Exporter

Turn "AI Noise" into "Classroom Ready" in 5 Seconds.

npm version License: MIT MCP Registry Glama GitHub

A Model Context Protocol (MCP) server that gives your AI assistant the power to convert Markdown into 22 professional document formats, batch-convert multiple documents across 22 formats in one call, analyze documents, repair broken Markdown, and convert across platforms — all without leaving your AI chat.

npm: https://www.npmjs.com/package/@xjtlumedia/markdown-mcp-server


Why This Exists

You asked an AI to write 20 questions. It delivered. But now you're stuck:

Pain Point

Manual Workflow

With AI Answer Copier

Extracting Q&A

10–15 min copying each line

2 seconds (auto-detect)

Formatting Math

20 min fixing broken symbols

Instant (KaTeX support)

LMS Upload

15 min manual CSV entry

1-click export

Total Prep Time

~45–60 minutes

< 1 minute

Generating content takes seconds. Formatting it for the real world takes an hour. This MCP server eliminates that gap entirely.


Related MCP server: MarkItDown MCP Server

Live Demo

Online web version (no install needed): ai-answer-copier.vercel.app

Test MCP tool in inspector:

Use actual MCP instance:


All 34 MCP Tools

Document Conversion Tools (15)

#

Tool

Output

Description

1

harmonize_markdown

.md

Standardize and normalize Markdown syntax (ATX headers, - list markers, fenced code blocks) without changing meaning

2

convert_to_txt

.txt

Strip all formatting to produce plain text

3

convert_to_html

.html

Full styled HTML document with GFM tables, KaTeX math, and embedded stylesheet

4

generate_html

HTML string

Generate self-contained HTML with all styles inlined (read-only, no file I/O)

5

convert_to_pdf

.pdf

Print-ready PDF via headless Chromium with full KaTeX math and syntax highlighting

6

convert_to_docx

.docx

Microsoft Word document with styled headings, lists, and code formatting

7

convert_to_latex

.tex

LaTeX source code with \section, list environments, and native math pass-through

8

convert_to_rtf

.rtf

Rich Text Format for legacy word processors and email clients

9

convert_to_csv

.csv

Extract GFM pipe-tables to comma-separated values

10

convert_to_json

.json

Structured JSON representation with sections, headings, lists, code blocks, and tables

11

convert_to_xml

.xml

Well-formed XML with <?xml?> declaration and structured elements

12

convert_to_xlsx

.xlsx

Excel spreadsheet — each Markdown table becomes a sheet

13

convert_to_image

.png

Full-page PNG screenshot via headless Chromium

14

convert_to_md

.md

Export Markdown to file, optionally harmonizing formatting first (harmonize=true)

15

convert_to_email_html

.html

Email-optimized HTML with all styles inlined, compatible with Outlook, Gmail, Apple Mail

Platform Converter Tools (10)

#

Tool

Target Platform

Description

16

convert_to_slack

Slack

mrkdwn format — bold as *, links as <url|text>, headers as bold text

17

convert_to_discord

Discord

Styled bold/underline headers, preserved code blocks

18

convert_to_jira

JIRA

Wiki markup — h1./h2., {code} blocks, [text|url] links

19

convert_to_confluence

Confluence

Wiki markup with {info}, {note} panels and {code:language=x} syntax

20

convert_to_asciidoc

AsciiDoc

= headers, ---- code blocks, url[text] links, image:: directives

21

convert_to_rst

reStructuredText

Underlined headers, .. code-block:: directives, RST reference syntax

22

convert_to_mediawiki

MediaWiki

== headers, '''bold''', <syntaxhighlight> tags, {\ wikitable

23

convert_to_bbcode

BBCode

[b], [i], [code], [url], [img] tags for phpBB/vBulletin forums

24

convert_to_textile

Textile

Markup for Redmine, Basecamp, and CMS platforms

25

convert_to_orgmode

Emacs Org Mode

* headers, #+BEGIN_SRC/#+END_SRC code, [[url][text]] links

Import Tools (1)

#

Tool

Description

26

html_to_markdown

Convert HTML content (full document or fragment) back to Markdown

Repair & Lint Tools (2)

#

Tool

Description

27

repair_markdown

Fix broken Markdown from LLM output or copy-paste — unclosed code fences, broken tables, stray emphasis markers, missing heading spaces, broken links

28

lint_markdown

Lint and report issues as JSON array with line number, severity, rule name, message, and fixable flag

Document Analysis Tools (5)

#

Tool

Description

29

extract_code_blocks

Extract all code blocks with language, content, and start/end line numbers

30

extract_links

Extract all links and images with text, URL, line number, and type (inline, reference, image, autolink)

31

generate_toc

Generate Markdown Table of Contents from headings with configurable max_depth (1–6)

32

analyze_document

Comprehensive statistics — line/word/character/paragraph/sentence counts, heading/code/table/link/image counts, estimated reading time

33

extract_structure

Bird's-eye document architecture — statistics, heading outline, code block summary, link summary

Batch Conversion (1)

#

Tool

Input

Description

34

batch_convert

items[] × formats[]

Batch-convert multiple Markdown documents to 22 formats in one call. Error-isolated per item+format. Optional output_dir for file output. Formats: txt, csv, json, xml, xlsx, latex, rtf, docx, pdf, html, md, email, slack, discord, jira, confluence, asciidoc, rst, mediawiki, bbcode, textile, orgmode


6 Built-in Prompts

Pre-configured prompt templates that orchestrate multiple tools:

Prompt

Description

convert-document

Convert Markdown to any supported format (PDF, DOCX, HTML, LaTeX, CSV, JSON, XML, XLSX, RTF, PNG, TXT, MD)

extract-tables

Extract all tables from Markdown and export as CSV or XLSX

format-for-sharing

Harmonize formatting, then convert to both PDF and HTML for distribution

analyze-and-repair

Lint → Repair → Re-lint to confirm all issues resolved

convert-for-platform

Convert Markdown to any platform format (Slack, Discord, JIRA, Confluence, AsciiDoc, RST, MediaWiki, BBCode, Textile, Org Mode)

document-overview

Full overview — statistics, TOC, code blocks, and links in one report


2 Resources

Resource URI

Description

markdown-formatter://supported-formats

Complete JSON list of all 23+ output formats with tool names and types

markdown-formatter://conversion-guide

Guide for choosing the right output format based on your use case


Quick Start

No installation needed — just configure your MCP client:

{
  "mcpServers": {
    "ai-answer-copier": {
      "command": "npx",
      "args": ["-y", "@xjtlumedia/markdown-mcp-server"]
    }
  }
}

Install Globally

npm install -g @xjtlumedia/markdown-mcp-server

Then configure:

{
  "mcpServers": {
    "ai-answer-copier": {
      "command": "markdown-mcp-server"
    }
  }
}

Configuration by AI Client

🔌 Claude Desktop

Edit %APPDATA%\Claude\claude_desktop_config.json (Windows) or ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "ai-answer-copier": {
      "command": "npx",
      "args": ["-y", "@xjtlumedia/markdown-mcp-server"]
    }
  }
}

Restart Claude Desktop. You'll see a 🔌 icon — all 34 tools are now available.

VS Code (GitHub Copilot)

Add to .vscode/mcp.json or VS Code settings:

{
  "servers": {
    "ai-answer-copier": {
      "command": "npx",
      "args": ["-y", "@xjtlumedia/markdown-mcp-server"]
    }
  }
}

Cursor / Windsurf / Any MCP Client

Use the same npx command pattern above in your client's MCP configuration.

DIY version (local build)

{
  "mcpServers": {
    "markdown-formatter": {
      "command": "node",
      "args": [
        "YOUR_PATH_TO_PROJECT/mcp-server/dist/mcp-server/src/index.js"
      ]
    }
  }
}

Replace YOUR_PATH_TO_PROJECT with the absolute path to this folder.

HTTP Mode (Vercel)

A hosted HTTP endpoint is available for browser-based and remote integrations:

https://ai-answer-copier.vercel.app/api/mcp

Test with MCP Inspector:

npx @modelcontextprotocol/inspector https://ai-answer-copier.vercel.app/api/mcp

Usage Examples

Once connected, just talk to your AI naturally:

"Batch-convert 5 markdown documents into DOCX, PDF, and HTML simultaneously and save them to my Downloads folder." → AI uses batch_convert with items[] and formats[]

"Generate 10 physics questions about Newton's Laws and export them as a Kahoot CSV." → AI uses convert_to_csv

"Convert this markdown into a Word document and save it to my Desktop." → AI calls convert_to_docx with output_path

"Take these lecture notes and produce a print-ready PDF." → AI calls convert_to_pdf with Puppeteer rendering, KaTeX math, and syntax highlighting

"Turn this into a Moodle-compatible XML quiz bank." → AI calls convert_to_xml

"Format this for Slack and send it to the team channel." → AI calls convert_to_slack

"Check this Markdown for issues and fix them." → AI calls lint_markdown then repair_markdown

"Give me an overview of this document — word count, structure, all links." → AI chains analyze_document + generate_toc + extract_links


Features

22 Output Formats

Export to PDF, DOCX, HTML, LaTeX, CSV, JSON, XML, XLSX, RTF, PNG, TXT, Markdown — plus Slack, Discord, JIRA, Confluence, AsciiDoc, RST, MediaWiki, BBCode, Textile, Org Mode, and Email HTML.

Batch Conversion

Convert multiple Markdown documents to multiple formats in one batch_convert call. Errors are isolated per item+format so one failure never blocks the rest.

Math & Code as First-Class Citizens

Full support for KaTeX math expressions and syntax-highlighted code blocks. Your $\sqrt{x^2 + y^2}$ and Python snippets survive every conversion perfectly.

Smart Binary Handling

Binary formats (PDF, DOCX, XLSX, PNG) don't dump raw base64 into chat. The server returns actionable guidance so the AI knows to save to a file path.

Document Analysis & Repair

Lint Markdown, auto-repair broken formatting, extract code blocks and links, generate Table of Contents, and get comprehensive document statistics — all without leaving the chat.

GFM (GitHub Flavored Markdown)

Tables, task lists, strikethrough, autolinks — all parsed correctly via remark-gfm.

Puppeteer-Powered PDF & PNG

PDF and image exports use headless Chromium for pixel-perfect rendering with full CSS styling, KaTeX math, syntax highlighting, and print-optimized layouts.

Self-Contained

Zero runtime dependencies on external APIs. Everything runs locally. Your data never leaves your computer.


Architecture

┌─────────────────────────┐
│  AI Client               │
│  (Claude, Copilot,      │
│   Cursor, Windsurf)     │
└──────────┬──────────────┘
           │ MCP Protocol (stdio / HTTP)
           ▼
┌─────────────────────────┐
│  AI Answer Copier        │
│  MCP Server (34 tools)   │
│                          │
│  ┌── Conversion ────────┐│
│  │ remark/rehype, docx, ││
│  │ puppeteer, xlsx,     ││
│  │ CSV/JSON/XML/RTF/    ││
│  │ LaTeX/TXT parsers    ││
│  └──────────────────────┘│
│  ┌── Platform ──────────┐│
│  │ Slack, Discord, JIRA,││
│  │ Confluence, AsciiDoc,││
│  │ RST, MediaWiki,      ││
│  │ BBCode, Textile, Org ││
│  └──────────────────────┘│
│  ┌── Batch ─────────────┐│
│  │ items[] × formats[]  ││
│  │ 22 formats, isolated ││
│  └──────────────────────┘│
│  ┌── Analysis ──────────┐│
│  │ Code blocks, links,  ││
│  │ TOC, stats, structure││
│  └──────────────────────┘│
│  ┌── Repair ────────────┐│
│  │ Lint, auto-repair    ││
│  └──────────────────────┘│
│  ┌── Import ────────────┐│
│  │ HTML → Markdown      ││
│  └──────────────────────┘│
└─────────────────────────┘

What's New in v2.1.0

This release hardens both the local (npx) and remote Vercel MCP transports with 8 logic fixes:

#

Fix

Area

1

Browser not closed on errortry/finally around browser.close() so Chromium never leaks on PDF/PNG failures

Both transports

2

generate_html missing KaTeX CSS — restored viewport meta, KaTeX stylesheet (SRI hash), and full inline styles so math renders correctly

Vercel /api/mcp

3

convert_to_html incomplete styles — added SRI integrity hash, table borders, and blockquote styling to match local output

Vercel /api/mcp

4

Session map memory leakinstances Map now evicts stale sessions after 30 minutes (SESSION_TTL_MS); McpInstance tracks lastUsed

Vercel /api/mcp

5

keepAlive interval not cleared on normal SSE stream end — added inner try/finally that always calls clearInterval(keepAlive)

Vercel /api/mcp

6

_initialized SDK-internal access — replaced bare @ts-ignore with a typeof guard so the server fails gracefully after SDK upgrades

Vercel /api/mcp

7

No input size validation — added 1 GB hard limit (MAX_INPUT_BYTES) to all tool calls to prevent runaway CPU/memory on oversized payloads

Both transports

8

DELETE method creates new session — handler now returns 200 immediately on DELETE, preventing phantom session creation

Vercel /api/mcp


Known Limitations

  • PDF / PNG require local Chromiumconvert_to_pdf and convert_to_image launch a headless browser. This works fine with npx but is unavailable on Vercel's free tier (no bundled Chromium). Set the PUPPETEER_EXECUTABLE_PATH environment variable to point to your local Chrome if auto-detection fails.

  • Chromium version on Vercel — the remote endpoint uses @sparticuz/chromium-min with a pinned tar at v131.0.1. If Vercel bumps the Lambda runtime you may need to update the CHROMIUM_TAR_URL env var.

  • 1 MB input limit — all tool calls reject inputs larger than 1 MB. Split large documents into sections before converting.

  • Session TTL (remote only) — sessions on the Vercel endpoint expire after 30 minutes of inactivity. Long-running stateful workflows should issue periodic keep-alive calls.


Development

# Clone the repository
git clone https://github.com/XJTLUmedia/AI_answer_copier.git

# Web app
npm install
npm run dev

# MCP server
cd mcp-server
npm install
npm run dev     # hot reload
npm run build   # production build
npm run inspector  # test with MCP Inspector

Tech Stack

Component

Technology

MCP SDK

@modelcontextprotocol/sdk

Markdown Parser

unified + remark + rehype

Math Rendering

remark-math + rehype-katex

Word Export

docx

Excel Export

xlsx

PDF/PNG Export

puppeteer

Schema Validation

zod

Runtime

Node.js (ESM)


Contributing

We welcome contributions! Whether it's a new export format, a bug fix, or documentation improvement — please consider making a pull request.

  1. Fork the repository

  2. Create a feature branch

  3. Submit a pull request


License

MIT © XJTLUmedia


Available Tools

33 tools
analyze_documentA
Read-onlyIdempotent

Analyze a Markdown document and return comprehensive statistics. Returns JSON with: line/word/character/paragraph/sentence counts, heading/code block/table/link/image/list/blockquote counts, and estimated reading time in minutes.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe Markdown text to analyze.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Strong supplemental context: while annotations confirm read-only/idempotent safety, the description details the specific JSON structure returned (listing 13+ distinct metrics like heading counts, code block counts, reading time). This compensates for the missing output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Optimal structure: Two sentences, front-loaded with action ('Analyze...'), followed by output specification. Zero redundancy—every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete for the tool's complexity: despite lacking an output schema, the description enumerates return values in detail. With rich annotations (4 boolean hints) and 100% parameter coverage, this adequately equips the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% ('markdown' parameter fully described), so the description does not need to add parameter semantics. Baseline 3 is appropriate as the schema carries the semantic burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Excellent specificity: 'Analyze' (verb) + 'Markdown document' (resource) + 'return comprehensive statistics' (output). Clearly distinguishes from conversion siblings (convert_to_*) and extraction siblings (extract_*) by focusing on statistical analysis rather than format transformation or content isolation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implied usage is clear (analysis vs conversion), but lacks explicit guidance on when to choose this over extraction tools like extract_code_blocks or extract_links, or generator tools like generate_toc which overlap conceptually with document analysis.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_to_asciidocA
Idempotent

Convert Markdown to AsciiDoc format. Transforms headers to = syntax, code blocks to ---- delimited blocks, links to url[text] syntax, and images to image::url[alt] directives.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path.
output_pathNoOptional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover idempotency and safety (readOnlyHint=false, destructiveHint=false). The description adds valuable transformation semantics: specific mappings for headers, code blocks, links, and images. It does not explicitly mention file I/O behavior, though output_path schema covers this.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences total. First establishes purpose; second provides concrete syntax examples. Zero filler content. Every word earns its place by conveying AsciiDoc-specific formatting rules.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's straightforward conversion purpose, rich annotations, and comprehensive schema, the description is complete. It explains the transformation semantics adequately without needing to elaborate on return values (handled by schema).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed parameter descriptions (markdown supports GFM/KaTeX, output_path creates parent directories). Description focuses on transformation logic rather than repeating parameter specs, which is appropriate given the rich schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description opens with specific verb 'Convert' and target format 'AsciiDoc', immediately clarifying scope. The detailed syntax transformations (= headers, ---- code blocks) distinguish it from siblings like convert_to_html or convert_to_rst that would produce different markup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit 'when to use' or comparison with alternatives is stated. However, the specific AsciiDoc syntax examples (image::url, url[text]) implicitly signal this tool's domain versus other conversion siblings, providing contextual hints for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_to_bbcodeA
Idempotent

Convert Markdown to BBCode format. Transforms formatting to [b], [i], [s], [code], [url], [img] tags. Used for forum posts on phpBB, vBulletin, and similar platforms.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path.
output_pathNoOptional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations establish safety profile (idempotent, non-destructive). The description adds valuable behavioral context by enumerating the specific BBCode tags supported and target forum platforms, which is critical information not present in structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tightly constructed sentences with zero waste: first establishes conversion direction, second details supported formatting tags, third provides platform context. Front-loaded with the essential action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 100% schema coverage and comprehensive annotations, the description adequately covers the conversion domain. Mention of specific BBCode tags and forum platforms provides sufficient context. Could benefit from explicit mention of dual return modes (string vs JSON summary), though the schema handles this.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with comprehensive parameter descriptions already provided in the schema (markdown content details, output_path file behavior with return value semantics). Baseline 3 is appropriate as the description focuses on conversion behavior rather than repeating schema details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Convert) and resources (Markdown to BBCode), and distinguishes from siblings by specifying the target format (BBCode) and supported tags ([b], [i], etc.), clearly positioning it among the many conversion tools available.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear contextual guidance by specifying the target use case ('forum posts on phpBB, vBulletin, and similar platforms'), which helps distinguish it from other converters like convert_to_html or convert_to_docx. Lacks explicit 'when not to use' guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_to_confluenceA
Idempotent

Convert Markdown to Confluence wiki markup. Similar to JIRA but includes Confluence-specific {info}, {note} panels and {code:language=x} syntax.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path.
output_pathNoOptional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare idempotentHint=true and non-destructive behavior. Description adds value by specifying exact output format quirks ({info}, {note}, {code} macros) that pure schema doesn't cover. Does not address file I/O side effects (covered in schema) or error behaviors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste. First_sentence establishes operation, second_sentence provides critical sibling differentiation and output format specifics. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a conversion utility with simple I/O. Covers core functionality and format-specific features. Lacks error handling documentation or edge case notes (e.g., unsupported Markdown extensions), but acceptable given idempotentHint and full schema coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed descriptions for both 'markdown' (GFM support details) and 'output_path' (file vs return behavior). Description provides no additional parameter syntax guidance, meeting baseline expectation when schema is comprehensive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear specific verb 'Convert' + resource 'Markdown/Confluence wiki markup'. Explicitly distinguishes from sibling 'convert_to_jira' by contrasting Confluence-specific panels vs JIRA syntax, preventing selection errors.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implicitly guides selection by stating 'Similar to JIRA but includes Confluence-specific...' which signals the differentiation point. However, lacks explicit 'use when targeting Confluence vs JIRA' directive or exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_to_csvA
Idempotent

Extract tables from Markdown and convert them to CSV format. Parses GFM pipe-tables from the input and outputs comma-separated values. If the Markdown contains multiple tables, they are concatenated with a blank line separator. Non-table content is ignored. If the Markdown contains no tables, returns an empty string. Side effects: when output_path is provided, writes the CSV to disk (creates parent directories, overwrites existing files). When output_path is omitted, returns the CSV text directly as a string. Returns: CSV text string (if no output_path), or JSON { success, file_path, file_size_bytes, format } (if output_path set). Use this for lightweight tabular export or when downstream tools expect CSV. Prefer convert_to_xlsx for Excel-compatible spreadsheets with multiple sheets, or convert_to_json for structured data.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path.
output_pathNoOptional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (which only declare idempotency/safety), the description details critical behavioral specifics: dual return modes (string vs JSON object), file system side effects (creates parent directories, overwrites existing files), and content handling (multiple tables concatenated with blank lines, non-table content ignored, no-tables returns empty string).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Six sentences covering distinct aspects: conversion logic, content handling, side effects, return values, and usage recommendations. Every sentence provides unique information not redundant with the schema or annotations. Slightly dense but appropriate for the complexity of dual-output behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Without an output schema, the description fully compensates by detailing return structures (CSV string vs JSON object with specific fields), edge case behaviors (empty input handling), and side effect warnings necessary for safe invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, baseline is 3. The description adds value by connecting output_path to behavioral outcomes (overwriting existing files) and explaining the conditional return type logic tied to this parameter, though it doesn't significantly expand on the markdown parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb-resource combination ('Extract tables from Markdown and convert them to CSV format') and explicitly distinguishes from siblings by naming 'convert_to_xlsx' and 'convert_to_json' as alternatives for different use cases.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use ('lightweight tabular export or when downstream tools expect CSV') and provides clear alternatives ('Prefer convert_to_xlsx for Excel-compatible spreadsheets... or convert_to_json for structured data'), guiding the agent away from incorrect selections.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_to_discordA
Idempotent

Convert Markdown to Discord-compatible format. Transforms headers to styled bold/underline text that renders correctly in Discord messages. Code blocks and basic formatting are preserved.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path.
output_pathNoOptional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare idempotent/non-destructive, but description adds valuable behavioral specifics: headers become bold/underline, code blocks are preserved, and basic formatting is maintained. This disclosure of specific transformation logic is exactly the context annotations cannot provide. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with zero waste: purpose statement, specific transformation detail, preservation guarantee. Every sentence earns its place. Well front-loaded with the core action in sentence one.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Appropriate for a format-conversion tool with 2 parameters and no output schema. Covers input expectations and transformation behavior. Missing only documentation of the return value duality (file vs. string) which is a significant behavioral gap given the output_path parameter exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, baseline is 3. Description implicitly reinforces the 'markdown' parameter by mentioning GFM features (tables, headers) but does not explicitly walk through parameters or add syntax guidance beyond the schema. Notably omits mention of the output_path parameter's dual-behavior (file write vs. string return).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb (Convert), source (Markdown), and target format (Discord-compatible). The mention of 'headers to styled bold/underline' specifically signals Discord's limitations, distinguishing it from siblings like convert_to_html or convert_to_slack. Could be 5 if it explicitly contrasted with the many other conversion tools available.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides implicit usage guidance by specifying 'renders correctly in Discord messages,' which signals when to select this over other converters. However, lacks explicit when-not-to-use guidance or sibling comparisons despite having 20+ conversion alternatives. Does not clarify when to use output_path vs. receiving direct string output.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_to_docxA
Idempotent

Convert Markdown to a Microsoft Word DOCX file. Produces a binary .docx document with styled headings, bold/italic text, numbered and bulleted lists, and code formatting. This is a binary format — output_path should almost always be provided. Side effects: when output_path is provided, writes the DOCX binary to disk (creates parent directories, overwrites existing files). When output_path is omitted, returns a JSON object with { format: 'docx', file_size_bytes, hint, base64_preview } — the hint will tell you to re-call with output_path to save the file. Returns: JSON write-confirmation (if output_path set), or JSON binary-guidance object (if omitted). Use this for Word-compatible documents. Prefer convert_to_rtf for legacy word processors, convert_to_pdf for read-only distribution, or convert_to_html for web.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path.
output_pathNoOptional. Absolute or relative file path (e.g. './output.docx') where the binary file will be saved. Parent directories are created automatically. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned. If omitted, a JSON object with { format, file_size_bytes, hint, base64_preview } is returned — the hint will instruct you to call the tool again with output_path to save the file. Binary formats (DOCX) should almost always specify output_path.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Excellent disclosure beyond annotations: details side effects (writes binary to disk, creates directories, overwrites files), explains dual return modes (JSON confirmation vs JSON binary-guidance with base64_preview), and clarifies the re-call pattern when output_path is omitted. Complements annotations (readOnly=false, destructive=false) with specific I/O behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured progression: purpose → output characteristics → side effects → return values → usage comparisons. Each sentence provides distinct value. Minor verbosity in return value explanation could be tighter, but front-loading is strong and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, comprehensively documents both return structures (write-confirmation and binary-guidance objects). Adequately covers binary conversion complexity, file system interactions, and sibling tool landscape. No gaps given the tool's scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage with detailed parameter descriptions. Description adds critical usage context beyond schema: emphasizes that output_path is nearly mandatory for binary formats and explains the functional difference between providing vs omitting the parameter. Slight deduction for not adding semantic nuances to the 'markdown' parameter beyond schema definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear specific verb ('Convert') with source and target resources (Markdown to DOCX). Explicitly distinguishes from 21 sibling conversion tools by specifying 'Word-compatible documents' and contrasting with RTF, PDF, and HTML alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when to use ('Word-compatible documents') and clear alternatives ('Prefer convert_to_rtf for legacy... convert_to_pdf for read-only... convert_to_html for web'). Also specifies critical behavioral guidance that 'output_path should almost always be provided' for binary formats.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_to_email_htmlA
Idempotent

Convert Markdown to email-optimized HTML with all styles inlined. Produces HTML compatible with Outlook, Gmail, Apple Mail, and other email clients. No external CSS dependencies. Wraps content in a responsive email table layout.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path.
output_pathNoOptional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare idempotent/non-destructive, but description adds crucial output characteristics: 'all styles inlined', 'responsive email table layout', and specific client compatibility. Explains the 'email-safe' HTML generation behavior that annotations cannot capture.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, zero waste. Front-loaded with core function (conversion + inlining). Each subsequent sentence adds distinct value: client compatibility, CSS constraints, layout structure. No filler or redundant restatements.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Strong coverage for a conversion tool. Despite no output schema, description characterizes the HTML output sufficiently (inlined styles, table layout, client compatibility). Schema handles parameter mechanics. Minor gap: doesn't mention the dual return modes (string vs file summary), though schema covers this.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, providing excellent parameter documentation (markdown format support, output_path behavior). Description references no parameters specifically, relying entirely on schema—a valid pattern when schema coverage is comprehensive. Baseline score applicable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Excellent specificity: verb 'Convert' + source resource 'Markdown' + target 'email-optimized HTML'. Critically distinguishes from sibling 'convert_to_html' via 'email-optimized' qualifier and specific compatibility claims (Outlook, Gmail, Apple Mail).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear contextual signals for when to use: 'email-optimized', 'compatible with Outlook, Gmail...', and 'no external CSS dependencies' clearly indicate this is for email delivery vs web publishing. Lacks explicit sibling comparison (e.g., 'use convert_to_html for web pages'), but usage context is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_to_htmlA
Idempotent

Convert Markdown to a complete, styled HTML document. Renders GFM (tables, task lists, strikethrough) and KaTeX math into semantic HTML with an embedded stylesheet for clean presentation. The output is a full document with (charset, KaTeX CSS CDN link, inline styles) and . Side effects: when output_path is provided, writes the HTML file to disk (creates parent directories, overwrites existing files). When output_path is omitted, returns the full HTML string directly. Returns: HTML document string (if no output_path), or JSON { success, file_path, file_size_bytes, format } (if output_path set). Use this when you need a file saved to disk or when you need the full document. Prefer generate_html if you only need the HTML string returned directly (no file I/O) and want inline styles without a CDN link. Prefer convert_to_pdf for print-ready output, or convert_to_image for a visual snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path.
output_pathNoOptional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate non-readOnly and idempotent behavior; the description adds critical side effect disclosure (file writes to disk, directory creation, overwriting behavior) and documents the dual return format (string vs JSON object) depending on output_path. Does not mention auth needs or rate limits, but covers the primary behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Every sentence earns its place: opens with core function, details features, explains document structure, discloses side effects, specifies return values, and closes with usage guidance. No redundancy despite covering multiple output modes and sibling comparisons.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description fully specifies return behaviors (HTML string vs JSON structure), explains the complete document structure produced (<!DOCTYPE html> with CDN links), and contrasts with relevant siblings. Complete for a dual-mode conversion tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, baseline is 3. The description adds semantic value by explaining the implications of providing vs omitting output_path (side effects vs direct return) and elaborating on markdown capabilities (GFM tables, task lists, strikethrough) beyond the schema's basic description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool converts Markdown to a complete, styled HTML document, specifying support for GFM and KaTeX. It distinguishes from sibling `generate_html` by emphasizing this produces a full document with file I/O capabilities, while implying `generate_html` is for string-only output.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Excellent guidance: explicitly states 'Use this when you need a file saved to disk' and provides named alternatives with conditions ('Prefer generate_html if you only need the HTML string...', 'Prefer convert_to_pdf for print-ready output'). This creates a clear decision tree against siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_to_imageA
Idempotent

Convert Markdown to a PNG image. Renders the Markdown as styled HTML (GFM tables, KaTeX math) and takes a full-page screenshot via a headless Chromium browser (Puppeteer). Requires a locally installed Chrome, Edge, or Chromium — set PUPPETEER_EXECUTABLE_PATH env var to override auto-detection. This is a binary format — output_path should almost always be provided. Side effects: launches a transient headless browser process (no persistent state; may fetch KaTeX CDN stylesheet). When output_path is provided, writes the PNG to disk (creates parent directories, overwrites existing files). When output_path is omitted, returns JSON { format: 'png', file_size_bytes, hint, base64_preview }. Returns: JSON write-confirmation (if output_path set), or JSON binary-guidance object (if omitted). Use this when you need a visual snapshot of the rendered Markdown (e.g. for embedding in chat, previews, social cards). Prefer convert_to_pdf for paginated print output, or convert_to_html for interactive web content.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path.
output_pathNoOptional. Absolute or relative file path (e.g. './output.png') where the binary file will be saved. Parent directories are created automatically. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned. If omitted, a JSON object with { format, file_size_bytes, hint, base64_preview } is returned — the hint will instruct you to call the tool again with output_path to save the file. Binary formats (PNG) should almost always specify output_path.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Substantially augments annotations by detailing: external dependency requirements (Puppeteer, Chrome executable), runtime side effects (transient browser process, CDN fetching), file system behavior (creates parent directories, overwrites existing), and dual return modes (disk write vs JSON binary-guidance). No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Information-dense and front-loaded (purpose first). Length is justified by complexity (browser dependencies, binary output, two return paths). Minor deduction for slight verbosity in implementation details, but structure is logical: purpose → mechanism → prerequisites → side effects → returns → usage guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Excellent coverage given high complexity and missing output schema. Compensates for no output_schema by exhaustively documenting both return variants (JSON confirmation vs base64_preview object), external system requirements, and behavioral side effects. Sibling differentiation is thorough among 24+ conversion tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, baseline is 3. Elevated to 4 by adding critical usage context: 'binary format — output_path should almost always be provided' and explaining the conditional return behavior based on output_path presence, neither of which is obvious from schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with specific verb+resource ('Convert Markdown to a PNG image') and explicitly distinguishes from siblings ('Prefer convert_to_pdf... or convert_to_html'). Clearly defines scope (GFM tables, KaTeX math) and mechanism (headless Chromium).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use ('when you need a visual snapshot... for embedding in chat, previews, social cards') and named alternatives ('Prefer convert_to_pdf for paginated print output'). Also specifies prerequisites (locally installed Chrome/Edge/Chromium).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_to_jiraA
Idempotent

Convert Markdown to JIRA wiki markup. Transforms headers to h1./h2., bold to single asterisks, code blocks to {code} blocks, links to [text|url], and lists to JIRA * and # syntax.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path.
output_pathNoOptional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate idempotent=true and readOnly=false; the description adds valuable behavioral context that the tool conditionally writes files to disk when output_path is provided, versus returning content directly, and details the exact transformation logic for content conversion.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two well-structured sentences front-load the core purpose first, followed by specific syntax transformations. Efficient length with minimal redundancy, though the second sentence is dense with multiple examples.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter conversion utility with good annotations and no output schema, the description adequately covers transformation behavior, dual output modes, and input expectations. Could benefit from mentioning error handling or character encoding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the baseline is met, but the description adds meaningful context about supported Markdown syntax (tables, task lists) that clarifies valid input for the 'markdown' parameter beyond the schema's technical description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Convert Markdown to JIRA wiki markup' with specific verb and resource. The detailed syntax examples (h1./h2., {code} blocks, [text|url] links) explicitly distinguish this from sibling converters like convert_to_confluence or convert_to_bbcode.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The specificity of 'JIRA wiki markup' provides implicit guidance for when to use this tool versus the 20+ other conversion siblings, but lacks explicit when-to-use guidance or comparisons like 'use when targeting Atlassian JIRA vs other wiki formats'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_to_jsonA
Idempotent

Convert Markdown to a structured JSON representation. Parses the document into a JSON object with the document title as the root key, containing arrays of section objects with headings, paragraphs, lists, code blocks, and tables. Useful for programmatic analysis or feeding structured content into other systems. Side effects: when output_path is provided, writes the JSON to disk (creates parent directories, overwrites existing files). When output_path is omitted, returns the JSON string directly. Returns: JSON string (if no output_path), or JSON { success, file_path, file_size_bytes, format } (if output_path set). Use this when you need a machine-readable AST-like representation of the Markdown content. Prefer convert_to_xml for XML-based interchange, or convert_to_csv/convert_to_xlsx for tabular data extraction.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path.
titleNoOptional. A document title string. Used as the root element name or document metadata title in the output. Defaults to 'document' if omitted.
output_pathNoOptional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnly=false and idempotent=true; the description adds valuable behavioral context including side effects (writes to disk, creates parent directories, overwrites files) and return value variations (JSON string vs summary object based on output_path). Could mention error handling or permissions for a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Logically structured with zero waste: purpose statement, structural details, use case, side effects, return values, when-to-use guidance, and alternatives. Each sentence earns its place despite the length, with clear transitions between concepts.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Excellent completeness for a conversion tool with no output schema: fully documents return value structures for both paths (direct return vs file write), explains disk side effects, and differentiates from extensive sibling tool set. No gaps given the complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed descriptions for all 3 parameters (markdown, title, output_path). The description references parameters behaviorally ('when output_path is provided') but does not add semantic constraints, formats, or validation rules beyond what the schema already documents. Baseline 3 appropriate given high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Convert Markdown to a structured JSON representation' with specific details about the output structure (document title as root key, arrays of section objects containing headings, paragraphs, lists, etc.). It clearly distinguishes this from siblings by specifying JSON/AST-like output versus tabular or XML formats.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use guidance ('Use this when you need a machine-readable AST-like representation') and names specific alternatives ('Prefer convert_to_xml for XML-based interchange, or convert_to_csv/convert_to_xlsx for tabular data extraction'), giving clear guidance among the 20+ conversion siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_to_latexA
Idempotent

Convert Markdown to LaTeX source code. Produces a LaTeX document fragment with \section, \textbf, \textit, \begin{itemize}/\begin{enumerate} list environments, verbatim code blocks, and table environments. KaTeX math expressions in the Markdown are passed through as native LaTeX math. Side effects: when output_path is provided, writes the .tex file to disk (creates parent directories, overwrites existing files). When output_path is omitted, returns the LaTeX source as a string. Returns: LaTeX source string (if no output_path), or JSON { success, file_path, file_size_bytes, format } (if output_path set). Use this when you need to embed content in a LaTeX workflow or compile to PDF via pdflatex/xelatex externally. For direct PDF output without a LaTeX toolchain, use convert_to_pdf instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path.
output_pathNoOptional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate idempotentHint=true and readOnlyHint=false, but the description adds critical behavioral context: it discloses file system side effects ('writes the .tex file to disk'), directory creation behavior ('creates parent directories'), and overwrite behavior ('overwrites existing files'). It also explains the dual return mode (string vs JSON object) which annotations do not cover.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Six sentences covering purpose, output format specifics, side effects, return values, and usage guidelines. Every sentence provides distinct information not replicated elsewhere. Slightly dense but necessary given the tool's conditional behavior (file write vs. string return).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Comprehensive coverage for a conversion tool: input format details (GFM, KaTeX), output structure (specific LaTeX environments like itemize, verbatim), side effects (file I/O), return value schemas for both branches, and sibling alternatives. No output schema exists, and the description adequately compensates by documenting both possible return structures.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

While schema coverage is 100% (baseline 3), the description adds significant behavioral meaning to output_path by explaining that its presence triggers file write side effects and changes the return type from string to JSON object. This contextualizes the parameter beyond the schema's functional definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('Convert Markdown to LaTeX source code') and immediately distinguishes from the sibling tool convert_to_pdf by stating 'For direct PDF output... use convert_to_pdf instead.' It clearly scopes the conversion domain (Markdown→LaTeX) amidst a large family of conversion tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use ('when you need to embed content in a LaTeX workflow or compile to PDF via pdflatex/xelatex externally') and provides a clear alternative for the opposite case ('For direct PDF output without a LaTeX toolchain, use convert_to_pdf instead'). This directly addresses sibling selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_to_mdA
Idempotent

Export Markdown content, optionally harmonizing its formatting first. When harmonize=false (default), returns the input Markdown unchanged. When harmonize=true, applies the same normalization as harmonize_markdown (ATX-style headers, '-' list markers, fenced code blocks, consistent indentation) before returning. Side effects: when output_path is provided, writes the Markdown to disk (creates parent directories, overwrites existing files). When output_path is omitted, returns the Markdown string directly. Returns: Markdown string (if no output_path), or JSON { success, file_path, file_size_bytes, format } (if output_path set). Use this when you want to save Markdown to a file (with or without cleanup). Prefer harmonize_markdown if you only want to normalize formatting without saving to disk. Use the convert_to_* family for other output formats.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path.
harmonizeNoOptional. When true, normalizes Markdown syntax (ATX headers, '-' list markers, fenced code blocks, consistent indentation) before returning or saving. When false or omitted, the Markdown is passed through unchanged. Defaults to false.
output_pathNoOptional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate write capability (readOnlyHint=false) and idempotency, but description adds crucial behavioral details: file system side effects (creates parent directories, overwrites), dual return modes (string vs JSON), and specific normalization rules applied (ATX headers, fenced code blocks).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear information hierarchy: core purpose → parameter behavior → side effects → return values → usage guidance. Every sentence earns its place; no redundancy despite length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Excellent completeness given no output schema exists. Describes both return formats (string vs JSON structure), covers all parameters including optional behaviors, and documents side effects. Appropriate for a tool with dual output modes and file system interactions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage establishing baseline of 3. Description adds valuable semantic context: relationship between 'harmonize' parameter and the standalone 'harmonize_markdown' tool, and the side-effect nature of 'output_path' (disk write vs direct return).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ('Export') and resource ('Markdown content') with clear scope. Explicitly distinguishes from sibling tools by referencing 'harmonize_markdown' and 'convert_to_* family', clarifying when to use each.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use ('when you want to save Markdown to a file'), when-not-to-use ('Prefer harmonize_markdown if you only want to normalize formatting without saving'), and clear alternatives (sibling tools named specifically).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_to_mediawikiA
Idempotent

Convert Markdown to MediaWiki markup. Transforms headers to == syntax, bold to triple quotes, code to tags, and tables to {| wikitable format.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path.
output_pathNoOptional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare idempotentHint=true, readOnlyHint=false, and destructiveHint=false. The description adds valuable transformation context (specific syntax mappings) that annotations don't cover, but omits handling of edge cases like invalid Markdown or whether the conversion preserves YAML frontmatter. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficiently structured sentences with zero waste. The first sentence establishes purpose; the second provides concrete transformation examples that immediately clarify scope. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple 2-parameter input schema with complete descriptions and available annotations, the description adequately covers the conversion logic without needing to document return values (handled in output_path schema description). Minor gap: doesn't mention error handling for malformed input.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the baseline is 3. The description adds semantic value by specifying which Markdown features are handled (tables, headers, bold, code), implicitly documenting the 'markdown' parameter's expected content type beyond the schema's technical description. It doesn't detail the output_path behavior, but the schema covers that comprehensively.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Convert Markdown to MediaWiki markup' with specific verb and resource. The transformation examples (== syntax, triple quotes, <syntaxhighlight> tags, {| wikitable) specifically distinguish this from sibling conversion tools like convert_to_html or convert_to_latex by identifying the exact target format syntax.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through the MediaWiki-specific syntax examples, making it clear this produces MediaWiki markup versus other formats. However, it lacks explicit guidance on when to choose this over the 20+ sibling conversion tools (e.g., no 'use this for MediaWiki wikis, use convert_to_html for web pages' comparison).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_to_orgmodeA
Idempotent

Convert Markdown to Emacs Org Mode format. Transforms headers to * syntax, bold to text, code blocks to #+BEGIN_SRC/#+END_SRC, and links to [[url][text]] syntax.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path.
output_pathNoOptional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate idempotent=true and destructive=false. The description adds valuable behavioral context beyond these flags by detailing specific syntax transformations (headers to *, bold to *text*, code blocks to #+BEGIN_SRC), helping the agent understand the conversion logic and output structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences efficiently convey the tool's purpose and specific transformation rules. Every clause serves a function—first establishing the conversion direction, second detailing syntax mappings—with no redundant or filler text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 100% schema coverage and presence of annotations, the description provides sufficient context by explaining what gets converted and how. The return behavior is adequately covered in the output_path schema description, making this complete enough for tool selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the structured documentation already comprehensively describes both parameters. The description does not add parameter-specific guidance (e.g., format expectations for the markdown string), warranting the baseline score for high-coverage schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Convert') and resources ('Markdown to Emacs Org Mode format'), distinguishing it from 20+ sibling conversion tools by explicitly naming the target format and providing syntax-specific details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

While the description clearly identifies the tool's purpose (converting to Org Mode), it lacks explicit guidance on when to select this specific converter versus siblings like convert_to_asciidoc or convert_to_rst. Usage is implied by the format name but not stated as 'use this when...'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_to_pdfA
Idempotent

Convert Markdown to a PDF document. Renders the Markdown as styled HTML (GFM tables, KaTeX math) and then prints it to PDF via a headless Chromium browser (Puppeteer). Requires a locally installed Chrome, Edge, or Chromium — set PUPPETEER_EXECUTABLE_PATH env var to override auto-detection. This is a binary format — output_path should almost always be provided. Side effects: launches a transient headless browser process for rendering (no network requests are made for the conversion itself, though the HTML references a CDN KaTeX stylesheet which may be fetched). When output_path is provided, writes the PDF to disk (creates parent directories, overwrites existing files). When output_path is omitted, returns JSON { format: 'pdf', file_size_bytes, hint, base64_preview }. Returns: JSON write-confirmation (if output_path set), or JSON binary-guidance object (if omitted). Use this for high-fidelity, print-ready document output. Prefer convert_to_html for web-viewable output, convert_to_docx for editable documents, or convert_to_latex for LaTeX toolchains.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path.
output_pathNoOptional. Absolute or relative file path (e.g. './output.pdf') where the binary file will be saved. Parent directories are created automatically. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned. If omitted, a JSON object with { format, file_size_bytes, hint, base64_preview } is returned — the hint will instruct you to call the tool again with output_path to save the file. Binary formats (PDF) should almost always specify output_path.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Rich disclosure beyond annotations: requires local Chrome/Chromium (with env var override), launches transient headless browser, CDN fetching behavior, directory creation, file overwrite behavior, and precise dual return format behavior (disk write vs JSON binary-guidance).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Information-dense but well-structured: purpose→technical method→system requirements→side effects→file handling→return formats→sibling preferences. Each sentence earns its place given the complexity of external dependencies and dual output modes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Excellent coverage for a complex tool with external dependencies (Chromium), binary output, conditional return schemas, and side effects. Without output schema, description fully documents both return paths and operational prerequisites.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, description adds crucial usage guidance: emphasizes output_path is almost mandatory for binary formats, explains the divergent return behaviors (confirmation JSON vs base64_preview JSON), and clarifies parent directory auto-creation semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description provides specific verb ('Convert'), resource ('Markdown' to 'PDF'), rendering pipeline details (GFM tables, KaTeX math, Puppeteer), and explicitly distinguishes from siblings ('Prefer convert_to_html... convert_to_docx... convert_to_latex').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use ('high-fidelity, print-ready document output'), when to prefer alternatives (web-viewable→HTML, editable→DOCX, LaTeX toolchains), and critical usage constraint ('output_path should almost always be provided' for binary formats).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_to_rstA
Idempotent

Convert Markdown to reStructuredText (RST) format. Transforms headers to underlined text, code blocks to .. code-block:: directives, and links to RST reference syntax.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path.
output_pathNoOptional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations establish idempotentHint=true and destructiveHint=false. The description adds valuable transformation details (header underlining, code-block conversion, link syntax) that explain the conversion logic. It could improve by clarifying file overwrite behavior when output_path points to an existing file.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with zero waste. The first establishes purpose; the second provides concrete transformation examples that earn their place by distinguishing RST output from other markup formats. Front-loaded and appropriately sized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a conversion tool with 100% schema coverage and existing annotations, the description is complete. It covers input format expectations and transformation specifics. Could mention error handling for malformed Markdown, but not required given the tool's straightforward scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the baseline is 3. The description adds semantic value by explaining what happens to the markdown content (specific transformation rules) and implicitly clarifying the dual output behavior (string return vs file write) mentioned in the schema, helping users understand the markdown parameter's processing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the specific action (Convert) and resource (Markdown to RST) clearly. It distinguishes from siblings by detailing RST-specific transformations (underlined headers, code-block directives, reference syntax), making it clear this produces Sphinx-compatible RST rather than other formats.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

While the RST-specific syntax details imply when to use this tool (when you need reStructuredText output), there is no explicit guidance comparing it to sibling converters like convert_to_html or convert_to_latex, nor warnings about when to prefer alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_to_rtfA
Idempotent

Convert Markdown to Rich Text Format (RTF). Produces an RTF document string preserving basic formatting: bold, italic, headers (as styled paragraphs), lists, and code blocks. Side effects: when output_path is provided, writes the RTF file to disk (creates parent directories, overwrites existing files). When output_path is omitted, returns the raw RTF markup as a string. Returns: RTF markup string (if no output_path), or JSON { success, file_path, file_size_bytes, format } (if output_path set). Use this when the target application requires RTF (e.g. legacy word processors, email clients). Prefer convert_to_docx for modern Word documents, or convert_to_html for web display.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path.
output_pathNoOptional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Substantially exceeds annotations by detailing: (1) transformation behavior (preserves specific formatting types), (2) filesystem side effects (creates parent directories, overwrites existing files), and (3) bimodal return behavior (string vs JSON structure). Acts as complete behavioral spec.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Six distinct sentences each serving unique purposes: conversion scope, side effects, conditional return #1, conditional return #2, usage guidance, alternatives. No redundancy; information density is high with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a conversion utility with rich annotations and no output schema, description achieves completeness by documenting return structures, error-adjacent behaviors (directory creation, overwrites), target applications, and comparative tool selection. No gaps remain for agent invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

While schema has 100% coverage, description adds critical semantic context linking output_path presence/absence to distinct return types (RTF string vs JSON object) and side effects, clarifying the parameter's role as a mode switch beyond simple file path semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description opens with specific verb-resource pair ('Convert Markdown to Rich Text Format') and immediately distinguishes scope with formatting details (bold, italic, headers, lists, code blocks). Naming convention and sibling differentiation are clear from the explicit RTF focus.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use clause targeting 'legacy word processors, email clients' and names specific sibling alternatives ('Prefer convert_to_docx for modern Word documents, or convert_to_html for web display'), giving the agent clear decision criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_to_slackA
Idempotent

Convert Markdown to Slack mrkdwn format. Transforms bold (**) to single asterisks, italic to underscores, links to Slack <url|text> syntax, and headers to bold text. Use this when pasting formatted content into Slack messages.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path.
output_pathNoOptional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare idempotentHint=true and readOnlyHint=false. Description adds valuable transformation specifics beyond annotations: exact syntax conversions (**→*, _→_, headers→bold, links→<url|text>), helping agents predict output structure. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficiently structured sentences. First sentence establishes purpose and transformation rules; second provides usage context. No redundancy, front-loaded with essential information despite the packed specifics of formatting transformations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 100% schema coverage and clear annotations, description adequately covers tool purpose. Absence of output schema noted, but schema's output_path description handles return value documentation. Missing only minor details like maximum input size or complex edge-case handling for completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, establishing baseline 3. Description references 'Markdown' input implicitly but does not elaborate on parameter semantics beyond schema descriptions. The output_path behavior is well-documented in schema property descriptions, requiring no additional description text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states specific action ('Convert Markdown to Slack mrkdwn format') and enumerates exact transformations (bold→asterisks, italic→underscores, etc.). Clearly distinguishes from sibling converters like convert_to_html or convert_to_bbcode by specifying Slack-specific mrkdwn syntax.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: 'Use this when pasting formatted content into Slack messages.' Lacks explicit 'when not to use' or named alternatives (e.g., 'use convert_to_html for web instead'), but provides clear contextual trigger.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_to_textileA
Idempotent

Convert Markdown to Textile markup format. Used by Redmine, older versions of Basecamp, and some CMS platforms.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path.
output_pathNoOptional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare idempotentHint=true and destructiveHint=false. Description adds platform compatibility context but does not disclose behavioral traits like 'creates parent directories automatically' (described in schema) or whether conversions are lossy.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste. First sentence establishes core function; second provides platform context. Every element earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Appropriate for a conversion utility with 2 parameters and high schema coverage. Output behavior is well-documented in schema (string vs file return). Platform mention adds necessary domain context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed descriptions for both parameters. Description does not add parameter semantics beyond schema, so baseline 3 applies per scoring rules for high-coverage schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb 'Convert' with clear source/target resources (Markdown to Textile). Distinguishes from siblings by naming the specific markup format (Textile vs HTML, AsciiDoc, etc. in the convert_to_* family).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides contextual guidance by listing specific platforms (Redmine, Basecamp, CMS) that consume Textile, implicitly signaling when to use this tool. Lacks explicit 'when not to use' or comparison with alternatives like convert_to_html.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_to_txtA
Idempotent

Convert Markdown to plain text by stripping all formatting — removes headers, bold/italic markers, links, images, code fences, and HTML tags. The result is a human-readable plain-text string with no markup. This is a destructive conversion: formatting information is permanently lost. Side effects: when output_path is provided, writes the plain text to disk (creates parent directories, overwrites existing files). When output_path is omitted, returns the plain text string directly. Returns: plain text string (if no output_path), or JSON { success, file_path, file_size_bytes, format } (if output_path set). Use this instead of convert_to_md when you need formatting-free content (e.g. for indexing, search, or clipboard). Use convert_to_html or convert_to_pdf if you need to preserve the document's visual structure.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path.
output_pathNoOptional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (which only show idempotentHint), the description discloses critical behavioral traits: the conversion is 'destructive' (formatting lost), side effects include file system writes with directory creation and file overwriting, and return values differ based on parameter presence (string vs JSON).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Six sentences cover: operation, result characteristics, destruction warning, side effects, return values, and usage guidelines. Every sentence earns its place, though slightly verbose. Well front-loaded with the core operation stated immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (conditional side effects, dual return types, optional file I/O) and rich sibling ecosystem, the description is complete. It covers behavior, side effects, return formats, and sibling relationships without needing an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, baseline is 3. The description adds significant value by explaining the dual-mode behavior of output_path (disk write vs direct return) and elaborating that markdown supports 'GitHub-Flavored Markdown and KaTeX', which aids agent decision-making.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verbs ('Convert'), identifies the resource ('Markdown to plain text'), and clearly distinguishes from siblings by explicitly naming alternatives ('Use this instead of convert_to_md', 'Use convert_to_html or convert_to_pdf').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use ('when you need formatting-free content') versus alternatives, provides concrete use cases ('for indexing, search, or clipboard'), and names specific sibling tools to use instead for different outcomes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_to_xlsxA
Idempotent

Convert Markdown tables to a Microsoft Excel XLSX spreadsheet. Parses GFM pipe-tables from the input and creates an Excel workbook. Each table becomes a sheet in the workbook. Non-table content is ignored. If the Markdown contains no tables, produces an empty workbook. This is a binary format — output_path should almost always be provided. Side effects: when output_path is provided, writes the XLSX binary to disk (creates parent directories, overwrites existing files). When output_path is omitted, returns JSON { format: 'xlsx', file_size_bytes, hint, base64_preview }. Returns: JSON write-confirmation (if output_path set), or JSON binary-guidance object (if omitted). Use this when you need a full Excel file with formatting. Prefer convert_to_csv for lightweight plain-text tabular export, or convert_to_json for structured programmatic access.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path.
output_pathNoOptional. Absolute or relative file path (e.g. './output.xlsx') where the binary file will be saved. Parent directories are created automatically. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned. If omitted, a JSON object with { format, file_size_bytes, hint, base64_preview } is returned — the hint will instruct you to call the tool again with output_path to save the file. Binary formats (XLSX) should almost always specify output_path.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses critical side effects beyond annotations: file system mutations ('writes the XLSX binary to disk', 'creates parent directories, overwrites existing files'). Explains dual return modes (disk write vs JSON binary-guidance object) and edge case behavior ('If the Markdown contains no tables, produces an empty workbook'). Annotations confirm idempotency and non-destructive nature; description adds implementation details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Every sentence is load-bearing: purpose → parsing mechanics → edge cases → binary nature warning → side effects → return schema → sibling differentiation. No tautology or repetition of schema/annotation data. Information-dense structure guides agent through decision tree efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Absence of output schema is fully compensated by detailed return value documentation covering both branches (output_path provided vs omitted). Binary format complexities, side effects, and sibling ecosystem context are comprehensively addressed for a conversion utility.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, establishing baseline 3. Description adds critical operational semantics: warns that output_path 'should almost always be provided' for binary formats and details the two-stage workflow (preview then save) when omitted. Elevates understanding beyond raw schema definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with specific verb-noun sequence ('Convert Markdown tables to... XLSX spreadsheet'), clearly identifies input resource (Markdown pipe-tables) and output format. Explicitly distinguishes from siblings convert_to_csv and convert_to_json by prescribing specific use cases ('lightweight plain-text' vs 'full Excel file with formatting').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use ('when you need a full Excel file with formatting') and provides named alternatives with precise differentiators ('Prefer convert_to_csv for lightweight plain-text...or convert_to_json for structured programmatic access'). Also clarifies output_path as mandatory for binary workflows ('almost always be provided').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_to_xmlA
Idempotent

Convert Markdown to an XML document. Parses the Markdown into a structured XML tree with a root element named after the title parameter, containing , , , , , and elements. Produces well-formed XML with an declaration. Side effects: when output_path is provided, writes the XML to disk (creates parent directories, overwrites existing files). When output_path is omitted, returns the XML string directly. Returns: XML string (if no output_path), or JSON { success, file_path, file_size_bytes, format } (if output_path set). Use this for XML-based data interchange or when downstream systems require XML input. Prefer convert_to_json for JSON APIs, convert_to_html for XHTML/web content, or convert_to_csv for flat tabular data.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path.
titleNoOptional. The root XML element name and document title. Must be a valid XML element name (no spaces or special characters). Defaults to 'document' if omitted.
output_pathNoOptional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Rich disclosure beyond annotations: details exact XML element structure produced (<section>, <heading>, etc.), declares <?xml?> declaration, clarifies dual return behavior (string vs JSON object based on output_path), and explicitly documents side effects including parent directory creation and file overwrite behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with logical flow: purpose → technical details → side effects → returns → usage guidance. Front-loaded with core function. Slightly dense but every sentence provides actionable information; no redundant repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Comprehensive for a dual-mode conversion tool. Despite no output schema, description fully documents both return variants (XML string vs JSON summary object). File system behavior (directory creation, overwrite) is explicitly addressed. Sibling alternatives coverage is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

While schema coverage is 100%, description adds crucial contextual usage: explains that 'title' parameter becomes the root XML element name, and clarifies that 'output_path' presence triggers file write mode with JSON metadata return vs direct string return. Enhances agent understanding of parameter interactions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Excellent specificity: 'Convert Markdown to an XML document' provides clear verb+resource. Critically distinguishes from 20+ sibling conversion tools by naming specific alternatives (convert_to_json, convert_to_html, convert_to_csv) and their use cases.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use guidance ('Use this for XML-based data interchange or when downstream systems require XML input') and explicit when-not-to-use with named alternatives. Clear distinction from siblings based on output format requirements.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

extract_code_blocksA
Read-onlyIdempotent

Extract all code blocks from a Markdown document. Returns a JSON array of code blocks, each with language, code content, and start/end line numbers. Useful for extracting code snippets from LLM responses or documentation.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe Markdown text to extract code blocks from.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare read-only/idempotent nature. Description adds valuable output structure details beyond annotations: JSON array format with specific fields (language, code content, start/end line numbers) and the 'all' scope indicator.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste: first sentence covers function + return format, second covers use case. Information-dense and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but description fully compensates by detailing the JSON array structure and constituent fields (language, line numbers). Complete for a single-parameter extraction tool with good annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% ('The Markdown text to extract code blocks from'). Description references 'Markdown document' but does not supplement schema with additional format constraints, validation rules, or examples. Baseline 3 appropriate for high-coverage schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb 'Extract' with clear resource 'code blocks' and scope 'from a Markdown document'. Distinctly positioned against sibling 'extract_structure' (general structure) and 'extract_links' (URLs) by targeting fenced code blocks specifically.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides concrete usage contexts ('LLM responses or documentation') indicating when to use. Lacks explicit exclusions or sibling comparisons (e.g., vs extract_structure), but clear enough for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

extract_structureA
Read-onlyIdempotent

Extract the full structure of a Markdown document. Returns JSON with document statistics, heading outline, code block summary (language, line count, positions), and link summary (totals by type, unique URL count). Provides a bird's-eye view of document architecture.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe Markdown text to extract structure from.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Leverages annotations (readOnlyHint, destructiveHint, idempotentHint) effectively while adding valuable output contract details. Describes exactly what the JSON contains (statistics, heading outline, code block summary with language/line counts, link summary), clarifying what 'structure' means operationally. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three well-constructed sentences: purpose declaration, detailed output specification, and conceptual summary. Zero redundancy—every sentence advances understanding of tool capabilities. Front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, description comprehensively details return value structure (JSON components: statistics, headings, code blocks with metadata, links with counts). Combined with rich annotations covering behavioral traits, provides complete contractual information needed for agent invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear parameter description ('The Markdown text to extract structure from'). Description references 'Markdown document' but adds no additional semantic constraints (size limits, encoding requirements, valid markdown prerequisites) beyond what the schema already provides. Baseline 3 appropriate given complete schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Excellent specificity: 'Extract' (verb) + 'full structure of a Markdown document' (resource+scope). Distinguishes clearly from siblings like extract_code_blocks and extract_links by emphasizing 'full structure' versus specific elements, and from convert_to_* tools by focusing on structural analysis rather than format transformation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides implied usage through output description ('bird's-eye view of document architecture'), indicating this is for structural overview. However, lacks explicit when/when-not guidance or comparisons to siblings like analyze_document or the more specific extraction tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_htmlA
Read-onlyIdempotent

Generate a complete, self-contained HTML document from Markdown with all styles inlined. Renders GFM (tables, task lists, strikethrough) and KaTeX math into a full HTML page with an embedded block and a KaTeX CSS CDN link. Returns the HTML string directly — no file is written to disk. Side effects: none. This tool is read-only and performs no file I/O. Returns: a complete HTML document string () with inline styles, ready for rendering in a browser. The optional title parameter sets the tag in the HTML section. Use this when you need styled HTML output returned as a string (e.g., for embedding in responses or previewing). Prefer convert_to_html when you need to write the HTML to a file on disk. Prefer convert_to_pdf or convert_to_image for non-HTML visual output formats.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path.
titleNoOptional. Sets the <title> tag in the HTML document's <head> section. Displayed in browser tabs and bookmarks. Defaults to 'Document' if omitted.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint, destructiveHint), the description adds valuable behavioral context: output is a string not file, includes KaTeX CSS CDN link dependency, specifies exact return format (<!DOCTYPE html>…</html>), and confirms side effects none. Does not mention idempotency from annotations, but coverage is strong otherwise.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Ten sentences cover purpose, features, I/O behavior, side effects, return values, parameter specifics, and sibling distinctions. While dense, every sentence earns its place with no redundancy, following a logical what→how→when→alternatives structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Comprehensive for a conversion tool with many siblings. Compensates for missing output schema by explicitly describing the returned HTML string structure. Covers behavioral traits, parameters, and clear differentiation from 20+ sibling conversion tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline is 3. The description adds minor supplemental context about the 'title' parameter's effect on the HTML <head> section, but the schema already fully documents both parameters' purposes and types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Generate') and clear resource ('complete, self-contained HTML document'). It explicitly distinguishes from sibling 'convert_to_html' by emphasizing 'returns the HTML string directly — no file is written to disk' versus file output.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit usage guidance: 'Use this when you need styled HTML output returned as a string' and clear alternatives: 'Prefer convert_to_html when you need to write the HTML to a file' and 'Prefer convert_to_pdf or convert_to_image for non-HTML visual output formats.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_tocA
Read-onlyIdempotent

Generate a Table of Contents from Markdown headings. Returns a Markdown-formatted TOC with indented links to each heading. Handles duplicate heading slugs. The max_depth parameter controls the deepest heading level to include.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe Markdown text to generate a TOC from.
max_depthNoMaximum heading depth to include (1-6, default: 6).

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds valuable behavioral details not present in annotations: output format specifics ('Markdown-formatted TOC with indented links') and special handling logic ('Handles duplicate heading slugs'). Complements the readOnly/idempotent annotations by describing the transformation behavior without contradicting safety hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tightly constructed sentences: purpose declaration, output specification, behavioral note on duplicates, and parameter guidance. Front-loaded with essential information; no filler content. Excellent information density.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Compensates well for missing output schema by explicitly describing return format. Complete coverage of the two parameters with 100% schema coverage. Only gap is lack of explicit sibling differentiation given the server's large collection of document processing tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% description coverage setting baseline at 3. Description adds redundant but clarifying phrasing for max_depth ('deepest heading level'), reinforcing the schema's intent without adding substantial new semantic information about parameter usage or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'Generate' with clear resource 'Table of Contents' and source 'Markdown headings'. Effectively distinguishes from sibling convert/extract tools by specifying its unique purpose (TOC generation with links).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context about what the tool produces (indented links TOC) and input requirements (Markdown headings), but lacks explicit guidance on when to choose this over similar siblings like extract_structure. Usage is implied but not explicitly contrasted with alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

harmonize_markdownA
Idempotent

Standardize and normalize Markdown syntax without changing the document's meaning. Re-formats headers (ATX-style), normalizes list markers to '-', enforces fenced code blocks with backticks, and applies consistent indentation. Side effects: when output_path is provided, writes the harmonized Markdown to disk (creates parent directories as needed, overwrites existing files). When output_path is omitted, returns the harmonized text as a string with no file I/O. Returns: harmonized Markdown string (if no output_path), or JSON with { success, file_path, file_size_bytes, format } (if output_path set). Use this tool when you need to clean up inconsistent Markdown formatting before further processing. Prefer convert_to_md with harmonize=true if you also need to save the result, as it combines both steps. Not suitable for converting Markdown to other formats — use the convert_to_* tools instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path.
output_pathNoOptional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare idempotency and non-destructive nature; the description adds crucial behavioral specifics: exact formatting mutations (ATX headers, '-' list markers, fenced code blocks), file I/O side effects (directory creation, overwriting), and conditional return value schemas (string vs JSON object). This significantly augments the annotation-level safety profile with operational details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with logical flow: purpose → specific behaviors → side effects → returns → usage guidance → alternatives → exclusions. Every sentence provides unique value (normalization specifics, I/O behavior, return types, sibling distinctions). Slightly dense but efficiently packed with necessary information for a dual-mode tool (in-memory vs file-write).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Excellently compensates for the missing output schema by explicitly documenting both return variants (harmonized string vs JSON summary with specific fields). Covers input requirements (GitHub-Flavored Markdown, KaTeX), side effects, and error-prone conditions (overwriting) ensuring the agent has complete operational context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline is 3 per rubric. While the description elaborates on output_path behavior in the side-effects section (linking it to file writes vs string returns), the schema already documents the parameter purposes adequately. The description does not need to compensate for schema gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise action ('Standardize and normalize Markdown syntax') and scope ('without changing the document's meaning'). It immediately distinguishes itself from siblings by stating 'Not suitable for converting Markdown to other formats — use the convert_to_* tools instead' and explicitly comparing to convert_to_md, satisfying the requirement for sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use ('when you need to clean up inconsistent Markdown formatting before further processing'), explicit preference ('Prefer convert_to_md with harmonize=true if you also need to save the result'), and clear exclusions (not for converting to other formats). This covers all dimensions of usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

html_to_markdownA
Idempotent

Convert HTML to Markdown. Performs round-trip import of HTML content back to Markdown format. Handles headings, tables, lists, code blocks, links, images, and inline formatting. Useful for importing web content or converting HTML emails to Markdown.

ParametersJSON Schema
NameRequiredDescriptionDefault
htmlYesThe HTML content to convert to Markdown. Can be a full HTML document or a fragment.
output_pathNoOptional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

While annotations declare idempotent/non-destructive hints, the description adds valuable behavioral context by enumerating specific HTML elements that are preserved (tables, code blocks, inline formatting), helping agents predict conversion fidelity. It aligns with annotations (idempotent 'round-trip' concept).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences with clear information hierarchy: purpose → capability details → use cases. The 'round-trip import' phrase is slightly jargon-heavy but overall structure is efficient with minimal redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequately covers the conversion capability and supported syntax, but lacks explicit documentation of return value behavior (file path vs string) in the description text itself, relying entirely on the parameter schema. No contradictions with annotations detected.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% description coverage, establishing a baseline of 3. The description focuses on functional capabilities rather than clarifying parameter semantics (e.g., html fragment vs document), which is acceptable given the comprehensive schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool converts 'HTML to Markdown' with specific supported elements (headings, tables, lists, etc.), providing concrete scope. However, it fails to distinguish from sibling 'convert_to_md', which likely performs a similar function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides implicit usage guidance through concrete examples ('importing web content', 'converting HTML emails'), helping agents identify relevant contexts. However, it lacks explicit when-not-to-use guidance or comparison with the generic 'convert_to_md' alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lint_markdownA
Read-onlyIdempotent

Lint Markdown and report issues. Returns a JSON array of lint issues found in the document, each with line number, column, severity (error/warning/info), rule name, message, and fixable flag. Checks for: missing heading spaces, trailing whitespace, inconsistent list markers, hard tabs, multiple blank lines, bare URLs, unclosed emphasis, and unclosed code fences.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe Markdown text to lint.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Excellent disclosure beyond annotations: details return structure (JSON array with line, column, severity, rule name, message, fixable flag) and enumerates specific lint rules checked (heading spaces, trailing whitespace, etc.). Matches readOnlyHint/destructiveHint annotations with 'report issues' framing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste. First sentence establishes purpose and return format; second enumerates specific checks. Perfectly front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but description comprehensively documents return structure (array of issue objects with specific fields) and behavior. Combined with rich annotations (readOnly, idempotent), description provides complete context for invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% ('markdown' parameter fully described), meeting baseline. Description adds no additional parameter semantics, but schema carries full burden adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear specific verb ('Lint') + resource ('Markdown') plus scope ('report issues'). Distinguished from conversion siblings (convert_to_*) and extraction siblings (extract_*) by focusing on validation/reporting.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides implied usage through 'report issues' language, indicating read-only analysis. However, lacks explicit when-to-use guidance vs. close sibling 'repair_markdown' (which presumably fixes issues) or when to choose this over 'analyze_document'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

repair_markdownA
Idempotent

Repair broken Markdown from LLM output or copy-paste. Fixes unclosed code fences, broken tables (mismatched columns, missing separators), stray emphasis markers, missing heading spaces, inconsistent list indentation, broken links, and excessive whitespace.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesThe potentially broken Markdown text to repair.
output_pathNoOptional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations establish idempotency and non-destructive traits. The description adds valuable behavioral specifics beyond annotations by detailing exactly what constitutes 'repair' (mismatched table columns, missing heading spaces, etc.), clarifying the transformation scope without contradicting the safety hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences with zero waste. The first establishes purpose and context; the second enumerates specific fixes. Every clause earns its place, and the information is appropriately front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 100% schema coverage, idempotent annotations, and clear behavioral description, the definition is sufficiently complete. The lack of an output schema is partially mitigated by the parameter descriptions explaining the dual return modes (direct string vs. file write), though a brief summary of the return structure in the description would be ideal.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, establishing a baseline of 3. While the description implies the input content domain ('broken Markdown' with specific defects), it does not explicitly elaborate on parameter syntax, format constraints, or the optional output_path behaviors beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Repair') with a clear resource ('Markdown') and explicitly scopes the functionality to 'LLM output or copy-paste.' It comprehensively lists specific defects handled (unclosed code fences, broken tables, stray emphasis, etc.), distinguishing it from generic conversion tools in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides contextual usage hints by specifying the source ('LLM output or copy-paste'), implying when the tool is needed. However, it lacks explicit guidance distinguishing it from close siblings like 'lint_markdown' or 'harmonize_markdown' regarding when to repair versus lint or standardize.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 33 tool updatesv0.1.6
    • Addedanalyze_document
    • Addedconvert_to_asciidoc
    • Addedconvert_to_bbcode
    • Addedconvert_to_confluence
    • Addedconvert_to_csv
    • Addedconvert_to_discord
    • Addedconvert_to_docx
    • Addedconvert_to_email_html
    • Addedconvert_to_html
    • Addedconvert_to_image
    • Addedconvert_to_jira
    • Addedconvert_to_json
    • Addedconvert_to_latex
    • Addedconvert_to_md
    • Addedconvert_to_mediawiki
    • Addedconvert_to_orgmode
    • Addedconvert_to_pdf
    • Addedconvert_to_rst
    • Addedconvert_to_rtf
    • Addedconvert_to_slack
    • Addedconvert_to_textile
    • Addedconvert_to_txt
    • Addedconvert_to_xlsx
    • Addedconvert_to_xml
    • Addedextract_code_blocks
    • Addedextract_links
    • Addedextract_structure
    • Addedgenerate_html
    • Addedgenerate_toc
    • Addedharmonize_markdown
    • Addedhtml_to_markdown
    • Addedlint_markdown
    • Addedrepair_markdown
  2. 14 tool updatesv0.1.3
    • Removedconvert_to_csv
    • Removedconvert_to_docx
    • Removedconvert_to_html
    • Removedconvert_to_image
    • Removedconvert_to_json
    • Removedconvert_to_latex
    • Removedconvert_to_md
    • Removedconvert_to_pdf
    • Removedconvert_to_rtf
    • Removedconvert_to_txt
    • Removedconvert_to_xlsx
    • Removedconvert_to_xml
    • Removedgenerate_html
    • Removedharmonize_markdown
  3. 14 tool updatesv0.1.2
    • Changedconvert_to_csv2 fields changed
      • addedInput schema / properties / markdown / description
        Added value: +"The raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path."
      • addedInput schema / properties / output_path / description
        Added value: +"Optional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead."
    • Changedconvert_to_docx2 fields changed
      • addedInput schema / properties / markdown / description
        Added value: +"The raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path."
      • addedInput schema / properties / output_path / description
        Added value: +"Optional. Absolute or relative file path (e.g. './output.docx') where the binary file will be saved. Parent directories are created automatically. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned. If omitted, a JSON object with { format, file_size_bytes, hint, base64_preview } is returned — the hint will instruct you to call the tool again with output_path to save the file. Binary formats (DOCX) should almost always specify output_path."
    • Changedconvert_to_html2 fields changed
      • addedInput schema / properties / markdown / description
        Added value: +"The raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path."
      • addedInput schema / properties / output_path / description
        Added value: +"Optional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead."
    • Changedconvert_to_image2 fields changed
      • addedInput schema / properties / markdown / description
        Added value: +"The raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path."
      • addedInput schema / properties / output_path / description
        Added value: +"Optional. Absolute or relative file path (e.g. './output.png') where the binary file will be saved. Parent directories are created automatically. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned. If omitted, a JSON object with { format, file_size_bytes, hint, base64_preview } is returned — the hint will instruct you to call the tool again with output_path to save the file. Binary formats (PNG) should almost always specify output_path."
    • Changedconvert_to_json3 fields changed
      • addedInput schema / properties / markdown / description
        Added value: +"The raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path."
      • addedInput schema / properties / output_path / description
        Added value: +"Optional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead."
      • addedInput schema / properties / title / description
        Added value: +"Optional. A document title string. Used as the root element name or document metadata title in the output. Defaults to 'document' if omitted."
    • Changedconvert_to_latex2 fields changed
      • addedInput schema / properties / markdown / description
        Added value: +"The raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path."
      • addedInput schema / properties / output_path / description
        Added value: +"Optional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead."
    • Changedconvert_to_md4 fields changed
      • addedInput schema / properties / harmonize / description
        Added value: +"Optional. When true, normalizes Markdown syntax (ATX headers, '-' list markers, fenced code blocks, consistent indentation) before returning or saving. When false or omitted, the Markdown is passed through unchanged. Defaults to false."
      • changedInput schema / properties / harmonize / type
        Previous value: -"string"New value: +"boolean"
      • addedInput schema / properties / markdown / description
        Added value: +"The raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path."
      • addedInput schema / properties / output_path / description
        Added value: +"Optional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead."
    • Changedconvert_to_pdf2 fields changed
      • addedInput schema / properties / markdown / description
        Added value: +"The raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path."
      • addedInput schema / properties / output_path / description
        Added value: +"Optional. Absolute or relative file path (e.g. './output.pdf') where the binary file will be saved. Parent directories are created automatically. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned. If omitted, a JSON object with { format, file_size_bytes, hint, base64_preview } is returned — the hint will instruct you to call the tool again with output_path to save the file. Binary formats (PDF) should almost always specify output_path."
    • Changedconvert_to_rtf2 fields changed
      • addedInput schema / properties / markdown / description
        Added value: +"The raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path."
      • addedInput schema / properties / output_path / description
        Added value: +"Optional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead."
    • Changedconvert_to_txt2 fields changed
      • addedInput schema / properties / markdown / description
        Added value: +"The raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path."
      • addedInput schema / properties / output_path / description
        Added value: +"Optional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead."
    • Changedconvert_to_xlsx2 fields changed
      • addedInput schema / properties / markdown / description
        Added value: +"The raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path."
      • addedInput schema / properties / output_path / description
        Added value: +"Optional. Absolute or relative file path (e.g. './output.xlsx') where the binary file will be saved. Parent directories are created automatically. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned. If omitted, a JSON object with { format, file_size_bytes, hint, base64_preview } is returned — the hint will instruct you to call the tool again with output_path to save the file. Binary formats (XLSX) should almost always specify output_path."
    • Changedconvert_to_xml3 fields changed
      • addedInput schema / properties / markdown / description
        Added value: +"The raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path."
      • addedInput schema / properties / output_path / description
        Added value: +"Optional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead."
      • addedInput schema / properties / title / description
        Added value: +"Optional. The root XML element name and document title. Must be a valid XML element name (no spaces or special characters). Defaults to 'document' if omitted."
    • Changedgenerate_html2 fields changed
      • addedInput schema / properties / markdown / description
        Added value: +"The raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path."
      • addedInput schema / properties / title / description
        Added value: +"Optional. Sets the <title> tag in the HTML document's <head> section. Displayed in browser tabs and bookmarks. Defaults to 'Document' if omitted."
    • Changedharmonize_markdown2 fields changed
      • addedInput schema / properties / markdown / description
        Added value: +"The raw Markdown source text to convert. Supports GitHub-Flavored Markdown (tables, task lists, strikethrough) and KaTeX math expressions. Pass the full document content as a string, not a file path."
      • addedInput schema / properties / output_path / description
        Added value: +"Optional. Absolute or relative file path (e.g. './output.txt') where the result will be saved. Parent directories are created automatically. If omitted, the converted text content is returned directly in the response as a string. If provided, the file is written to disk and a JSON summary with { success, file_path, file_size_bytes, format } is returned instead."
  4. 14 tool updatesv0.1.0
    • First observedconvert_to_csv
    • First observedconvert_to_docx
    • First observedconvert_to_html
    • First observedconvert_to_image
    • First observedconvert_to_json
    • First observedconvert_to_latex
    • First observedconvert_to_md
    • First observedconvert_to_pdf
    • First observedconvert_to_rtf
    • First observedconvert_to_txt
    • First observedconvert_to_xlsx
    • First observedconvert_to_xml
    • First observedgenerate_html
    • First observedharmonize_markdown

TDQS

A3.8/5.0
Disambiguation3/5

Significant overlap exists between convert_to_html and generate_html (both produce HTML, differing only in file I/O behavior) and between convert_to_md with harmonize=true and harmonize_markdown (identical functionality). These duplications force agents to carefully read descriptions to distinguish tools that could have been parameters or a single tool.

Naming Consistency4/5

The vast majority of tools follow a strict verb_noun convention (convert_to_*, extract_*, generate_*, harmonize_*, lint_*, repair_*). However, html_to_markdown breaks this pattern (should be convert_from_html or import_html), and analyze_document is slightly vague compared to the specific extract_* tools.

Tool Count2/5

With 33 tools, this significantly exceeds the 25+ threshold where count becomes overwhelming. The server converts Markdown to 20+ formats, but this could be consolidated into a single convert tool with a format parameter, reducing surface area and cognitive load for agents.

Completeness4/5

Excellent coverage of Markdown export formats (20+ targets), analysis (lint, statistics, structure extraction), and repair operations. Minor gap: only supports HTML as an input format (html_to_markdown), lacking import from Word, PDF, or other common formats for a fully bidirectional converter.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that converts various file formats (PDF, PowerPoint, Word, Excel, Images, etc.) to Markdown to make them accessible to LLMs.
    1
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    A Model Context Protocol server that converts over 29 file formats, including PDFs, Office documents, and audio, into structured Markdown using Microsoft's MarkItDown library. It enables AI assistants to process diverse document types through single file conversion and batch directory processing.
    3
    32
    MIT
  • A
    license
    A
    quality
    Not graded
    maintenance
    An MCP server that enables AI agents to instantly convert Markdown into beautiful, ready-to-deliver Word, PDF, HTML with sidebars, and Slideshow documents, bridging the "last mile" of AI content generation.
    7
    28
    1
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/XJTLUmedia/MCP_Markdown_Formatter'

If you have feedback or need assistance with the MCP directory API, please join our Discord server