MCP Tools Reference

Impresent provides a Model Context Protocol (MCP) endpoint that allows AI agents to create, edit, and manage presentations programmatically. This enables AI assistants like Claude to build complete presentations through natural conversation.

Overview

The MCP endpoint uses Streamable HTTP transport at:

https://api.impresent.dev/mcp

MCP tools have direct access to the database and storage, providing efficient operations without REST API overhead.

Client Configuration

Configure your MCP client to connect to Impresent:

{
  "mcpServers": {
    "impresent": {
      "url": "https://api.impresent.dev/mcp",
      "headers": {
        "Authorization": "Bearer imp_your_api_key_here"
      }
    }
  }
}

Claude Desktop

Add to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "impresent": {
      "url": "https://api.impresent.dev/mcp",
      "headers": {
        "Authorization": "Bearer imp_your_api_key_here"
      }
    }
  }
}

Available Tools

list_templates

Browse available presentation templates.

Parameters: None

Returns:

{
  "templates": [
    {
      "id": "minimal",
      "name": "minimal",
      "description": "Clean, lots of whitespace",
      "layouts": ["lead", "two-column", "section"]
    }
  ]
}

Example conversation:

“What templates are available?”


create_deck

Create a new presentation in cloud storage.

Parameters:

ParameterTypeRequiredDescription
slugstringYesURL-friendly identifier
titlestringNoDisplay title
markdownstringYesFull markdown content
templateIdstringNoTemplate to use (default: minimal)

Returns:

{
  "id": "deck_abc123",
  "slug": "my-presentation",
  "title": "My Presentation"
}

Example conversation:

“Create a presentation called ‘Q3 Results’ with three slides: a title slide, a slide about revenue growth, and a summary slide.”


get_deck

Retrieve a deck’s full content.

Parameters:

ParameterTypeRequiredDescription
idstringNoDeck ID
slugstringNoDeck slug

One of id or slug must be provided.

Returns:

{
  "id": "deck_abc123",
  "slug": "my-presentation",
  "title": "My Presentation",
  "markdown": "---\nmarp: true\n...",
  "templateId": "minimal"
}

Example conversation:

“Show me the content of my ‘quarterly-review’ presentation.”


update_deck

Replace the entire deck content.

Parameters:

ParameterTypeRequiredDescription
idstringYesDeck ID
markdownstringYesNew markdown content
titlestringNoNew title
templateIdstringNoNew template

Returns:

{
  "id": "deck_abc123",
  "updated": true
}

Example conversation:

“Replace the entire presentation with this new content…”


edit_slide

Modify a single slide by index.

Parameters:

ParameterTypeRequiredDescription
deckIdstringYesDeck ID
slideIndexnumberYes0-based slide index
contentstringYesNew slide content

Returns:

{
  "deckId": "deck_abc123",
  "slideIndex": 2,
  "updated": true
}

Example conversation:

“Change slide 3 to show our new product features.”


add_slide

Insert a new slide at a specific position.

Parameters:

ParameterTypeRequiredDescription
deckIdstringYesDeck ID
positionnumberYesInsert position (0-based)
contentstringYesSlide content

Returns:

{
  "deckId": "deck_abc123",
  "position": 3,
  "totalSlides": 8
}

Example conversation:

“Add a new slide after the introduction about our team.”


remove_slide

Delete a slide by index.

Parameters:

ParameterTypeRequiredDescription
deckIdstringYesDeck ID
slideIndexnumberYes0-based slide index

Returns:

{
  "deckId": "deck_abc123",
  "removed": true,
  "totalSlides": 6
}

Example conversation:

“Remove the fourth slide.”


apply_template

Change the template for a deck.

Parameters:

ParameterTypeRequiredDescription
deckIdstringYesDeck ID
templateIdstringYesNew template ID

Returns:

{
  "deckId": "deck_abc123",
  "templateId": "corporate",
  "applied": true
}

Example conversation:

“Switch this presentation to use the corporate template.”


render_deck

Export a deck to HTML, PDF, or PowerPoint.

Parameters:

ParameterTypeRequiredDescription
deckIdstringYesDeck ID
formatstringYeshtml, pdf, or pptx

Returns:

{
  "url": "https://storage.impresent.dev/renders/abc123.pdf",
  "format": "pdf",
  "expiresAt": "2024-01-15T12:00:00Z"
}

Example conversation:

“Export my presentation as a PDF.”


preview_deck

Open an interactive slide viewer/editor.

Parameters:

ParameterTypeRequiredDescription
deckIdstringYesDeck ID

Returns:

This tool returns a UI resource that renders an interactive presenter in the MCP client:

{
  "content": [{ "type": "text", "text": "Opening presenter..." }],
  "_meta": {
    "ui": { "resourceUri": "ui://impresent/presenter" }
  }
}

The presenter UI allows:

  • Slide-by-slide navigation
  • Template switching
  • Live editing with instant preview
  • Export actions

Example conversation:

“Open a preview of my presentation.”


list_decks

List all presentations in your account.

Parameters:

ParameterTypeRequiredDescription
limitnumberNoMax results (default: 20)
offsetnumberNoPagination offset

Returns:

{
  "decks": [
    {
      "id": "deck_abc123",
      "slug": "quarterly-review",
      "title": "Q3 2024 Review",
      "updatedAt": "2024-01-15T14:22:00Z"
    }
  ],
  "total": 15
}

Example conversation:

“What presentations do I have?”


upload_asset

Upload an image or other file for use in presentations.

Parameters:

ParameterTypeRequiredDescription
filenamestringYesFilename with extension
contentstringYesBase64-encoded file content
mimeTypestringYesMIME type (e.g., image/png)

Returns:

{
  "id": "asset_xyz789",
  "uri": "asset://asset_xyz789",
  "filename": "logo.png"
}

Use the returned URI in your markdown:

![Logo](asset://asset_xyz789)

Example conversation:

“Upload this logo image and add it to the title slide.”


Example Workflows

Creating a Complete Presentation

  1. User: “Create a presentation about our new product launch”
  2. Agent uses list_templates to show options
  3. User: “Use the corporate template”
  4. Agent uses create_deck with generated content
  5. User: “Add a slide with a comparison table”
  6. Agent uses add_slide to insert new content
  7. User: “Preview it”
  8. Agent uses preview_deck to open the viewer
  9. User: “Export as PDF”
  10. Agent uses render_deck and provides download link

Editing an Existing Presentation

  1. User: “Open my quarterly review presentation”
  2. Agent uses get_deck with slug quarterly-review
  3. User: “Update the revenue numbers on slide 3”
  4. Agent uses edit_slide with new content
  5. User: “Change to the dark template”
  6. Agent uses apply_template
  7. User: “Show me the preview”
  8. Agent uses preview_deck

Error Handling

MCP tools return standard JSON-RPC errors:

{
  "error": {
    "code": -32602,
    "message": "Deck not found",
    "data": {
      "deckId": "deck_invalid"
    }
  }
}

Common error codes:

CodeDescription
-32600Invalid request
-32601Method not found
-32602Invalid params
-32603Internal error

Best Practices for AI Agents

  1. Start with list_decks to understand what presentations exist
  2. Use get_deck before editing to see current content
  3. Prefer edit_slide over update_deck for targeted changes
  4. Use preview_deck to show users their presentation visually
  5. Confirm destructive actions like remove_slide before executing