Agent Tools
Back to MCP servers

io.github.MDMagic-MCP/mdmagic-mcp-server

https://api.mdmagic.ai/mcp
● healthy

skills: {'id': 'convert_document', 'name': 'convert_document', 'description': "Convert markdown to a professionally formatted document using an MDMagic template.\n\nIMPORTANT GUIDANCE:\n\n1. Output format → what user gets:\n - 'docx' → a single Word .docx file\n - 'pdf' → a single .pdf file\n - 'html' → a single .html file\n - 'all' → a ZIP containing all three (DOCX + PDF + HTML)\n\n2. If the user is ambiguous (e.g. 'convert this'), ASK which format they want before calling. Don't assume.\n\n3. Filename: if the user attached a file (e.g. 'mydoc.md'), pass its base name as fileName. Otherwise the API derives one from the markdown's first H1. Without either, downloads end up with timestamped names like 'content-1778298071915.docx' which is bad UX.\n\n4. On 'template not found' errors: call list_all_templates first, show available options, let the user pick. Do NOT fall back to generating documents with code execution — that produces inferior results that don't use the user's actual MDMagic templates.\n\n5. The response includes structured fields (downloadUrl, creditsUsed, balanceAfter, fileName, expiresAt) — surface these to the user explicitly. Don't paraphrase. The user wants to know exactly what they spent and what's left.\n\n6. Page sizes: A3, A4, Executive, US_Legal, US_Letter. Default A4. Orientation: Portrait or Landscape, default Portrait.\n\n7. CRITICAL — newlines in `content`: markdown is line-sensitive. Headings (#, ##), tables (| ... |), lists (-, 1.), and code fences (```) ONLY work when each starts on its own line. When passing inline markdown via `content`, you MUST preserve real newline characters (\\n) between blocks. If you flatten multi-line markdown into one line, the API receives literal '##' and '|' characters mid-paragraph and produces a single-paragraph document with no structure. Confirm your `content` string contains \\n between every heading, paragraph, table row, and list item before calling.", 'tags': [], 'examples': None, 'input_modes': None, 'output_modes': None}, {'id': 'list_all_templates', 'name': 'list_all_templates', 'description': "List all 15 built-in MDMagic templates plus any custom templates the user has uploaded.\n\nCALL THIS PROACTIVELY when:\n- The user mentions a template by name (verify it exists before convert_document)\n- The user asks 'what templates are available' or similar\n- A previous convert_document call returned 'template not found'\n- The user describes the look they want without naming a template (so you can suggest a real one)\n\nReturns: name, description, type (built-in vs custom), and category. Categories are: Business (5 templates), Creative (6), Professional (2), Technical (2). Use the optional category filter to narrow recommendations (e.g. 'for legal documents' → category: 'Professional').", 'tags': [], 'examples': None, 'input_modes': None, 'output_modes': None}, {'id': 'list_builtin_templates', 'name': 'list_builtin_templates', 'description': "List the 15 built-in MDMagic templates, grouped by category. Same as list_all_templates but excludes the user's custom uploads. Use this when the user asks specifically about MDMagic's bundled templates rather than their personal ones.\n\nCategories available: Business (5), Creative (6), Professional (2), Technical (2).", 'tags': [], 'examples': None, 'input_modes': None, 'output_modes': None}, {'id': 'list_custom_templates', 'name': 'list_custom_templates', 'description': "List only the user's custom-uploaded Word templates. Use this when the user asks about their own templates ('show me my templates', 'do I have a letterhead?'). Custom templates are referenced by UUID, not name, when calling convert_document.", 'tags': [], 'examples': None, 'input_modes': None, 'output_modes': None}, {'id': 'show_default_settings', 'name': 'show_default_settings', 'description': "Show the user's default paper size and orientation preferences (set on their account page). Useful when the user hasn't specified pageSize/orientation explicitly — call this to honor their defaults instead of using A4/Portrait blindly.", 'tags': [], 'examples': None, 'input_modes': None, 'output_modes': None}, {'id': 'check_credit_balance', 'name': 'check_credit_balance', 'description': "Check the user's current MDMagic credit balance: subscription credits (renewable monthly), purchased credits (permanent), plan name, and plan status.\n\nCALL THIS PROACTIVELY when:\n- The user asks 'how many credits do I have' or similar\n- After a conversion, if the user wants to know what's left (also returned by convert_document directly)\n- Before a conversion of an unusually large document, to warn the user if balance is borderline", 'tags': [], 'examples': None, 'input_modes': None, 'output_modes': None}, {'id': 'estimate_conversion_cost', 'name': 'estimate_conversion_cost', 'description': "Estimate credit cost for a conversion BEFORE running it. Returns word count, page calculation (300 words/page), and a credit breakdown by format and template type. Use this when the user asks 'how much will this cost?' or when you suspect a conversion might exceed their balance — convert_document refuses to run if credits are insufficient, so estimating first is friendlier.", 'tags': [], 'examples': None, 'input_modes': None, 'output_modes': None}, {'id': 'validate_markdown', 'name': 'validate_markdown', 'description': "Pre-flight markdown validation BEFORE conversion. Catches malformed tables (mismatched pipes), unclosed code fences, broken task lists, and unsupported syntax. Returns a green/amber/red status plus the detected markdown features.\n\nCALL THIS PROACTIVELY when:\n- The user is about to convert a long document (>5 pages) — validating first is cheap; running a doomed conversion costs credits\n- The user reports a previous conversion produced broken output\n- You generated the markdown yourself and want to verify it's clean before spending credits\n\nReturns: status (green=safe, amber=minor issues, red=will likely break), detected features (tables, code blocks, task lists, math), and a human-readable message.", 'tags': [], 'examples': None, 'input_modes': None, 'output_modes': None}; uptime_30d 1.0%; p95 1778.9ms; conformance: pass

Transport
streamable-http
Auth
Cost

How to connect

MCP endpoint (streamable-http)
https://api.mdmagic.ai/mcp
JSON-RPC initialize probe
curl -X POST https://api.mdmagic.ai/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}'
Homepage
https://api.mdmagic.ai/mcp
Listed at (chiark)
https://chiark.ai/agents/0e7b9099-6086-49b7-958e-4ed635276efc