Skip to main content

Overview

The two-step process gives you more control over the generation workflow:
  1. Step 1: Generate presentation narrative and markdown content (McKinsey-style story with key findings and insights)
  2. Step 2: Create actual PPTX slides from the content using template layouts
This approach is useful when you want to review or edit the narrative before creating slides. The narrative generation step automatically:
  • Summarizes key findings from your content
  • Reveals insights and patterns
  • Structures the story in McKinsey consulting style

Step 1: Generate Presentation Content

Tool: generate_presentation_content

Generate presentation narrative and markdown content (Step 1 of 2). This tool creates a McKinsey-style story that summarizes key findings and reveals insights from your content.

Parameters

ParameterTypeRequiredDescription
topicstringYesMain topic or title
instructionsstringYesDetailed instructions
document_base64stringNoBase64-encoded document
num_slidesintegerNoTarget number of slides
template_idstringNoTemplate UUID

Example Request

{
  "method": "tools/call",
  "params": {
    "name": "generate_presentation_content",
    "arguments": {
      "topic": "AI in Healthcare",
      "instructions": "Generate comprehensive content for 20 slides",
      "num_slides": 20,
      "document_base64": "<base64_document>"
    }
  }
}

Response

{
  "content": "Generated markdown content...",
  "slides": [
    {
      "slide_number": 1,
      "title": "Introduction",
      "content": "Slide content..."
    }
  ],
  "presentation_id": "uuid",
  "slide_ids": ["uuid1", "uuid2"],
  "conversation_id": "uuid"
}

Step 2: Create Slides from Content

Tool: slide_from_content

Create actual PPTX slides from existing markdown content (Step 2 of 2). This tool:
  • Retrieves layout details (colors, layout zones, typography) from your template
  • Applies layouts based on content type
  • Creates slides aligned to template specs and your narrative

Parameters

ParameterTypeRequiredDescription
contentstringYesMarkdown content
instructionsstringYesInstructions for slide generation
template_idstringNoTemplate UUID (required if no default)
layout_namestringNoSpecific layout within template
conversation_idstringNoExisting conversation UUID
presentation_idstringNoExisting presentation UUID

Example Request

{
  "method": "tools/call",
  "params": {
    "name": "slide_from_content",
    "arguments": {
      "content": "<markdown_content_from_step_1>",
      "instructions": "Create professional slides with consistent styling",
      "template_id": "123e4567-e89b-12d3-a456-426614174000",
      "presentation_id": "<presentation_id_from_step_1>"
    }
  }
}

Response

{
  "slides": [
    {
      "slide_id": "uuid",
      "slide_number": 1,
      "layout": "Title Slide",
      "thumbnail_url": "https://...",
      "download_url": "https://..."
    }
  ],
  "presentation_id": "uuid",
  "total_slides": 20
}

Complete Example

Python Implementation

import requests
import base64

API_KEY = "pk_your_api_key_here"
BASE_URL = "https://poe.poesius.com/api/v1/mcp"

def read_document(file_path):
    with open(file_path, 'rb') as f:
        return base64.b64encode(f.read()).decode('utf-8')

def call_mcp_tool(tool_name, arguments):
    response = requests.post(
        f"{BASE_URL}/messages",
        headers={
            "X-API-Key": API_KEY,
            "Content-Type": "application/json"
        },
        json={
            "method": "tools/call",
            "params": {
                "name": tool_name,
                "arguments": arguments
            }
        }
    )
    return response.json()

# Step 1: Generate content
document_base64 = read_document("document.pdf")
content_result = call_mcp_tool("generate_presentation_content", {
    "topic": "AI in Healthcare",
    "instructions": "Generate comprehensive content for 20 slides",
    "num_slides": 20,
    "document_base64": document_base64
})

presentation_id = content_result["result"]["presentation_id"]
markdown_content = content_result["result"]["content"]

print("Content generated. Review and edit if needed.")
print(f"Content preview: {markdown_content[:200]}...")

# Step 2: Create slides from content
slide_result = call_mcp_tool("slide_from_content", {
    "content": markdown_content,
    "instructions": "Create professional slides with consistent styling",
    "template_id": "123e4567-e89b-12d3-a456-426614174000",
    "presentation_id": presentation_id
})

print(f"Created {len(slide_result['result']['slides'])} slides")
print(f"Presentation ID: {presentation_id}")

When to Use Two-Step Process

Use Two-Step When:

  • You want to review/edit content before creating slides
  • You need to modify the generated content
  • You want to generate content once but create slides multiple times
  • You’re building a workflow with manual review steps

Use One-Step (generate_slides) When:

  • You want the fastest workflow
  • You trust the AI-generated content
  • You don’t need to review content before slides
  • You’re automating the entire process

Best Practices

  • Review Content: Take time to review the generated markdown content
  • Edit if Needed: You can edit the content before creating slides
  • Reuse Content: Use the same content to create slides with different templates
  • Consistent IDs: Use the same presentation_id and conversation_id across steps

Generate Slides (One-Step)

Learn about the one-step generation process

Examples

See complete two-step process examples