{"apiVersion":"v1","directorySlug":"pptx-mcp-3eb29bfa33","title":"pptx.dev - Hosted PPTX Engine","description":"Hosted REST API and developer workbenches for turning OpenPresentation JSON into production .pptx files, with validation, parsing, Author, Inspector, and Decoder.","pageUrl":"https://www.mcpbundles.com/skills/pptx-mcp-3eb29bfa33","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://mcp.pptx.dev/mcp","hostedMcpUrl":null,"toolCount":17,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"dev.pptx/pptx-mcp-3eb29bfa33","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"generate_presentation","description":"Submit an OPF (Open Presentation Format) document to pptx.dev. PPTX returns base64 PowerPoint bytes plus filename/slide metadata; PDF/PNG/SVG are not implemented yet and return a not_implemented (501) error. Use `validate_opf` first to catch schema errors client-side.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["document"],"properties":{"format":{"enum":["pptx","pdf","png","svg"],"type":"string"},"document":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"title":"Generate a presentation from OPF JSON","logicalName":"generate_presentation","displayName":"Generate a presentation from OPF JSON","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"parse_pptx","description":"Upload a .pptx file (as base64 bytes) and get back OPF JSON plus a parseId for follow-up reads. Useful for converting existing decks into an AI-editable format. Remote transport only accepts base64 data — local filesystem paths are not supported on the hosted server.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["data"],"properties":{"data":{"type":"string"},"mode":{"enum":["opf","parse"],"type":"string"},"filename":{"type":"string"}}},"title":"Parse a .pptx file into OPF JSON","logicalName":"parse_pptx","displayName":"Parse a .pptx file into OPF JSON","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"validate_opf","description":"Validate an OPF document against the canonical schema at https://openpresentation.org/schema/opf/v1. Returns { valid, errors[], warnings[] }. Validation is free and should be run before generate_presentation.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["document"],"properties":{"document":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"title":"Validate an OPF document","logicalName":"validate_opf","displayName":"Validate an OPF document","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"render_format","description":"Render a .pptx file (base64 bytes) to web (interactive slides with text runs), svg, or png. web returns slide data + viewerUrl; svg/png are not implemented yet and return a not_implemented (501) error.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["data","format"],"properties":{"data":{"type":"string"},"format":{"enum":["web","svg","png"],"type":"string"},"slides":{"type":"array","items":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0}},"filename":{"type":"string"}}},"title":"Render a .pptx file to a target format","logicalName":"render_format","displayName":"Render a .pptx file to a target format","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"upload_deck","description":"Store a .pptx file or an OPF JSON document in pptx.dev deck storage. Without deckId it creates a new deck; with deckId it adds a new version to that deck (same format). Pass the file as base64 bytes with a filename ending in .pptx, .json or .opf. Returns the deck and version metadata.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["data","filename"],"properties":{"data":{"type":"string"},"name":{"type":"string"},"deckId":{"type":"string","pattern":"^dk_[0-9a-f]{24}$"},"filename":{"type":"string"}}},"title":"Store a deck","logicalName":"upload_deck","displayName":"Store a deck","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_decks","description":"List the decks stored for this API key's owner, most recently updated first, with storage usage and limits. Use nextCursor to page.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"integer","maximum":100,"minimum":1},"cursor":{"type":"string"}}},"title":"List stored decks","logicalName":"list_decks","displayName":"List stored decks","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_deck","description":"Read a stored deck's metadata and its versions (newest first).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["deckId"],"properties":{"deckId":{"type":"string","pattern":"^dk_[0-9a-f]{24}$"}}},"title":"Get a stored deck","logicalName":"get_deck","displayName":"Get a stored deck","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"download_deck","description":"Download a stored version (the latest unless version is set) as base64 bytes. Files over 10485760 bytes are not returned inline: create a share link instead.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["deckId"],"properties":{"deckId":{"type":"string","pattern":"^dk_[0-9a-f]{24}$"},"version":{"type":"integer","maximum":9007199254740991,"minimum":1}}},"title":"Download a stored deck","logicalName":"download_deck","displayName":"Download a stored deck","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"delete_deck","description":"Delete a stored deck with every version and share link. This cannot be undone.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["deckId"],"properties":{"deckId":{"type":"string","pattern":"^dk_[0-9a-f]{24}$"}}},"title":"Delete a stored deck","logicalName":"delete_deck","displayName":"Delete a stored deck","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"create_deck_share_link","description":"Create an expiring link that downloads a stored deck without an account. The URL and token are shown only in this result. Defaults: latest version at download time, 7 days.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["deckId"],"properties":{"deckId":{"type":"string","pattern":"^dk_[0-9a-f]{24}$"},"version":{"type":"integer","maximum":9007199254740991,"minimum":1},"expiresInSeconds":{"type":"integer","maximum":2592000,"minimum":60}}},"title":"Create a share link","logicalName":"create_deck_share_link","displayName":"Create a share link","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_deck_share_links","description":"List a stored deck's share links (ids, expiry, revocation; tokens are never shown again).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["deckId"],"properties":{"deckId":{"type":"string","pattern":"^dk_[0-9a-f]{24}$"}}},"title":"List share links","logicalName":"list_deck_share_links","displayName":"List share links","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"revoke_deck_share_link","description":"Revoke a share link; its URL stops working at once.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["deckId","shareId"],"properties":{"deckId":{"type":"string","pattern":"^dk_[0-9a-f]{24}$"},"shareId":{"type":"string","pattern":"^sh_[0-9a-f]{24}$"}}},"title":"Revoke a share link","logicalName":"revoke_deck_share_link","displayName":"Revoke a share link","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"import_data","description":"Convert CSV, TSV, JSON or .xlsx data into OPF table or chart content, and either return a one-slide OPF document or add the content to a document you pass. Send text data in `data` (CSV/TSV/JSON text, JSON records, a row matrix or {columns, rows}), or an .xlsx workbook as base64 in `fileBase64` with `filename`. Charts take the first column as categories and the other columns as numeric series unless `category`/`series` say otherwise. Returns content, document, target, source and a validation rep","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["as"],"properties":{"as":{"enum":["table","chart"],"type":"string"},"data":{"anyOf":[{"type":"string"},{"type":"array","items":{}},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}]},"path":{"type":"string"},"sheet":{"anyOf":[{"type":"string"},{"type":"integer","maximum":9007199254740991,"minimum":1}]},"format":{"enum":["csv","tsv","json","xlsx"],"type":"string"},"header":{"type":"boolean"},"series":{"type":"array","items":{"type":"string"}},"columns":{"type":"array","items":{"type":"string"}},"category":{"type":"string"},"document":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"filename":{"type":"string"},"chartType":{"type":"string"},"delimiter":{"type":"string"},"fileBase64":{"type":"string"}}},"title":"Turn data into an OPF table or chart","logicalName":"import_data","displayName":"Turn data into an OPF table or chart","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"diff_decks","description":"Structural diff of two OPF decks (inline or stored): slide matches (by id, identical content, then similarity), categorized changes, a slide-level summary, a plain-text report, and an RFC 6902 patch from a to b that apply_patch applies.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["a","b"],"properties":{"a":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"b":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"report":{"type":"boolean"},"threshold":{"type":"number","maximum":1,"minimum":0}}},"title":"Diff two OPF decks","logicalName":"diff_decks","displayName":"Diff two OPF decks","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"apply_patch","description":"Apply RFC 6902 operations to an OPF deck atomically and return the result with the inverse patch (for undo). Validates the result by default and refuses an invalid document; with a stored deck, save: true stores the result as a new version.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["document","patch"],"properties":{"save":{"type":"boolean"},"patch":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"strict":{"type":"boolean"},"document":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"validate":{"type":"boolean"}}},"title":"Apply a JSON Patch to an OPF deck","logicalName":"apply_patch","displayName":"Apply a JSON Patch to an OPF deck","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"lint_deck","description":"Format and reference checks (schema checks and catalog reference checks against the records the deck embeds and the default catalog pptx.dev registers, with suggestions), design and accessibility audit (contrast, overflow, type size, alt text, reading order, charts, ...) and a font report for an OPF deck, as findings in core's Finding format. Pass source (JSON text) instead of document to get line and column for each finding.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"audit":{"type":"boolean"},"fonts":{"type":"boolean"},"source":{"type":"string"},"document":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"auditOptions":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"title":"Check an OPF deck","logicalName":"lint_deck","displayName":"Check an OPF deck","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"check_fonts","description":"Font report: every family an OPF deck (inline or stored), a stored .pptx deck, an uploaded .pptx (base64) or a list names, with OPF's font policy (license class, where viewers get it, the open replacement previews use) and viewer diagnostics.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"document":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"families":{"type":"array","items":{"type":"string"}},"pptxBase64":{"type":"string"}}},"title":"Check a deck's fonts","logicalName":"check_fonts","displayName":"Check a deck's fonts","annotations":{"untrustedContentHint":true,"readOnlyHint":true}}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=pptx-dev---Hosted-PPTX-Engine&config=eyJ1cmwiOiAiaHR0cHM6Ly9tY3AucHB0eC5kZXYvbWNwIn0%3D"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22pptx-dev---Hosted-PPTX-Engine%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.pptx.dev%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22pptx-dev---Hosted-PPTX-Engine%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.pptx.dev%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=pptx.dev+-+Hosted+PPTX+Engine&connectorUrl=https%3A%2F%2Fmcp.pptx.dev%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"pptx-dev---Hosted-PPTX-Engine\" --url \"https://mcp.pptx.dev/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/pptx-mcp-3eb29bfa33","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/pptx-mcp-3eb29bfa33/tools/{tool}","mcpServerUrl":"https://mcp.pptx.dev/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/pptx-mcp-3eb29bfa33?live=1"}