MCP App Store
by KeenEthics

Overview

Havi transforms rough ideas into polished, presentation-ready slides instantly. Start with a prompt, a few notes, or a rough outline. The app builds the narrative, layout, and design so you can stay focused on your messaging. Build aesthetic slides with zero design effort. You can ask for things like "Turn my product notes into a 5-slide overview" or "Create an onboarding presentation for new hires". The app also supports instant edits with commands like "simplify the text on slide 2" or "change the theme to something more professional". All presentations save automatically and can also be exported into both PDF and PPT formats directly. How to Use 1. Connect the Havi App from the directory 2. Type "@" and tag Havi app, or type "Havi", then enter your prompt to generate stunning slides instantly

Tools

apply_theme

ChatGPT
Widget-only: apply a theme to a presentation.

cancel_pregen

ChatGPT
Widget-only: fire-and-forget cancel of speculative pre-generation (GA-953).

create_presentation

ChatGPT
Create 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

ChatGPT
Edit 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

ChatGPT
Widget-only: enhance an image generation prompt using slide context.

generate_diagram

ChatGPT
Widget-only: generate a smart diagram from slide content.

generate_image

ChatGPT
Widget-only: generate or resolve a slide image.

generate_image_candidates

ChatGPT
Widget-only: generate N candidate images for the MediaSidebar (non-streaming).

generate_intro_variations

ChatGPT
Widget-only: generate intro-slide variations (blocking).

generate_outline

ChatGPT
Widget-only: generate and persist a presentation outline (blocking).

get_generation_status

ChatGPT
Widget-only: poll a deck's generation status + persisted slides.

get_image

ChatGPT
Widget-only: fetch image metadata by ID for the MediaSidebar.

get_image_by_url

ChatGPT
Widget-only: look up image metadata by exact URL (by-URL fallback).

get_presentation

ChatGPT
Widget-only: fetch a stored presentation by ID.

get_random_themes

ChatGPT
Widget-only: fetch a random selection of themes.

get_theme_css

ChatGPT
Widget-only: fetch a theme's CSS variables.

list_image_styles

ChatGPT
Widget-only: fetch image styles for the MediaSidebar style picker.

list_presentation_images

ChatGPT
Widget-only: list images for the MediaSidebar gallery.

list_themes

ChatGPT
Widget-only: list public themes with CSS for the theme picker.

open_outline

ChatGPT
Use 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

ChatGPT
Open 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

ChatGPT
Open 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

ChatGPT
Widget-only: regenerate one existing slide's content (blocking).

reset_presentation_status

ChatGPT
Widget-only: reset a presentation stuck in 'generating'.

resolve_embed_metadata

ChatGPT
Widget-only: resolve a video, audio or webpage URL for an embed block.

start_deck_from_outline

ChatGPT
Widget-only: start background slide generation from an outline (start-then-poll).

start_one_step_generation

ChatGPT
Widget-only: start one-step outline+deck generation (start-then-poll).

store_presentation

ChatGPT
Widget-only: auto-save the full presentation.

transform_diagram

ChatGPT
Widget-only: transform a smart diagram from one variant to another.

trigger_pregen

ChatGPT
Widget-only: fire-and-forget trigger of speculative pre-generation (GA-953).

update_outline

ChatGPT
Widget-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

ChatGPT
Widget-only: persist a resolved image URL into a slide.

update_view_context

ChatGPT
Widget-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

ChatGPT
Widget-only: upload a user image (base64) to the backend image store.

Capabilities

WritesInteractive

Example Prompts

Click any prompt to copy it.

App Stats

34

Tools

3

Prompts

ChatGPT

Platforms

Works with

ChatGPT

Data refreshed daily