> Discover all available Postdom documentation from the machine-readable index: https://postdom.com/llms.txt

Configured tool · write

# `create_slideshow`

Render carousel slides on the workspace brand kit from words and images, and store each slide as image media.

write · non-destructive · closed-world

Human and agent roles

## Configured boundary

### Configured workspace

The agent never designs: it picks a template per slide and supplies the words and an optional photo. Postdom draws every slide with the workspace's colours, fonts and logo. Nothing is published here; the returned media ids go to publish_video.

This reference describes the hosted server at https://api.postdom.com/mcp, which runs current source, with a workspace-scoped key created under Connected apps → For developers. The published `@postdom/mcp@0.4.0` package has 14 of these tools: it lacks list_posts, create_slideshow, account_music and the media array.

Callable schema

## Input fields

Field names match the configured tool schema. Runtime-only constraints are labeled separately from schema validation.

| Field | Type | Contract |
| --- | --- | --- |
| size Required | 4:5 \| 9:16 \| 1:1 | One size for every slide 4:5 or 1:1 for feed carousels; 9:16 for full-screen photo carousels. |
| slides Required | slide[] | 1 to 20 slides In order. Each names a template: cover, text_image, list, quote, end_card, stat, compare, checklist, myth_fact, step or cover_image. |
| slides[].headline · kicker · body · title · items · quote · attribution · cta · handle · stat · left_label · right_label · left · right · myth · fact · step Optional | string · string[] · integer | Only the fields the template takes cover: headline, kicker?; text_image: headline, body; list: items (3 to 5), title?; quote: quote, attribution; end_card: cta, handle; stat: stat, headline, body?; compare: left_label, right_label, left and right (2 to 4 rows each), title?; checklist: items (3 to 6), title?; myth_fact: myth, fact; step: step (1 to 99), headline, body; cover_image: headline and an image, kicker?, body?. |
| slides[].image_media_id Optional | media handle | An image uploaded to this workspace · cover, text_image, step and cover_image (required there) The photo behind a cover or cover_image, or inside a text_image or step card. Postdom crops it to the slot. |
| idempotency_key Optional | string | Non-empty Keep one key for every retry of the same slides; a retry answers the first render. |

**For AI agents:** Send only fields exposed by the current tool schema.

**Known failure:** Do not invent platform settings, account IDs, media fields, or setup steps.

Synthetic values

## Example call

Identifiers and values are examples. They do not represent a connected workspace or accepted media source.

_EXAMPLE CALL · CONFIGURED TOOL SCHEMA_

```
create_slideshow({
  size: "4:5",
  slides: [
    { template: "cover", kicker: "Guide", headline: "Three ways to plan a calmer week", image_media_id: "pd_media_..." },
    { template: "list", items: ["Batch your meetings", "Protect one deep-work block", "End Friday with a review"] },
    { template: "end_card", cta: "Save this for Monday", handle: "@yourbrand" }
  ]
})
```

Observed API record

## Return shape

Returns the rendered slides in order, or every field that did not fit.

**`slideshow_id · status` (identity · state)** — ready, refused, or rendering when the render outlasted the wait.

**`media_ids` (string[])** — Image media handles in slide order, for publish_video media[].media_handle.

**`kit_version` (integer | null)** — The brand kit version the slides were drawn with.

**`media[].template_id · preview_url` (string)** — The template each slide used, and a short-lived link to look at it.

**`notes` (array)** — Adjustments the renderer made, such as a colour darkened for contrast.

**`refusals` (array)** — When refused: every slide and field that did not fit, with a character hint. Nothing was stored.

Stop conditions

## Agent handoff

`ready`

### Publish the slides

Pass media_ids in order to publish_video media[], or to a plan.

`refused`

### Shorten and retry

Shorten every field named in refusals, then call again with all the slides.

`rendering`

### Call again

Repeat the same call with the same idempotency_key to wait for the same slides.

 VERIFIED · 26 AUGUST 2026  **Configured MCP schema · POST /v1/slideshows · GET /v1/slideshows/:id**

Examples are synthetic. Human workspace-key creation and revocation remain in Postdom under Connected apps → For developers.
