Presentation
Open-source JSON format for describing PowerPoint presentations. Agents describe narratives, content, audience, reusable assets, and design — the engine handles OOXML complexity. Fields that reference catalog…
Field index
| Field | Type | Req. | Default | Description |
|---|---|---|---|---|
| $schema | const | — | — | Optional OPF schema version. When omitted, validators and engines should assume the latest supported OPF schema. |
| name | string | — | — | Display name of the presentation for GUI/TUI lists, library/search indexing, OS-level metadata, and default export filenames. This is deck identity, not slide content. Use slides[].title and slides[].subtitle for text that should appear on presented slides. |
| description | string | — | — | Free-form prose describing what this presentation is about. Used by agents and humans as a deck-level summary; complements purpose (the goal) and narrative (the structured storyline). Round-trips to OOXML 'docProps/core.xml' as '<dc:description>' (PowerPoint surfaces this as the… |
| filename | string | — | — | Optional base filename for exports (without extension). Engine strips a trailing .pptx, .pdf, .png, or .svg (case-insensitive) and appends the target format's extension. When omitted, the engine slugifies name when present. See /docs/opf for full validation rules. |
| organization | ref:Organization | array<ref:Organization> | — | — | Organization associated with the presentation, usually the presenting company. Array form supports hosts, partners, clients, and sponsors. The primary organization (declared via Organization.role or, if no role is set, the first item) drives default branding such as cover-slide… |
| speaker | ref:Speaker | array<ref:Speaker> | — | — | Person presenting the deck. Array form supports panels and multi-speaker decks. Used for cover slides, bio slides, footers, and panel attribution. |
| author | string | array<string> | — | — | Optional credit for the person who authored or contributed to the deck, distinct from speaker. Array form supports multiple contributors. Round-trips to OOXML 'docProps/core.xml' as '<dc:creator>' (semicolon-joined when multiple) and seeds '<cp:lastModifiedBy>' on first write; s… |
| audience | string | array<string | ref:Audience> | — | — | Intended audiences for the presentation. Accepts either: - A single string shorthand: free-form description ('Series B investors'), an audiences catalog id ('executives'), an HTTPS URL, or a 'pkg:' reference. - An array of string shorthands and/or inline Audience objects for cus… |
| purpose | string | ref:Purpose | — | — | Primary goal of the presentation. Accepts either: - A string shorthand: free-form goal ('Raise a Series B round of $30M'), a purposes catalog id ('decide', 'align'), an HTTPS URL, or a 'pkg:' reference. - An inline Purpose object for custom purpose metadata or catalog-backed ove… |
| language | string | ref:Language | — | — | Language for the presentation content. Accepts either: - A string shorthand: a BCP-47 language tag ('en-US', 'en-GB', 'ja-JP', 'fr'), a languages catalog id ('english', 'japanese'), an HTTPS URL, or a 'pkg:' reference. - An inline Language object for custom language metadata or… |
| tone | string | ref:Tone | — | — | Desired tone for the presentation. Accepts either: - A string shorthand: a tones catalog id ('formal'), an HTTPS URL, or a 'pkg:' reference. - An inline Tone object for custom tone metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-… |
| takeaway | string | array<string> | — | — | Audience-facing takeaway the presentation should leave behind. Array form supports multiple takeaways. Deck-level intent used by AI to seed and pressure-test slide content. |
| duration | integer | — | — | Target presentation duration, as an integer number of minutes. Used by AI to set pace and depth, and to compare against the resolved narrative's durationRange. |
| tags | array<string> | — | — | Free-form labels used for categorization, search, and filtering. Lowercase kebab-case is recommended for consistency across a deck library. |
| design | ref:Design | — | — | Optional design system covering theme, color scheme, font scheme, dimensions, background, logo, watermark, header, and footer applied to the deck. When omitted, engines use their default design configuration. |
| variables | ref:Variables | — | — | Optional named color variables for values the deck uses in more than one place or wants to name for intent (e.g. a risk red, a brand highlight). Content color fields reference entries as 'var:<id>' strings. Variables complement the color scheme: scheme slots and roles stay the p… |
| narrative | string | ref:Narrative | — | — | Structured storyline describing the deck's arc and beats. Resolves to the 'id' of a 'narratives' catalog record. Accepts two forms: - String shorthand for the common case: 'narrative = "classic-story"'. Accepts a bare id (lowercase kebab-case), an HTTPS URL pointing at a record… |
| slides | array<ref:Slide> | yes | — | Ordered array of slides that make up the presentation. |
| assets | ref:Assets | — | — | Optional reusable asset registry for images, data files, videos, documents, fonts, and other resources referenced elsewhere in the deck via 'asset:<id>' strings. |
| catalogs | ref:Catalogs | — | — | Optional per-kind catalog overrides. Each kind may declare a non-default 'source' and/or inline 'records' that override or supplement the default catalog at https://www.pptx.gallery/<kind>. References elsewhere in the document (e.g. design.theme, narrative) resolve through this… |
| extensions | object | — | — | Custom data passthrough for agent workflows; ignored by the engine but preserved across read/write round-trips. |
$schema
typeconstrequirednodefault—
Optional OPF schema version. When omitted, validators and engines should assume the latest supported OPF schema.
{
"$schema": "https://openpresentation.org/schema/opf/v1"
}name
typestringrequirednodefault—
Display name of the presentation for GUI/TUI lists, library/search indexing, OS-level metadata, and default export filenames. This is deck identity, not slide content. Use slides[].title and slides[].subtitle for text that should appear on presented slides.
{
"name": "Q4 2026 Business Review"
}description
typestringrequirednodefault—
Free-form prose describing what this presentation is about. Used by agents and humans as a deck-level summary; complements purpose (the goal) and narrative (the structured storyline). Round-trips to OOXML 'docProps/core.xml' as '<dc:description>' (PowerPoint surfaces this as the…
{
"description": "Quarterly business review covering revenue, product, and hiring milestones for the executive team."
}filename
typestringrequirednodefault—
Optional base filename for exports (without extension). Engine strips a trailing .pptx, .pdf, .png, or .svg (case-insensitive) and appends the target format's extension. When omitted, the engine slugifies name when present. See /docs/opf for full validation rules.
{
"filename": "q4-2026-business-review"
}organization
typeref:Organization | array<ref:Organization>requirednodefault—
Organization associated with the presentation, usually the presenting company. Array form supports hosts, partners, clients, and sponsors. The primary organization (declared via Organization.role or, if no role is set, the first item) drives default branding such as cover-slide…
{
"organization": "organization-value"
}speaker
typeref:Speaker | array<ref:Speaker>requirednodefault—
Person presenting the deck. Array form supports panels and multi-speaker decks. Used for cover slides, bio slides, footers, and panel attribution.
{
"speaker": "speaker-value"
}audience
typestring | array<string | ref:Audience>requirednodefault—
Intended audiences for the presentation. Accepts either: - A single string shorthand: free-form description ('Series B investors'), an audiences catalog id ('executives'), an HTTPS URL, or a 'pkg:' reference. - An array of string shorthands and/or inline Audience objects for cus…
{
"audience": "executives"
}purpose
typestring | ref:Purposerequirednodefault—
Primary goal of the presentation. Accepts either: - A string shorthand: free-form goal ('Raise a Series B round of $30M'), a purposes catalog id ('decide', 'align'), an HTTPS URL, or a 'pkg:' reference. - An inline Purpose object for custom purpose metadata or catalog-backed ove…
{
"purpose": "Raise a Series B round of $30M"
}language
typestring | ref:Languagerequirednodefault—
Language for the presentation content. Accepts either: - A string shorthand: a BCP-47 language tag ('en-US', 'en-GB', 'ja-JP', 'fr'), a languages catalog id ('english', 'japanese'), an HTTPS URL, or a 'pkg:' reference. - An inline Language object for custom language metadata or…
{
"language": "en-US"
}tone
typestring | ref:Tonerequirednodefault—
Desired tone for the presentation. Accepts either: - A string shorthand: a tones catalog id ('formal'), an HTTPS URL, or a 'pkg:' reference. - An inline Tone object for custom tone metadata or catalog-backed overrides. Object form mirrors https://openpresentation.org/schema/opf-…
{
"tone": "formal"
}takeaway
typestring | array<string>requirednodefault—
Audience-facing takeaway the presentation should leave behind. Array form supports multiple takeaways. Deck-level intent used by AI to seed and pressure-test slide content.
{
"takeaway": "Agent latency is the new bottleneck for AI products."
}duration
typeintegerrequirednodefault—
Target presentation duration, as an integer number of minutes. Used by AI to set pace and depth, and to compare against the resolved narrative's durationRange.
{
"duration": 1
}design
typeref:Designrequirednodefault—
Optional design system covering theme, color scheme, font scheme, dimensions, background, logo, watermark, header, and footer applied to the deck. When omitted, engines use their default design configuration.
{
"design": "design-value"
}variables
typeref:Variablesrequirednodefault—
Optional named color variables for values the deck uses in more than one place or wants to name for intent (e.g. a risk red, a brand highlight). Content color fields reference entries as 'var:<id>' strings. Variables complement the color scheme: scheme slots and roles stay the p…
{
"variables": "variables-value"
}narrative
typestring | ref:Narrativerequirednodefault—
Structured storyline describing the deck's arc and beats. Resolves to the 'id' of a 'narratives' catalog record. Accepts two forms: - String shorthand for the common case: 'narrative = "classic-story"'. Accepts a bare id (lowercase kebab-case), an HTTPS URL pointing at a record…
{
"narrative": "classic-story"
}slides
typearray<ref:Slide>requiredyesdefault—
Ordered array of slides that make up the presentation.
{
"slides": []
}assets
typeref:Assetsrequirednodefault—
Optional reusable asset registry for images, data files, videos, documents, fonts, and other resources referenced elsewhere in the deck via 'asset:<id>' strings.
{
"assets": "assets-value"
}catalogs
typeref:Catalogsrequirednodefault—
Optional per-kind catalog overrides. Each kind may declare a non-default 'source' and/or inline 'records' that override or supplement the default catalog at https://www.pptx.gallery/<kind>. References elsewhere in the document (e.g. design.theme, narrative) resolve through this…
{
"catalogs": "catalogs-value"
}extensions
typeobjectrequirednodefault—
Custom data passthrough for agent workflows; ignored by the engine but preserved across read/write round-trips.
{
"extensions": {}
}