Skip to main content
Deck Designer turns a brief into a professional, on-brand slide deck. The agent writes a deck spec, the canvas renders it as a live preview, and the same render exports to an editable PPTX and a pixel-perfect PDF, entirely client-side, with no backend and no data leaving your infrastructure. It is built from three composable pieces (a skill, an MCP server, and the canvas render/export engine), so you can attach the same capability to any agent (sales, marketing, support…), not just a dedicated “Slides” agent.

The model in one line

One spec → one render → two exports. The agent produces a deck spec (JSON). A theme-driven renderer turns it into a live HTML preview, and the same render is exported client-side to an editable PPTX (mapped from the rendered DOM geometry) and a pixel-perfect PDF. Look & feels are data (theme tokens served by an MCP server), so a new style is a new data entry: no code, no agent change.

How it works

  1. The user asks for a deck / slides / pitch / .pptx. The agent activates the deck-designer skill (progressive disclosure; see Capabilities).
  2. The skill resolves a look & feel by calling the Slides MCP (list_themes → pick a style, get_theme(name) → tokens).
  3. The agent writes the deck spec (slides + resolved theme tokens) and emits it as a canvas artifact: <pr-canvas>{"type":"slides"}--- <deck spec JSON></pr-canvas>.
  4. The canvas renders the spec to a live HTML preview and offers PPTX (editable) and PDF exports; both run in the browser.
Typed layouts export through native PowerPoint emitters (fixed 16:9 geometry with automatic text-fit) — deterministic and identical across PowerPoint (Windows/Mac), LibreOffice and Keynote. Freeform HTML slides export through a best-effort mapping of the rendered DOM geometry (getBoundingClientRect + getComputedStyle) to PowerPoint shapes/text. The PDF rasterizes each rendered slide (landscape 16:9, one page per slide) and is always pixel-perfect. See Layouts: typed vs. freeform.

The three pieces

Add Deck Designer to an agent

You bring deck building into any agent in three steps: open the agent and go to Capabilities (see Agent Capabilities):
1

Add the skill

Add Capability → Skills → Deck Designer. The skill carries its own instructions (the design system) and is loaded on demand when the user’s request matches.
2

Add the Slides MCP server

Add Capability → MCP server, pointing at the Slides MCP endpoint (name it e.g. slides-themes):
This is what get_theme / list_themes call to resolve a look & feel.
3

Enable canvas

Turn on canvas_enabled for the agent. Without it, the agent never learns to emit the deck artifact, so the preview and export won’t appear.
All three are required. The skill alone resolves no theme and produces no preview; the MCP alone is never called; and without canvas_enabled the deck artifact is never emitted. A multi-skill agent keeps all its own tools; the model activates deck-designer only when the user asks for a deck.

Themes (look & feel)

Themes ship as data in the Slides MCP, so re-skinning a deck is just picking another style; the content is untouched. Ask the agent “what styles are available?” (list_themes) or “make the same deck in modern” (get_theme("modern")); the theme tokens are injected into the spec without rewriting the content.

Customizing the skill and the MCP server

Both pieces are meant to be tailored to your brand and use cases.

Add or edit a theme (customize the MCP server)

A new brand or style is a new data entry, with no code and no agent change:
  1. Open the slides-mcp workspace and edit config.value.themes (in index.yml).
  2. Add an entry with your palette and fonts. Colors are bare hex (no leading #; the renderer adds it, and now tolerates a leading # too). Use cross-platform fontsArial, Georgia, Times New Roman, Trebuchet MS, Verdana — so the browser preview and the exported PPTX render with matching metrics. Office/Mac-only faces (Calibri, Cambria, Helvetica) are automatically substituted to keep the export consistent.
list_themes exposes the new style automatically; the agent can offer it with no further change. You can also self-host your own copy of the MCP workspace and point your agent’s MCP capability at it.

Theme token reference

Every theme entry under config.value.themes is a token set. These are all the fields you can configure: Colors are bare hex (a leading # is tolerated). The MCP exposes two tools: list_themes()[{ name, label }], and get_theme(name) → the token set above (falls back to executive for an unknown name). Adding a theme = adding an entry here — no code, no agent change.

Customize the skill instructions

The deck-designer skill lives in the shared capability Store (the capabilities workspace catalog, exposed via the v1/servers API). A skill entry’s instructions live in its config_schema defaults, so you can:
  • Fork it for your team: publish your own type: skill entry (e.g. tighter brand rules, your preferred layouts, a fixed default theme) and add that instead.
  • Use the Custom Skill template: the catalog ships a generic Custom Skill entry; create a brand-new skill from scratch with your own instructions, activated on demand via progressive disclosure.
Keep the skill description sharp; it’s the trigger the model sees, so it should clearly say “decks / slides / presentation / pitch / .pptx”. And prefer a capable model on the host agent: the design discipline is demanding and drives deck quality.

Layouts: typed vs. freeform

Deck Designer works from a set of typed layouts — hand-tuned, brand-aware building blocks: title, section, agenda, bullets, twocolumn, stats, kpi, split, process, timeline, comparison, table, quote, closing. When a point fits one of these, the agent fills its fields and the slide exports through a native PowerPoint emitter: fixed 16:9 geometry with automatic text-fitting, so the result is deterministic and identical across PowerPoint (Windows and Mac), LibreOffice and Keynote. When no typed layout fits, the agent authors a freeform slide as inline HTML. Freeform gives full design freedom, but it exports through a best-effort DOM-to-PowerPoint mapping (reading the rendered geometry) rather than a native emitter.
A freeform slide’s .pptx can occasionally need a small adjustment. A freeform slide is arbitrary HTML written by the language model, and PowerPoint re-renders text with its own fonts and line-breaking. So a freeform slide can sometimes reflow in the exported .pptx — a title wrapping to an extra line, a block a few pixels off — even when the on-screen preview and the PDF are perfect. This is inherent to converting free HTML to editable PowerPoint (it is not a data-loss bug).If a freeform slide doesn’t come out right, you have three options:
  1. Ask the agent to use a typed layout for that point — the reliable path for editable PPTX.
  2. Keep it freeform and tweak the exported slide in PowerPoint — it’s fully editable.
  3. Use the PDF, which is always pixel-perfect, if you only need to present or share.

Tips for clean freeform export

  • Prefer typed layouts; reach for freeform only when nothing fits.
  • Keep freeform slides simple: one piece of text per element, generous spacing, no overflow.
  • Use the theme’s cross-platform fonts (see Themes) so the preview and the PPTX use matching metrics.

Typed layout reference

Every slide is one object in spec.slides. This is the contract the deck-designer skill emits (and what you’d edit if you fork it). All fields are strings unless noted; eyebrow is the small uppercase kicker; empty/extra items beyond a layout’s cap are dropped on export.
Fallback for layouts not covered above (matrix 2×2, case study, org chart, logo wall, pricing, code…). Author inline HTML using the theme CSS variables (var(--dark|light|ink|muted|accent|soft|line|font-head|font-body)); inline styles only, no external assets, one text per element, no overflow.

Export formats

Exports run entirely in the browser; what you see in the preview is exactly what exports.

PPTX (editable)

Native PowerPoint shapes and text boxes, fully editable in PowerPoint / Google Slides / Keynote. Typed layouts use deterministic native emitters; freeform slides use a best-effort geometry mapping (see Layouts).

PDF

Pixel-perfect, landscape 16:9, one page per slide, faithful to the preview.

Next Steps

Agent Capabilities

How skills and MCP servers attach to an agent

Canvas

The collaborative workspace that renders and exports the deck

Custom Tools

Wire your own Builder automations as agent tools