Oxagen Docs

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.

LayoutUsed for
titleCover slide — title and subtitle
section_headerSection dividers between groups of slides
title_and_bodyThe workhorse — title with bullets or a paragraph
two_columnSide-by-side comparison or before/after
image_centeredOne image with a caption
tableTabular content rendered as a native table
quotePull quote with attribution

Every SlideBlock also carries:

  • speaker_notes — markdown, dropped into the speaker-notes pane.
  • placeholders{{name}} tokens that slides.replace_placeholders can fill in one round-trip.
  • image_refsgs:// or https:// references the provider resolves to inline images.

Capability surface

CapabilityCreditsWhat it does
slides.create_from_spec5Materialise a SlideDeckSpec as a new Google Slides deck. Returns (external_id, external_url, kind='slides').
slides.append_slide2Append one slide to an existing deck. Used by the agent when it streams generation slide-by-slide.
slides.replace_placeholders2Substitute {{name}} tokens across every slide in the deck.
slides.export_pdf3Render the deck to PDF. Lands as a sibling row in app.documents.
slides.share1Grant 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

ColumnValue
kinduploaded
extension.gslides
mime_typeapplication/vnd.google-apps.presentation
sourceagent_generated
providergoogle
external_idGoogle Drive file id
external_urlSlides viewer URL
generated_by_run_idThe 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

On this page