MCP tools reference
Beautiful.ai MCP tools
14 tools for Beautiful.ai on the Cotlet MCP server. Your agent picks them from tools/list.
- MCP server
- https://cotlet.dev/mcp/v1
- Connects with
- Your own Beautiful.ai account (email and password, or Google or Microsoft sign-in)
- Integration page
- Beautiful.ai
| Endpoint | Access | Description |
|---|---|---|
| beautiful-ai_list_presentations | read | Presentations in your library and shared folders, newest first, with folder, slide count and owner. |
| beautiful-ai_list_folders | read | Your folders, including shared workspace folders, with the number of decks in each. |
| beautiful-ai_get_slides | read | Every slide in order: layout, text, speaker notes and whether it is skipped. |
| beautiful-ai_get_presentation_analytics | read | Viewer and slide analytics for a deck, as the app shows them. |
| beautiful-ai_list_collaborators | read | People with access to a presentation and whether they can edit or view. |
| beautiful-ai_update_slide_text | write | Replace text on one slide, keeping its Smart Slide layout. |
| beautiful-ai_set_speaker_notes | write | Write or replace the speaker notes of a slide. |
| beautiful-ai_skip_slide | write | Skip or unskip a slide when presenting. |
| beautiful-ai_duplicate_presentation | write | Copy any presentation in your library, as the Duplicate menu item does. |
| beautiful-ai_move_to_folder | write | Put a presentation in one of your folders. |
| beautiful-ai_export_presentation | write | Export the deck and return a download link. |
| beautiful-ai_invite_collaborator | write | Invite someone by email to edit or view a presentation. They get an email. |
| beautiful-ai_remove_collaborator | write | Revoke a collaborator's access to a presentation. |
| beautiful-ai_create_share_link | write | Share the presentation and return a link to it. |
List presentations
readMCP tool beautiful-ai_list_presentations
Returns decks you can open, newest first. Filter by title keyword or folder. Pass presentation_id from each item to the other tools. Pages hold up to 100 decks.
Parameters
| Name | Type | Description |
|---|---|---|
| query | string | Search titles. |
| folder | string | Only presentations in this folder. |
| limit | integer | 1 to 100. Default: 25. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "beautiful-ai_list_presentations",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"presentations": [
{
"presentation_id": "pres_8f3k2m9q",
"title": "Q3 QBR",
"folder": "Sales",
"slides": 18,
"owner": "You",
"updated_at": "2026-10-08T14:20:00Z"
},
{
"presentation_id": "pres_2q7w1x5c",
"title": "Investor update",
"folder": null,
"slides": 12,
"owner": "You",
"updated_at": "2026-10-05T09:02:00Z"
}
]
},
"isError": false
} List folders
readMCP tool beautiful-ai_list_folders
Returns folders by name with deck counts. Use the name as the folder parameter of list_presentations and move_to_folder.
Parameters
No parameters.
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "beautiful-ai_list_folders",
"arguments": {}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"folders": [
{
"name": "Sales",
"presentations": 14,
"shared": true
},
{
"name": "Board",
"presentations": 6,
"shared": false
}
]
},
"isError": false
} Get slides
readMCP tool beautiful-ai_get_slides
Returns the slides of one deck in order, starting at 1. Text is listed in reading order per slide. Use it before update_slide_text so your agent sees what is on each slide.
Parameters
| Name | Type | Description |
|---|---|---|
| presentation_id required | string | Presentation ID from list_presentations. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "beautiful-ai_get_slides",
"arguments": {
"presentation_id": "presentation_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"presentation_id": "pres_8f3k2m9q",
"slides": [
{
"slide_number": 1,
"layout": "Title",
"text": [
"Q3 QBR",
"Sales team"
],
"speaker_notes": "",
"skipped": false
},
{
"slide_number": 4,
"layout": "Bullets",
"text": [
"FY25 targets",
"Grow ARR 40%",
"Launch in two new regions"
],
"speaker_notes": "Mention the EU launch date.",
"skipped": false
}
]
},
"isError": false
} MCP tool beautiful-ai_get_presentation_analytics
Returns the viewer and slide analytics Beautiful.ai shows for one deck. Availability depends on your plan; without it the call fails with an error that names the plan.
Parameters
| Name | Type | Description |
|---|---|---|
| presentation_id required | string | Presentation ID from list_presentations. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "beautiful-ai_get_presentation_analytics",
"arguments": {
"presentation_id": "pres_8f3k2m9q"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"presentation_id": "pres_8f3k2m9q",
"views": 14,
"unique_viewers": 9,
"slides": [
{
"slide_number": 1,
"views": 14
},
{
"slide_number": 4,
"views": 11
}
]
},
"isError": false
} List collaborators
readMCP tool beautiful-ai_list_collaborators
Returns each person with access to the deck, with email and permission. Use the email in remove_collaborator.
Parameters
| Name | Type | Description |
|---|---|---|
| presentation_id required | string | Presentation ID from list_presentations. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "beautiful-ai_list_collaborators",
"arguments": {
"presentation_id": "presentation_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"presentation_id": "pres_8f3k2m9q",
"collaborators": [
{
"email": "anna@example.com",
"permission": "can_edit"
},
{
"email": "tom@example.com",
"permission": "can_view"
}
]
},
"isError": false
} Update slide text
writeMCP tool beautiful-ai_update_slide_text
Replaces exact text on one slide and keeps its layout. Returns the number of matches replaced and the slide text after the change. It reaches no one and one call undoes it, so it runs without asking.
Parameters
| Name | Type | Description |
|---|---|---|
| presentation_id required | string | Presentation ID from list_presentations. |
| slide_number required | integer | Slide position in the deck, starting at 1. |
| find required | string | Exact text to replace. |
| replace required | string | New text. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "beautiful-ai_update_slide_text",
"arguments": {
"presentation_id": "pres_8f3k2m9q",
"slide_number": 4,
"find": "FY25 targets",
"replace": "FY26 targets"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"presentation_id": "pres_8f3k2m9q",
"slide_number": 4,
"replaced": 1,
"slide_text": [
"FY26 targets",
"Grow ARR 40%",
"Launch in two new regions"
]
},
"isError": false
} Set speaker notes
writeMCP tool beautiful-ai_set_speaker_notes
Replaces the speaker notes of one slide with the text you send. An empty string clears them. It reaches no one and one call undoes it, so it runs without asking.
Parameters
| Name | Type | Description |
|---|---|---|
| presentation_id required | string | Presentation ID from list_presentations. |
| slide_number required | integer | Slide position in the deck, starting at 1. |
| notes required | string | Notes text. Empty string clears them. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "beautiful-ai_set_speaker_notes",
"arguments": {
"presentation_id": "pres_2q7w1x5c",
"slide_number": 2,
"notes": "Open with the churn drop. Pause for questions before the pricing slide."
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"presentation_id": "pres_2q7w1x5c",
"slide_number": 2,
"speaker_notes": "Open with the churn drop. Pause for questions before the pricing slide."
},
"isError": false
} Skip slide
writeMCP tool beautiful-ai_skip_slide
Marks one slide as skipped, so it is left out when presenting, or shows it again. It reaches no one and one call undoes it, so it runs without asking.
Parameters
| Name | Type | Description |
|---|---|---|
| presentation_id required | string | Presentation ID from list_presentations. |
| slide_number required | integer | Slide position in the deck, starting at 1. |
| skipped required | boolean | true to skip, false to show it again. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "beautiful-ai_skip_slide",
"arguments": {
"presentation_id": "presentation_8c41d2",
"slide_number": 1,
"skipped": true
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"presentation_id": "pres_2q7w1x5c",
"slide_number": 7,
"skipped": true
},
"isError": false
} Duplicate presentation
writeMCP tool beautiful-ai_duplicate_presentation
Creates a copy of the deck in your library and returns its ID. The copy is private to you until you share it, so it runs without asking.
Parameters
| Name | Type | Description |
|---|---|---|
| presentation_id required | string | Presentation ID from list_presentations. |
| title | string | Title of the copy. Default: same as the original. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "beautiful-ai_duplicate_presentation",
"arguments": {
"presentation_id": "presentation_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"presentation_id": "pres_9k4m6b2v",
"source_id": "pres_5d9a4r1t",
"title": "Sales review, November",
"slides": 16
},
"isError": false
} Move to folder
writeMCP tool beautiful-ai_move_to_folder
Moves a deck into a folder from list_folders. People with access to that folder can then see it. One call moves it back, so it runs without asking.
Parameters
| Name | Type | Description |
|---|---|---|
| presentation_id required | string | Presentation ID from list_presentations. |
| folder required | string | Folder name from list_folders. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "beautiful-ai_move_to_folder",
"arguments": {
"presentation_id": "presentation_8c41d2",
"folder": "folder"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"presentation_id": "pres_9k4m6b2v",
"folder": "Sales"
},
"isError": false
} Export presentation
writeMCP tool beautiful-ai_export_presentation
Exports one deck and returns a download link. Formats follow your Beautiful.ai plan. The export changes nothing in the deck and reaches no one, so it runs without asking.
Parameters
| Name | Type | Description |
|---|---|---|
| presentation_id required | string | Presentation ID from list_presentations. |
| format required | enum | pdf or pptx. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "beautiful-ai_export_presentation",
"arguments": {
"presentation_id": "presentation_8c41d2",
"format": "pdf"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"presentation_id": "pres_2q7w1x5c",
"format": "pdf",
"download_url": "https://www.beautiful.ai/export/exp_71c0aa.pdf"
},
"isError": false
} MCP tool beautiful-ai_invite_collaborator
Gives one person access to the deck and emails them. Permission is can_edit or can_view. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| presentation_id required | string | Presentation ID from list_presentations. |
| email required | string | Email of the person to invite. |
| permission required | enum | can_edit or can_view. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "beautiful-ai_invite_collaborator",
"arguments": {
"presentation_id": "presentation_8c41d2",
"email": "jane@example.com",
"permission": "can_edit"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"presentation_id": "pres_8f3k2m9q",
"email": "anna@example.com",
"permission": "can_edit",
"status": "invited"
},
"isError": false
} MCP tool beautiful-ai_remove_collaborator
Removes one person from the deck. They lose access at once. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| presentation_id required | string | Presentation ID from list_presentations. |
| email required | string | Email from list_collaborators. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "beautiful-ai_remove_collaborator",
"arguments": {
"presentation_id": "presentation_8c41d2",
"email": "jane@example.com"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"presentation_id": "pres_8f3k2m9q",
"email": "tom@example.com",
"status": "removed"
},
"isError": false
} MCP tool beautiful-ai_create_share_link
Makes the deck viewable through a link and returns the link. Anyone who gets the link can open the deck. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| presentation_id required | string | Presentation ID from list_presentations. |
| name | string | Link name, to tell links apart. |
tools/call
JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "beautiful-ai_create_share_link",
"arguments": {
"presentation_id": "presentation_8c41d2"
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"presentation_id": "pres_8f3k2m9q",
"name": "Investors",
"url": "https://www.beautiful.ai/player/pres_8f3k2m9q",
"status": "shared"
},
"isError": false
}