MCP Server

Beta

Connect MCP-compatible AI tools to Slides to access your decks and account data.

Create and manage API keys from your API key management page.

MCP is available at mcp.slides.com with Bearer authentication. The server exposes the same deck operations as REST as named tools, plus an MCP App viewer tool.

Authentication

Authorization: Bearer YOUR_API_KEY

Server URL

https://mcp.slides.com/

Transport

Streamable HTTP

Remote HTTP clients can connect directly. Clients that only launch local MCP processes can use a bridge such as mcp-remote.

Claude Desktop Example

{
  "mcpServers": {
    "slides": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote@latest",
        "https://mcp.slides.com/",
        "--header",
        "Authorization: Bearer YOUR_API_KEY"
      ]
    }
  }
}
Tool

list_decks

Returns owned deck summaries ordered by newest first.

Inputs

page
Integer Default 1 Optional

Page number to return. Minimum: 1.

per_page
Integer Default 20 Optional

Number of records to return per page, up to a maximum of 100. Range: 1–100.

Returns

Deck summaries are returned in data; meta contains page, per_page, and total.

Tool

list_trashed_decks

Returns owned decks in trash, ordered by the time they were trashed.

Inputs

page
Integer Default 1 Optional

Page number to return. Minimum: 1.

per_page
Integer Default 20 Optional

Number of records to return per page, up to a maximum of 100. Range: 1–100.

Returns

Deck summaries are returned in data with trashed_at and without url; meta contains page, per_page, and total.

Tool

get_deck

Returns details for an owned deck.

Inputs

id
Integer Required

ID of the deck.

include_deck_html
Boolean Default false Optional

Whether to include deck_html, which contains the HTML for all slides in the deck.

Example JSON Content (include_deck_html=true)

{
  "id": 456,
  "title": "Quarterly Review",
  "description": "Q1 business update",
  "thumbnail_url": "https://...",
  "url": "https://slides.com/alice/q1-review",
  "urls": {
    "default": "https://slides.com/alice/q1-review",
    "fullscreen": "https://slides.com/alice/q1-review/fullscreen",
    "edit": "https://slides.com/alice/q1-review/edit",
    "present": "https://slides.com/alice/q1-review/live"
  },
  "slug": "q1-review",
  "visibility": "self",
  "slide_count": 12,
  "notes": "",
  "css": ".slides h1 { color: #ff0000; }",
  "width": 1280,
  "height": 720,
  "margin": 0.05,
  "transition": "slide",
  "background_transition": "slide",
  "rtl": false,
  "loop": false,
  "theme_font": "montserrat",
  "theme_color": "white-blue",
  "language": "en",
  "created_at": "2026-03-01T12:00:00Z",
  "updated_at": "2026-03-05T09:00:00Z",
  "deck_html": "<section>...</section>"
}

Returns

Returns deck details. deck_html is present only when include_deck_html is true.

Tool

view_deck

Returns deck metadata and a short-lived MCP App embed URL for an owned deck.

Inputs

id
Integer Required

ID of the deck.

MCP Apps

Linked to ui://slides/deck-viewer.html so supported hosts can render the presentation inline.

Example Structured Content

{
  "id": 456,
  "title": "Quarterly Review",
  "description": "Q1 business update",
  "thumbnail_url": "https://...",
  "url": "https://slides.com/alice/q1-review",
  "urls": {
    "default": "https://slides.com/alice/q1-review",
    "fullscreen": "https://slides.com/alice/q1-review/fullscreen",
    "edit": "https://slides.com/alice/q1-review/edit",
    "present": "https://slides.com/alice/q1-review/live"
  },
  "slug": "q1-review",
  "visibility": "self",
  "slide_count": 12,
  "width": 1280,
  "height": 720,
  "ephemeral_embed_url": "https://mcp.slides.com/decks/456/embed?embed_token=...",
  "ephemeral_embed_url_expires_at": "2030-08-01T09:40:00Z"
}

Returns

Structured content containing deck summary fields, an ephemeral embed URL, and its expiration.

Tool

create_deck

Read-write API key required

Creates a new deck.

Inputs

title
String Default "deck" Optional

Deck title.

description
String Optional

Deck description.

width
Integer Optional

Deck width in pixels. Minimum: 1.

height
Integer Optional

Deck height in pixels. Minimum: 1.

deck_html
String Optional

HTML for all slides in the deck. Must contain one or more top-level section elements.

visibility
String Optional

Deck visibility. Team accounts may also use team visibility. Allowed values: all, self, team.

Example Arguments

{
  "title": "Quarterly Review",
  "description": "Q1 business update",
  "width": 1280,
  "height": 720,
  "deck_html": "<section>...</section>",
  "visibility": "self"
}

Returns

Returns the created deck, including deck_html. Validation failures return an error.

Tool

update_deck

Read-write API key required

Updates selected fields on an owned deck.

