# Complete Feature Reference

PowerPoint MCP Server exposes **32 MCP tools with 215 operations across 17 domains**.
The tool total includes 15 read-only aliases; the operation total counts each unique action once.
Every domain is a **single action-dispatch tool** that takes an `action` parameter — for example
`presentation(action="open", filePath="C:\\Decks\\q4.pptx")` or
`chart(action="add-chart", presentation_session_id="...", slide_index=2, ...)`.

The CLI mirrors the same domain model:

- `pptcli session <action> ...` for the `presentation` domain's session/template/property work
- `pptcli <domain> <action> ...` for all other domains, such as `pptcli chart add-chart ...`

## Tool matrix

| Tool | Ops | What it covers | MCP call shape | CLI shape |
|------|-----|----------------|----------------|-----------|
| `presentation` | 20 | Session lifecycle, Save As/copy, templates, advisory Mark as Final, document properties, string tags | `presentation(action="...", ...)` | `pptcli session <action> ...` |
| `slide` | 26 | Slide lifecycle, visibility, backgrounds, sections, comments, import, string tags | `slide(action="...", presentation_session_id=..., ...)` | `pptcli slide <action> -s <SESSION_ID> ...` |
| `shape` | 57 | Shapes, free-floating and attached connectors, WordArt, 3D rotation, alignment/distribution, styling, grouping, boolean merging, hyperlinks, linked pictures, placeholders, duplication and cross-slide copying, string tags | `shape(action="...", presentation_session_id=..., ...)` | `pptcli shape <action> -s <SESSION_ID> ...` |
| `textframe` | 22 | Text content, find/replace, and text formatting | `textframe(action="...", presentation_session_id=..., ...)` | `pptcli textframe <action> -s <SESSION_ID> ...` |
| `table` | 12 | Table creation and cell editing/formatting | `table(action="...", presentation_session_id=..., ...)` | `pptcli table <action> -s <SESSION_ID> ...` |
| `notes` | 2 | Speaker notes | `notes(action="...", presentation_session_id=..., ...)` | `pptcli notes <action> -s <SESSION_ID> ...` |
| `layout` | 4 | Slide layouts | `layout(action="...", presentation_session_id=..., ...)` | `pptcli layout <action> -s <SESSION_ID> ...` |
| `pagesetup` | 5 | Slide size, numbering, footer, date/time | `pagesetup(action="...", presentation_session_id=..., ...)` | `pptcli pagesetup <action> -s <SESSION_ID> ...` |
| `accessibility` | 3 | Deterministic audit and reading order | `accessibility(action="...", presentation_session_id=..., ...)` | `pptcli accessibility <action> -s <SESSION_ID> ...` |
| `master` | 12 | Theme color/font inspection, slide master fonts and backgrounds | `master(action="...", presentation_session_id=..., ...)` | `pptcli master <action> -s <SESSION_ID> ...` |
| `animation` | 5 | Shape effects and slide transitions | `animation(action="...", presentation_session_id=..., ...)` | `pptcli animation <action> -s <SESSION_ID> ...` |
| `image` | 16 | Picture insertion, compression, crop frames, brightness/contrast, recoloring, and transparency | `image(action="...", presentation_session_id=..., ...)` | `pptcli image <action> -s <SESSION_ID> ...` |
| `media` | 2 | Embedded or linked audio/video insertion and native media metadata | `media(action="...", presentation_session_id=..., ...)` | `pptcli media <action> -s <SESSION_ID> ...` |
| `chart` | 16 | Native charts, titles, legend, data replacement, styles, colors, data tables | `chart(action="...", presentation_session_id=..., ...)` | `pptcli chart <action> -s <SESSION_ID> ...` |
| `smartart` | 7 | SmartArt diagrams and node editing | `smartart(action="...", presentation_session_id=..., ...)` | `pptcli smartart <action> -s <SESSION_ID> ...` |
| `export` | 3 | PDF delivery and export-to-verify image rendering | `export(action="...", presentation_session_id=..., ...)` | `pptcli export <action> -s <SESSION_ID> ...` |
| `customshow` | 3 | Named custom shows: curated, ordered subsets of a presentation's slides | `customshow(action="...", presentation_session_id=..., ...)` | `pptcli customshow <action> -s <SESSION_ID> ...` |

## Domain reference

### `presentation` tool (20 operations)

Use `presentation` for session lifecycle, Save As/copy, templates/themes, Mark as Final, and
document properties. `create` and `open` establish a session and return a `presentation_session_id`; the
remaining edit/read actions use that `presentation_session_id`.

