Slides
How Oxagen agents author Google Slides decks through a vendor-neutral SlideDeckSpec — layouts, speaker notes, placeholder substitution, and PDF export.
The slides surface is the agent's presentation channel. An agent
composes a typed SlideDeckSpec — title, ordered slides, share
intent — and the active provider materialises it as a Google
Slides deck. The provider contract lives in
packages/oxagen/oxagen/documents/; the agent never imports a
vendor SDK and never sees raw OAuth credentials.
The SlideDeckSpec shape
A deck is an ordered list of SlideBlock entries. Every slide
declares a layout and a body — the provider picks the matching
master from the active brand kit or falls back to Google Slides'
named layouts.
| Layout | Used for |
|---|---|
title | Cover slide — title and subtitle |
section_header | Section dividers between groups of slides |
title_and_body | The workhorse — title with bullets or a paragraph |
two_column | Side-by-side comparison or before/after |
image_centered | One image with a caption |
table | Tabular content rendered as a native table |
quote | Pull quote with attribution |
Every SlideBlock also carries:
speaker_notes— markdown, dropped into the speaker-notes pane.placeholders—{{name}}tokens thatslides.replace_placeholderscan fill in one round-trip.image_refs—gs://orhttps://references the provider resolves to inline images.
Capability surface
| Capability | Credits | What it does |
|---|---|---|
slides.create_from_spec | 5 | Materialise a SlideDeckSpec as a new Google Slides deck. Returns (external_id, external_url, kind='slides'). |
slides.append_slide | 2 | Append one slide to an existing deck. Used by the agent when it streams generation slide-by-slide. |
slides.replace_placeholders | 2 | Substitute {{name}} tokens across every slide in the deck. |
slides.export_pdf | 3 | Render the deck to PDF. Lands as a sibling row in app.documents. |
slides.share | 1 | Grant access at the chosen role. |
Calling it
{
"tool": "slides.create_from_spec",
"args": {
"spec": {
"title": "Acme renewal — board prep",
"slides": [
{ "layout": "title", "title": "Acme renewal", "subtitle": "Q2 board prep" },
{ "layout": "title_and_body",
"title": "Why Acme matters",
"body": [
"Annualised at $480k",
"Three SSO blockers cleared in April",
"Internal champion has rotated"
],
"speaker_notes": "Emphasise the champion rotation — that's the biggest risk to renewal." },
{ "layout": "two_column",
"title": "Open work vs done",
"left": ["SSO rollout", "Audit-log access"],
"right": ["Billing migration", "API key rotation"] }
]
}
}
}The agent gets back the deck URL and the canonical
app.documents.id. slides.append_slide and
slides.replace_placeholders reference the deck by id.
Branding
When the workspace has a default BrandKit, the provider maps
its palette to the slide background and accent colours, its
typography to the title and body font, and its logo to the
upper-left corner of every non-title slide. The kit's footer
markdown renders in the slide footer. Generation without an
active kit falls back to Google Slides' "Simple Light" master.
See Brand kits.
Storage and provenance
| Column | Value |
|---|---|
kind | uploaded |
extension | .gslides |
mime_type | application/vnd.google-apps.presentation |
source | agent_generated |
provider | google |
external_id | Google Drive file id |
external_url | Slides viewer URL |
generated_by_run_id | The agent run that produced the deck |
PDF exports from slides.export_pdf land as a sibling document
with parent_document_id pointing at the source deck. See
Artifact storage.
Permissions
The provider uses the workspace's Google Workspace connection.
Tokens are short-lived and never surface in agent context. A
workspace without a connected Google account that calls
slides.* receives a structured 409 missing_connection.
Audit
Each generation writes an audit.event row with
action='slides.created' (or 'slides.slide.appended' /
'slides.placeholders.replaced'), chained to the workspace's
audit stream. See
Events, triggers, and audits.
Artifacts overview · Document generation · Spreadsheets · PDF generation
Spreadsheets
How Oxagen agents author Google Sheets through a vendor-neutral SheetSpec — typed headers, formatted cell ranges, charts from a typed ChartSpec, and PDF export.
PDF generation
How Oxagen agents render documents to PDF — vendor-specific exports for generated Google Workspace artifacts, plus a generic LibreOffice-backed converter for everything else in the workspace document store.