Inputs

id
Integer Required

ID of the deck.

title
String Optional

Deck title.

description
String Optional

Deck description.

width
Integer Optional

Deck width in pixels. Minimum: 1.

height
Integer Optional

Deck height in pixels. Minimum: 1.

deck_html
String Optional

HTML for all slides in the deck. Must contain one or more top-level section elements.

visibility
String Optional

Deck visibility. Team accounts may also use team visibility. Allowed values: all, self, team.

Example Arguments

{
  "id": 456,
  "title": "Updated title",
  "visibility": "all"
}

Returns

Returns the updated deck, including deck_html. Read-only keys and validation failures return an error.

Tool

trash_deck

Read-write API key required

Moves an owned deck to trash without permanently deleting it.

Inputs

id
Integer Required

ID of the deck.

Example JSON Content

{
  "id": 456,
  "trashed": true
}

Returns

JSON content confirming the deck ID and trashed state.

Tool

recover_deck

Read-write API key required

Recovers an owned deck from trash.

Inputs

id
Integer Required

ID of the deck.

Example JSON Content

{
  "id": 456,
  "recovered": true
}

Returns

JSON content confirming the deck ID and recovered state.

Tool

list_deck_shares

Pro or Team account required

Returns all private share links for an owned deck, ordered newest first.

Inputs

deck_id
Integer Required

ID of the deck.

Returns

Private share links are returned in data; meta contains total. Each link includes default and fullscreen URLs.

Tool

create_deck_share

Pro or Team account required Read-write API key required

Creates a private share link for an owned private or team-visible deck.

Inputs

deck_id
Integer Required

ID of the deck to create a private share link for.

name
String Default "API Link" Optional

Name identifying the private share link.

password
String Optional

Password recipients must enter before viewing the deck through this link.

expires_at
String or null Optional

ISO 8601 timestamp after which the private share link expires.

notify_on_view
Boolean Default false Optional

Whether to notify the deck owner when the deck is first viewed through this link.

Example Arguments

{
  "name": "Customer review",
  "password": "optional-password",
  "expires_at": "2030-08-01T12:00:00Z",
  "notify_on_view": true,
  "deck_id": 456
}

Returns

Returns the new private share link with default and fullscreen URLs. Passwords are never returned. Each deck is limited to 100 private share links.

Tool

revoke_deck_share

Pro or Team account required Read-write API key required

Revokes a private share link for an owned deck.

Inputs

deck_id
Integer Required

ID of the deck.

id
Integer Required

ID of the private share link to revoke.

Example JSON Content

{
  "id": 789,
  "revoked": true
}

Returns

JSON content confirming the private share link ID and revoked state.

Tool

create_deck_export

Read-write API key required

Starts an asynchronous PDF or ZIP export for an owned deck.

Inputs

deck_id
Integer Required

Deck ID to export.

format
String Required

Export format: pdf or zip. Allowed values: pdf, zip.

margin
Number Default 0.0 PDF only Optional

PDF-only page margin between 0 and 0.2. Range: 0–0.2.

slide_number
Boolean Default false PDF only Optional

PDF-only option that includes slide numbers.

slide_notes
Boolean Default false PDF only Optional

PDF-only option that includes speaker notes.

separate_fragments
Boolean Default false PDF only Optional

PDF-only option that prints fragment steps separately.

Rate limit

Export creation is limited to 10 exports per user per hour. Polling uses the standard API rate limit.

Example Arguments

{
  "format": "pdf",
  "margin": 0.05,
  "slide_number": true,
  "slide_notes": false,
  "separate_fragments": false,
  "deck_id": 456
}

Returns

Returns a pending export; meta contains poll_after_seconds.

Tool

get_deck_export

Returns the current state of a PDF or ZIP export for an owned deck.

Inputs

deck_id
Integer Required

Deck ID that owns the export.

id
Integer Required

Export ID to retrieve.

Polling

Pending responses include poll_after_seconds in meta. Poll again after that interval.

Returns

Returns a pending, completed, or failed export. Completed exports include a temporary download URL and its expiration time.

Tool

list_team_decks

Team admin or owner required

Returns team-visible and public decks from the authenticated user’s team.

Inputs

page
Integer Default 1 Optional

Page number to return. Minimum: 1.

per_page
Integer Default 20 Optional

Number of records to return per page, up to a maximum of 100. Range: 1–100.

Returns

Deck summaries are returned in data; meta contains page, per_page, and total. Every summary includes visibility and deck owner identity.

Tool

get_team_deck

Team admin or owner required

Returns a team-visible or public deck.

Inputs

id
Integer Required

ID of the team deck.

include_deck_html
Boolean Default false Optional

Whether to include deck_html, which contains the HTML for all slides in the deck.

Returns

Returns the same fields as get_deck, plus deck owner identity. deck_html is present only when include_deck_html is true.