| Action | What it does |
|--------|---------------|
| `create` | Create a new presentation file, save it immediately, and leave the session open. |
| `open` | Open an existing presentation file and start a session. |
| `close` | Close an open session, optionally saving first; PowerPoint shutdown continues in the background. |
| `list` | List all currently open sessions. |
| `test` | Check whether PowerPoint can open a file without retaining a live session. |
| `save-as` | Save the active presentation under a new `.pptx`, `.pptm`, or `.ppt` path and update the session to that path. Existing files require `overwrite=true`. |
| `save-copy-as` | Save a copy using the active presentation's current format without changing the active presentation or session path. Existing files require `overwrite=true`. |
| `apply-template` | Apply a `.potx`/`.potm`/`.pot` or `.pptx`/`.pptm` template source while preserving slide content. |
| `get-theme-name` | Read the currently applied design/theme name. |
| `get-final` | Read PowerPoint's advisory Mark as Final editing flag. It is not authentication, encryption, or access control. |
| `set-final` | Save current changes, then set or clear PowerPoint's advisory Mark as Final editing flag. |
| `set-document-property` | Set a built-in document metadata property such as Title or Author. |
| `get-document-property` | Read a built-in document metadata property. |
| `set-custom-property` | Create or update a custom document property. |
| `get-custom-property` | Read a custom document property. |
| `remove-custom-property` | Remove a custom document property. |
| `set-tag` | Create or update a case-insensitive presentation string tag. |
| `get-tag` | Read a presentation string tag by case-insensitive name. |
| `list-tags` | List presentation string tags in native 1-based order. |
| `delete-tag` | Delete a presentation string tag by case-insensitive name. |

**Exact action order:** `create`, `open`, `close`, `list`, `test`, `save-as`, `save-copy-as`,
`apply-template`, `get-theme-name`, `get-final`, `set-final`, `set-document-property`,
`get-document-property`, `set-custom-property`, `get-custom-property`, `remove-custom-property`,
`set-tag`, `get-tag`, `list-tags`, `delete-tag`

### `slide` tool (26 operations)

| Action | What it does |
|--------|---------------|
| `add-blank` | Add a blank slide. |
| `get-count` | Return the slide count. |
| `inspect` | Return bounded slide metadata and text previews. |
| `delete` | Delete a slide by 1-based index. |
| `duplicate` | Duplicate a slide. |
| `move-to` | Move a slide to a new 1-based position. |
| `set-background-color` | Set a slide's solid background color. |
| `get-background-color` | Read a slide's solid background color / master-follow state. |
| `set-gradient-background` | Set a slide's gradient background. |
| `get-gradient-background` | Read a slide's gradient background. |
| `add-section` | Add a section. |
| `set-hidden` | Include or exclude a slide from slide-show playback. |
| `set-display-master-shapes` | Show or hide shapes inherited from the slide master. |
| `rename-section` | Rename a section. |
| `delete-section` | Delete a section. |
| `get-section-count` | Return the section count. |
| `get-section-name` | Read a section name. |
| `list-comments` | List legacy slide comments exposed by the native PowerPoint COM API. |
| `add-comment` | Add a legacy comment to a slide. |
| `delete-comment` | Delete a legacy comment by 1-based index. |
| `clear-comments` | Remove all legacy comments from a slide. |
| `import-from-file` | Insert a 1-based source slide range after a destination slide. |

**Exact action order:** `add-blank`, `get-count`, `inspect`, `delete`, `duplicate`, `move-to`,
`set-background-color`, `get-background-color`, `set-gradient-background`,
`get-gradient-background`, `add-section`, `rename-section`, `delete-section`,
`get-section-count`, `get-section-name`, `list-comments`, `add-comment`, `delete-comment`,
`clear-comments`, `set-hidden`, `set-display-master-shapes`, `import-from-file`, `set-tag`,
`get-tag`, `list-tags`, `delete-tag`

### `shape` tool (57 operations)

Use `shape` for shape creation, WordArt, geometry, alignment/distribution, styling, 3D effects, grouping and boolean merging,
naming, alt text, hyperlinks, linked pictures, placeholders, same-slide duplication, and cross-slide copying.

**Exact action order:** `add-rectangle`, `add-text-box`, `add-text-effect`, `add-auto-shape`, `add-line`,
`add-connector`, `add-attached-connector`, `get-count`, `delete`, `set-position`, `set-size`, `set-fill`, `get-fill`,
`set-line`, `get-line`, `copy-formatting`, `duplicate`, `copy-to-slide`, `set-rotation`, `get-rotation`, `set-3d-rotation`,
`get-3d-rotation`, `flip`, `set-z-order`, `set-shadow`,
`get-shadow`, `set-glow`, `get-glow`, `set-reflection`, `get-reflection`, `set-soft-edge`,
`get-soft-edge`, `set-bevel`, `get-bevel`, `group`, `align`, `distribute`, `ungroup`, `merge`, `set-name`, `get-name`,
`set-alt-text`, `get-alt-text`, `set-hyperlink`, `get-hyperlink`, `remove-hyperlink`,
`get-link-info`, `update-link`, `break-link`, `set-link-auto-update`, `list-placeholders`,
`set-placeholder-text`, `set-placeholder-image`, `set-tag`, `get-tag`,
`list-tags`, `delete-tag`

### `textframe` tool (22 operations)

Use `textframe` for text content and font/paragraph formatting on a shape's text frame.
`find-text` and `replace-text` perform literal, non-overlapping matching within the selected
shape, with optional case and whole-word matching. Replacement can delete matches with an
explicit empty string and preserves character formatting outside the matched ranges.

