Documentation Index Fetch the complete documentation index at: https://docs.poesius.com/llms.txt
Use this file to discover all available pages before exploring further.
End-to-end slide generation from a topic or document. This is the recommended tool for most use cases.
When you call this tool, Poesius automatically performs three steps:
Generates the presentation narrative - Creates a McKinsey-style story, summarizing key findings and revealing insights from your content
Retrieves layout details - Gets template specifications including colors, layout zones, and design elements (defined visually in the web app at https://app.poesius.com)
Creates slides - Combines the narrative with template specs to produce professional PPTX files
Parameters
Parameter Type Required Description topicstring No Topic if generating from scratch contentstring No Existing markdown content to convert instructionsstring Yes Generation instructions template_idstring No Template UUID (required if no default) num_slidesinteger No Target number of slides conversation_idstring No Existing conversation UUID presentation_idstring No Existing presentation UUID to add slides to document_base64string No Base64-encoded document
Example Request
From Topic
{
"method" : "tools/call" ,
"params" : {
"name" : "generate_slides" ,
"arguments" : {
"topic" : "Introduction to Machine Learning" ,
"instructions" : "Create a comprehensive presentation covering ML basics, algorithms, and applications" ,
"template_id" : "123e4567-e89b-12d3-a456-426614174000" ,
"num_slides" : 20
}
}
}
From Document
{
"method" : "tools/call" ,
"params" : {
"name" : "generate_slides" ,
"arguments" : {
"instructions" : "Create a professional presentation from this document" ,
"template_id" : "123e4567-e89b-12d3-a456-426614174000" ,
"num_slides" : 15 ,
"document_base64" : "<base64_encoded_document>"
}
}
}
Response
{
"slides" : [
{
"slide_id" : "uuid" ,
"slide_number" : 1 ,
"layout" : "Title Slide" ,
"master_name" : "Master 1" ,
"content" : {
"title" : "Introduction to Machine Learning" ,
"subtitle" : "A Comprehensive Overview"
},
"thumbnail_url" : "https://..." ,
"download_url" : "https://..." ,
"web_url" : "https://..."
}
],
"content" : "Generated markdown content..." ,
"presentation_id" : "uuid" ,
"conversation_id" : "uuid" ,
"slide_ids" : [ "uuid1" , "uuid2" ],
"total_slides" : 20 ,
"reflection" : "Generated 20 slides covering..." ,
"presentation_url" : "https://app.poesius.com/presentations/uuid" ,
"download_url" : "https://poe.poesius.com/api/v1/presentations/uuid/download"
}
Response Fields
slides: Array of slide objects with content and URLs
content: Generated markdown content
presentation_id: ID of the created presentation
conversation_id: ID of the conversation
slide_ids: Array of slide IDs
total_slides: Total number of slides created
reflection: AI reflection on what was generated
presentation_url: Web URL to view the presentation
download_url: Direct download link for PPTX
Template Required Response
If template_id is not provided and there’s no default template, you’ll receive:
{
"requires_template" : true ,
"message" : "Please select a template from the list below" ,
"available_templates" : [
{
"template_id" : "uuid" ,
"template_name" : "Professional Blue"
}
],
"default_template_id" : null
}
Solution : Call list_templates first, then provide a template_id in your request.
Python Example
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 generate_slides ( topic = None , instructions , template_id , num_slides , document_path = None ):
arguments = {
"instructions" : instructions,
"template_id" : template_id,
"num_slides" : num_slides
}
if topic:
arguments[ "topic" ] = topic
if document_path:
arguments[ "document_base64" ] = read_document(document_path)
response = requests.post(
f " { BASE_URL } /messages" ,
headers = {
"X-API-Key" : API_KEY ,
"Content-Type" : "application/json"
},
json = {
"method" : "tools/call" ,
"params" : {
"name" : "generate_slides" ,
"arguments" : arguments
}
}
)
return response.json()
# Generate from topic
result = generate_slides(
topic = "Quarterly Business Review" ,
instructions = "Create a comprehensive presentation with 15 slides" ,
template_id = "123e4567-e89b-12d3-a456-426614174000" ,
num_slides = 15
)
print ( f "Generated { result[ 'result' ][ 'total_slides' ] } slides" )
print ( f "Download URL: { result[ 'result' ][ 'download_url' ] } " )
Best Practices
Use Templates : Always specify a template_id for consistent branding
Clear Instructions : Be specific about what you want in the presentation
Slide Count : Specify a target number based on your needs
Document Encoding : Ensure documents are properly base64-encoded
Two-Step Process Learn about the two-step generation process for more control
List Templates Discover available templates
Examples See more MCP examples