Create or Inspect a Slide
create_slideCreate one presentation slide by picking a form (agenda, chart, grid, etc.) and filling typed fields, or by passing a brief for automatic routing to the appropriate slide layout.
Instructions
Create ONE slide from a structured intent in ONE call: pick a form from the menu and put your content in the typed fields (placed on the slide as given), or pass a brief and let the server route it. Fields tagged (per-form) bind only where the form has that slot — ignored-with-warning elsewhere; see each form's binds in browse_catalog.
FORM MENU: agenda_list: an ordered list of sections/topics to walk through bar_rank_chart: bars comparing magnitudes across categories calendar_grid: events on a real calendar - a week planner (day columns x hour axis) or a month grid with release/event chips (data.events) card_grid: several equal, unordered peer blocks (features, options, pillars) case_story: one named story told as evidence: challenge, action, measured result comparison_matrix: options x criteria grid: data.columns x data.rows cycle_flow: a closed loop of ordered stages where the last feeds the first (recurring process) data_table: a plain factual table of records by fields editorial_split: two side-by-side halves in contrast (before/after, problem/solution) funnel: a quantity narrowing through ordered stages gantt_plan: tasks as bars across named periods on a schedule grid gauge_score: one score on a dial against a scale hero_statement: a statement slide: a cover (typographic/image-led/exec-metadata), a from->to or thesis-quote transition, or a contact or next-steps closing hub_spoke: one central element with several elements connected around it kpi_metrics: a board of headline metric cards; add data.sections (Highlights/Risks/Asks) for a one-slide exec summary / board update / QBR snapshot layer_stack: stacked layers where higher sits on, and depends on, lower linear_flow: ordered process stages read left to right (or inputs to process to outputs) maturity_staircase: ascending levels climbing to a higher state nested_magnitude: nested containment - each level contains the next org_structure: a reporting hierarchy / org tree position_map: items placed by two axes - named 2x2 cells or scatter positions pyramid_hierarchy: a triangle of stacked tiers, foundation to apex ramp_curve: a continuous rising wedge split into phases - effort or value accumulating over time section_divider: a section-break slide: big section number + title; blocks = agenda progress chips (emphasis=primary marks the current section) segment_wheel: a wheel of equal segments around a center - peer categories in the round (composition, not flow) status_dashboard: initiatives/workstreams tracked by status, owner, progress strategic_fork: one origin splitting into two mutually exclusive paths, one recommended swimlane_flow: actor/function lanes by phases, task cells, handoffs across lanes swot: the four-quadrant strengths / weaknesses / opportunities / threats grid system_flow_map: nodes connected by directed arrows that carry the message (data/requests move) takeaway_stack: a few bold conclusions, each with one line of support; optional closing ask timeline_roadmap: milestones/phases laid out along a time axis trend_chart: one or more series plotted over time value_chain: support bands over primary activity columns flowing into a goal arrowhead (how value is created; data.support = the bands) visual_showcase: one dominant screenshot/image with numbered callouts pointing into it waterfall_bridge: a start value bridged to an end value by plus/minus contributions
Exact per-form data shapes: browse_catalog(type=schema, family=) — the generated, always-current JSON Schema + a worked example. (List-shaped forms take blocks: [{"label","sub","detail":[str],"emphasis"}]; structured forms take typed data.)
Escape modes: mode=code (caller-supplied python-pptx in sandbox, $0.05 — use for forms the menu cannot express: calendars, custom diagrams); mode=status (poll a job, free). Image-led asks (photo covers, full-bleed visuals): hero_statement + image_prompt (+$0.05) or image_src.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Python code defining build(prs). Canvas 13.33×7.5", coords in inches. Pre-imported: Presentation, Inches, Pt, Emu, RGBColor, MSO_ANCHOR, PP_ALIGN. Helpers: add_text_box(slide, left, top, w, h, text, font_size=12, bold=False, color=None), add_box(slide, left, top, w, h, fill_color=None, line_color=None, corner_radius=0.05), add_icon, add_image (src = path or https://); theme_color(name) → RGBColor. add_widget(slide, name, x, y, w, h, params=|content=, theme=THEME) draws board-grade SSG widgets/charts (cards, waterfall, gantt, funnel…) — names via `browse_catalog(type=widgets)`. Use font_size=, not size=; use fill_color=, not fill=. When chrome is supplied, use `build(prs, slide)` — chrome is pre-rendered. Helper signatures: `browse_catalog(type=helpers)`. | |
| data | No | family-specific payload — see the documented shapes | |
| date | No | date callout (per-form). | |
| form | No | the form menu pick (see description) — the routing field | |
| mode | No | Default: structured intent / brief. safe = validate-then-render in ONE call (renders + bills only if faithful; else $0 invalid report with the fix — recommended, no dry_run round-trip). code = python-pptx escape. status = poll. | |
| name | No | ||
| wait | No | AI-image slides block ~10-15s; `false` returns a job_id to poll, not block (mode=brief). | |
| brief | No | prose fallback / extra context for fills | |
| blocks | No | list: [{"label","sub","detail":[str],"emphasis","icon":lucide-name,"metric":{value,label}}] | |
| detail | No | Response verbosity. Default `compact`: status, form/variant, fidelity (verbatim|mixed|ai_completed), warnings[]/errors[] (only when present), urls, cost. `full` adds a debug object (engine internals, verify events, latency buckets). | |
| job_id | No | Previous job ID (for mode=status, or mode=code patching) | |
| metric | No | ||
| verify | No | mode=code tier. Default `lint`: static geometry linter (overlap/off-canvas/zero-size) + composer content validators — no LLM. `lint+vlm` adds a VLM second-look (~+3s) and makes a blank/contentless render a $0 error, not a billed warning. `off` skips checks. | |
| caution | No | one-line risk / caveat callout (per-form). | |
| context | No | one-line subtitle/standfirst | |
| dry_run | No | Free pre-commit check (intent or mode=code), cost:0, no PPTX: status + warnings/errors, plus fidelity_forecast (verbatim|mixed|ai_completed|would_reject) and which fields bind vs get authored. Fix errors, re-call with dry_run=false to render. | |
| imagery | No | Cover/section-divider imagery: photo (default — curated stock photo, half-bleed), wash (abstract color wash), off (typographic only). Content slides are never photo-decorated. | |
| logo_id | No | Optional brand logo (from upload_asset purpose=logo) drawn as chrome on content slides; covers/section breaks stay clean. | |
| styling | No | Subject-informed palette + designed cover on default themes (on by default; the design note names the choice). clean = neutral look. Pinned themes never take it. | |
| subject | No | central entity for forms that have one — hub label, org root, section #, fork origin, media label (per-form). | |
| variant | No | pin a specific variant within the form (list them via browse_catalog). Unknown variant -> rejected ($0) with the valid list; set allow_variant_fallback to render the family default instead. | |
| headline | No | the assertion-style slide title | |
| language | No | Target language (default: en) | |
| takeaway | No | optional verdict band (per-form). Put the so-what in the headline; add only for a verdict the title can't carry — not every slide. | |
| theme_id | No | Optional theme id from browse_catalog(type=themes). Omit for Default (slideforge_standard). | |
| highlight | No | one-line emphasis callout (per-form). | |
| image_src | No | https URL | asset:<id> for image-bearing forms | |
| imagery_tag | No | Industry bucket for cover/section photos. Omit for the general pool. | |
| min_font_pt | No | Binding type floor for prose (exhibit furniture has its own). Type grows to meet it; content that can't fit is a $0 min_font_not_met naming the size needed — allow_truncation renders the fitting subset. Typical: 12. | |
| source_note | No | source / footnote line (per-form). | |
| force_render | No | On completed_with_errors, pptx_url is null (broken slide). Set true to get it anyway. No cost/status effect. | |
| image_prompt | No | generate an image when no image_src (+$0.05) | |
| replacements | No | String replacements on loaded code [{old, new}] (for mode=code with job_id) | |
| variant_policy | No | Routed-variant maturity policy: production_safe = if the ROUTED variant is draft/beta, render the family's demo-safe sibling instead (warning names both). Never overrides an explicit variant=. Default best_semantic_match. | |
| include_preview | No | Inline-preview PAYLOAD only (not execution). Default: default (768px). none omits the inline image and returns just the URLs — it does NOT change sync/async. Use `wait` to control execution. | |
| quality_profile | No | Thresholds layout.presentation_ready is judged against (executive strictest). Measurement only — never blocks a render or changes cost. | |
| allow_truncation | No | By default, supplying MORE items than a form holds is a blocking error (it would drop your data) — the response names the dropped count + a suggested_split. Set true to render the capacity subset anyway (fidelity=verbatim_truncated, never verbatim). Default false. | |
| form_description | No | ||
| allow_fabrication | No | Brief mode only: by default a bare brief on a DATA form (kpi/funnel/comparison/…) returns status=would_fabricate at cost:0 rather than INVENT the numbers/entities. Supply the data as typed fields to render verbatim, or set true to let the brief author them (fidelity=ai_completed). Default false. | |
| allow_low_confidence | No | Brief routing only: by default a brief that doesn't match a form clearly returns status=needs_confirmation + candidates at cost:0 (no guessed render). Set true to render the top guess and bill it. Default false. | |
| allow_variant_fallback | No | If the pinned variant is unknown, render the form's default variant (with a warning) instead of rejecting. Default false. |