Create Multi-Slide Deck
create_deckCreate a complete PowerPoint presentation (.pptx): a whole multi-slide deck, native and editable, in one call. slides is a list of create_slide intents (same form menu + data shapes — see create_slide). Slides fill in parallel and merge into one themed PPTX with page numbers. Include furniture: a hero_statement cover, section_divider breaks, and a closing (hero_statement variant=contact_closing via blocks-free slots).
BLOCKED ($0)? If an error has can_autofix:true, merge its patch into the args at patch_target. Unchanged retries repeat the block. New form: browse_catalog(type=schema) first.
Also: mode=assemble merges existing slide job_ids as-rendered (free; theme_id does NOT re-theme them — render with create_deck(slides=[…], theme_id=…) for a unified theme); mode=fork clones a deck (free). Polling: deck_id == job_id — manage_account(action=job, job_id=).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Default render. assemble/fork are free deck plumbing. | |
| name | No | ||
| title | No | Deck title (PowerPoint metadata) | |
| slides | No | each item is a create_slide intent (same form menu, typed fields, and data shapes as create_slide). | |
| deck_id | No | Existing deck ID (for mode=fork, or mode=render to update) | |
| dry_run | No | Deck-level free pre-flight (cost:0, NO render/PPTX): returns a per-slide validation manifest [{i, form, fidelity_forecast, status, errors}] so you can fix bad slides before spending. A deck is one artifact, so validation is all-or-nothing — put dry_run here, not on individual slides. Resend without dry_run to render. | |
| imagery | No | Deck-level imagery mode, inherited by every slide (a slide-level imagery wins). See create_slide.imagery. | |
| job_ids | No | Slide job IDs to merge (for mode=assemble) | |
| logo_id | No | Optional brand logo (from upload_asset purpose=logo) applied as chrome to every content slide in the deck. | |
| styling | No | Deck-level topical-design switch, inherited by every slide (a slide-level styling wins). See create_slide.styling. | |
| language | No | Target language | |
| theme_id | No | ||
| direction | No | Deck-level writing direction, inherited by every slide (a slide-level direction wins) — set it once for an Arabic/Hebrew deck. Covers/dividers rendered on an UPLOADED brand template keep that template's own layout direction. See create_slide.direction. | |
| imagery_tag | No | Deck-level subject declaration, inherited by every slide (a slide-level imagery_tag wins). Declare it once for a whole deck. See create_slide.imagery_tag. | |
| force_render | No | IGNORED (deck-level). pptx_url is always returned when at least one slide rendered, so there is nothing to force. Still meaningful on create_slide. | |
| allow_partial | No | IGNORED. A deck bills per rendered slide and always returns its pptx; slides that failed or rendered badly are free and named in repair_actions. | |
| strict_policy | No | Optional CI-style gate for automated report pipelines. dry_run returns policy_result; render returns rejected/cost:0 if the policy fails. |