Core Tools
Generate PowerPoint Tool
Create custom PowerPoint decks from structured JSON—no template required.
What it does
generate_powerpoint
takes a simple JSON payload describing slides and their elements and turns it into a downloadable .pptx
file—fully in the cloud, no template needed. Use it for pitch decks, reports, dashboards, or any slide-based content.
Key features
- Works with blank PowerPoint—no pre-made template necessary
- Supports common element types: text, bullet lists, tables, charts, images
- Choose among four built-in layouts (
TITLE_SLIDE
,TITLE_AND_CONTENT
,SECTION_HEADER
,CUSTOM_LAYOUT
) - Fine-tune placement with optional
placeholder_type
(BODY, SUBTITLE, PICTURE, CHART, TABLE) - Stores the finished deck in your org’s R2 bucket and returns a presigned download link
Parameters
Parameter | Type | Required | Description |
---|---|---|---|
slides | array<Slide> | Yes | Ordered list of slides to create |
Slide object
Field | Type | Required | Description |
---|---|---|---|
slide_number | integer | Yes | 1-based position in the deck |
layout | string | Yes | One of TITLE_SLIDE , TITLE_AND_CONTENT , SECTION_HEADER , CUSTOM_LAYOUT |
title | string | Yes | Slide title text |
description | string | No | Internal note for agents (not rendered) |
elements | array<Element> | No | Content blocks to render (order matters) |
Element object
Field | Type | Required | Description |
---|---|---|---|
type | string | Yes | text , bullet_list , table , chart , image |
placeholder_type | string | No | Target placeholder (BODY , SUBTITLE , PICTURE , CHART , TABLE ). Defaults to BODY/fallback |
Text → text | string | req for type text | Plain text content |
Bullets → items | array<> | req for bullet_list | Bullet items, level 0-4 |
Table → headers | string[] | req for table | Header row |
Table → rows | string[][] | req for table | Table body rows |
Chart → chart_type | string | req for chart | COLUMN_CLUSTERED , LINE , PIE , BAR_CLUSTERED |
Chart → chart_title | string | No | Title above the chart |
Chart → categories | string[] | req | Category labels |
Chart → series | array of series objects | req | Each series: { name, values:number[] } |
Image → src | string | req for image | Path or URL to an image |
Minimal example
What you get back
On success the tool returns:
The front-end converts this into a “Download Presentation” button.
Common use cases
- Auto-generate investor or client update decks
- Produce onboarding presentations with personalized user data
- Build KPI dashboards with tables & charts on a schedule
- Summarize meeting notes into slides via an agent workflow
Best practices
- Always supply
slide_number
in ascending order—missing numbers will be filled sequentially, but duplicates are overwritten by the last occurrence. - Keep image
src
publicly accessible or an R2 path the backend can reach. - When using
chart
elements ensure all series arrays match the length ofcategories
. - Omit
placeholder_type
unless you need precise control—the backend falls back intelligently.
Troubleshooting
Issue | Likely cause / fix |
---|---|
”Unknown layout” | layout not in the allowed set. Use one of the four built-ins. |
”No slides data provided” | slides array missing or empty. |
Error generating chart | Series lengths mismatch or invalid numbers. |
Image skipped with warning | Provided layout doesn’t have a PICTURE placeholder—switch layout or use BODY/OBJECT. |
Related tools
- Save Whiteboard – advanced, template-driven deck builder for Investment Committee whiteboards
- Save Flash Report – one-page DOCX report generator