Templates
Your AI assistant uses these tools to discover and apply your brand templates — pre-configured layouts, colors, and fonts that keep every presentation on-brand.
Templates are imported from PowerPoint files (.potx / .potm) and contain one or more layouts — predefined slide structures with placeholders for titles, body text, images, and decorative elements. When your assistant creates slides using a template, it automatically applies the template's colors, fonts, and positioning.
For a step-by-step guide on importing and using templates, see How Do I Use Brand Templates?
Renamed: the layout tools dropped their template_ prefix
template_layout_list, template_layout_get and template_layout_update are now layout_list, layout_get and layout_update, and their templateId parameter is now deckId. The old names were removed rather than aliased — they always accepted a plain deck as well as a template, and the prefix hid that. Reconnect your MCP client to pick up the new tool list.
Listing Your Templates
When you ask to “use my corporate template” or your assistant is about to create a new presentation, it first calls template_list to see what templates you have available. This is a required step before creating any new deck — your assistant checks for brand templates so it can use them instead of starting from scratch.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | number | No | Maximum templates to return (1–100, default 20) |
offset | number | No | Number of templates to skip for pagination (default 0) |
What It Returns
total— total number of templates you havetemplates— array of template summaries (id, name, layoutCount, primaryColor, updatedAt). Your own imported templates plus Rideful's published starters, which are marked(Rideful starter)and are read-only — buildable by anyone, editable by no onehasMore— whether more templates are available beyond the current page
Example
template_list({ limit: 10 })
// Response:
// {
// total: 2,
// hasMore: false,
// templates: [
// { id: "template_abc", name: "Corporate Blue",
// layoutCount: 5, primaryColor: "#0066CC",
// updatedAt: 1706000000000 },
// { id: "template_def", name: "Marketing Deck",
// layoutCount: 8, primaryColor: "#E33737",
// updatedAt: 1705900000000 }
// ]
// }Browsing Layouts
Your assistant calls layout_list to see what layouts are available — on a brand template, or on the deck it is currently working in, which carries its own copy of the template's layouts. Each layout is a predefined slide structure — like “Title Slide,” “Content,” or “Two Column” — with specific placeholders and background styling.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
deckId | string | Yes | The deck (or template) to list layouts for |
What It Returns
templateName— name of the templatelayouts— array of layout summaries, each with:id,name,order— layout identity and sort positionisDefault— whether this is the default layout — the first layout byorderlayoutDescription— the free-text guidance on when to use this layout, ornullwhere none has been writtenplaceholderCount,placeholderTypes— how many placeholders the layout has and what types, with a×Nsuffix when a type repeats:["title", "body×3", "footer", "slideNumber"]placeholders— the targetable placeholders, each withelementId,type,size, andfontSize. Pass theelementIdback asslide_bulk_create'splaceholders[].elementIdto write into one specific slot. Text-capable types only (title,subTitle,body,footer), so this list is shorter thanplaceholderCounton layouts carrying slide numbers, dates, or picture zoneshasBackgroundImage,backgroundColor— the layout's background details
Example
layout_list({
deckId: "template_abc"
})
// Response:
// {
// templateId: "template_abc",
// templateName: "Corporate Blue",
// layouts: [
// { id: "layout_001", name: "Title Slide",
// order: 0, isDefault: true,
// placeholderCount: 2,
// placeholderTypes: ["title", "subTitle"],
// placeholders: [
// { elementId: "dle-text-Ka1bZ9mQ",
// type: "title",
// size: { width: 1160, height: 120 },
// fontSize: 44 },
// { elementId: "dle-text-Xa9bK2mQ",
// type: "subTitle",
// size: { width: 1160, height: 80 },
// fontSize: 24 }
// ],
// backgroundColor: "#FFFFFF" },
// { id: "layout_002", name: "Content",
// order: 1, isDefault: false,
// placeholderCount: 3,
// placeholderTypes: ["title", "body",
// "slideNumber"],
// placeholders: [ /* title, body —
// the slideNumber is counted above
// but cannot hold text */ ],
// backgroundColor: "#FFFFFF" },
// { id: "layout_003", name: "Two Column",
// order: 2, isDefault: false,
// placeholderCount: 3,
// placeholderTypes: ["title", "body×2"],
// placeholders: [
// { elementId: "dle-text-Lm3pQ8vT",
// type: "title", ... },
// { elementId: "dle-text-Pq7nR4vT",
// type: "body",
// size: { width: 560, height: 400 },
// fontSize: 18 },
// { elementId: "dle-text-Wc4kT6nR",
// type: "body",
// size: { width: 560, height: 400 },
// fontSize: 18 }
// ],
// backgroundColor: "#FFFFFF" }
// ]
// }Inspecting a Layout
To understand exactly what a layout contains before using it, your assistant calls layout_get. This returns the full structural detail: every placeholder with its position, size, and text style; every decorative object (shapes, accent bars); and any background images.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
deckId | string | Yes | The parent deck (or template) |
layoutId | string | Yes | The specific layout to inspect |
What It Returns
A detailed breakdown of the layout, including:
- Layout info — name, order, whether it's the default, background color
- Placeholders — each placeholder's
elementId, type (title, body, subTitle, footer), position, size, font, color, alignment, and default text. TheelementIdis whatslide_bulk_create'splaceholders[]targets - Decorative objects — shapes, accent bars, and other non-placeholder elements with their positions, colors, and styles
- Images — background or decorative images with positions and dimensions
Example
layout_get({
deckId: "template_abc",
layoutId: "layout_001"
})
// Response (formatted markdown):
//
// ## Layout: "Title Slide"
//
// Deck: Corporate Blue
// ID: layout_001
// Order: 0 (default layout)
// Background: #FFFFFF
//
// ### Placeholders
//
// 1. **title** `dle-text-Ka1bZ9mQ` (idx: 0)
// Position: (60, 200) — Size: 1160 × 120
// Style: font: Inter, size: 44pt,
// color: #1C2833, align: center
//
// 2. **subTitle** `dle-text-Xa9bK2mQ` (idx: 1)
// Position: (60, 340) — Size: 1160 × 80
// Style: font: Inter, size: 24pt,
// color: #666666, align: center
//
// ### Decorative Objects
//
// 1. **AccentBar** (rectangle)
// Position: (0, 0) — Size: 1280 × 16
// Style: fill: #0066CC, opacity: 100%Updating a Layout Description
After inspecting a layout, your assistant can save a description that helps it (and other AI assistants) pick the right layout in the future. layout_update updates the layout's name and/or description. Your assistant will always ask for confirmation before saving.
This tool writes a layout's metadata, and only on a template — a plain deck's layout name and description are not writable. The limit stops there: a layout's elements are editable on any deck through the element tools, by passing the layout id where you would name a slide.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
deckId | string | Yes | The parent template |
layoutId | string | Yes | The layout to update |
name | string | No* | New layout name (1–200 characters) |
layoutDescription | string | No* | Free-text description for when and how to use this layout (max 2000 characters) |
* At least one of name or layoutDescription must be provided.
What It Returns
success— whether the update succeededupdatedFields— list of field names that were changed
Example
layout_update({
deckId: "template_abc",
layoutId: "layout_003",
layoutDescription: "Two-column comparison layout. Use for side-by-side content like pros/cons, before/after, or feature comparisons. Title spans full width at top."
})
// Response:
// {
// success: true,
// layoutId: "layout_003",
// templateId: "template_abc",
// updatedFields: ["layoutDescription"]
// }Using Templates When Creating Slides
Once your assistant knows which template and layouts to use, it passes them to slide_bulk_create with a templateId and layout IDs for each slide. The template's theme (fonts, colors) is applied automatically, and placeholder content is filled in from your request.
Example
// Create a deck using template layouts
slide_bulk_create({
name: "Q4 Review",
templateId: "template_abc",
slides: [
{
layoutId: "layout_001",
title: "Q4 Business Review",
subtitle: "January 2026"
},
{
layoutId: "layout_002",
title: "Revenue Highlights",
body: "- Total revenue: **$4.2M**\n- Growth: +18% QoQ"
},
{
// layout_003 has two body placeholders —
// `body` alone can only fill the larger one,
// so target each by id instead
layoutId: "layout_003",
placeholders: [
{ elementId: "dle-text-Lm3pQ8vT",
text: "EMEA vs APAC" },
{ elementId: "dle-text-Pq7nR4vT",
text: "- EMEA: $2.4M\n- Up 22% QoQ" },
{ elementId: "dle-text-Wc4kT6nR",
text: "- APAC: $1.8M\n- Up 12% QoQ" }
]
}
]
})Which Tool Will My Assistant Use?
Your AI assistant picks the right tool based on what you ask:
- “Do I have any templates?” →
template_listto list available templates - “What layouts does my corporate template have?” →
layout_listto browse layouts - “Show me what the title slide looks like” →
layout_getto inspect placeholder positions and styles - “Create a pitch deck using my brand template” →
template_list→layout_list→slide_bulk_createwith the template - “Add a description to this layout” →
layout_updateto save a helpful description
Related
- How Do I Use Brand Templates? — Step-by-step guide to importing and using templates
- Deck Operations — Create presentations using template layouts via slide_bulk_create
- Layouts — Where a deck's layouts come from and how to pick one
- Fonts — Discover available fonts including those from templates
- Export to PowerPoint — Template-based decks export with full brand fidelity