---
title: ToolRouter — Tool Detail
description: Detailed documentation for a ToolRouter tool including skills, parameters, and examples.
url: https://toolrouter.com/tools/pptx-tools
---
# PowerPoint Presentations

Create, read, and modify PowerPoint (.pptx) files. Build decks with text, shapes, images, charts, tables, backgrounds, and transitions. Read any .pptx into structured JSON. Apply batch edits like text replacement, slide reordering, and image insertion. Returns downloadable files.

- **Version:** 0.01
- **Categories:** productivity, data
- **Workflow:** create_presentation → read_presentation → modify_presentation

## Skills (3)

### Create Presentation (`create_presentation`)

Build a PowerPoint deck from structured data — slides with text, shapes, images, charts, tables, backgrounds, slide masters, speaker notes, transitions, and slide numbers. Returns a downloadable .pptx file.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `slides` | array | Yes | Array of slide definitions. Each slide has elements (text, shape, image, chart, table) positioned on the canvas. |
| `slide_masters` | array | No | Reusable slide masters. Each: {name, background?, placeholders?: [{name, type, x, y, w, h}], slide_number?, objects?} |
| `slide_size` | string | No | Slide size preset: "standard" (10x7.5), "widescreen" (13.33x7.5), "4x3", "16x9", "16x10". Default: widescreen. |
| `custom_width` | number | No | Custom slide width in inches (requires custom_height) |
| `custom_height` | number | No | Custom slide height in inches (requires custom_width) |
| `title` | string | No | Presentation title (document metadata) |
| `author` | string | No | Author name (document metadata) |
| `subject` | string | No | Subject (document metadata) |
| `company` | string | No | Company name (document metadata) |
| `filename` | string | No | Output filename (default: presentation.pptx) |

**Returns:** A downloadable .pptx file with all slides, elements, formatting, charts, tables, and transitions applied

**Examples:**

*Sales report presentation with chart and table:*

```json
{
  "slides": [
    {
      "elements": [
        {
          "type": "text",
          "text": "Q4 Sales Report",
          "x": 0.5,
          "y": 0.5,
          "w": 12,
          "h": 1.2,
          "font_size": 36,
          "bold": true,
          "color": "003366",
          "align": "center"
        },
        {
          "type": "chart",
          "chart_type": "bar",
          "x": 0.5,
          "y": 2,
          "w": 6,
          "h": 4,
          "data": [
            {
              "name": "Revenue",
              "labels": [
                "Oct",
                "Nov",
                "Dec"
              ],
              "values": [
                45000,
                52000,
                61000
              ]
            }
          ],
          "title": "Monthly Revenue",
          "colors": [
            "4472C4"
          ],
          "show_data_labels": true
        },
        {
          "type": "table",
          "x": 7,
          "y": 2,
          "w": 5.5,
          "first_row_header": true,
          "header_fill_color": "003366",
          "header_font_color": "FFFFFF",
          "rows": [
            {
              "cells": [
                {
                  "text": "Region"
                },
                {
                  "text": "Revenue"
                },
                {
                  "text": "Growth"
                }
              ]
            },
            {
              "cells": [
                {
                  "text": "North"
                },
                {
                  "text": "$245K"
                },
                {
                  "text": "+12%",
                  "font_color": "00AA00"
                }
              ]
            },
            {
              "cells": [
                {
                  "text": "South"
                },
                {
                  "text": "$198K"
                },
                {
                  "text": "+8%",
                  "font_color": "00AA00"
                }
              ]
            }
          ]
        }
      ],
      "speaker_notes": "Q4 showed strong growth across all regions",
      "background": {
        "color": "F5F5F5"
      }
    }
  ],
  "title": "Q4 Sales Report",
  "author": "Sales Team",
  "filename": "q4-sales.pptx"
}
```

*Multi-slide deck with bullet points, shapes, and images:*

