Slack
Connect to Slack workspace. Send Messages as Bots or on behalf of users
Connect to Slack workspace. Send Messages as Bots or on behalf of users
Supports authentication: OAuth 2.0
Set up the agent connector
Section titled “Set up the agent connector”Register your Scalekit environment with the Slack connector so Scalekit handles the authentication flow and token lifecycle for you. The connection name you create will be used to identify and invoke the connection programmatically. Then complete the configuration in your application as follows:
-
Set up auth redirects
-
In Scalekit dashboard, go to Agent Auth → Create Connection. Find Slack and click Create. Copy the redirect URI. It looks like
https://<SCALEKIT_ENVIRONMENT_URL>/sso/v1/oauth/<CONNECTION_ID>/callback. -
Log in to api.slack.com/apps and click Create New App.
-
Select From scratch, enter an app name, and select your workspace.
-
Go to OAuth & Permissions and scroll to Redirect URLs.
-
Click Add New Redirect URL and paste the redirect URI from Scalekit. Click Add.

-
-
Enable distribution
-
In your Slack app settings, go to Manage Distribution and enable it.

-
From Basic Information, copy the Client ID and Client Secret.
-
-
Add credentials in Scalekit
-
In Scalekit dashboard, go to Agent Auth → Connections and open the connection you created.
-
Enter your credentials:
- Client ID
- Client Secret
- Permissions (scopes — see Slack Scopes documentation)
-
Click Save.
-
Tool list
Section titled “Tool list”slack_add_reaction
Section titled “slack_add_reaction”Add an emoji reaction to a message in Slack. Requires a valid Slack OAuth2 connection with reactions:write scope.
| Name | Type | Required | Description |
|---|---|---|---|
channel | string | Yes | Channel ID or channel name where the message exists |
name | string | Yes | Emoji name to react with (without colons) |
timestamp | string | Yes | Timestamp of the message to add reaction to |
slack_create_channel
Section titled “slack_create_channel”Creates a new public or private channel in a Slack workspace. Requires a valid Slack OAuth2 connection with channels:manage scope for public channels or groups:write scope for private channels.
| Name | Type | Required | Description |
|---|---|---|---|
is_private | boolean | No | Create a private channel instead of public |
name | string | Yes | Name of the channel to create (without # prefix) |
team_id | string | No | Encoded team ID to create channel in (if using org tokens) |
slack_delete_message
Section titled “slack_delete_message”Deletes a message from a Slack channel or direct message. Requires a valid Slack OAuth2 connection with chat:write scope.
| Name | Type | Required | Description |
|---|---|---|---|
channel | string | Yes | Channel ID, channel name (#general), or user ID for DM where the message was sent |
ts | string | Yes | Timestamp of the message to delete |
slack_fetch_conversation_history
Section titled “slack_fetch_conversation_history”Fetches conversation history from a Slack channel or direct message with pagination support. Requires a valid Slack OAuth2 connection with channels:history scope.
| Name | Type | Required | Description |
|---|---|---|---|
channel | string | Yes | Channel ID, channel name (#general), or user ID for DM |
cursor | string | No | Paginate through collections by cursor for pagination |
latest | string | No | End of time range of messages to include in results |
limit | integer | No | Number of messages to return (1-1000, default 100) |
oldest | string | No | Start of time range of messages to include in results |
slack_get_conversation_info
Section titled “slack_get_conversation_info”Retrieve information about a Slack channel, including metadata, settings, and member count. Requires a valid Slack OAuth2 connection with channels:read scope.
| Name | Type | Required | Description |
|---|---|---|---|
channel | string | Yes | Channel ID, channel name (#general), or user ID for DM |
include_locale | boolean | No | Set to true to include the locale for this conversation |
include_num_members | boolean | No | Set to true to include the member count for the conversation |
slack_get_conversation_replies
Section titled “slack_get_conversation_replies”Retrieve replies to a specific message thread in a Slack channel or direct message. Requires a valid Slack OAuth2 connection with channels:history or groups:history scope.
| Name | Type | Required | Description |
|---|---|---|---|
channel | string | Yes | Channel ID, channel name (#general), or user ID for DM |
cursor | string | No | Pagination cursor for retrieving next page of results |
inclusive | boolean | No | Include messages with latest or oldest timestamp in results |
latest | string | No | End of time range of messages to include in results |
limit | integer | No | Number of messages to return (default 100, max 1000) |
oldest | string | No | Start of time range of messages to include in results |
ts | string | Yes | Timestamp of the parent message to get replies for |
slack_get_user_info
Section titled “slack_get_user_info”Retrieves detailed information about a specific Slack user, including profile data, status, and workspace information. Requires a valid Slack OAuth2 connection with users:read scope.
| Name | Type | Required | Description |
|---|---|---|---|
include_locale | boolean | No | Set to true to include locale information for the user |
user | string | Yes | User ID to get information about |
slack_get_user_presence
Section titled “slack_get_user_presence”Gets the current presence status of a Slack user (active, away, etc.). Indicates whether the user is currently online and available. Requires a valid Slack OAuth2 connection with users:read scope.
| Name | Type | Required | Description |
|---|---|---|---|
user | string | Yes | User ID to check presence for |
slack_invite_users_to_channel
Section titled “slack_invite_users_to_channel”Invites one or more users to a Slack channel. Requires a valid Slack OAuth2 connection with channels:write scope for public channels or groups:write for private channels.
| Name | Type | Required | Description |
|---|---|---|---|
channel | string | Yes | Channel ID or channel name (#general) to invite users to |
users | string | Yes | Comma-separated list of user IDs to invite to the channel |
slack_join_conversation
Section titled “slack_join_conversation”Joins an existing Slack channel. The authenticated user will become a member of the channel. Requires a valid Slack OAuth2 connection with channels:write scope for public channels.
| Name | Type | Required | Description |
|---|---|---|---|
channel | string | Yes | Channel ID or channel name (#general) to join |
slack_leave_conversation
Section titled “slack_leave_conversation”Leaves a Slack channel. The authenticated user will be removed from the channel and will no longer receive messages from it. Requires a valid Slack OAuth2 connection with channels:write scope for public channels or groups:write for private channels.
| Name | Type | Required | Description |
|---|---|---|---|
channel | string | Yes | Channel ID or channel name (#general) to leave |
slack_list_channels
Section titled “slack_list_channels”List all public and private channels in a Slack workspace that the authenticated user has access to. Requires a valid Slack OAuth2 connection with channels:read, groups:read, mpim:read, and/or im:read scopes depending on conversation types needed.
| Name | Type | Required | Description |
|---|---|---|---|
cursor | string | No | Pagination cursor for retrieving next page of results |
exclude_archived | boolean | No | Exclude archived channels from the list |
limit | integer | No | Number of channels to return (default 100, max 1000) |
team_id | string | No | Encoded team ID to list channels for (optional) |
types | string | No | Mix and match channel types (public_channel, private_channel, mpim, im) |
slack_list_users
Section titled “slack_list_users”Lists all users in a Slack workspace, including information about their status, profile, and presence. Requires a valid Slack OAuth2 connection with users:read scope.
| Name | Type | Required | Description |
|---|---|---|---|
cursor | string | No | Pagination cursor for fetching additional pages of users |
include_locale | boolean | No | Set to true to include locale information for each user |
limit | number | No | Number of users to return (1-1000) |
team_id | string | No | Encoded team ID to list users for (if using org tokens) |
slack_lookup_user_by_email
Section titled “slack_lookup_user_by_email”Find a user by their registered email address in a Slack workspace. Requires a valid Slack OAuth2 connection with users:read.email scope. Cannot be used by custom bot users.
| Name | Type | Required | Description |
|---|---|---|---|
email | string | Yes | Email address to search for users by |
slack_pin_message
Section titled “slack_pin_message”Pin a message to a Slack channel. Pinned messages are highlighted and easily accessible to channel members. Requires a valid Slack OAuth2 connection with pins:write scope.
| Name | Type | Required | Description |
|---|---|---|---|
channel | string | Yes | Channel ID or channel name where the message exists |
timestamp | string | Yes | Timestamp of the message to pin |
slack_send_message
Section titled “slack_send_message”Sends a message to a Slack channel or direct message. Requires a valid Slack OAuth2 connection with chat:write scope.
| Name | Type | Required | Description |
|---|---|---|---|
attachments | string | No | JSON-encoded array of attachment objects for additional message formatting |
blocks | string | No | JSON-encoded array of Block Kit block elements for rich message formatting |
channel | string | Yes | Channel ID, channel name (#general), or user ID for DM |
reply_broadcast | boolean | No | Used in conjunction with thread_ts to broadcast reply to channel |
schema_version | string | No | Optional schema version to use for tool execution |
text | string | Yes | Message text content |
thread_ts | string | No | Timestamp of parent message to reply in thread |
tool_version | string | No | Optional tool version to use for execution |
unfurl_links | boolean | No | Enable or disable link previews |
unfurl_media | boolean | No | Enable or disable media link previews |
slack_set_user_status
Section titled “slack_set_user_status”Set the user’s custom status with text and emoji. This appears in their profile and can include an expiration time. Requires a valid Slack OAuth2 connection with users.profile:write scope.
| Name | Type | Required | Description |
|---|---|---|---|
status_emoji | string | No | Emoji to display with status (without colons) |
status_expiration | integer | No | Unix timestamp when status should expire |
status_text | string | No | Status text to display |
slack_update_message
Section titled “slack_update_message”Updates/edits a previously sent message in a Slack channel or direct message. Requires a valid Slack OAuth2 connection with chat:write scope.
| Name | Type | Required | Description |
|---|---|---|---|
attachments | string | No | JSON-encoded array of attachment objects for additional message formatting |
blocks | string | No | JSON-encoded array of Block Kit block elements for rich message formatting |
channel | string | Yes | Channel ID, channel name (#general), or user ID for DM where the message was sent |
text | string | No | New message text content |
ts | string | Yes | Timestamp of the message to update |