Deck Operations
Your AI assistant uses these tools to create, find, and manage your presentations. You don't call them directly — just tell your assistant what you need and it handles the rest.
When you connect an AI assistant to Rideful via MCP, it gets access to tools for managing your presentations. A deck is a presentation containing ordered slides. Every deck has a name, an aspect ratio (which determines the canvas size), and optionally a theme with colors and fonts.
This page documents the four deck-level tools your AI assistant uses behind the scenes. Understanding them helps you give better instructions and troubleshoot when something doesn't look right.
Finding Your Presentations
When you ask your AI assistant to “open my Q4 deck” or “show me my presentations,” it uses slides_list_decks to search your decks by name, see how many slides each has, and when they were last updated. This is a read-only operation.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | number | No | Maximum decks to return (1–100, default 20) |
offset | number | No | Number of decks to skip for pagination (default 0) |
name | string | No | Filter by name (case-insensitive partial match) |
What It Returns
total— total number of matching decksdecks— array of deck summaries (id, name, slideCount, updatedAt)hasMore— whether more results are available beyond the current page
Example
slides_list_decks({ limit: 10 })
// Response:
// {
// total: 3,
// hasMore: false,
// decks: [
// { id: "deck_abc123", name: "Q4 Business Review",
// slideCount: 8, updatedAt: 1706000000000 },
// { id: "deck_def456", name: "Product Launch",
// slideCount: 12, updatedAt: 1705900000000 },
// { id: "deck_ghi789", name: "Team Standup",
// slideCount: 3, updatedAt: 1705800000000 }
// ]
// }// Filter by name (case-insensitive partial match)
slides_list_decks({ name: "review" })
// Returns only decks with "review" in the nameViewing Deck Details
Before making any changes to a presentation, your AI assistant calls slides_get_deck to understand what it's working with. This returns the canvas size, theme, available layouts, any slide rules to follow, and a summary of every slide and its elements. This is always the first step — it ensures the assistant positions elements correctly and follows your design rules.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
deckId | string | Yes | The ID of the slide deck to retrieve |
What It Returns
A detailed overview of the deck, including:
- Deck info — name, slide count, aspect ratio, last updated
- Theme — heading and body fonts, primary and secondary colors (if a template is applied)
- Available layouts — layout names and IDs the assistant can use when adding slides
- Slide rules — mandatory content and design rules to follow when working with this deck
- Quick reference — deck ID, canvas size, and a summary of each slide with its elements
Example
slides_get_deck({ deckId: "deck_abc123" })
// Response (formatted markdown):
//
// ## Q4 Business Review
//
// **8 slides** | Aspect: 16:9
// Updated: 2 hours ago
//
// ### Theme
// - Fonts: Heading: Inter, Body: Inter
// - Colors: Primary: #1C2833, Secondary: #2E4053
//
// ### Available Layouts
// 1. "Blank" — builtin-blank
// 2. "Title Slide" (default) — builtin-title-slide
// 3. "Title and Content" — builtin-title-and-content
//
// ### Quick Reference
// - Deck ID: deck_abc123
// - Canvas: 1280 × 720
// - Slides (8):
// 1. slide_001 — Title Slide (3 elements)
// - elem_a text [title]
// - elem_b text [subtitle]
// 2. slide_002 — Title and Content (2 elements)
// ...Creating an Empty Deck
When you need a blank starting point, slides_create_deck creates a new presentation with one empty slide. This is useful when your assistant will build each slide individually with fine-grained control. For most cases, the assistant will use slides_bulk_create (below) instead, which creates a full deck with content in one step.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Name for the new deck (1–200 characters) |
backgroundColor | string | No | Background color for the first slide (hex, e.g., '#1A1A2E'). Defaults to white. |
aspectRatio | enum | No | '16:9' (1280×720), '4:3' (1024×768), or '1:1' (1080×1080). Default '16:9' |
What It Returns
id— the new deck's IDname— the deck namecanvas—{ width, height }in pixels
Example
slides_create_deck({
name: "Quarterly Review",
aspectRatio: "16:9",
backgroundColor: "#1C2833"
})
// Response:
// {
// id: "deck_abc123",
// name: "Quarterly Review",
// canvas: { width: 1280, height: 720 }
// }Building a Full Presentation
When you say “create a pitch deck” or “make me a 10-slide presentation,” your assistant typically uses slides_bulk_create — the most efficient way to build a presentation. It creates a new deck (or adds to an existing one) with up to 20 slides of content in a single step. Use masterStyles to enforce consistent colors and fonts across all slides, then override individual slides as needed.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | No* | Create a new deck with this name (1–200 characters). Mutually exclusive with deckId |
deckId | string | No* | Add slides to this existing deck. Mutually exclusive with name |
aspectRatio | enum | No | '16:9', '4:3', or '1:1'. Only used when creating a new deck. Default '16:9' |
masterStyles | object | No | Default styles for all slides. Per-slide values override these (see below) |
slides | array | Yes | Array of slides to create (1–20 items) |
* Exactly one of name or deckId must be provided.
masterStyles Object
Sets default styling for all slides in the call. Per-slide values override at the field level — for example, if a slide sets only textColor, it keeps the master's fontSize and fontFamily.
| Property | Type | Description |
|---|---|---|
backgroundColor | string | Default background color for all slides (hex) |
titleStyle | object | Default style for title placeholders: { textColor, fontSize, fontFamily } |
subtitleStyle | object | Default style for subtitle placeholders: { textColor, fontSize, fontFamily } |
bodyStyle | object | Default style for body placeholders: { textColor, fontSize, fontFamily } |
Slide Object Properties
Each item in the slides array can have:
| Property | Type | Description |
|---|---|---|
layoutId | string | 'builtin-blank', 'builtin-title-slide', 'builtin-title-and-content' (default), or a template layout ID |
title | string | Title text (replaces the title placeholder) |
subtitle | string | Subtitle text (only for builtin-title-slide) |
body | string | Body text (supports markdown: **bold**, *italic*, - bullets, 1. numbered) |
backgroundColor | string | Override background color for this slide (hex) |
titleStyle, subtitleStyle, bodyStyle | object | Override styles for this slide. Same shape as masterStyles: { textColor, fontSize, fontFamily } |
What It Returns
deckId,deckName— the deck that was created or appended toisNewDeck— whether a new deck was createdcanvas—{ width, height }in pixelstotalSlideCount— total number of slides in the deck after the operationslides— array of created slides, each withslideId,slideNumber,layoutName, andelements
Example — New Deck
slides_bulk_create({
name: "Q4 Business Review",
masterStyles: {
backgroundColor: "#1C2833",
titleStyle: {
textColor: "#FFFFFF",
fontSize: 40,
fontFamily: "Inter"
},
bodyStyle: {
textColor: "#AAB7B8",
fontSize: 16,
fontFamily: "Inter"
}
},
slides: [
{
layoutId: "builtin-title-slide",
title: "Q4 Business Review",
subtitle: "January 2026"
},
{
layoutId: "builtin-title-and-content",
title: "Revenue Highlights",
body: "- Total revenue: $4.2M\n- Growth: +18% QoQ\n- New customers: 340"
},
{
layoutId: "builtin-title-and-content",
title: "Key Initiatives",
body: "1. Launch enterprise plan\n2. Expand to APAC\n3. Hire 12 engineers",
backgroundColor: "#2E4053"
}
]
})
// Response:
// {
// deckId: "deck_abc123",
// deckName: "Q4 Business Review",
// isNewDeck: true,
// totalSlideCount: 3,
// canvas: { width: 1280, height: 720 },
// slides: [
// { slideId: "slide_001", slideNumber: 1,
// layoutName: "Title Slide", elements: [...] },
// { slideId: "slide_002", slideNumber: 2,
// layoutName: "Title and Content", elements: [...] },
// { slideId: "slide_003", slideNumber: 3,
// layoutName: "Title and Content", elements: [...] }
// ]
// }Example — Add to Existing Deck
// Add slides to an existing deck (use deckId instead of name)
slides_bulk_create({
deckId: "deck_abc123",
slides: [
{
layoutId: "builtin-title-and-content",
title: "Next Steps",
body: "- Finalize roadmap\n- Schedule kickoff\n- Assign owners"
}
]
})Which Approach Will My Assistant Use?
Your AI assistant picks the right tool based on what you ask:
- “Find my Q4 deck” →
slides_list_decksto search by name - “What's in this presentation?” →
slides_get_deckto get the full overview - “Create me a pitch deck about...” →
slides_bulk_createto build all slides at once - “Start a blank presentation” →
slides_create_deckfor an empty starting point - “Add 3 more slides to this deck” →
slides_bulk_createwith the existing deck ID
Related
- Slide Operations — Add, inspect, duplicate, and delete individual slides
- Element Operations — Create and style shapes, text, lines, and images on slides
- Layouts — Built-in and template layouts for slide creation
- Canvas Size — Slide dimensions and the coordinate system
- Create a Presentation with AI — End-to-end guide for building slides with natural language