```json
{
  "slides": [
    {
      "elements": [
        {
          "type": "text",
          "text": "Project Overview",
          "x": 0.5,
          "y": 2.5,
          "w": 12,
          "h": 2,
          "font_size": 44,
          "bold": true,
          "color": "FFFFFF",
          "align": "center"
        }
      ],
      "background": {
        "color": "1A237E"
      },
      "transition": {
        "type": "fade",
        "speed": "fast"
      }
    },
    {
      "elements": [
        {
          "type": "text",
          "text": "Key Objectives",
          "x": 0.5,
          "y": 0.3,
          "w": 12,
          "h": 0.8,
          "font_size": 28,
          "bold": true,
          "color": "1A237E"
        },
        {
          "type": "text",
          "x": 0.5,
          "y": 1.3,
          "w": 12,
          "h": 4,
          "font_size": 18,
          "text": [
            {
              "text": "Increase market share by 15%",
              "bullet": true
            },
            {
              "text": "Launch 3 new product lines",
              "bullet": true
            },
            {
              "text": "Reduce operational costs by 10%",
              "bullet": true
            },
            {
              "text": "Expand into 2 new regions",
              "bullet": true
            }
          ]
        },
        {
          "type": "shape",
          "shape": "roundRect",
          "x": 9,
          "y": 5.5,
          "w": 3.5,
          "h": 1,
          "fill_color": "1A237E",
          "text": "Next Steps",
          "text_color": "FFFFFF",
          "font_size": 16,
          "bold": true,
          "align": "center",
          "valign": "middle"
        }
      ],
      "slide_number": true
    }
  ],
  "slide_size": "widescreen",
  "filename": "project-overview.pptx"
}
```

### Read Presentation (`read_presentation`)

Read a .pptx from URL and extract all content as structured JSON — slides, text, shapes, images, charts, tables, notes, layouts, masters, and theme colors.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `url` | string | Yes | URL of the .pptx file to read. The tool server CAN fetch any public URL — always pass it. |
| `slide_range` | string | No | Read only these slides (e.g. "1-3" or "5"). Omit to read all. |
| `include_notes` | boolean | No | Extract speaker notes per slide (default: true) |
| `include_layouts` | boolean | No | List slide layout names (default: false) |
| `include_masters` | boolean | No | List slide masters and their layouts (default: false) |
| `include_properties` | boolean | No | Extract document properties like title, author, dates (default: true) |
| `include_theme_colors` | boolean | No | Extract theme color palette (default: false) |
| `include_media` | boolean | No | List media file references per slide (default: false) |

**Returns:** Structured JSON with all slide content, text, shapes, images, charts, tables, notes, properties, and optional deep metadata

**Examples:**

*Read all slides from a presentation:*

```json
{
  "url": "https://example.com/deck.pptx"
}
```

*Deep inspection with all metadata:*

```json
{
  "url": "https://example.com/report.pptx",
  "include_notes": true,
  "include_layouts": true,
  "include_masters": true,
  "include_theme_colors": true,
  "include_media": true
}
```

### Modify Presentation (`modify_presentation`)

Apply batch operations to an existing .pptx: replace_text, update_speaker_notes, add/delete/reorder/duplicate slides, insert_image, add_text_box, delete_slide_element, update_slide_background, apply_transition, update_properties. Returns modified file.

**Parameters:**

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `url` | string | Yes | URL of the .pptx file to modify. The tool server CAN fetch any public URL — always pass it. |
| `operations` | array | Yes | Operations to apply in order. Each has an "action" field plus action-specific params. |
| `filename` | string | No | Output filename (default: modified.pptx) |

**Returns:** The modified .pptx file with a summary of all operations applied

**Examples:**

*Replace text and add speaker notes to a presentation:*

```json
{
  "url": "https://example.com/template.pptx",
  "operations": [
    {
      "action": "replace_text",
      "find": "{{company}}",
      "replace": "Acme Corp"
    },
    {
      "action": "replace_text",
      "find": "{{date}}",
      "replace": "2026-03-23"
    },
    {
      "action": "update_speaker_notes",
      "slide": 1,
      "notes": "Welcome the audience and introduce the topic"
    },
    {
      "action": "apply_transition",
      "slide": 1,
      "transition_type": "fade",
      "speed": "fast"
    }
  ]
}
```

*Add slides, images, text boxes and reorder:*

