---
title: Slack
description: Send, update, delete messages, manage views and modals, add or remove reactions, manage canvases, get channel info and user presence in Slack
---

import { BlockInfoCard } from "@/components/ui/block-info-card"

<BlockInfoCard 
  type="slack"
  color="#611f69"
/>

{/* MANUAL-CONTENT-START:intro */}
[Slack](https://www.slack.com/) is a business communication platform that offers teams a unified place for messaging, tools, and files.

With the Slack integration in Sim, you can:

- **Send messages**: Send formatted messages to any Slack channel or user, supporting Slack's mrkdwn syntax for rich formatting
- **Send ephemeral messages**: Send temporary messages visible only to a specific user in a channel
- **Update messages**: Edit previously sent bot messages to correct information or provide status updates
- **Delete messages**: Remove bot messages when they're no longer needed or contain errors
- **Add reactions**: Express sentiment or acknowledgment by adding emoji reactions to any message
- **Create canvases**: Create and share Slack canvases (collaborative documents) directly in channels
- **Read messages**: Retrieve recent messages from channels or DMs, with filtering by time range
- **Manage channels and users**: List channels, members, and users in your Slack workspace
- **Download files**: Retrieve files shared in Slack channels for processing or archival

In Sim, the Slack integration enables your agents to programmatically interact with Slack as part of their workflows. This allows for automation scenarios such as sending notifications with dynamic updates, managing conversational flows with editable status messages, acknowledging important messages with reactions, and maintaining clean channels by removing outdated bot messages. The integration can also be used in trigger mode to start a workflow when a message is sent to a channel.

## AI-Generated Content

Sim workflows may use AI models to generate messages and responses sent to Slack. AI-generated content may be inaccurate or contain errors. Always review automated outputs, especially for critical communications.

## Need Help?

If you encounter issues with the Slack integration, contact us at [help@sim.ai](mailto:help@sim.ai)
{/* MANUAL-CONTENT-END */}


## Usage Instructions

Integrate Slack into the workflow. Can send, update, and delete messages, send ephemeral messages visible only to a specific user, open/update/push modal views, publish Home tab views, create canvases, read messages, and add or remove reactions. Requires Bot Token instead of OAuth in advanced mode. Can be used in trigger mode to trigger a workflow when a message is sent to a channel.



## Tools

### `slack_message`

Send messages to Slack channels or direct messages. Supports Slack mrkdwn formatting.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `destinationType` | string | No | Destination type: channel or dm |
| `botToken` | string | No | Bot token for Custom Bot |
| `channel` | string | No | Slack channel ID \(e.g., C1234567890\) |
| `dmUserId` | string | No | Slack user ID for direct messages \(e.g., U1234567890\) |
| `text` | string | Yes | Message text to send \(supports Slack mrkdwn formatting\) |
| `threadTs` | string | No | Thread timestamp to reply to \(creates thread reply\) |
| `blocks` | json | No | Block Kit layout blocks as a JSON array. When provided, text becomes the fallback notification text. |
| `files` | file[] | No | Files to attach to the message |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `message` | object | Complete message object with all properties returned by Slack |
|   ↳ `type` | string | Message type \(usually "message"\) |
|   ↳ `ts` | string | Message timestamp \(unique identifier\) |
|   ↳ `text` | string | Message text content |
|   ↳ `user` | string | User ID who sent the message |
|   ↳ `bot_id` | string | Bot ID if sent by a bot |
|   ↳ `username` | string | Display username |
|   ↳ `channel` | string | Channel ID |
|   ↳ `team` | string | Team/workspace ID |
|   ↳ `thread_ts` | string | Parent message timestamp \(for threaded replies\) |
|   ↳ `parent_user_id` | string | User ID of thread parent message author |
|   ↳ `reply_count` | number | Total number of replies in thread |
|   ↳ `reply_users_count` | number | Number of unique users who replied |
|   ↳ `latest_reply` | string | Timestamp of most recent reply |
|   ↳ `subscribed` | boolean | Whether user is subscribed to thread |
|   ↳ `last_read` | string | Timestamp of last read message |
|   ↳ `unread_count` | number | Number of unread messages in thread |
|   ↳ `subtype` | string | Message subtype \(bot_message, file_share, etc.\) |
|   ↳ `is_starred` | boolean | Whether message is starred by user |
|   ↳ `pinned_to` | array | Channel IDs where message is pinned |
|   ↳ `permalink` | string | Permanent URL to the message |
|   ↳ `reactions` | array | Reactions on this message |
|     ↳ `name` | string | Emoji name \(without colons\) |
|     ↳ `count` | number | Number of times this reaction was added |
|     ↳ `users` | array | Array of user IDs who reacted |
|   ↳ `files` | array | Files attached to the message |
|     ↳ `id` | string | Unique file identifier |
|     ↳ `name` | string | File name |
|     ↳ `mimetype` | string | MIME type of the file |
|     ↳ `size` | number | File size in bytes |
|     ↳ `url_private` | string | Private download URL \(requires auth\) |
|     ↳ `permalink` | string | Permanent link to the file |
|     ↳ `mode` | string | File mode \(hosted, external, etc.\) |
|   ↳ `attachments` | array | Legacy attachments on the message |
|     ↳ `id` | number | Attachment ID |
|     ↳ `fallback` | string | Plain text summary |
|     ↳ `text` | string | Main attachment text |
|     ↳ `pretext` | string | Text shown before attachment |
|     ↳ `color` | string | Color bar hex code or preset |
|     ↳ `author_name` | string | Author display name |
|     ↳ `author_link` | string | Author link URL |
|     ↳ `author_icon` | string | Author icon URL |
|     ↳ `title` | string | Attachment title |
|     ↳ `title_link` | string | Title link URL |
|     ↳ `image_url` | string | Image URL |
|     ↳ `thumb_url` | string | Thumbnail URL |
|     ↳ `footer` | string | Footer text |
|     ↳ `footer_icon` | string | Footer icon URL |
|     ↳ `ts` | string | Timestamp shown in footer |
|   ↳ `blocks` | array | Block Kit blocks in the message |
|     ↳ `type` | string | Block type \(section, divider, image, actions, etc.\) |
|     ↳ `block_id` | string | Unique block identifier |
|   ↳ `edited` | object | Edit information if message was edited |
|     ↳ `user` | string | User ID who edited the message |
|     ↳ `ts` | string | Timestamp of the edit |
| `ts` | string | Message timestamp |
| `channel` | string | Channel ID where message was sent |
| `fileCount` | number | Number of files uploaded \(when files are attached\) |
| `files` | file[] | Files attached to the message |

### `slack_ephemeral_message`

Send an ephemeral message visible only to a specific user in a channel. Optionally reply in a thread. The message does not persist across sessions.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `channel` | string | Yes | Slack channel ID \(e.g., C1234567890\) |
| `user` | string | Yes | User ID who will see the ephemeral message \(e.g., U1234567890\). Must be a member of the channel. |
| `text` | string | Yes | Message text to send \(supports Slack mrkdwn formatting\) |
| `threadTs` | string | No | Thread timestamp to reply in. When provided, the ephemeral message appears as a thread reply. |
| `blocks` | json | No | Block Kit layout blocks as a JSON array. When provided, text becomes the fallback notification text. |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `messageTs` | string | Timestamp of the ephemeral message \(cannot be used with chat.update\) |
| `channel` | string | Channel ID where the ephemeral message was sent |

### `slack_canvas`

Create and share Slack canvases in channels. Canvases are collaborative documents within Slack.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `channel` | string | Yes | Slack channel ID \(e.g., C1234567890\) |
| `title` | string | Yes | Title of the canvas |
| `content` | string | Yes | Canvas content in markdown format |
| `document_content` | object | No | Structured canvas document content |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `canvas_id` | string | Unique canvas identifier |

### `slack_message_reader`

Read the latest messages from Slack channels. Retrieve conversation history with filtering options.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `destinationType` | string | No | Destination type: channel or dm |
| `botToken` | string | No | Bot token for Custom Bot |
| `channel` | string | No | Slack channel ID to read messages from \(e.g., C1234567890\) |
| `dmUserId` | string | No | Slack user ID for DM conversation \(e.g., U1234567890\) |
| `limit` | number | No | Number of messages to retrieve \(default: 10, max: 15\) |
| `oldest` | string | No | Start of time range \(timestamp\) |
| `latest` | string | No | End of time range \(timestamp\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `messages` | array | Array of message objects from the channel |
|   ↳ `type` | string | Message type \(usually "message"\) |
|   ↳ `ts` | string | Message timestamp \(unique identifier\) |
|   ↳ `text` | string | Message text content |
|   ↳ `user` | string | User ID who sent the message |
|   ↳ `bot_id` | string | Bot ID if sent by a bot |
|   ↳ `username` | string | Display username |
|   ↳ `channel` | string | Channel ID |
|   ↳ `team` | string | Team/workspace ID |
|   ↳ `thread_ts` | string | Parent message timestamp \(for threaded replies\) |
|   ↳ `parent_user_id` | string | User ID of thread parent message author |
|   ↳ `reply_count` | number | Total number of replies in thread |
|   ↳ `reply_users_count` | number | Number of unique users who replied |
|   ↳ `latest_reply` | string | Timestamp of most recent reply |
|   ↳ `subscribed` | boolean | Whether user is subscribed to thread |
|   ↳ `last_read` | string | Timestamp of last read message |
|   ↳ `unread_count` | number | Number of unread messages in thread |
|   ↳ `subtype` | string | Message subtype \(bot_message, file_share, etc.\) |
|   ↳ `is_starred` | boolean | Whether message is starred by user |
|   ↳ `pinned_to` | array | Channel IDs where message is pinned |
|   ↳ `permalink` | string | Permanent URL to the message |
|   ↳ `reactions` | array | Reactions on this message |
|     ↳ `name` | string | Emoji name \(without colons\) |
|     ↳ `count` | number | Number of times this reaction was added |
|     ↳ `users` | array | Array of user IDs who reacted |
|   ↳ `files` | array | Files attached to the message |
|     ↳ `id` | string | Unique file identifier |
|     ↳ `name` | string | File name |
|     ↳ `mimetype` | string | MIME type of the file |
|     ↳ `size` | number | File size in bytes |
|     ↳ `url_private` | string | Private download URL \(requires auth\) |
|     ↳ `permalink` | string | Permanent link to the file |
|     ↳ `mode` | string | File mode \(hosted, external, etc.\) |
|   ↳ `attachments` | array | Legacy attachments on the message |
|     ↳ `id` | number | Attachment ID |
|     ↳ `fallback` | string | Plain text summary |
|     ↳ `text` | string | Main attachment text |
|     ↳ `pretext` | string | Text shown before attachment |
|     ↳ `color` | string | Color bar hex code or preset |
|     ↳ `author_name` | string | Author display name |
|     ↳ `author_link` | string | Author link URL |
|     ↳ `author_icon` | string | Author icon URL |
|     ↳ `title` | string | Attachment title |
|     ↳ `title_link` | string | Title link URL |
|     ↳ `image_url` | string | Image URL |
|     ↳ `thumb_url` | string | Thumbnail URL |
|     ↳ `footer` | string | Footer text |
|     ↳ `footer_icon` | string | Footer icon URL |
|     ↳ `ts` | string | Timestamp shown in footer |
|   ↳ `blocks` | array | Block Kit blocks in the message |
|     ↳ `type` | string | Block type \(section, divider, image, actions, etc.\) |
|     ↳ `block_id` | string | Unique block identifier |
|   ↳ `edited` | object | Edit information if message was edited |
|     ↳ `user` | string | User ID who edited the message |
|     ↳ `ts` | string | Timestamp of the edit |

### `slack_get_message`

Retrieve a specific message by its timestamp. Useful for getting a thread parent message.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `channel` | string | Yes | Slack channel ID \(e.g., C1234567890\) |
| `timestamp` | string | Yes | Message timestamp to retrieve \(e.g., 1405894322.002768\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `message` | object | The retrieved message object |
|   ↳ `type` | string | Message type \(usually "message"\) |
|   ↳ `ts` | string | Message timestamp \(unique identifier\) |
|   ↳ `text` | string | Message text content |
|   ↳ `user` | string | User ID who sent the message |
|   ↳ `bot_id` | string | Bot ID if sent by a bot |
|   ↳ `username` | string | Display username |
|   ↳ `channel` | string | Channel ID |
|   ↳ `team` | string | Team/workspace ID |
|   ↳ `thread_ts` | string | Parent message timestamp \(for threaded replies\) |
|   ↳ `parent_user_id` | string | User ID of thread parent message author |
|   ↳ `reply_count` | number | Total number of replies in thread |
|   ↳ `reply_users_count` | number | Number of unique users who replied |
|   ↳ `latest_reply` | string | Timestamp of most recent reply |
|   ↳ `subscribed` | boolean | Whether user is subscribed to thread |
|   ↳ `last_read` | string | Timestamp of last read message |
|   ↳ `unread_count` | number | Number of unread messages in thread |
|   ↳ `subtype` | string | Message subtype \(bot_message, file_share, etc.\) |
|   ↳ `is_starred` | boolean | Whether message is starred by user |
|   ↳ `pinned_to` | array | Channel IDs where message is pinned |
|   ↳ `permalink` | string | Permanent URL to the message |
|   ↳ `reactions` | array | Reactions on this message |
|     ↳ `name` | string | Emoji name \(without colons\) |
|     ↳ `count` | number | Number of times this reaction was added |
|     ↳ `users` | array | Array of user IDs who reacted |
|   ↳ `files` | array | Files attached to the message |
|     ↳ `id` | string | Unique file identifier |
|     ↳ `name` | string | File name |
|     ↳ `mimetype` | string | MIME type of the file |
|     ↳ `size` | number | File size in bytes |
|     ↳ `url_private` | string | Private download URL \(requires auth\) |
|     ↳ `permalink` | string | Permanent link to the file |
|     ↳ `mode` | string | File mode \(hosted, external, etc.\) |
|   ↳ `attachments` | array | Legacy attachments on the message |
|     ↳ `id` | number | Attachment ID |
|     ↳ `fallback` | string | Plain text summary |
|     ↳ `text` | string | Main attachment text |
|     ↳ `pretext` | string | Text shown before attachment |
|     ↳ `color` | string | Color bar hex code or preset |
|     ↳ `author_name` | string | Author display name |
|     ↳ `author_link` | string | Author link URL |
|     ↳ `author_icon` | string | Author icon URL |
|     ↳ `title` | string | Attachment title |
|     ↳ `title_link` | string | Title link URL |
|     ↳ `image_url` | string | Image URL |
|     ↳ `thumb_url` | string | Thumbnail URL |
|     ↳ `footer` | string | Footer text |
|     ↳ `footer_icon` | string | Footer icon URL |
|     ↳ `ts` | string | Timestamp shown in footer |
|   ↳ `blocks` | array | Block Kit blocks in the message |
|     ↳ `type` | string | Block type \(section, divider, image, actions, etc.\) |
|     ↳ `block_id` | string | Unique block identifier |
|   ↳ `edited` | object | Edit information if message was edited |
|     ↳ `user` | string | User ID who edited the message |
|     ↳ `ts` | string | Timestamp of the edit |

### `slack_get_thread`

Retrieve an entire thread including the parent message and all replies. Useful for getting full conversation context.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `channel` | string | Yes | Slack channel ID \(e.g., C1234567890\) |
| `threadTs` | string | Yes | Thread timestamp \(thread_ts\) to retrieve \(e.g., 1405894322.002768\) |
| `limit` | number | No | Maximum number of messages to return \(default: 100, max: 200\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `parentMessage` | object | The thread parent message |
|   ↳ `type` | string | Message type \(usually "message"\) |
|   ↳ `ts` | string | Message timestamp \(unique identifier\) |
|   ↳ `text` | string | Message text content |
|   ↳ `user` | string | User ID who sent the message |
|   ↳ `bot_id` | string | Bot ID if sent by a bot |
|   ↳ `username` | string | Display username |
|   ↳ `channel` | string | Channel ID |
|   ↳ `team` | string | Team/workspace ID |
|   ↳ `thread_ts` | string | Parent message timestamp \(for threaded replies\) |
|   ↳ `parent_user_id` | string | User ID of thread parent message author |
|   ↳ `reply_count` | number | Total number of replies in thread |
|   ↳ `reply_users_count` | number | Number of unique users who replied |
|   ↳ `latest_reply` | string | Timestamp of most recent reply |
|   ↳ `subscribed` | boolean | Whether user is subscribed to thread |
|   ↳ `last_read` | string | Timestamp of last read message |
|   ↳ `unread_count` | number | Number of unread messages in thread |
|   ↳ `subtype` | string | Message subtype \(bot_message, file_share, etc.\) |
|   ↳ `is_starred` | boolean | Whether message is starred by user |
|   ↳ `pinned_to` | array | Channel IDs where message is pinned |
|   ↳ `permalink` | string | Permanent URL to the message |
|   ↳ `reactions` | array | Reactions on this message |
|     ↳ `name` | string | Emoji name \(without colons\) |
|     ↳ `count` | number | Number of times this reaction was added |
|     ↳ `users` | array | Array of user IDs who reacted |
|   ↳ `files` | array | Files attached to the message |
|     ↳ `id` | string | Unique file identifier |
|     ↳ `name` | string | File name |
|     ↳ `mimetype` | string | MIME type of the file |
|     ↳ `size` | number | File size in bytes |
|     ↳ `url_private` | string | Private download URL \(requires auth\) |
|     ↳ `permalink` | string | Permanent link to the file |
|     ↳ `mode` | string | File mode \(hosted, external, etc.\) |
|   ↳ `attachments` | array | Legacy attachments on the message |
|     ↳ `id` | number | Attachment ID |
|     ↳ `fallback` | string | Plain text summary |
|     ↳ `text` | string | Main attachment text |
|     ↳ `pretext` | string | Text shown before attachment |
|     ↳ `color` | string | Color bar hex code or preset |
|     ↳ `author_name` | string | Author display name |
|     ↳ `author_link` | string | Author link URL |
|     ↳ `author_icon` | string | Author icon URL |
|     ↳ `title` | string | Attachment title |
|     ↳ `title_link` | string | Title link URL |
|     ↳ `image_url` | string | Image URL |
|     ↳ `thumb_url` | string | Thumbnail URL |
|     ↳ `footer` | string | Footer text |
|     ↳ `footer_icon` | string | Footer icon URL |
|     ↳ `ts` | string | Timestamp shown in footer |
|   ↳ `blocks` | array | Block Kit blocks in the message |
|     ↳ `type` | string | Block type \(section, divider, image, actions, etc.\) |
|     ↳ `block_id` | string | Unique block identifier |
|   ↳ `edited` | object | Edit information if message was edited |
|     ↳ `user` | string | User ID who edited the message |
|     ↳ `ts` | string | Timestamp of the edit |
| `replies` | array | Array of reply messages in the thread \(excluding the parent\) |
|   ↳ `type` | string | Message type \(usually "message"\) |
|   ↳ `ts` | string | Message timestamp \(unique identifier\) |
|   ↳ `text` | string | Message text content |
|   ↳ `user` | string | User ID who sent the message |
|   ↳ `bot_id` | string | Bot ID if sent by a bot |
|   ↳ `username` | string | Display username |
|   ↳ `channel` | string | Channel ID |
|   ↳ `team` | string | Team/workspace ID |
|   ↳ `thread_ts` | string | Parent message timestamp \(for threaded replies\) |
|   ↳ `parent_user_id` | string | User ID of thread parent message author |
|   ↳ `reply_count` | number | Total number of replies in thread |
|   ↳ `reply_users_count` | number | Number of unique users who replied |
|   ↳ `latest_reply` | string | Timestamp of most recent reply |
|   ↳ `subscribed` | boolean | Whether user is subscribed to thread |
|   ↳ `last_read` | string | Timestamp of last read message |
|   ↳ `unread_count` | number | Number of unread messages in thread |
|   ↳ `subtype` | string | Message subtype \(bot_message, file_share, etc.\) |
|   ↳ `is_starred` | boolean | Whether message is starred by user |
|   ↳ `pinned_to` | array | Channel IDs where message is pinned |
|   ↳ `permalink` | string | Permanent URL to the message |
|   ↳ `reactions` | array | Reactions on this message |
|     ↳ `name` | string | Emoji name \(without colons\) |
|     ↳ `count` | number | Number of times this reaction was added |
|     ↳ `users` | array | Array of user IDs who reacted |
|   ↳ `files` | array | Files attached to the message |
|     ↳ `id` | string | Unique file identifier |
|     ↳ `name` | string | File name |
|     ↳ `mimetype` | string | MIME type of the file |
|     ↳ `size` | number | File size in bytes |
|     ↳ `url_private` | string | Private download URL \(requires auth\) |
|     ↳ `permalink` | string | Permanent link to the file |
|     ↳ `mode` | string | File mode \(hosted, external, etc.\) |
|   ↳ `attachments` | array | Legacy attachments on the message |
|     ↳ `id` | number | Attachment ID |
|     ↳ `fallback` | string | Plain text summary |
|     ↳ `text` | string | Main attachment text |
|     ↳ `pretext` | string | Text shown before attachment |
|     ↳ `color` | string | Color bar hex code or preset |
|     ↳ `author_name` | string | Author display name |
|     ↳ `author_link` | string | Author link URL |
|     ↳ `author_icon` | string | Author icon URL |
|     ↳ `title` | string | Attachment title |
|     ↳ `title_link` | string | Title link URL |
|     ↳ `image_url` | string | Image URL |
|     ↳ `thumb_url` | string | Thumbnail URL |
|     ↳ `footer` | string | Footer text |
|     ↳ `footer_icon` | string | Footer icon URL |
|     ↳ `ts` | string | Timestamp shown in footer |
|   ↳ `blocks` | array | Block Kit blocks in the message |
|     ↳ `type` | string | Block type \(section, divider, image, actions, etc.\) |
|     ↳ `block_id` | string | Unique block identifier |
|   ↳ `edited` | object | Edit information if message was edited |
|     ↳ `user` | string | User ID who edited the message |
|     ↳ `ts` | string | Timestamp of the edit |
| `messages` | array | All messages in the thread \(parent + replies\) in chronological order |
|   ↳ `type` | string | Message type \(usually "message"\) |
|   ↳ `ts` | string | Message timestamp \(unique identifier\) |
|   ↳ `text` | string | Message text content |
|   ↳ `user` | string | User ID who sent the message |
|   ↳ `bot_id` | string | Bot ID if sent by a bot |
|   ↳ `username` | string | Display username |
|   ↳ `channel` | string | Channel ID |
|   ↳ `team` | string | Team/workspace ID |
|   ↳ `thread_ts` | string | Parent message timestamp \(for threaded replies\) |
|   ↳ `parent_user_id` | string | User ID of thread parent message author |
|   ↳ `reply_count` | number | Total number of replies in thread |
|   ↳ `reply_users_count` | number | Number of unique users who replied |
|   ↳ `latest_reply` | string | Timestamp of most recent reply |
|   ↳ `subscribed` | boolean | Whether user is subscribed to thread |
|   ↳ `last_read` | string | Timestamp of last read message |
|   ↳ `unread_count` | number | Number of unread messages in thread |
|   ↳ `subtype` | string | Message subtype \(bot_message, file_share, etc.\) |
|   ↳ `is_starred` | boolean | Whether message is starred by user |
|   ↳ `pinned_to` | array | Channel IDs where message is pinned |
|   ↳ `permalink` | string | Permanent URL to the message |
|   ↳ `reactions` | array | Reactions on this message |
|     ↳ `name` | string | Emoji name \(without colons\) |
|     ↳ `count` | number | Number of times this reaction was added |
|     ↳ `users` | array | Array of user IDs who reacted |
|   ↳ `files` | array | Files attached to the message |
|     ↳ `id` | string | Unique file identifier |
|     ↳ `name` | string | File name |
|     ↳ `mimetype` | string | MIME type of the file |
|     ↳ `size` | number | File size in bytes |
|     ↳ `url_private` | string | Private download URL \(requires auth\) |
|     ↳ `permalink` | string | Permanent link to the file |
|     ↳ `mode` | string | File mode \(hosted, external, etc.\) |
|   ↳ `attachments` | array | Legacy attachments on the message |
|     ↳ `id` | number | Attachment ID |
|     ↳ `fallback` | string | Plain text summary |
|     ↳ `text` | string | Main attachment text |
|     ↳ `pretext` | string | Text shown before attachment |
|     ↳ `color` | string | Color bar hex code or preset |
|     ↳ `author_name` | string | Author display name |
|     ↳ `author_link` | string | Author link URL |
|     ↳ `author_icon` | string | Author icon URL |
|     ↳ `title` | string | Attachment title |
|     ↳ `title_link` | string | Title link URL |
|     ↳ `image_url` | string | Image URL |
|     ↳ `thumb_url` | string | Thumbnail URL |
|     ↳ `footer` | string | Footer text |
|     ↳ `footer_icon` | string | Footer icon URL |
|     ↳ `ts` | string | Timestamp shown in footer |
|   ↳ `blocks` | array | Block Kit blocks in the message |
|     ↳ `type` | string | Block type \(section, divider, image, actions, etc.\) |
|     ↳ `block_id` | string | Unique block identifier |
|   ↳ `edited` | object | Edit information if message was edited |
|     ↳ `user` | string | User ID who edited the message |
|     ↳ `ts` | string | Timestamp of the edit |
| `replyCount` | number | Number of replies returned in this response |
| `hasMore` | boolean | Whether there are more messages in the thread \(pagination needed\) |

### `slack_list_channels`

List all channels in a Slack workspace. Returns public and private channels the bot has access to.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `includePrivate` | boolean | No | Include private channels the bot is a member of \(default: true\) |
| `excludeArchived` | boolean | No | Exclude archived channels \(default: true\) |
| `limit` | number | No | Maximum number of channels to return \(default: 100, max: 200\) |
| `cursor` | string | No | Pagination cursor from a previous response.next_cursor |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `channels` | array | Array of channel objects from the workspace |
|   ↳ `id` | string | Channel ID \(e.g., C1234567890\) |
|   ↳ `name` | string | Channel name without # prefix |
|   ↳ `is_channel` | boolean | Whether this is a channel |
|   ↳ `is_private` | boolean | Whether channel is private |
|   ↳ `is_archived` | boolean | Whether channel is archived |
|   ↳ `is_general` | boolean | Whether this is the general channel |
|   ↳ `is_member` | boolean | Whether the bot/user is a member |
|   ↳ `is_shared` | boolean | Whether channel is shared across workspaces |
|   ↳ `is_ext_shared` | boolean | Whether channel is externally shared |
|   ↳ `is_org_shared` | boolean | Whether channel is org-wide shared |
|   ↳ `num_members` | number | Number of members in the channel |
|   ↳ `topic` | string | Channel topic |
|   ↳ `purpose` | string | Channel purpose/description |
|   ↳ `created` | number | Unix timestamp when channel was created |
|   ↳ `creator` | string | User ID of channel creator |
|   ↳ `updated` | number | Unix timestamp of last update |
| `ids` | array | Array of channel IDs for easy access |
| `names` | array | Array of channel names for easy access |
| `count` | number | Total number of channels returned |
| `nextCursor` | string | Cursor for the next page; null if no more pages |

### `slack_list_members`

List all members (user IDs) in a Slack channel. Use with Get User Info to resolve IDs to names.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `channel` | string | Yes | Channel ID to list members from |
| `limit` | number | No | Maximum number of members to return \(default: 100, max: 200\) |
| `cursor` | string | No | Pagination cursor from a previous response.next_cursor |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `members` | array | Array of user IDs who are members of the channel \(e.g., U1234567890\) |
| `count` | number | Total number of members returned |
| `nextCursor` | string | Cursor for the next page; null if no more pages |

### `slack_list_users`

List all users in a Slack workspace. Returns user profiles with names and avatars.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `includeDeleted` | boolean | No | Include deactivated/deleted users \(default: false\) |
| `limit` | number | No | Maximum number of users to return \(default: 100, max: 200\) |
| `cursor` | string | No | Pagination cursor from a previous response.next_cursor |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `users` | array | Array of user objects from the workspace |
|   ↳ `id` | string | User ID \(e.g., U1234567890\) |
|   ↳ `name` | string | Username \(handle\) |
|   ↳ `real_name` | string | Full real name |
|   ↳ `display_name` | string | Display name shown in Slack |
|   ↳ `email` | string | Email address \(requires users:read.email scope\) |
|   ↳ `is_bot` | boolean | Whether the user is a bot |
|   ↳ `is_admin` | boolean | Whether the user is a workspace admin |
|   ↳ `is_owner` | boolean | Whether the user is the workspace owner |
|   ↳ `deleted` | boolean | Whether the user is deactivated |
|   ↳ `timezone` | string | User timezone identifier |
|   ↳ `avatar` | string | URL to user avatar image |
|   ↳ `status_text` | string | Custom status text |
|   ↳ `status_emoji` | string | Custom status emoji |
| `ids` | array | Array of user IDs for easy access |
| `names` | array | Array of usernames for easy access |
| `count` | number | Total number of users returned |
| `nextCursor` | string | Cursor for the next page; null if no more pages |

### `slack_get_user`

Get detailed information about a specific Slack user by their user ID.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `userId` | string | Yes | User ID to look up \(e.g., U1234567890\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `user` | object | Detailed user information |
|   ↳ `id` | string | User ID \(e.g., U1234567890\) |
|   ↳ `team_id` | string | Workspace/team ID |
|   ↳ `name` | string | Username \(handle\) |
|   ↳ `real_name` | string | Full real name |
|   ↳ `display_name` | string | Display name shown in Slack |
|   ↳ `first_name` | string | First name |
|   ↳ `last_name` | string | Last name |
|   ↳ `title` | string | Job title |
|   ↳ `phone` | string | Phone number |
|   ↳ `skype` | string | Skype handle |
|   ↳ `email` | string | Email address \(requires users:read.email scope\) |
|   ↳ `is_bot` | boolean | Whether the user is a bot |
|   ↳ `is_admin` | boolean | Whether the user is a workspace admin |
|   ↳ `is_owner` | boolean | Whether the user is the workspace owner |
|   ↳ `is_primary_owner` | boolean | Whether the user is the primary owner |
|   ↳ `is_restricted` | boolean | Whether the user is a guest \(restricted\) |
|   ↳ `is_ultra_restricted` | boolean | Whether the user is a single-channel guest |
|   ↳ `is_app_user` | boolean | Whether user is an app user |
|   ↳ `deleted` | boolean | Whether the user is deactivated |
|   ↳ `color` | string | User color for display |
|   ↳ `timezone` | string | Timezone identifier \(e.g., America/Los_Angeles\) |
|   ↳ `timezone_label` | string | Human-readable timezone label |
|   ↳ `timezone_offset` | number | Timezone offset in seconds from UTC |
|   ↳ `avatar` | string | URL to user avatar image |
|   ↳ `avatar_24` | string | URL to 24px avatar |
|   ↳ `avatar_48` | string | URL to 48px avatar |
|   ↳ `avatar_72` | string | URL to 72px avatar |
|   ↳ `avatar_192` | string | URL to 192px avatar |
|   ↳ `avatar_512` | string | URL to 512px avatar |
|   ↳ `status_text` | string | Custom status text |
|   ↳ `status_emoji` | string | Custom status emoji |
|   ↳ `status_expiration` | number | Unix timestamp when status expires |
|   ↳ `updated` | number | Unix timestamp of last profile update |
|   ↳ `has_2fa` | boolean | Whether two-factor auth is enabled |

### `slack_download`

Download a file from Slack

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `fileId` | string | Yes | The ID of the file to download |
| `fileName` | string | No | Optional filename override |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `file` | file | Downloaded file stored in execution files |

### `slack_update_message`

Update a message previously sent by the bot in Slack

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `channel` | string | Yes | Channel ID where the message was posted \(e.g., C1234567890\) |
| `timestamp` | string | Yes | Timestamp of the message to update \(e.g., 1405894322.002768\) |
| `text` | string | Yes | New message text \(supports Slack mrkdwn formatting\) |
| `blocks` | json | No | Block Kit layout blocks as a JSON array. When provided, text becomes the fallback notification text. |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `message` | object | Complete updated message object with all properties returned by Slack |
|   ↳ `type` | string | Message type \(usually "message"\) |
|   ↳ `ts` | string | Message timestamp \(unique identifier\) |
|   ↳ `text` | string | Message text content |
|   ↳ `user` | string | User ID who sent the message |
|   ↳ `bot_id` | string | Bot ID if sent by a bot |
|   ↳ `username` | string | Display username |
|   ↳ `channel` | string | Channel ID |
|   ↳ `team` | string | Team/workspace ID |
|   ↳ `thread_ts` | string | Parent message timestamp \(for threaded replies\) |
|   ↳ `parent_user_id` | string | User ID of thread parent message author |
|   ↳ `reply_count` | number | Total number of replies in thread |
|   ↳ `reply_users_count` | number | Number of unique users who replied |
|   ↳ `latest_reply` | string | Timestamp of most recent reply |
|   ↳ `subscribed` | boolean | Whether user is subscribed to thread |
|   ↳ `last_read` | string | Timestamp of last read message |
|   ↳ `unread_count` | number | Number of unread messages in thread |
|   ↳ `subtype` | string | Message subtype \(bot_message, file_share, etc.\) |
|   ↳ `is_starred` | boolean | Whether message is starred by user |
|   ↳ `pinned_to` | array | Channel IDs where message is pinned |
|   ↳ `permalink` | string | Permanent URL to the message |
|   ↳ `reactions` | array | Reactions on this message |
|     ↳ `name` | string | Emoji name \(without colons\) |
|     ↳ `count` | number | Number of times this reaction was added |
|     ↳ `users` | array | Array of user IDs who reacted |
|   ↳ `files` | array | Files attached to the message |
|     ↳ `id` | string | Unique file identifier |
|     ↳ `name` | string | File name |
|     ↳ `mimetype` | string | MIME type of the file |
|     ↳ `size` | number | File size in bytes |
|     ↳ `url_private` | string | Private download URL \(requires auth\) |
|     ↳ `permalink` | string | Permanent link to the file |
|     ↳ `mode` | string | File mode \(hosted, external, etc.\) |
|   ↳ `attachments` | array | Legacy attachments on the message |
|     ↳ `id` | number | Attachment ID |
|     ↳ `fallback` | string | Plain text summary |
|     ↳ `text` | string | Main attachment text |
|     ↳ `pretext` | string | Text shown before attachment |
|     ↳ `color` | string | Color bar hex code or preset |
|     ↳ `author_name` | string | Author display name |
|     ↳ `author_link` | string | Author link URL |
|     ↳ `author_icon` | string | Author icon URL |
|     ↳ `title` | string | Attachment title |
|     ↳ `title_link` | string | Title link URL |
|     ↳ `image_url` | string | Image URL |
|     ↳ `thumb_url` | string | Thumbnail URL |
|     ↳ `footer` | string | Footer text |
|     ↳ `footer_icon` | string | Footer icon URL |
|     ↳ `ts` | string | Timestamp shown in footer |
|   ↳ `blocks` | array | Block Kit blocks in the message |
|     ↳ `type` | string | Block type \(section, divider, image, actions, etc.\) |
|     ↳ `block_id` | string | Unique block identifier |
|   ↳ `edited` | object | Edit information if message was edited |
|     ↳ `user` | string | User ID who edited the message |
|     ↳ `ts` | string | Timestamp of the edit |
| `content` | string | Success message |
| `metadata` | object | Updated message metadata |
|   ↳ `channel` | string | Channel ID |
|   ↳ `timestamp` | string | Message timestamp |
|   ↳ `text` | string | Updated message text |

### `slack_delete_message`

Delete a message previously sent by the bot in Slack

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `channel` | string | Yes | Channel ID where the message was posted \(e.g., C1234567890\) |
| `timestamp` | string | Yes | Timestamp of the message to delete \(e.g., 1405894322.002768\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `content` | string | Success message |
| `metadata` | object | Deleted message metadata |
|   ↳ `channel` | string | Channel ID |
|   ↳ `timestamp` | string | Message timestamp |

### `slack_add_reaction`

Add an emoji reaction to a Slack message

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `channel` | string | Yes | Channel ID where the message was posted \(e.g., C1234567890\) |
| `timestamp` | string | Yes | Timestamp of the message to react to \(e.g., 1405894322.002768\) |
| `name` | string | Yes | Name of the emoji reaction \(without colons, e.g., thumbsup, heart, eyes\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `content` | string | Success message |
| `metadata` | object | Reaction metadata |
|   ↳ `channel` | string | Channel ID |
|   ↳ `timestamp` | string | Message timestamp |
|   ↳ `reaction` | string | Emoji reaction name |

### `slack_remove_reaction`

Remove an emoji reaction from a Slack message

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `channel` | string | Yes | Channel ID where the message was posted \(e.g., C1234567890\) |
| `timestamp` | string | Yes | Timestamp of the message to remove reaction from \(e.g., 1405894322.002768\) |
| `name` | string | Yes | Name of the emoji reaction to remove \(without colons, e.g., thumbsup, heart, eyes\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `content` | string | Success message |
| `metadata` | object | Reaction metadata |
|   ↳ `channel` | string | Channel ID |
|   ↳ `timestamp` | string | Message timestamp |
|   ↳ `reaction` | string | Emoji reaction name |

### `slack_get_channel_info`

Get detailed information about a Slack channel by its ID

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `channel` | string | Yes | Channel ID to get information about \(e.g., C1234567890\) |
| `includeNumMembers` | boolean | No | Whether to include the member count in the response |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `channelInfo` | object | Detailed channel information |
|   ↳ `id` | string | Channel ID \(e.g., C1234567890\) |
|   ↳ `name` | string | Channel name without # prefix |
|   ↳ `is_channel` | boolean | Whether this is a channel |
|   ↳ `is_private` | boolean | Whether channel is private |
|   ↳ `is_archived` | boolean | Whether channel is archived |
|   ↳ `is_general` | boolean | Whether this is the general channel |
|   ↳ `is_member` | boolean | Whether the bot/user is a member |
|   ↳ `is_shared` | boolean | Whether channel is shared across workspaces |
|   ↳ `is_ext_shared` | boolean | Whether channel is externally shared |
|   ↳ `is_org_shared` | boolean | Whether channel is org-wide shared |
|   ↳ `num_members` | number | Number of members in the channel |
|   ↳ `topic` | string | Channel topic |
|   ↳ `purpose` | string | Channel purpose/description |
|   ↳ `created` | number | Unix timestamp when channel was created |
|   ↳ `creator` | string | User ID of channel creator |
|   ↳ `updated` | number | Unix timestamp of last update |

### `slack_get_user_presence`

Check whether a Slack user is currently active or away

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `userId` | string | Yes | User ID to check presence for \(e.g., U1234567890\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `presence` | string | User presence status: "active" or "away" |
| `online` | boolean | Whether user has an active client connection \(only available when checking own presence\) |
| `autoAway` | boolean | Whether user was automatically set to away due to inactivity \(only available when checking own presence\) |
| `manualAway` | boolean | Whether user manually set themselves as away \(only available when checking own presence\) |
| `connectionCount` | number | Total number of active connections for the user \(only available when checking own presence\) |
| `lastActivity` | number | Unix timestamp of last detected activity \(only available when checking own presence\) |

### `slack_edit_canvas`

Edit an existing Slack canvas by inserting, replacing, or deleting content

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `canvasId` | string | Yes | Canvas ID to edit \(e.g., F1234ABCD\) |
| `operation` | string | Yes | Edit operation: insert_at_start, insert_at_end, insert_after, insert_before, replace, delete, or rename |
| `content` | string | No | Markdown content for the operation \(required for insert/replace operations\) |
| `sectionId` | string | No | Section ID to target \(required for insert_after, insert_before, replace, and delete\) |
| `title` | string | No | New title for the canvas \(only used with rename operation\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `content` | string | Success message |

### `slack_create_channel_canvas`

Create a canvas pinned to a Slack channel as its resource hub

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `channel` | string | Yes | Channel ID to create the canvas in \(e.g., C1234567890\) |
| `title` | string | No | Title for the channel canvas |
| `content` | string | No | Canvas content in markdown format |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `canvas_id` | string | ID of the created channel canvas |

### `slack_get_canvas`

Get Slack canvas file metadata by canvas ID

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `canvasId` | string | Yes | Canvas file ID to retrieve \(e.g., F1234ABCD\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `canvas` | object | Canvas file information returned by Slack |
|   ↳ `id` | string | Unique canvas file identifier |
|   ↳ `created` | number | Unix timestamp when the canvas was created |
|   ↳ `timestamp` | number | Unix timestamp associated with the canvas |
|   ↳ `name` | string | Canvas file name |
|   ↳ `title` | string | Canvas title |
|   ↳ `mimetype` | string | MIME type of the canvas file |
|   ↳ `filetype` | string | Slack file type for the canvas |
|   ↳ `pretty_type` | string | Human-readable file type |
|   ↳ `user` | string | User ID of the canvas creator |
|   ↳ `editable` | boolean | Whether the canvas file is editable |
|   ↳ `size` | number | Canvas file size in bytes |
|   ↳ `mode` | string | File mode |
|   ↳ `is_external` | boolean | Whether the canvas is externally hosted |
|   ↳ `is_public` | boolean | Whether the canvas is public |
|   ↳ `url_private` | string | Private URL for the canvas file |
|   ↳ `url_private_download` | string | Private download URL for the canvas file |
|   ↳ `permalink` | string | Permanent URL for the canvas |
|   ↳ `channels` | array | Public channel IDs where the canvas appears |
|   ↳ `groups` | array | Private channel IDs where the canvas appears |
|   ↳ `ims` | array | Direct message IDs where the canvas appears |
|   ↳ `canvas_readtime` | number | Approximate read time for canvas content |
|   ↳ `is_channel_space` | boolean | Whether this canvas is linked to a channel |
|   ↳ `linked_channel_id` | string | Channel ID linked to this canvas |
|   ↳ `canvas_creator_id` | string | User ID of the canvas creator |

### `slack_list_canvases`

List Slack canvases available to the authenticated user or bot

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `channel` | string | No | Filter canvases appearing in a specific channel ID |
| `count` | number | No | Number of canvases to return per page |
| `page` | number | No | Page number to return |
| `user` | string | No | Filter canvases created by a single user ID |
| `tsFrom` | string | No | Filter canvases created after this Unix timestamp |
| `tsTo` | string | No | Filter canvases created before this Unix timestamp |
| `teamId` | string | No | Encoded team ID, required when using an org-level token |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `canvases` | array | Canvas file objects returned by Slack |
|   ↳ `id` | string | Unique canvas file identifier |
|   ↳ `created` | number | Unix timestamp when the canvas was created |
|   ↳ `timestamp` | number | Unix timestamp associated with the canvas |
|   ↳ `name` | string | Canvas file name |
|   ↳ `title` | string | Canvas title |
|   ↳ `mimetype` | string | MIME type of the canvas file |
|   ↳ `filetype` | string | Slack file type for the canvas |
|   ↳ `pretty_type` | string | Human-readable file type |
|   ↳ `user` | string | User ID of the canvas creator |
|   ↳ `editable` | boolean | Whether the canvas file is editable |
|   ↳ `size` | number | Canvas file size in bytes |
|   ↳ `mode` | string | File mode |
|   ↳ `is_external` | boolean | Whether the canvas is externally hosted |
|   ↳ `is_public` | boolean | Whether the canvas is public |
|   ↳ `url_private` | string | Private URL for the canvas file |
|   ↳ `url_private_download` | string | Private download URL for the canvas file |
|   ↳ `permalink` | string | Permanent URL for the canvas |
|   ↳ `channels` | array | Public channel IDs where the canvas appears |
|   ↳ `groups` | array | Private channel IDs where the canvas appears |
|   ↳ `ims` | array | Direct message IDs where the canvas appears |
|   ↳ `canvas_readtime` | number | Approximate read time for canvas content |
|   ↳ `is_channel_space` | boolean | Whether this canvas is linked to a channel |
|   ↳ `linked_channel_id` | string | Channel ID linked to this canvas |
|   ↳ `canvas_creator_id` | string | User ID of the canvas creator |
| `paging` | object | Pagination information from Slack |
|   ↳ `count` | number | Number of items requested per page |
|   ↳ `total` | number | Total number of matching files |
|   ↳ `page` | number | Current page number |
|   ↳ `pages` | number | Total number of pages |

### `slack_lookup_canvas_sections`

Find Slack canvas section IDs matching criteria for later edits

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `canvasId` | string | Yes | Canvas ID to search \(e.g., F1234ABCD\) |
| `criteria` | json | Yes | Section lookup criteria, such as \{"section_types":\["h1"\],"contains_text":"Roadmap"\} |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `sections` | array | Canvas sections matching the lookup criteria |
|   ↳ `id` | string | Canvas section identifier |

### `slack_delete_canvas`

Delete a Slack canvas by its canvas ID

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `canvasId` | string | Yes | Canvas ID to delete \(e.g., F1234ABCD\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `ok` | boolean | Whether Slack deleted the canvas successfully |

### `slack_create_conversation`

Create a new public or private channel in a Slack workspace.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `name` | string | Yes | Name of the channel to create \(lowercase, numbers, hyphens, underscores only; max 80 characters\) |
| `isPrivate` | boolean | No | Create a private channel instead of a public one \(default: false\) |
| `teamId` | string | No | Encoded team ID to create the channel in \(required if using an org token\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `channelInfo` | object | The newly created channel object |
|   ↳ `id` | string | Channel ID \(e.g., C1234567890\) |
|   ↳ `name` | string | Channel name without # prefix |
|   ↳ `is_channel` | boolean | Whether this is a channel |
|   ↳ `is_private` | boolean | Whether channel is private |
|   ↳ `is_archived` | boolean | Whether channel is archived |
|   ↳ `is_general` | boolean | Whether this is the general channel |
|   ↳ `is_member` | boolean | Whether the bot/user is a member |
|   ↳ `is_shared` | boolean | Whether channel is shared across workspaces |
|   ↳ `is_ext_shared` | boolean | Whether channel is externally shared |
|   ↳ `is_org_shared` | boolean | Whether channel is org-wide shared |
|   ↳ `num_members` | number | Number of members in the channel |
|   ↳ `topic` | string | Channel topic |
|   ↳ `purpose` | string | Channel purpose/description |
|   ↳ `created` | number | Unix timestamp when channel was created |
|   ↳ `creator` | string | User ID of channel creator |
|   ↳ `updated` | number | Unix timestamp of last update |

### `slack_invite_to_conversation`

Invite one or more users to a Slack channel. Supports up to 100 users at a time.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `channel` | string | Yes | The ID of the channel to invite users to |
| `users` | string | Yes | Comma-separated list of user IDs to invite \(up to 100\) |
| `force` | boolean | No | When true, continues inviting valid users while skipping invalid ones \(default: false\) |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `channelInfo` | object | The channel object after inviting users |
|   ↳ `id` | string | Channel ID \(e.g., C1234567890\) |
|   ↳ `name` | string | Channel name without # prefix |
|   ↳ `is_channel` | boolean | Whether this is a channel |
|   ↳ `is_private` | boolean | Whether channel is private |
|   ↳ `is_archived` | boolean | Whether channel is archived |
|   ↳ `is_general` | boolean | Whether this is the general channel |
|   ↳ `is_member` | boolean | Whether the bot/user is a member |
|   ↳ `is_shared` | boolean | Whether channel is shared across workspaces |
|   ↳ `is_ext_shared` | boolean | Whether channel is externally shared |
|   ↳ `is_org_shared` | boolean | Whether channel is org-wide shared |
|   ↳ `num_members` | number | Number of members in the channel |
|   ↳ `topic` | string | Channel topic |
|   ↳ `purpose` | string | Channel purpose/description |
|   ↳ `created` | number | Unix timestamp when channel was created |
|   ↳ `creator` | string | User ID of channel creator |
|   ↳ `updated` | number | Unix timestamp of last update |
| `errors` | array | Per-user errors when force is true and some invitations failed |
|   ↳ `user` | string | User ID that failed |
|   ↳ `ok` | boolean | Always false for error entries |
|   ↳ `error` | string | Error code for this user |

### `slack_open_view`

Open a modal view in Slack using a trigger_id from an interaction payload. Used to display forms, confirmations, and other interactive modals.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `triggerId` | string | Yes | Exchange a trigger to post to the user. Obtained from an interaction payload \(e.g., slash command, button click\) |
| `interactivityPointer` | string | No | Alternative to trigger_id for posting to user |
| `view` | json | Yes | A view payload object defining the modal. Must include type \("modal"\), title, and blocks array |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `view` | object | The opened modal view object |
|   ↳ `id` | string | Unique view identifier |
|   ↳ `team_id` | string | Workspace/team ID |
|   ↳ `type` | string | View type \(e.g., "modal"\) |
|   ↳ `title` | json | Plain text title object with type and text fields |
|     ↳ `type` | string | Text object type \(plain_text\) |
|     ↳ `text` | string | Title text content |
|   ↳ `submit` | json | Plain text submit button object |
|     ↳ `type` | string | Text object type \(plain_text\) |
|     ↳ `text` | string | Submit button text |
|   ↳ `close` | json | Plain text close button object |
|     ↳ `type` | string | Text object type \(plain_text\) |
|     ↳ `text` | string | Close button text |
|   ↳ `blocks` | array | Block Kit blocks in the view |
|     ↳ `type` | string | Block type \(section, divider, image, actions, etc.\) |
|     ↳ `block_id` | string | Unique block identifier |
|   ↳ `private_metadata` | string | Private metadata string passed with the view |
|   ↳ `callback_id` | string | Custom identifier for the view |
|   ↳ `external_id` | string | Custom external identifier \(max 255 chars, unique per workspace\) |
|   ↳ `state` | json | Current state of the view with input values |
|   ↳ `hash` | string | View version hash for updates |
|   ↳ `clear_on_close` | boolean | Whether to clear all views in the stack when this view is closed |
|   ↳ `notify_on_close` | boolean | Whether to send a view_closed event when this view is closed |
|   ↳ `root_view_id` | string | ID of the root view in the view stack |
|   ↳ `previous_view_id` | string | ID of the previous view in the view stack |
|   ↳ `app_id` | string | Application identifier |
|   ↳ `bot_id` | string | Bot identifier |

### `slack_update_view`

Update an existing modal view in Slack. Identify the view by view_id or external_id, and provide the updated view payload.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `viewId` | string | No | Unique identifier of the view to update. Either viewId or externalId is required |
| `externalId` | string | No | Developer-set unique identifier of the view to update \(max 255 chars\). Either viewId or externalId is required |
| `hash` | string | No | View state hash to protect against race conditions. Obtained from a previous views response |
| `view` | json | Yes | A view payload object defining the updated modal. Must include type \("modal"\), title, and blocks array. Use identical block_id and action_id values to preserve input data |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `view` | object | The updated modal view object |
|   ↳ `id` | string | Unique view identifier |
|   ↳ `team_id` | string | Workspace/team ID |
|   ↳ `type` | string | View type \(e.g., "modal"\) |
|   ↳ `title` | json | Plain text title object with type and text fields |
|     ↳ `type` | string | Text object type \(plain_text\) |
|     ↳ `text` | string | Title text content |
|   ↳ `submit` | json | Plain text submit button object |
|     ↳ `type` | string | Text object type \(plain_text\) |
|     ↳ `text` | string | Submit button text |
|   ↳ `close` | json | Plain text close button object |
|     ↳ `type` | string | Text object type \(plain_text\) |
|     ↳ `text` | string | Close button text |
|   ↳ `blocks` | array | Block Kit blocks in the view |
|     ↳ `type` | string | Block type \(section, divider, image, actions, etc.\) |
|     ↳ `block_id` | string | Unique block identifier |
|   ↳ `private_metadata` | string | Private metadata string passed with the view |
|   ↳ `callback_id` | string | Custom identifier for the view |
|   ↳ `external_id` | string | Custom external identifier \(max 255 chars, unique per workspace\) |
|   ↳ `state` | json | Current state of the view with input values |
|   ↳ `hash` | string | View version hash for updates |
|   ↳ `clear_on_close` | boolean | Whether to clear all views in the stack when this view is closed |
|   ↳ `notify_on_close` | boolean | Whether to send a view_closed event when this view is closed |
|   ↳ `root_view_id` | string | ID of the root view in the view stack |
|   ↳ `previous_view_id` | string | ID of the previous view in the view stack |
|   ↳ `app_id` | string | Application identifier |
|   ↳ `bot_id` | string | Bot identifier |

### `slack_push_view`

Push a new view onto an existing modal stack in Slack. Limited to 2 additional views after the initial modal is opened.

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `triggerId` | string | Yes | Exchange a trigger to post to the user. Obtained from an interaction payload \(e.g., button click within an existing modal\) |
| `interactivityPointer` | string | No | Alternative to trigger_id for posting to user |
| `view` | json | Yes | A view payload object defining the modal to push. Must include type \("modal"\), title, and blocks array |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `view` | object | The pushed modal view object |
|   ↳ `id` | string | Unique view identifier |
|   ↳ `team_id` | string | Workspace/team ID |
|   ↳ `type` | string | View type \(e.g., "modal"\) |
|   ↳ `title` | json | Plain text title object with type and text fields |
|     ↳ `type` | string | Text object type \(plain_text\) |
|     ↳ `text` | string | Title text content |
|   ↳ `submit` | json | Plain text submit button object |
|     ↳ `type` | string | Text object type \(plain_text\) |
|     ↳ `text` | string | Submit button text |
|   ↳ `close` | json | Plain text close button object |
|     ↳ `type` | string | Text object type \(plain_text\) |
|     ↳ `text` | string | Close button text |
|   ↳ `blocks` | array | Block Kit blocks in the view |
|     ↳ `type` | string | Block type \(section, divider, image, actions, etc.\) |
|     ↳ `block_id` | string | Unique block identifier |
|   ↳ `private_metadata` | string | Private metadata string passed with the view |
|   ↳ `callback_id` | string | Custom identifier for the view |
|   ↳ `external_id` | string | Custom external identifier \(max 255 chars, unique per workspace\) |
|   ↳ `state` | json | Current state of the view with input values |
|   ↳ `hash` | string | View version hash for updates |
|   ↳ `clear_on_close` | boolean | Whether to clear all views in the stack when this view is closed |
|   ↳ `notify_on_close` | boolean | Whether to send a view_closed event when this view is closed |
|   ↳ `root_view_id` | string | ID of the root view in the view stack |
|   ↳ `previous_view_id` | string | ID of the previous view in the view stack |
|   ↳ `app_id` | string | Application identifier |
|   ↳ `bot_id` | string | Bot identifier |

### `slack_publish_view`

Publish a static view to a user

#### Input

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `authMethod` | string | No | Authentication method: oauth or bot_token |
| `botToken` | string | No | Bot token for Custom Bot |
| `userId` | string | Yes | The user ID to publish the Home tab view to \(e.g., U0BPQUNTA\) |
| `hash` | string | No | View state hash to protect against race conditions. Obtained from a previous views response |
| `view` | json | Yes | A view payload object defining the Home tab. Must include type \("home"\) and blocks array |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `view` | object | The published Home tab view object |
|   ↳ `id` | string | Unique view identifier |
|   ↳ `team_id` | string | Workspace/team ID |
|   ↳ `type` | string | View type \(e.g., "modal"\) |
|   ↳ `title` | json | Plain text title object with type and text fields |
|     ↳ `type` | string | Text object type \(plain_text\) |
|     ↳ `text` | string | Title text content |
|   ↳ `submit` | json | Plain text submit button object |
|     ↳ `type` | string | Text object type \(plain_text\) |
|     ↳ `text` | string | Submit button text |
|   ↳ `close` | json | Plain text close button object |
|     ↳ `type` | string | Text object type \(plain_text\) |
|     ↳ `text` | string | Close button text |
|   ↳ `blocks` | array | Block Kit blocks in the view |
|     ↳ `type` | string | Block type \(section, divider, image, actions, etc.\) |
|     ↳ `block_id` | string | Unique block identifier |
|   ↳ `private_metadata` | string | Private metadata string passed with the view |
|   ↳ `callback_id` | string | Custom identifier for the view |
|   ↳ `external_id` | string | Custom external identifier \(max 255 chars, unique per workspace\) |
|   ↳ `state` | json | Current state of the view with input values |
|   ↳ `hash` | string | View version hash for updates |
|   ↳ `clear_on_close` | boolean | Whether to clear all views in the stack when this view is closed |
|   ↳ `notify_on_close` | boolean | Whether to send a view_closed event when this view is closed |
|   ↳ `root_view_id` | string | ID of the root view in the view stack |
|   ↳ `previous_view_id` | string | ID of the previous view in the view stack |
|   ↳ `app_id` | string | Application identifier |
|   ↳ `bot_id` | string | Bot identifier |


