# Slack tools (https://www.shipfox.io/docs/integrations/slack/tools)

Description: Look up the Slack tools, selectors, permissions, inputs, and outputs available to tool steps and agent steps.

This reference lists the shipped Slack tool catalog. See the [Slack
overview](https://www.shipfox.io/docs/integrations/slack) for authentication and setup.

## Tool catalog [#tool-catalog]

The catalog uses the Slack bot scopes required by each tool. Read tools inspect
workspace data. Write tools change messages, reactions, or canvases.

### Tools

#### `read_channel`

Read messages from a Slack channel in reverse chronological order (newest first). Reading direct message history needs the ID of that conversation, not the ID of the user on the other side.

**Access:** read.

**Sensitive:** No.

**Required permissions:** `read`

**Selector tokens:** `read_channel`

##### Input

| Field | Type | Required | Description |
|---|---|---|---|
| `channel_id` | string | Required | Channel, private group, or direct message conversation ID, such as C0ABC12345 or D0ABC12345. A user ID is not accepted here |
| `oldest` | string | Optional | Start of the time range, as a Slack timestamp |
| `latest` | string | Optional | End of the time range, as a Slack timestamp |
| `limit` | integer | Optional | Messages to return, 1 to 100 (default 100) |
| `cursor` | string | Optional | Pagination cursor from a previous request |

#### `read_thread`

Read a Slack thread: the parent message and all of its replies. Requires the channel ID and the timestamp of the parent message.

**Access:** read.

**Sensitive:** No.

**Required permissions:** `read`

**Selector tokens:** `read_thread`

##### Input

| Field | Type | Required | Description |
|---|---|---|---|
| `channel_id` | string | Required | Channel, private group, or direct message conversation ID, such as C0ABC12345 or D0ABC12345. A user ID is not accepted here |
| `message_ts` | string | Required | Timestamp of the parent message, such as 1234567890.123456 |
| `oldest` | string | Optional | Start of the time range, as a Slack timestamp |
| `latest` | string | Optional | End of the time range, as a Slack timestamp |
| `limit` | integer | Optional | Messages to return, 1 to 1000 (default 100) |
| `cursor` | string | Optional | Pagination cursor from a previous request |

#### `get_permalink`

Get a permanent link to a Slack message, including a reply in a thread. Requires the channel ID and the message timestamp.

**Access:** read.

**Sensitive:** No.

**Required permissions:** `read`

**Selector tokens:** `get_permalink`

##### Input

| Field | Type | Required | Description |
|---|---|---|---|
| `channel_id` | string | Required | Channel, private group, or direct message conversation ID, such as C0ABC12345 or D0ABC12345. A user ID is not accepted here |
| `message_ts` | string | Required | Timestamp of the message, such as 1234567890.123456 |

#### `read_channel_info`

Retrieve metadata for a single Slack channel by ID: name, topic, purpose, privacy, and archive status. Use this to learn what a channel is for before reading or posting. To read its messages, use read_channel instead.

**Access:** read.

**Sensitive:** No.

**Required permissions:** `read`

**Selector tokens:** `read_channel_info`

##### Input

| Field | Type | Required | Description |
|---|---|---|---|
| `channel_id` | string | Required | Channel, private group, or direct message conversation ID, such as C0ABC12345 or D0ABC12345. A user ID is not accepted here |
| `include_num_members` | boolean | Optional | Include the channel member count (default false) |

#### `read_channel_members`

List the user IDs of the members of a Slack channel. Pair it with read_user_profile to resolve a member to a name.

**Access:** read.

**Sensitive:** No.

**Required permissions:** `read`

**Selector tokens:** `read_channel_members`

##### Input

| Field | Type | Required | Description |
|---|---|---|---|
| `channel_id` | string | Required | Channel, private group, or direct message conversation ID, such as C0ABC12345 or D0ABC12345. A user ID is not accepted here |
| `limit` | integer | Optional | Members to return per page (default 100) |
| `cursor` | string | Optional | Pagination cursor from a previous request |

#### `read_user_profile`

Retrieve profile information for a Slack user, including contact details, status, timezone, and role.

**Access:** read.

**Sensitive:** No.

**Required permissions:** `read`

**Selector tokens:** `read_user_profile`

##### Input

| Field | Type | Required | Description |
|---|---|---|---|
| `user_id` | string | Required | Slack user ID, such as U0ABC12345 |
| `include_locale` | boolean | Optional | Include the user's locale information (default false) |

#### `search_channels`

Search the channels this integration can see, by name, topic, or purpose. Returns channel names, IDs, topics, purposes, and archive status. Names are typically lowercase with hyphens. Space-separated terms all have to match. Only the requested page is searched, so page through with the returned cursor when a channel is missing.

**Access:** read.

**Sensitive:** No.

**Required permissions:** `read`

**Selector tokens:** `search_channels`

##### Input

| Field | Type | Required | Description |
|---|---|---|---|
| `query` | string | Required | Search query for finding channels |
| `channel_types` | string | Optional | Comma-separated channel types: public_channel, private_channel. Defaults to public_channel |
| `include_archived` | boolean | Optional | Include archived channels in the results |
| `limit` | integer | Optional | Channels to scan per page (default 100) |
| `cursor` | string | Optional | Pagination cursor from a previous request |

#### `send_message`

Send a message to a Slack channel or user. To send a direct message, pass the user ID as the channel ID. Supports standard Markdown: bold, italic, strikethrough, links, lists, blockquotes, inline code, and code blocks. Returns the posted message timestamp.

**Access:** write.

**Sensitive:** No.

**Required permissions:** `write`

**Selector tokens:** `send_message`

##### Input

| Field | Type | Required | Description |
|---|---|---|---|
| `channel_id` | string | Required | Channel, private group, or direct message conversation ID. Pass a user ID to open a direct message with that user |
| `message` | string | Required | Message content, written as standard Markdown Maximum length 12,000. |
| `thread_ts` | string | Optional | Timestamp of the parent message to reply in its thread |
| `reply_broadcast` | boolean | Optional | Also send the thread reply to the channel |

#### `schedule_message`

Schedule a message for future delivery to a Slack channel. Does not send immediately. post_at has to be at least 2 minutes in the future and at most 120 days out. Once scheduled, the message cannot be edited.

**Access:** write.

**Sensitive:** No.

**Required permissions:** `write`

**Selector tokens:** `schedule_message`

##### Input

| Field | Type | Required | Description |
|---|---|---|---|
| `channel_id` | string | Required | Channel, private group, or direct message conversation ID. Pass a user ID to open a direct message with that user |
| `message` | string | Required | Message content, written as standard Markdown Maximum length 12,000. |
| `post_at` | integer | Required | Unix timestamp at which to send the message |
| `thread_ts` | string | Optional | Timestamp of the parent message to reply in its thread |
| `reply_broadcast` | boolean | Optional | Also send the thread reply to the channel |

#### `update_message`

Update an already posted Slack message, replacing its content. Supports the same standard Markdown as send_message.

**Access:** write.

**Sensitive:** No.

**Required permissions:** `write`

**Selector tokens:** `update_message`

##### Input

| Field | Type | Required | Description |
|---|---|---|---|
| `channel_id` | string | Required | Channel, private group, or direct message conversation ID, such as C0ABC12345 or D0ABC12345. A user ID is not accepted here |
| `message_ts` | string | Required | Timestamp of the message to update |
| `message` | string | Required | Message content, written as standard Markdown Maximum length 12,000. |

#### `add_reaction`

Add an emoji reaction to a Slack message.

**Access:** write.

**Sensitive:** No.

**Required permissions:** `write`

**Selector tokens:** `add_reaction`

##### Input

| Field | Type | Required | Description |
|---|---|---|---|
| `channel_id` | string | Required | Channel, private group, or direct message conversation ID, such as C0ABC12345 or D0ABC12345. A user ID is not accepted here |
| `message_ts` | string | Required | Timestamp of the message to react to |
| `emoji` | string | Required | Emoji name without the surrounding colons, such as white_check_mark |

#### `create_canvas`

Create a standalone Slack canvas from Markdown and return its ID. Not available on free teams.

**Access:** write.

**Sensitive:** No.

**Required permissions:** `write`

**Selector tokens:** `create_canvas`

##### Input

| Field | Type | Required | Description |
|---|---|---|---|
| `title` | string | Required | Concise, descriptive canvas name. Do not repeat it in the content |
| `content` | string | Required | Canvas body, written as standard Markdown |