---
canonical_url: "https://docs.composio.dev/toolkits/sideshow_mcp"
markdown_url: "https://docs.composio.dev/toolkits/sideshow_mcp.md"
product: "platform"
version: null
last_updated: null
---

# Sideshow MCP

Publish agent-generated visual surfaces — diagrams, code, markdown, images — as shareable posts.

- **Category:** model context protocol
- **Auth:** DCR_OAUTH
- **Composio-managed OAuth available?** No
- **Tools:** 18
- **Triggers:** 0
- **Slug:** `SIDESHOW_MCP`
- **Version:** 20260924_00

## Tools

### Add surface

**Slug:** `SIDESHOW_MCP_ADD_SURFACE`

Insert one publish_post-shaped surface into a post; before/after accepts an id or 0-based index. Read userFeedback.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `after` | string | No | Surface id or 0-based index |
| `before` | string | No | Surface id or 0-based index |
| `postId` | string | Yes | Post id returned by publish_post |
| `surface` | object | Yes |  |

### Edit surface

**Slug:** `SIDESHOW_MCP_EDIT_SURFACE`

Replace one surface by id/index, or pass content to preserve its kind-specific options. Read userFeedback.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `kits` | array | No |  |
| `postId` | string | Yes | Post id returned by publish_post |
| `target` | string | Yes | Surface id or 0-based index |
| `content` | string | No | New content for the existing kind |
| `surface` | object | No |  |

### Get design guide

**Slug:** `SIDESHOW_MCP_GET_DESIGN_GUIDE`

Fetch HTML fragment, sizing, theme, kit, CDN, and interactivity guidance. Not needed for non-HTML kinds.

### Get post

**Slug:** `SIDESHOW_MCP_GET_POST`

Get one full post with surface ids/indexes, version, and history; use before targeted edits or after compaction.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Post id returned by publish_post |

### List posts

**Slug:** `SIDESHOW_MCP_LIST_POSTS`

List posts, optionally scoped by session. Returns surface id/kind/index metadata without bodies.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `session` | string | No | Optional session scope |

### List surfaces

**Slug:** `SIDESHOW_MCP_LIST_SURFACES`

Deprecated list_posts alias.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `session` | string | No |  |

### Publish post

**Slug:** `SIDESHOW_MCP_PUBLISH_POST`

Publish ordered surfaces as one post. Returns post id, URL, sessionId, and surface ids; reuse sessionId later. Set sessionTitle on the first publish. Read userFeedback.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `agent` | string | No | Agent name for a new session |
| `title` | string | Yes | Short card title |
| `session` | string | No | Session id from a previous publish; omit on the first |
| `surfaces` | array | Yes | Ordered surfaces; combine kinds in one card |
| `sessionTitle` | string | No | Task name for a new session; honored only when the publish creates it |

### Publish snippet

**Slug:** `SIDESHOW_MCP_PUBLISH_SNIPPET`

Deprecated HTML-only publish_post sugar. Send a body fragment in html. Read userFeedback.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `html` | string | Yes |  |
| `kits` | array | No |  |
| `agent` | string | No |  |
| `title` | string | Yes |  |
| `session` | string | No |  |
| `sessionTitle` | string | No |  |

### Publish surface

**Slug:** `SIDESHOW_MCP_PUBLISH_SURFACE`

Deprecated publish_post alias; pass the same surface shape as parts. Read userFeedback.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `agent` | string | No |  |
| `parts` | array | Yes |  |
| `title` | string | Yes |  |
| `session` | string | No |  |
| `sessionTitle` | string | No |  |

### Remove surface

**Slug:** `SIDESHOW_MCP_REMOVE_SURFACE`

Remove one surface by id/index; a post must retain at least one. Read userFeedback.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `postId` | string | Yes | Post id returned by publish_post |
| `target` | string | Yes | Surface id or 0-based index |

### Reorder surfaces

**Slug:** `SIDESHOW_MCP_REORDER_SURFACES`

Reorder every surface using ids or 0-based indexes; order length must match. Read userFeedback.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `order` | array | Yes | All surface ids or 0-based indexes in desired order |
| `postId` | string | Yes | Post id returned by publish_post |

### Reply to user

**Slug:** `SIDESHOW_MCP_REPLY_TO_USER`

Post a short plain-text reply using postId (surfaceId is deprecated). Read userFeedback.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `author` | string | No | Agent name; "user" is reserved |
| `postId` | string | No | Post id returned by publish_post |
| `message` | string | Yes | Plain-text reply |
| `surfaceId` | string | No | Deprecated alias of postId |

### Send test post

**Slug:** `SIDESHOW_MCP_SEND_TEST_POST`

Publish the idempotent built-in welcome post to test a connection or fresh workspace; returns the existing post if already sent.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `agent` | string | No | Agent name for a new session |

### Update post

**Slug:** `SIDESHOW_MCP_UPDATE_POST`

Revise a post in place instead of publishing a duplicate. Pass title and/or full replacement surfaces using the publish_post shape. Returns new surface ids. Read userFeedback.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Post id returned by publish_post |
| `title` | string | No | Replacement card title |
| `surfaces` | array | No |  |

### Update snippet

**Slug:** `SIDESHOW_MCP_UPDATE_SNIPPET`

Deprecated HTML-only update_post sugar. Read userFeedback.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `html` | string | No |  |
| `kits` | array | No |  |
| `title` | string | No |  |

### Update surface

**Slug:** `SIDESHOW_MCP_UPDATE_SURFACE`

Deprecated update_post alias; pass replacement surfaces as parts. Read userFeedback.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes |  |
| `parts` | array | No |  |
| `title` | string | No |  |

### Upload asset

**Slug:** `SIDESHOW_MCP_UPLOAD_ASSET`

Upload base64 bytes and return id and URL. Reference id as image assetId; pass the publish session when available for grouping and cleanup.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Base64 file bytes |
| `kind` | string ("image" | "trace" | "file") | No |  |
| `session` | string | No | Session to own the asset |
| `filename` | string | No | Original download filename |
| `contentType` | string | Yes | MIME type, e.g. image/png |

### Wait for feedback

**Slug:** `SIDESHOW_MCP_WAIT_FOR_FEEDBACK`

Wait up to 300 seconds for comments not yet delivered on any channel; 0 is a non-blocking check.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `session` | string | Yes | Session id returned by publish_post |
| `afterSeq` | number | No | Explicit shared-cursor override; usually omit |
| `timeoutSeconds` | number | No | Seconds to wait; 0 checks only |
