{"serverId":"mcp-registry/com.epublys/epublys","tools":[{"name":"merge_epub","fixed":{"name":"merge_epub","description":"Merge multiple EPUB files into a single ebook with table of contents and chapter dividers. Accepts 2+ base64-encoded EPUB files.\n\nFree tier: 5MB/file (10MB for pdf-to-epub, 15MB for split), 3 operations/day, 15 req/min, output includes Epublys branding.\nPro ($9/mo): 30MB per operation, unlimited daily operations, 60 req/min, no branding.\n\nWhen a call is refused with daily_limited or a Pro-only error, call the `upgrade_to_pro` tool — it returns a checkout link to hand the user. Details: https://e","inputSchema":{"type":"object","required":["files"],"properties":{"files":{"type":"array","items":{"type":"string","description":"Base64-encoded EPUB file content"},"minItems":2,"description":"Array of base64-encoded EPUB files to merge (order preserved)"},"names":{"type":"array","items":{"type":"string"},"description":"Original filenames, in the same order as files — the output is named after them (\"A + B.epub\", or \"A + N more.epub\" past two); without them it is merged.epub"},"title":{"type":"string","maxLength":300,"description":"Title for the merged EPUB (optional)"},"author":{"type":"string","maxLength":300,"description":"Author for the merged EPUB (optional)"},"dividers":{"type":"boolean","default":true,"description":"Insert divider pages between books"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":367,"tokensAfter":367},{"name":"read_epub_metadata","fixed":{"name":"read_epub_metadata","description":"Read metadata from an EPUB file (title, author, language, publisher, description, series, cover status, etc.). Returns JSON — no file output.\n\nFree tier: 5MB/file (10MB for pdf-to-epub, 15MB for split), 3 operations/day, 15 req/min, output includes Epublys branding.\nPro ($9/mo): 30MB per operation, unlimited daily operations, 60 req/min, no branding.\n\nWhen a call is refused with daily_limited or a Pro-only error, call the `upgrade_to_pro` tool — it returns a checkout link to hand the user. Detai","inputSchema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","description":"Base64-encoded EPUB file content"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":193,"tokensAfter":193},{"name":"validate_epub","fixed":{"name":"validate_epub","description":"Validate an EPUB file for errors, compatibility issues, and spec compliance. Returns JSON with check results. Can optionally auto-fix common issues.\n\nFree tier: 5MB/file (10MB for pdf-to-epub, 15MB for split), 3 operations/day, 15 req/min, output includes Epublys branding.\nPro ($9/mo): 30MB per operation, unlimited daily operations, 60 req/min, no branding.\n\nWhen a call is refused with daily_limited or a Pro-only error, call the `upgrade_to_pro` tool — it returns a checkout link to hand the user","inputSchema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","description":"Base64-encoded EPUB file content"},"autoFix":{"type":"boolean","default":false,"description":"Auto-fix common issues and return repaired EPUB"},"deepScan":{"type":"boolean","default":true,"description":"Perform deep scan (XHTML well-formedness, broken links, etc.)"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":256,"tokensAfter":256}],"toolsChanged":3,"tokensSaved":0,"todo":[{"tool":"edit_epub_metadata","params":["date","isbn","title","author","series","language","publisher","description","seriesPosition"]},{"tool":"epub_to_pdf","params":["pageSize","fontFamily","pageNumbers"]},{"tool":"markdown_to_epub","params":["language"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}