**Exact action order:** `set-text`, `get-text`, `find-text`, `replace-text`, `set-font-size`, `get-font-size`, `set-bold`,
`get-bold`, `set-font-color`, `get-font-color`, `set-italic`, `get-italic`, `set-underline`,
`get-underline`, `set-font-name`, `get-font-name`, `set-alignment`, `get-alignment`, `set-bullet`,
`get-bullet`, `set-auto-size`, `get-auto-size`

### `table` tool (12 operations)

Use `table` for native PowerPoint tables.

**Exact action order:** `add-table`, `set-cell-text`, `get-cell-text`, `insert-row`, `delete-row`,
`insert-column`, `delete-column`, `set-cell-fill`, `get-cell-fill`, `set-cell-border`,
`get-cell-border`, `merge-cells`

### `notes` tool (2 operations)

**Exact action order:** `set-notes-text`, `get-notes-text`

### `layout` tool (4 operations)

**Exact action order:** `set-layout`, `get-layout`, `list-layouts`, `delete-layout`

### `pagesetup` tool (5 operations)

Use `pagesetup` for presentation-wide slide dimensions, numbering, and footer settings.

**Exact action order:** `get-settings`, `set-size`, `set-first-slide-number`, `get-footer`,
`set-footer`

### `accessibility` tool (3 operations)

Use `accessibility` for deterministic checks and slide reading order. The audit covers missing
alternative text on visual content and empty title placeholders; it is not an AI writing review.

**Exact action order:** `audit`, `get-reading-order`, `set-reading-order`

### `master` tool (12 operations)

Use `master` for theme color/font inspection, deck-wide master placeholder fonts, and master backgrounds.

**Exact action order:** `get-title-font`, `set-title-font`, `get-body-font`, `set-body-font`,
`get-background-color`, `set-background-color`, `set-gradient-background`,
`get-gradient-background`, `list-masters`, `get-theme-colors`, `get-theme-fonts`, `delete-master`

### `animation` tool (5 operations)

**Exact action order:** `add-effect`, `get-effect-count`, `delete-effect`, `get-transition`,
`set-transition`

### `image` tool (16 operations)

Use `image` to insert pictures, adjust color and transparency, set crop geometry, and compress one picture, a slide, or the full presentation.

**Exact action order:** `add-picture`, `set-brightness-contrast`, `get-brightness-contrast`,
`increment-brightness`, `increment-contrast`, `set-recolor`, `get-recolor`,
`set-transparency-color`, `get-transparency-color`, `set-transparent-background`,
`get-transparent-background`, `set-crop`, `get-crop`, `set-crop-frame`, `get-crop-frame`,
`compress-pictures`

### `media` tool (2 operations)

Use `media` to insert embedded or linked audio/video and inspect PowerPoint's native media type.

**Exact action order:** `add-media`, `get-media-info`

### `chart` tool (16 operations)

Use `chart` for native PowerPoint charts.

**Exact action order:** `add-chart`, `get-chart-data`, `add-series`, `set-chart-title`,
`get-chart-title`, `set-axis-title`, `get-axis-title`, `set-legend-visibility`,
`get-legend-visibility`, `replace-chart-data`, `get-style`, `set-style`, `get-color-style`,
`set-color-style`, `get-data-table`, `set-data-table`

### `smartart` tool (7 operations)

Use `smartart` for SmartArt diagrams and node editing.

**Exact action order:** `add-smart-art`, `add-node`, `add-child-node`, `set-node-text`,
`get-node-text`, `delete-node`, `get-node-count`

### `export` tool (3 operations)

Use `export` for the project's export-to-verify loop.

**Exact action order:** `export-to-pdf`, `export-slide-to-image`,
`export-all-slides-to-images`

### `customshow` tool (3 operations)

Use `customshow` for named custom shows: curated, ordered subsets of a presentation's slides,
used to reuse one deck for different audiences. A custom show may repeat a slide and does not
need to include every slide.

| Action | What it does |
|--------|---------------|
| `list` | List all custom shows, each with its current 1-based slide indices in playback order. |
| `create` | Create a named custom show from an ordered list of 1-based slide indices. |
| `delete` | Delete a custom show by name. |

**Exact action order:** `list`, `create`, `delete`

!!! tip "Why export-to-verify matters"
    Because the tools drive a **real PowerPoint desktop instance**, every visual edit can be
    rendered to an image and checked by a vision-capable AI assistant before the deck is declared
    done.

## Design principles

- **Single action-dispatch tool per domain** — fewer MCP tools, clearer schemas, same total power.
- **`action`, not `operation`** — every MCP domain tool selects its behavior with an `action`
  enum parameter.
- **1-based indexing everywhere** — slides, shapes, rows, and columns all match PowerPoint's own
  object model.
- **Sessions are explicit** — open/create once, do the work, then close with the chosen save behavior.
- **Export to verify** — when a change is visual, render it and inspect the image.
