{"id":572626,"recorded_at":"2026-10-27T22:40:11.294383Z","observed_at":"2026-10-27T22:40:11.294292Z","subject_kind":"endpoint","subject":"34a2374c-76cc-43be-8954-b782c54d3bba","kind":"mcp.tools","method":"probe.mcp/1","body":{"count":10,"tools":[{"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","inputSchema":{"additionalProperties":false,"properties":{},"type":"object"},"name":"check_credit_balance"},{"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.","inputSchema":{"properties":{"content":{"description":"Raw markdown text content (alternative to filePath or fileContent). MUST preserve real newlines (\\n) between every block: heading, paragraph, table row, list item, code fence. Markdown is line-sensitive — a single-line blob with embedded '##' or '|' renders as literal text, not as a heading or table. If your source markdown has 30 lines, the string you pass here also has 30 lines separated by \\n.","type":"string"},"fileContent":{"description":"Base64 encoded file content (alternative to content or filePath)","type":"string"},"fileName":{"description":"Optional desired base name for the output file (without extension). If the user attached a file like 'mydoc.md', pass 'mydoc' here. The API will use this for the download filename. If omitted, the API derives one from the markdown's first H1 heading.","type":"string"},"filePath":{"description":"Path to markdown file (VS Code integration, alternative to content or fileContent)","type":"string"},"orientation":{"description":"Page orientation (default: Portrait)","enum":["Portrait","Landscape"],"type":"string"},"outputFormat":{"description":"Output format. 'docx', 'pdf', or 'html' return that single file; 'all' returns a ZIP with DOCX+PDF+HTML.","enum":["docx","pdf","html","all"],"type":"string"},"pageSize":{"description":"Page size for the document (default: A4)","enum":["A3","A4","Executive","US_Legal","US_Letter"],"type":"string"},"templateName":{"description":"Template to use for conversion. Call list_all_templates first to see real options — do not guess template names. Some templates are built-in (e.g. 'Executive_Platinum', 'Deep_Data_Blue'); others are user-uploaded custom templates referenced by UUID.","type":"string"}},"required":["templateName","outputFormat"],"type":"object"},"name":"convert_document"},{"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.","inputSchema":{"properties":{"content":{"description":"Markdown content to estimate credit cost for","type":"string"},"orientation":{"description":"Page orientation","enum":["Portrait","Landscape"],"type":"string"},"outputFormat":{"description":"Output format(s): docx (DOCX only), pdf (DOCX+PDF), html (DOCX+HTML), all/all-formats (DOCX+PDF+HTML)","enum":["docx","pdf","html","all","all-formats"],"type":"string"},"pageSize":{"description":"Page size for the document","enum":["A3","A4","Executive","US_Legal","US_Letter"],"type":"string"},"templateName":{"description":"Template ID or name (UUID for custom templates, name for system templates)","type":"string"}},"required":["content","templateName","outputFormat"],"type":"object"},"name":"estimate_conversion_cost"},{"description":"Show available variants (page sizes and orientations) for a specific template. All MDMagic templates support the full 5×2 matrix: A3, A4, Executive, US_Legal, US_Letter × Portrait/Landscape. Use this when the user asks 'does this template come in Legal Landscape?' or 'what sizes are available?' — confirms the variant before convert_document runs.","inputSchema":{"properties":{"templateName":{"description":"Template ID or name (e.g. Executive_Platinum, or a UUID for custom templates)","type":"string"}},"required":["templateName"],"type":"object"},"name":"get_template_details"},{"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').","inputSchema":{"properties":{"category":{"description":"Optional filter — return only built-in templates in this category. Custom templates are always included regardless. Categories: Business (executive/financial), Creative (designer/artistic/novelty), Professional (legal), Technical (code/data documentation).","enum":["Business","Creative","Professional","Technical"],"type":"string"},"includeDetails":{"description":"Include template details like available page sizes and orientations (default: false)","type":"boolean"}},"type":"object"},"name":"list_all_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).","inputSchema":{"properties":{"category":{"description":"Optional filter — return only templates in this category.","enum":["Business","Creative","Professional","Technical"],"type":"string"},"includeDetails":{"description":"Include template details like available page sizes and orientations (default: false)","type":"boolean"}},"type":"object"},"name":"list_builtin_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.","inputSchema":{"properties":{"includeDetails":{"description":"Include template details like available page sizes and orientations (default: false)","type":"boolean"}},"type":"object"},"name":"list_custom_templates"},{"description":"Suggest the best built-in template(s) for a described purpose. Use this when the user describes WHAT the document is (e.g. 'Q4 board pack', 'API reference', 'wedding invitation', 'legal contract') without naming a template. Returns ranked recommendations with rationale.\n\nWhy this exists: AI assistants often guess template names that don't exist. This tool maps purpose → real template names from MDMagic's catalog, so convert_document doesn't fail with 'template not found'.","inputSchema":{"properties":{"purpose":{"description":"Free-text description of the document's purpose. Examples: 'Q4 board pack for investors', 'restaurant menu', 'developer API documentation', 'wedding invitation'.","type":"string"},"topN":{"description":"How many recommendations to return (1-5, default 3)","maximum":5,"minimum":1,"type":"integer"}},"required":["purpose"],"type":"object"},"name":"recommend_template"},{"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.","inputSchema":{"properties":{},"type":"object"},"name":"show_default_settings"},{"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.","inputSchema":{"properties":{"content":{"description":"Markdown content to validate","type":"string"},"filename":{"description":"Optional filename label for the response (defaults to 'content.md')","type":"string"}},"required":["content"],"type":"object"},"name":"validate_markdown"}]},"body_sha256":"9d987e44222789cf7fdf2bfd78f48a5b301786c1884c8950df999ce455160a83","prev_id":null,"leaf":"0x0f4f7159bee031312f5efb0633b3faa393f66944416ad64c939afc4dad7f9eb3","leaf_text":"{\"body\":\"9d987e44222789cf7fdf2bfd78f48a5b301786c1884c8950df999ce455160a83\",\"id\":572626,\"kind\":\"mcp.tools\",\"method\":\"probe.mcp/1\",\"observed_us\":1793140811294292,\"prev\":null,\"subject\":\"34a2374c-76cc-43be-8954-b782c54d3bba\",\"subject_kind\":\"endpoint\"}","day":{"day":"2026-10-27","leaves":273461,"root":"0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795","chained":"0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4","anchor_chain":"eip155:5042002","anchor_tx":"0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4","anchor_block":69414147},"proof":["0x0f4f6fa5b83f3ebb8a89d73e451eae976daee8b09477e5bf7b7833e37638fee5","0xa44a4355a39dea677173bf50210abb8e71264697f38d55888f61f3ed8193d4ce","0xb70e64fa63888c18ea873431ff05b6f9e4b07700f0ec45231281c649e746b024","0x1e859dba862520c41ec646c1e74db881983a546ab27a552a5180a38a7a450d18","0xb69def917ba7f5f64ed03fa2d85af4133008f45e7a04580397f520d634bd75fc","0xa52f7eb036c486f904926433533752f7865e431f2e270480a44e5bad7a7181f1","0x58e0c1fd3d0bfdb2f2d02c62c2291afa14cb31decc4f751e08411e83fa5a3589","0x3352c34d5f95624fe6e3a1c42fb977b1ff4b98a8c2f6959d2fd517848def72e2","0x94e3adc3453b97e2381f3d1853df242494e07fbc1c98fa4a9610c5061c2958b6","0x3324226ef6439ba555d292fabbb2b6297d76704172ae3e5401de83f038382a74","0xeaa85500d1d950bbc5368f8c449457f4c36bb01a9a460f0c2aedbe49bdc0e2a3","0x7cd06df307fe3d7d57464d35c7dee68ec2e0c9035898fd7f919c08ed5fd0a5fb","0xa5d3d95b495ae2191612e64fe151fe065497e5ecb73bb111e1fabb6b3628f3de","0x3e0ec8a2a8a954695a9b53a4a48a7656d7e3fd6a8795c73b49e2ef05b201ec3f","0x2cf27e8a181d60d0dd27c186c2eddfcbb4e8fa71cf66feeb55a4d730e15ee8c4","0x518b93854db03dc9fc938883abf30da6eaae5ae0d4336903968fd32a7df8c71b","0x22c1fb9487ee0b9732fa017a0cc321eb27a60c08450d112f755089796e12cb1c","0xa20d48798a34aba12eb9c7297722982d910f06c148f5e27ac59307422964a585","0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699"]}