apply_theme
ChatGPTWidget-only: apply a theme to a presentation.
cancel_pregen
ChatGPTWidget-only: fire-and-forget cancel of speculative pre-generation (GA-953).
create_presentation
ChatGPTCreate a new presentation on any topic. Returns an interactive slide viewer. Only set optional parameters when the user explicitly mentions them. Omit everything the user does not specify. Args: topic: Subject matter for the presentation (required). num_slides: Number of slides. Only set if user states a number. language: Content language. Only set if user requests non-English. text_content: Text density. Allowed values ONLY: minimal, concise, detailed, extensive. tone: Presentation tone. Allowed values ONLY: professional, conversational, technical, academic, inspirational, humorous. audience: Target audience, e.g. business, high_schoolers, college_students, creatives, tech_enthusiasts, or custom text. image_style: Image style. Allowed values ONLY: illustration, photorealistic, abstract, three_d, line_art. image_keywords: Keywords guiding image selection. image_source: Image source. Allowed values ONLY: ai, search, pexels, unsplash.
edit_presentation
ChatGPTEdit a presentation using natural language instructions from the user WHEN TO USE: - User wants to MODIFY an existing presentation that was created in this conversation - Trigger phrases: "edit", "change", "update", "make it", "add", "remove", "move", "fix", "tweak", "adjust" - Examples: • "make slide 2 more concise" • "add a slide about pricing" • "change the theme to something darker" • "remove the last slide" • "add more visuals" • "i don't like this slide" (pass exactly as-is) DO NOT USE: - No presentation exists in this conversation → Ask user to create one first - User wants to create a NEW presentation → Use generate_slides - User wants to list/retrieve saved presentations → Use list_presentations - User wants to export → guide him to export using the export button in the UI widget from generate_slides toolcall - You don't have a valid presentation_id → Ask user to create or open a presentation CAPABILITIES: The backend agent can: ├─ Content: Modify text, add/remove bullet points, change titles, add speaker notes ├─ Slides: Add, remove, reorder, duplicate slides ├─ Images: Add, replace, remove images; change image style ├─ Theme: Change colors, fonts, overall visual style ├─ Layout: Adjust slide layouts, text positioning └─ Navigation: The agent auto-detects which slide user is viewing (no slide number needed) CONTEXT AWARENESS: - Agent tracks which slide user is currently viewing in the widget - Agent maintains conversation context for multi-turn edits - User can refine iteratively: "make it shorter" → "now add examples" → "perfect, do the same for slide 3" ⚠️ CRITICAL INSTRUCTION — PASS USER MESSAGES EXACTLY: ┌─────────────────────────────────────────────────────────────────────────────┐ │ Do NOT interpret, expand, rephrase, summarize, or rewrite the user's input. │ │ Pass the instruction parameter EXACTLY as the user typed it. │ │ The backend agent handles clarification — your job is only to pass through. │ └─────────────────────────────────────────────────────────────────────────────┘ Examples of correct pass-through: User: "i do not like this slide" → instruction: "i do not like this slide" User: "make it better" → instruction: "make it better" User: "more professional" → instruction: "more professional" User: "add something about our team" → instruction: "add something about our team" User: "idk fix it" → instruction: "idk fix it" ❌ WRONG — Do not do this: User: "make it better" → instruction: "Improve the slide by enhancing the content quality and visual design" ← NO! Args: presentation_id: UUID of presentation to edit (REQUIRED — from generate_slides response) instruction: User's EXACT message, word-for-word (REQUIRED — do NOT rewrite) conversation_id: Optional. Auto-tracked by widget for multi-turn context. Returns: ToolResult with updated presentation widget RESPONSE GUIDANCE: Accompany the widget with a brief text response (1-2 lines max). STRUCTURE: 1. Confirm what was changed (1 line, specific) 2. Optionally prompt for next action or confirmation TONE: Brief, specific, conversational. Match the energy of the edit size. EXAMPLE RESPONSES: ✅ GOOD (small edit): User: "make the title shorter" Response: "Shortened the title. Anything else?" [Widget] ✅ GOOD (content change): User: "add a slide about pricing" Response: "Added a pricing slide after slide 4. Want me to adjust the details?" [Widget] ✅ GOOD (theme change): User: "change to a dark theme" Response: "Switched to a dark theme throughout. Let me know if you'd like to tweak the colors." [Widget] ✅ GOOD (vague request — agent asked clarification): User: "i don't like this slide" Agent response: "What would you like me to change — the content, layout, or visuals?" [Widget with agent's clarifying question] ✅ GOOD (multi-turn): User: "make it more concise" Response: "Condensed the text. Want me to do the same for other slides?" [Widget] ❌ BAD (too verbose): "I've successfully updated your presentation by shortening the title on slide 2. The new title is now more concise and impactful. You can continue editing, change the theme, export the presentation, or…
enhance_image_prompt
ChatGPTWidget-only: enhance an image generation prompt using slide context.
generate_diagram
ChatGPTWidget-only: generate a smart diagram from slide content.
generate_image
ChatGPTWidget-only: generate or resolve a slide image.
generate_image_candidates
ChatGPTWidget-only: generate N candidate images for the MediaSidebar (non-streaming).
generate_intro_variations
ChatGPTWidget-only: generate intro-slide variations (blocking).
generate_outline
ChatGPTWidget-only: generate and persist a presentation outline (blocking).
get_generation_status
ChatGPTWidget-only: poll a deck's generation status + persisted slides.
get_image
ChatGPTWidget-only: fetch image metadata by ID for the MediaSidebar.
get_image_by_url
ChatGPTWidget-only: look up image metadata by exact URL (by-URL fallback).
get_presentation
ChatGPTWidget-only: fetch a stored presentation by ID.
get_random_themes
ChatGPTWidget-only: fetch a random selection of themes.
get_theme_css
ChatGPTWidget-only: fetch a theme's CSS variables.
list_image_styles
ChatGPTWidget-only: fetch image styles for the MediaSidebar style picker.
list_presentation_images
ChatGPTWidget-only: list images for the MediaSidebar gallery.
list_themes
ChatGPTWidget-only: list public themes with CSS for the theme picker.
open_outline
ChatGPTUse this when the user asks to see or show the outline of a deck that already exists in this conversation. Always call this tool when the user asks to see, show, open, review or change the outline, even if the outline is already in the conversation. Never write the outline out as text instead. Do not call it to edit slide content; use edit_presentation for that.
open_presentation_editor
ChatGPTOpen the deck viewer for an existing presentation as a new card. The card shows the slides with Edit in full-screen, Export and Present buttons. Call this only when the user asks to open, edit or see the editor for a deck that already exists in this conversation. Do not call it while a deck card is already generating. Do not call it to make edits; use edit_presentation for that. Args: presentation_id: ID of the presentation to open.
open_theme_picker
ChatGPTOpen the theme picker for an existing presentation as a new card. Use it so the user can choose a different look for the same outline. Call this only when the user asks to see, change or pick themes for a deck that already exists in this conversation. Do not call it when the user asks to change the theme on specific slides; use edit_presentation for that. Args: presentation_id: ID of the presentation whose outline the themes are for.
regenerate_slide_content
ChatGPTWidget-only: regenerate one existing slide's content (blocking).
reset_presentation_status
ChatGPTWidget-only: reset a presentation stuck in 'generating'.
resolve_embed_metadata
ChatGPTWidget-only: resolve a video, audio or webpage URL for an embed block.
start_deck_from_outline
ChatGPTWidget-only: start background slide generation from an outline (start-then-poll).
start_one_step_generation
ChatGPTWidget-only: start one-step outline+deck generation (start-then-poll).
store_presentation
ChatGPTWidget-only: auto-save the full presentation.
transform_diagram
ChatGPTWidget-only: transform a smart diagram from one variant to another.
trigger_pregen
ChatGPTWidget-only: fire-and-forget trigger of speculative pre-generation (GA-953).
update_outline
ChatGPTWidget-only: save the presentation outline (merges non-null fields). generate marks the save that IS the user pressing Generate, which is the moment the backend checks the deck is affordable. Nothing is charged yet. Only the accept sends it; a reorder, a retitle and a settings change leave it false.
update_slide_image
ChatGPTWidget-only: persist a resolved image URL into a slide.
update_view_context
ChatGPTWidget-only: persist which slide the user is viewing. Called by the presentation widget on slide change (debounced). Hidden from the model via WIDGET_ONLY_TOOLS — the model never invokes this directly.
upload_image
ChatGPTWidget-only: upload a user image (base64) to the backend image store.