```json
{
  "url": "https://example.com/deck.pptx",
  "operations": [
    {
      "action": "duplicate_slide",
      "source": 1
    },
    {
      "action": "add_text_box",
      "slide": 2,
      "text": "New Section",
      "x": 1,
      "y": 3,
      "w": 8,
      "h": 1.5,
      "font_size": 32,
      "bold": true,
      "font_color": "003366"
    },
    {
      "action": "insert_image",
      "slide": 2,
      "url": "https://example.com/chart.png",
      "x": 2,
      "y": 2,
      "w": 6,
      "h": 4
    },
    {
      "action": "update_slide_background",
      "slide": 2,
      "color": "F0F4F8"
    },
    {
      "action": "update_properties",
      "title": "Updated Deck",
      "author": "Team Lead"
    }
  ]
}
```

## Quick Start

```bash
# Via CLI
TOOLROUTER_API_KEY=tr_live_xxx npx -y toolrouter-mcp call pptx-tools create_presentation --slides [object Object] --title Q4 Sales Report --author Sales Team --filename q4-sales.pptx

# Via REST API
curl -H "Authorization: Bearer tr_live_xxx" \
     -d '{"tool":"pptx-tools","skill":"create_presentation","input":{"slides":[{"elements":[{"type":"text","text":"Q4 Sales Report","x":0.5,"y":0.5,"w":12,"h":1.2,"font_size":36,"bold":true,"color":"003366","align":"center"},{"type":"chart","chart_type":"bar","x":0.5,"y":2,"w":6,"h":4,"data":[{"name":"Revenue","labels":["Oct","Nov","Dec"],"values":[45000,52000,61000]}],"title":"Monthly Revenue","colors":["4472C4"],"show_data_labels":true},{"type":"table","x":7,"y":2,"w":5.5,"first_row_header":true,"header_fill_color":"003366","header_font_color":"FFFFFF","rows":[{"cells":[{"text":"Region"},{"text":"Revenue"},{"text":"Growth"}]},{"cells":[{"text":"North"},{"text":"$245K"},{"text":"+12%","font_color":"00AA00"}]},{"cells":[{"text":"South"},{"text":"$198K"},{"text":"+8%","font_color":"00AA00"}]}]}],"speaker_notes":"Q4 showed strong growth across all regions","background":{"color":"F5F5F5"}}],"title":"Q4 Sales Report","author":"Sales Team","filename":"q4-sales.pptx"}}' \
     https://api.toolrouter.com/v1/tools/call
```

## Frequently Asked Questions

### Can I build decks with charts, tables, and speaker notes?

Yes. `create_presentation` creates .pptx files with text, shapes, images, charts, tables, slide masters, speaker notes, transitions, and slide numbers.

### Can I inspect an existing presentation before editing it?

`read_presentation` turns a .pptx into structured JSON and can include notes, layouts, masters, theme colors, and media metadata.

### Can I modify slides in an existing deck?

Yes. `modify_presentation` handles batch edits on an existing file URL, including text replacement, slide reordering, and image insertion.

### What formatting rules matter most?

Use hex colors without the `#` prefix, place elements in inches, and use the built-in bullet settings instead of typing bullet characters. Slide size presets include standard, widescreen, 4x3, 16x9, and 16x10.

---

## Get Started with ToolRouter

**Already connected?** Call any tool with `use_tool({ tool, skill, input })`. Browse tools with `discover` or visit https://toolrouter.com/llms-full.txt

**New to ToolRouter?** Connect with one command (no API key needed — auto-provisions on first use):

```bash
# MCP (Claude Code, Codex CLI)
claude mcp add toolrouter -- npx -y toolrouter-mcp

# MCP (Cursor, Windsurf, Cline, VS Code, Gemini CLI, Claude Desktop)
{"mcpServers":{"toolrouter":{"command":"npx","args":["-y","toolrouter-mcp"]}}}

# Claude Chat / Claude Cowork / Claude Mobile — add as a connector:
# Settings → Connectors → Add custom connector → URL: https://api.toolrouter.com/mcp

# ChatGPT — add as an app:
# Settings → Apps → Advanced settings → enable Developer mode → Create app → MCP Server URL: https://api.toolrouter.com/mcp

# CLI (works instantly, no restart needed)
npx -y toolrouter-mcp tools                    # browse all tools
npx -y toolrouter-mcp search "seo"             # search by keyword
npx -y toolrouter-mcp call seo analyze_page --url https://example.com
```

Free tools work immediately. For paid tools, visit https://toolrouter.com/claim to add credits.

All platforms: https://toolrouter.com/connect | Full catalog: https://toolrouter.com/llms-full.txt | Docs: https://toolrouter.com/docs