DeckCraft MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@DeckCraft MCP ServerMake a 6-slide pitch deck with a sales chart, as PPTX and PDF."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Why
DeckCraft is an open-source, PowerPoint-class presentation app with a headless CLI (deckcraft-cli), 226 commands, eight themes, PowerPoint .pptx import and export and an MCP mode. This Model Context Protocol server turns that engine into file-in / file-out tools for Claude, so you can ask things like:
"Make a 6-slide pitch deck with a chart of our sales and a table by region, as PPTX and PDF." "Turn this outline into slides with the Harbor theme, slide numbers and speaker notes." "In every deck in
D:\Decks, replace 'ACME Ltd.' with 'ACME Inc.' and add a footer." "Export this presentation as notes pages and as one PNG per slide." "Read this pptx and summarize what each slide says."
Sibling of designcraft-mcp-server, effectcraft-mcp-server, lightcraft-mcp-server, photocraft-mcp-server, vectorcraft-mcp-server, filmcraft-mcp-server, pdfcraft-mcp-server, wordcraft-mcp-server, soundcraft-mcp-server, gridcraft-mcp-server and audacity-mcp-server.
Related MCP server: PPTX MCP Server
Platforms
OS | DeckCraft package to install | Where the server finds it (no setup needed) | Status |
Windows 10/11 (x64, x86, arm64) | MSI or portable zip |
| β Verified (Windows 11) |
Linux (x86_64, aarch64, riscv64) |
|
| β Verified (Debian 12, headless) |
macOS 11+ (Apple silicon and Intel) |
|
| π‘ Supported, not yet tested on a Mac |
All downloads: DeckCraft releases (there is also a FreeBSD tar.gz; set DECKCRAFT_DIR to it). Anywhere else: set DECKCRAFT_DIR (folder, .tar.gz root or DeckCraft.app) or DECKCRAFT_CLI.
macOS: the DMG contains only the app. Unzip the separate
deckcraft-clizip and movedeckcraft-clito/usr/local/bin(or pointDECKCRAFT_CLIat it). The first run checks Apple's notarization online.Linux: the AppImage and Flatpak contain only the app, not
deckcraft-cli; use the deb, rpm or tar.gz. For an AppImage app, setDECKCRAFT_APPsoopen_in_deckcraftcan start it. On a server without a GPU, the verified setup usedlibxkbcommon0 libvulkan1 libegl1 mesa-vulkan-drivers libasound2 fontconfig.
How it works
Part | What it is |
DeckCraft engine ( | DeckCraft's own engine: layouts, placeholders, text, shapes, pictures, charts, tables, themes, transitions, animations and the PPTX / PDF / PNG / outline writers. Started fresh and headless for each job, so it never touches the DeckCraft app or an open deck. |
MCP server (Node.js) | 9 high-level tools. Builds decks from a list of slides: picks the layout, fills the placeholders, sets bullet levels, puts a picture, chart or table in the free content area (pictures kept in proportion), removes empty placeholders, turns text white on dark backgrounds, checks every output first and returns pictures of the slides to check them. |
Live app (optional) |
|
Tools
Tool | What it does |
| A new deck from slides (title, subtitle, bullets with levels in one or two columns, picture, chart, table, shapes, text boxes, notes, background, transition, bullet animation) or from an outline; theme, colour and font schemes, 16:9 or 4:3, slide numbers, footer, properties |
| One deck, a list or a folder: find and replace (titles, text, shapes, table cells, footers), theme, colour and font schemes, slides added at any position or deleted, notes, transitions, slide numbers and footer; written as a new copy |
| One deck, a list or a folder β pptx, pdf (slides, notes pages, handouts 1-9 per page), deckcraft, png / jpeg per slide, outline |
| Slides with layouts, every shape (id, kind, box, text), tables, charts, notes, transitions and animations; theme, fonts, size; optional spelling and accessibility review |
| Slides shown to Claude and optionally saved as PNG |
| 226 commands with parameters, themes and colour / font schemes, layouts, shape presets, transitions, animations, formats |
| Any engine commands plus |
| Open decks in the DeckCraft app, optionally with the control channel |
| Platform, installation, version, commands, themes, app / control port |
Opens | PowerPoint .pptx (also .pptm, .potx), .deckcraft; places PNG, JPEG, GIF, BMP, WebP and SVG |
Saves | pptx, pdf (slides, notes pages, handouts), deckcraft, png / jpeg per slide, text outline |
Coordinates are points on the slide (a 16:9 slide is 960 Γ 540 pt); a picture, chart or table without a box fills the free content area. Themes: DeckCraft, Harbor, Ember, Meadow, Nocturne, Paper, Coral Reef, Slate.
Example
{
"name": "Q4 plan",
"theme": "Ember",
"slide_numbers": true,
"footer": "ACME Inc.",
"transition": "fade",
"slides": [
{ "title": "Q4 plan", "subtitle": "Sales team Β· October" },
{ "title": "Goals", "bullets": ["Grow 12 %", { "text": "Colombia and Peru", "level": 1 }, "Cut costs 5 %"],
"notes": "One minute per goal.", "animate_bullets": "fade" },
{ "title": "Sales by quarter", "bullets": ["Q3 was the best quarter"],
"chart": { "type": "column", "categories": ["Q1", "Q2", "Q3"],
"series": [{ "name": "2025", "values": [9, 10, 11] }, { "name": "2026", "values": [10, 12, 15] }], "legend": "bottom" } },
{ "title": "Results by region", "table": { "rows": [["Region", "Sales", "Change"], ["North", "1,200", "+8 %"], ["South", "950", "+15 %"]] } },
{ "title": "Our team", "bullets": ["Design", "Engineering"], "image": { "path": "C:\\Pictures\\team.jpg" } },
{ "title": "Thank you", "layout": "sectionHeader", "subtitle": "Questions?", "background": "#1E2B3C" }
],
"formats": ["pptx", "pdf"],
"output_dir": "C:\\Decks"
}Requirements
DeckCraft with
deckcraft-cli(tested with 0.6.1); see PlatformsNode.js β₯ 20 (bundled with Claude Desktop for
.mcpbinstalls)
Installation
Claude Desktop (recommended, all platforms)
Download
deckcraft-mcp-server.mcpbfrom the latest release.Double-click it (or drag it into Claude Desktop β Settings β Extensions) and click Install.
Optional: if DeckCraft is not in a standard location, fill in its folder or the
deckcraft-clipath in the extension settings.
Sunsam Code
Install DeckCraft Bridge from the Sunsam Code marketplace, or drop the .mcpb into MCP β Install extension.
Codex (OpenAI)
Recommended β the marketplace (gets updates): Plugins β Add β Add marketplace, source jhonsu01/craft-marketplace, reference main, then install DeckCraft Bridge from Craft Bridges (craft-marketplace). New versions arrive by refreshing the marketplace. Or upload the zip (Codex then keeps it in your account and refuses a newer zip with the same name):
Download
deckcraft-mcp-server-<version>-codex.zipfrom the latest release.In Codex: Plugins β Add β New plugin, choose the zip and click Add plugin.
Codex starts the server with
node, so Node.js β₯ 20 must be onPATH. If DeckCraft is not in a standard location, setDECKCRAFT_DIRorDECKCRAFT_CLIas system environment variables (Codex has no settings form for local plugins).
DeepSeek Harness
Plugins β Add plugin, enter
github:jhonsu01/craft-marketplace#path:/plugins/deckcraft-mcp-serverand click Install, then Enable now.Harness runs the server with its own MCP client and
node(Node.js β₯ 20 onPATH); the tools appear asmcp__deckcraft__<tool>and the output files as cards that open in Harness.Harness does not update plugins by itself yet: to upgrade, uninstall the plugin and install it again with the same address.
Claude Code / other MCP clients
git clone https://github.com/jhonsu01/deckcraft-mcp-server.git
cd deckcraft-mcp-server
npm install
npm run buildWindows:
claude mcp add deckcraft -- node "%CD%\dist\bundle.cjs"macOS / Linux:
claude mcp add deckcraft -- node "$PWD/dist/bundle.cjs"Configuration
Variable | Meaning |
| DeckCraft folder, one of its executables, a |
| Path of |
| Path of the desktop app when it lives elsewhere (e.g. a Linux AppImage) |
| Control port of the desktop app (default 7990) |
| Maximum seconds per engine call (default 3600) |
Safety
Files are never overwritten unless
overwrite: true: a free name (_2) is used in folders and an existingoutput_pathis an error. Inputs are only read; an edited file is saved only as a new copy (_edited).All paths must be absolute. The engine runs headless and never touches the DeckCraft app unless
live: true.Everything runs locally with no network access. Each job uses a private engine in a temporary folder that is deleted at the end.
Development
npm run build # TypeScript + single-file bundle (dist/bundle.cjs)
npm test # unit tests (Windows, macOS and Linux path logic)
npm run test:e2e # 28 end-to-end checks (30 with `E2E_LIVE=1`) over real MCP stdio (synthetic picture)
npm run pack:mcpb # deckcraft-mcp-server.mcpb
npm run pack:codex # Codex / DeepSeek Harness plugin zipLinux test in Docker (unpack deckcraft-<version>-linux-x86_64.tar.gz first):
docker run --rm -v "$PWD:/work:ro" -v "/path/to/deckcraft-0.6.1-linux-x86_64:/opt/deckcraft:ro" -e DECKCRAFT_DIR=/opt/deckcraft -w /work node:22-bookworm bash -c "apt-get update && apt-get install -y libxkbcommon0 libvulkan1 libegl1 mesa-vulkan-drivers libasound2 fontconfig && node scripts/e2e.mjs"License
Apache-2.0. DeckCraft is Β© its authors (Storytold), MIT or Apache-2.0. This project is not affiliated with or endorsed by DeckCraft or Storytold. PowerPoint is a trademark of Microsoft.
Available Tools
9 toolsconvert_presentationConvert presentationsB
Convert PowerPoint (.pptx) or DeckCraft (.deckcraft) presentations (one, a list or a folder) to pdf (slides, notes pages or handouts), pptx, deckcraft, png / jpeg images of every slide, or a text outline.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | png / jpeg: pixels per point (default 2 = 1920Γ1080 for 16:9). | |
| suffix | No | ||
| formats | No | Outputs: pptx (PowerPoint), pdf, deckcraft (DeckCraft's own file), png / jpeg (one image per slide: <name>1.png...) and outline (the slide titles and text as .txt). | |
| input_dir | No | ||
| overwrite | No | Replace existing outputs. | |
| input_path | No | ||
| output_dir | No | Absolute output folder (default: next to the input; required for new files). | |
| pdf_layout | No | pdf: slides, notes pages (slide + speaker notes) or handouts. | slides |
| input_paths | No | ||
| output_path | No | Absolute output file for the first format (its extension must match). | |
| handouts_per_page | No | pdf handouts: slides per page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=false, so the safety profile is covered; the description is consistent with that. It adds the useful context that inputs may be a single file, a list, or a whole folder, but says nothing about whether existing outputs are clobbered, how large batches behave, or what is returned. No contradiction 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that begins with the verb and then enumerates inputs and outputs; dense but every clause carries information. Slightly long for one sentence, though nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a non-read-only file-producing tool with no output schema, the description does the essential work of spelling out the full input/output format matrix that an agent needs to pick valid formats values. Remaining gaps (overwrite semantics, return payload) are either covered by the schema (overwrite) or minor for a conversion utility.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 64%, and the description usefully explains the formats enum (pptx, pdf, deckcraft, png/jpeg, outline) and the pdf layout options (slides/notes/handouts) at a high level. It leaves scale, suffix, overwrite, output_dir/output_path, handouts_per_page, and input_dir/input_paths unaddressed, so it only partially compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (convert) plus the resource (presentations), and enumerates both accepted input formats (.pptx, .deckcraft) and every output format, so an agent knows exactly what the tool produces. It does not, however, differentiate itself from the overlapping sibling render_slides, which likely also turns slides into images.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists capabilities but never says when to choose this tool over render_slides, edit_presentation, or create_presentation, nor any precondition (e.g. file must already exist, output_dir needed for new files). Usage must be inferred purely from the format list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_presentationCreate a presentationB
Build a slide deck with DeckCraft (a PowerPoint-class presentation app) from a list of slides: title, subtitle, bullets with levels (one or two columns), a picture, a chart (column, bar, line, pie, doughnut, area, scatter...), a table, shapes and text boxes, speaker notes, background colour, transition and bullet animation; theme, colour and font schemes, slide size, slide numbers and footer. Or from a plain-text outline (one slide per top-level line). Saves PowerPoint pptx, pdf (slides, notes or handouts), deckcraft, png / jpeg per slide or an outline, and returns pictures of the first slides to check them.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | File name without extension. | presentation |
| scale | No | png / jpeg: pixels per point (default 2 = 1920Γ1080 for 16:9). | |
| theme | No | Theme (colours and fonts). | |
| title | No | Document title (properties). | |
| author | No | ||
| footer | No | Footer text on every slide (not on the title slide). | |
| slides | No | ||
| formats | No | Outputs: pptx (PowerPoint), pdf, deckcraft (DeckCraft's own file), png / jpeg (one image per slide: <name>1.png...) and outline (the slide titles and text as .txt). | |
| outline | No | Alternative to slides: an outline, one slide title per line and its points indented with a tab below it. | |
| overwrite | No | Replace existing outputs. | |
| output_dir | No | Absolute output folder (default: next to the input; required for new files). | |
| pdf_layout | No | pdf: slides, notes pages (slide + speaker notes) or handouts. | slides |
| slide_size | No | widescreen 16:9 (960Γ540 pt) or standard 4:3 (720Γ540 pt). | widescreen |
| transition | No | Transition for every slide (a slide's own `transition` wins). | |
| font_scheme | No | Font scheme: Inter, Classic, Geometric, Editorial, Humanist, Friendly, Neutral, Office Compatible, Times / Arial. | |
| output_path | No | Absolute output file for the first format (its extension must match). | |
| color_scheme | No | Colour scheme: a theme name or Grayscale, Ocean, Sunset, Forest, Berry. | |
| slide_numbers | No | Slide numbers in the footer (not on the title slide). | |
| preview_slides | No | Return pictures of this many first slides. | |
| handouts_per_page | No | pdf handouts: slides per page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, so the write-not-read profile is covered. The description adds genuinely new context by disclosing the written artifact set (pptx/pdf/deckcraft/png/jpeg/outline) and that it returns preview pictures of the first slides, but it says nothing about overwriting existing files, where output lands, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, but the body is a single semicolon-chained run-on sentence enumerating nearly every feature and format, which is dense and hard to scan. Much of the enumeration duplicates what the schema already states, so those clauses do not fully earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description does well to name the produced formats and the returned preview images. However, for a 20-parameter creation tool it omits practical essentials such as needing absolute output paths for new files and what happens when overwrite is false, leaving real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 90% and every one of the 20 parameters is documented inline, so the schema carries the load. The description only echoes the feature categories at a high level (theme, colour and font schemes, slide size, slide numbers and footer, speaker notes, transition and bullet animation) without adding syntax or default details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a concrete verb+resource ('Build a slide deck with DeckCraft') and enumerates both accepted input modes (a list of slides or a plain-text outline) plus the output formats. It is unambiguous what the tool does, but it never distinguishes itself from siblings like edit_presentation or convert_presentation, so an agent must infer this is the creation path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the tool is for building a deck from scratch, with 'outline' offered as an alternative to the slides array. There is no explicit when-to-use/when-not guidance and no reference to the sibling tools an agent should prefer for editing an existing deck or converting formats.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_presentationEdit a presentationA
Open PowerPoint or DeckCraft presentations (one, a list or a folder) and change them: find and replace text in titles, text boxes, shapes and table cells, apply a theme, colour or font scheme, add slides (same description as create_presentation) at a position, delete slides, set speaker notes, transitions, slide numbers and footer. Saved as new copies; the originals are only read.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Speaker notes by slide number (after deletions and additions). | |
| scale | No | png / jpeg: pixels per point (default 2 = 1920Γ1080 for 16:9). | |
| theme | No | Theme (colours and fonts). | |
| title | No | Document title (properties). | |
| add_at | No | Insert the new slides after this slide number (0 = at the start; default at the end). | |
| author | No | ||
| footer | No | Footer text on every slide (not on the title slide). | |
| suffix | No | _edited | |
| formats | No | Outputs: pptx (PowerPoint), pdf, deckcraft (DeckCraft's own file), png / jpeg (one image per slide: <name>1.png...) and outline (the slide titles and text as .txt). | |
| replace | No | ||
| input_dir | No | Every .pptx / .deckcraft directly in this folder. | |
| overwrite | No | Replace existing outputs. | |
| add_slides | No | ||
| input_path | No | ||
| output_dir | No | Absolute output folder (default: next to the input; required for new files). | |
| pdf_layout | No | pdf: slides, notes pages (slide + speaker notes) or handouts. | slides |
| transition | No | Transition for every slide (a slide's own `transition` wins). | |
| font_scheme | No | Font scheme: Inter, Classic, Geometric, Editorial, Humanist, Friendly, Neutral, Office Compatible, Times / Arial. | |
| input_paths | No | ||
| output_path | No | Absolute output file for the first format (its extension must match). | |
| color_scheme | No | Colour scheme: a theme name or Grayscale, Ocean, Sunset, Forest, Berry. | |
| delete_slides | No | Slide numbers (1-based) to delete. | |
| slide_numbers | No | Slide numbers in the footer (not on the title slide). | |
| preview_slides | No | ||
| handouts_per_page | No | pdf handouts: slides per page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=false; the description adds genuinely useful behavior beyond that by stating 'Saved as new copies; the originals are only read', clarifying that edits do not mutate sources. It still omits permission/auth needs and whether an existing output is silently skipped vs overwritten.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose and then lists capabilities compactly, with the important non-destructiveness note in a short closing sentence. The middle enumeration is dense but every clause names a genuine capability, so there is little waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 25-parameter mutation tool with no output schema, the description gives an accurate capability map and clarifies the read-only-to-source behavior. It leaves gaps around how the many optional parameters interact (e.g. add_at vs delete_slides ordering), but the schema carries much of that detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 72%, and the description conceptually names many operations (replace text, theme, colour/font scheme, speaker notes, transitions, slide numbers, footer) that map to parameters. However it adds little syntax or format detail beyond what the schema already documents, so it lands at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Open ... presentations and change them') and enumerates concrete operations: find/replace, theme/colour/font scheme, add/delete slides, notes, transitions, footers. It also distinguishes itself from siblings by referencing create_presentation for add-slide semantics and by noting outputs are new copies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the enumerated capabilities, and it cross-references create_presentation for slide-adding semantics, but it never states when to choose edit_presentation over convert_presentation, render_slides or run_deckcraft_commands. No explicit alternatives or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_deckcraft_statusDeckCraft statusARead-onlyIdempotent
Check the DeckCraft installation: platform, executables, version, engine commands, themes, formats, whether the app is running / listening for control.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description still adds value by disclosing the inspection scope, notably that it probes live state ('whether the app is running / listening for control') rather than just static install info.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb and target first, followed by a compact enumeration of the checked items; no filler. The trailing list is slightly run-on but every item conveys real scope information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of indicating what the agent will get back, and the enumeration of platform, executables, version, commands, themes, formats and running state effectively sketches the return content. It stops short of describing structure or how to interpret a failure, but is adequate for a simple status probe.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for 0-param tools applies. No parameter-related ambiguity is introduced by the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Check') and resource ('the DeckCraft installation') and then enumerates exactly which facets are inspected: platform, executables, version, engine commands, themes, formats, and running/listening state. This is clearly distinguishable from sibling tools such as get_presentation_info (which targets a presentation) or run_deckcraft_commands.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The diagnostic framing ('Check the DeckCraft installation') implies this is the tool to call to verify readiness, but there is no explicit when-to-use statement, no mention of it being a prerequisite before run_deckcraft_commands or open_in_deckcraft, and no exclusions. Usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_presentation_infoPresentation infoARead-onlyIdempotent
Slides of a PowerPoint or DeckCraft file: titles, layouts, every shape with its id, kind, box and text, tables, charts, speaker notes, transitions and animations, plus theme, fonts, slide size and sections. Optionally a spelling and accessibility review.
| Name | Required | Description | Default |
|---|---|---|---|
| review | No | Also list spelling and accessibility issues. | |
| details | No | Include the shapes of every slide (false: titles, layouts and notes only). | |
| input_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful behavioral context by enumerating the full scope of what is returned (shapes with ids, tables, charts, notes, transitions, theme, sections), which is what an agent needs since no output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the return content and ending with the optional capability. The long comma-separated inventory is dense but each item is substantive rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing return content and does so thoroughly. The remaining gap is that it says nothing about the input (input_path) or how results relate to the sibling tools, but for a straightforward read-only inspector this is close to complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, and the description reinforces the 'review' flag ('Optionally a spelling and accessibility review') and the scope of shape enumeration. It does not explain the 'details' toggle or the input_path format, so it adds only marginal meaning beyond the schema's own parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource precisely (slides of a PowerPoint or DeckCraft file) and enumerates exactly what is extracted, so an agent knows this is a read/inspection tool. However, it never explicitly differentiates itself from siblings like get_deckcraft_status or render_slides, so the agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no statement of when an alternative (e.g. render_slides or get_deckcraft_status) is preferable, and no prerequisites. The only usage hint is the word 'Optionally' attached to the review capability, which is really a parameter note rather than routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_deckcraft_catalogList commands, themes, layouts, shapes, transitions, animations, formatsBRead-onlyIdempotent
What DeckCraft can do: commands (the engine commands with parameters and ribbon place, for run_deckcraft_commands), themes (themes, colour schemes and font schemes), layouts, shapes (preset names), transitions, animations (effects) and formats.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| filter | No | Case-insensitive text to match (id, label, place or category). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is fully covered. The description adds the useful fact that this is a discovery surface (what commands exist, with their parameters and ribbon placement), but says nothing about return volume, filtering/pagination behavior, or how large these catalogs get.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the resource declared first and the capability list front-loaded in parentheses. Every clause carries information; only the nested parentheticals make it slightly scannable-hostile.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, low-complexity discovery tool with no output schema, the description gives a decent sense of what each kind returns, but does not sketch the shape of entries (id/label/category fields) or note that filter matches across id, label, place and category as the schema states. Adequate but leaves the agent guessing about result structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: 'filter' is documented in the schema, while 'kind' has only an enum. The description compensates partially by explaining what each enum kind actually contains (commands carry parameters and ribbon place, shapes are preset names, etc.), which adds real meaning for 'kind'. But it never mentions the 'filter' parameter or how it interacts with the chosen kind, leaving half the parameter surface schema-driven.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (a DeckCraft capability catalog) and enumerates exactly the seven kinds it can return, so an agent knows precisely what it fetches. It even cross-references the sibling consuming one kind ('for run_deckcraft_commands'). It stops short of a crisp verb-first statement ('List...'), but the intent is unambiguous against siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is an implicit discovery-then-invoke flow and one useful routing hint that command data feeds run_deckcraft_commands, which implies 'call this before building commands'. However, it never states when to use this tool versus alternatives, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_in_deckcraftOpen in DeckCraftA
Open presentations in the DeckCraft desktop app to present or keep editing by hand. With control=true the app also starts its loopback-only control channel so run_deckcraft_commands live=true can drive it.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | No | Absolute .pptx / .deckcraft files to open. | |
| control | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the mutation surface (readOnlyHint=false, destructiveHint=false, openWorldHint=false). The description adds genuinely non-obvious behavior: control=true spins up a loopback-only control channel, which tells the agent about a network/security side effect it could not infer from the schema. It omits launch failure behavior and whether the call blocks until the app loads.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both load-bearing: the first gives purpose, the second gives the one non-obvious mode and its downstream dependency. No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, no-output-schema tool the description covers the essential decision (control on/off and why). It could still note what a successful open returns (e.g., confirmation vs. handles) or whether the app must already be installed, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% because 'control' has no schema description at all; the description compensates by explaining that control=true activates the loopback control channel. 'paths' is left to the schema's own wording, which is adequate but nothing extra is added about ordering, duplicates, or the 20-file cap behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource ('Open presentations in the DeckCraft desktop app') plus the intent (present or keep editing by hand), which cleanly separates it from the API-oriented siblings like edit_presentation. An agent can identify the tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit conditional for the non-default mode: set control=true when you intend to drive the app via run_deckcraft_commands with live=true. It does not say when to prefer this over create_presentation/edit_presentation or what happens if the desktop app is unavailable, so it stops short of a full when/when-not matrix.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_slidesRender slidesBRead-onlyIdempotent
Pictures of slides of a PowerPoint or DeckCraft file to look at them: up to 8 images and, with save=true, PNG files (_s.png).
| Name | Required | Description | Default |
|---|---|---|---|
| save | No | ||
| scale | No | Pixels per point of the returned images (1 = 960Γ540). | |
| slides | No | 1-based slide numbers, e.g. "1-3,5". | 1 |
| overwrite | No | Replace existing outputs. | |
| input_path | Yes | ||
| output_dir | No | Absolute output folder (default: next to the input; required for new files). | |
| save_scale | No | ||
| output_path | No | Absolute output file for the first format (its extension must match). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world and non-destructive behavior. The description adds value beyond them: a hard cap of 8 returned images and the fact that save=true writes PNG files named <name>_s<N>.png, so the agent knows a disk side effect exists despite readOnlyHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with no filler, and the core capability plus the two most decision-relevant facts (8-image cap, PNG-on-save) are front-loaded. Slightly awkward grammar costs it the top mark.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter tool with no output schema, one sentence is thin. It never says what is returned when save=false (presumably inline images), what happens when the selection exceeds the 8-image cap, or how slides interacts with the ordering of outputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 63%, mid-range. The description explains only one parameter's effect (save=true yields PNGs with a naming pattern); scale, slides, overwrite, output_dir, output_path and save_scale are left entirely to the schema. Adds marginal meaning without compensating for the uncovered parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb-and-resource outcome: producing pictures of slides from a PowerPoint or DeckCraft file, with the output count and file naming. It distinguishes itself from read-oriented siblings like get_presentation_info or open_in_deckcraft, though the phrasing 'Pictures of slides ... to look at them' is roundabout rather than a clean verb+object.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no alternatives named among the many siblings (convert_presentation, get_presentation_info, open_in_deckcraft). The only implicit cue is that this is the way to visually inspect slides.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_deckcraft_commandsRun DeckCraft engine commandsADestructive
Advanced: run any DeckCraft engine commands in order (slide., shape., text., format., design., transition., animation., table., chart., insert., picture., comment., section.*...) plus the engine tools add_slide / go_to_slide / add_shape / add_text_box / set_text / insert_picture / insert_table / insert_chart / inspect_slide / inspect_document / select / key / type_text (step id = the tool name), on a new or an opened presentation, then save. Coordinates are points (16:9 = 960Γ540). Parameters can use "$steps[N].field" for a value returned by step N (0-based). With live=true the steps drive the open DeckCraft app instead.
| Name | Required | Description | Default |
|---|---|---|---|
| live | No | Drive the open DeckCraft app (control port 7990) instead of a headless engine. | |
| name | No | deckcraft | |
| scale | No | png / jpeg: pixels per point (default 2 = 1920Γ1080 for 16:9). | |
| steps | No | ||
| theme | No | Theme of the new presentation when there is no open_path. | |
| formats | No | Save the result (needs output_dir or output_path). | |
| open_path | No | Absolute .pptx / .deckcraft to open first (never saved over; save a copy with formats). | |
| overwrite | No | ||
| output_dir | No | ||
| pdf_layout | No | pdf: slides, notes pages (slide + speaker notes) or handouts. | slides |
| output_path | No | ||
| stop_on_error | No | ||
| preview_slides | No | Return pictures of these slides, e.g. "1-2". | |
| handouts_per_page | No | pdf handouts: slides per page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true, readOnly=false and idempotent=false, so the safety profile is covered. The description goes further by disclosing execution semantics (steps run in order, stop-on-first-error by default), the live-vs-headless switch, and the save step. It does not restate the destructive/overwrite implications, but the added batch and mode context is substantive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core behavior is front-loaded ('Advanced: run any DeckCraft engine commands in order'), followed by the command families, the step-reference rule, coordinate units, and the live flag β each contributing real information. The long single-paragraph enumeration of command families is dense, but none of it is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter batch executor with a nested steps array and no output schema, the description covers the essential mental model: what steps are, how to reference prior results, how coordinates work, and the live/headless distinction. It does not describe the return payload or save/overwrite outcome in detail, which is the main remaining gap given the absent output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 57%, so the burden to compensate is real, and the description does add non-schema semantics that are critical to correct use: step ids map to tool names, parameters can reference prior results via '$steps[N].field', and coordinates are in points (16:9 = 960x540). It still leaves several parameters (name, formats, output_dir, preview_slides) unexplained, but the mechanism-level additions are valuable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('run any DeckCraft engine commands in order') and enumerates the command families and engine tools it accepts, so an agent knows exactly what this does. It is clearly a batch/advanced executor on a new or opened presentation. However it never explicitly contrasts itself with edit_presentation or create_presentation, so sibling differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Advanced:' marker and 'on a new or an opened presentation, then save' give implicit context for when to reach for this tool rather than the simpler siblings. But it never states when NOT to use it or names edit_presentation/create_presentation as the alternatives for single edits. Usage is implied rather than spelled out.
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.
9 tool updates
v1.0.0- First observed
convert_presentation - First observed
create_presentation - First observed
edit_presentation - First observed
get_deckcraft_status - First observed
get_presentation_info - First observed
list_deckcraft_catalog - First observed
open_in_deckcraft - First observed
render_slides - First observed
run_deckcraft_commands
TDQS
Scored across 9 tools
Each tool has a fairly distinct purpose (create, edit, convert, inspect, render, catalog, open, status). There is some overlap: run_deckcraft_commands can add slides/shapes that create_presentation and edit_presentation also handle, and render_slides overlaps with the preview images create_presentation returns. Descriptions largely clarify the boundaries, so ambiguity is limited.
Mostly verb_noun but the subject noun switches inconsistently between 'presentation', 'deckcraft', and 'slides' (create_presentation, render_slides, run_deckcraft_commands, get_deckcraft_status). The mixed subject and multi-word constructions break a single predictable pattern, though names remain readable.
Nine tools is a well-scoped set for a presentation engine. Each tool covers a distinct workflow (lifecycle, inspection, rendering, catalog, app control) with no filler.
The surface covers the full lifecycle: create, edit, convert, inspect, render, open, and an advanced escape hatch via run_deckcraft_commands plus catalog/status discovery. Minor gaps exist (no dedicated delete/duplicate-file operation), but these can be worked around through edit_presentation or the command runner.
Maintenance
Related MCP Connectors
Create consulting-style presentation decks (editable PowerPoint) from a topic or notes.
Generate polished PowerPoint presentations from text prompts, YouTube videos, or structured outlinβ¦
Generate professional PowerPoint presentations from text, YouTube videos, or structured JSON data.β¦
Create polished slide decks from text or YouTube links in seconds. Fetch video transcripts to tranβ¦
Related MCP Servers
- AlicenseAqualityDmaintenanceCreates and manipulates PowerPoint presentations with capabilities for adding various slide types, generating images, and incorporating tables and charts through natural language commands.11144MIT
- FlicenseAqualityDmaintenanceEnables AI assistants to create, edit, and manipulate PowerPoint presentations programmatically with support for text styling, shapes, slide rearrangement, and direct Office XML access.81-
- AlicenseBqualityDmaintenanceEnables users to create, edit, and manage PowerPoint presentations across Windows, macOS, and Linux through natural language via Claude Desktop. It provides comprehensive automation for slide management, text manipulation, and presentation styling using platform-specific adapters.131MIT
- FlicenseBqualityDmaintenanceEnables Claude to read, create, and edit a single pre-bound PowerPoint file via MCP tools, with security bound to one specific .pptx file.10-