Skip to content
Scalekit Docs
Talk to an EngineerDashboard

Slack connector

OAuth 2.0CommunicationCollaboration

Connect to Slack workspace. Send Messages as Bots or on behalf of users

Slack connector

  1. Terminal window
    npm install @scalekit-sdk/node

    Full SDK reference: Node.js | Python

  2. Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Register your Slack credentials with Scalekit so it handles the token lifecycle. You do this once per environment.

    Dashboard setup steps

    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:

    1. Set up auth redirects

      • In Scalekit dashboard, go to AgentKit > Connections > Create Connection. Find Slack and click Create. Copy the redirect URI. It looks like https://<SCALEKIT_ENVIRONMENT_URL>/sso/v1/oauth/<CONNECTION_ID>/callback.

        Copy redirect URI from Scalekit dashboard

      • 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.

        Add redirect URL in Slack

    2. Enable distribution

      • In your Slack app settings, go to Manage Distribution.

      • Under Share Your App with Other Workspaces, complete the checklist Slack shows for your app. This can include accepting Slack’s distribution agreement, adding support and privacy URLs, and confirming that the redirect URL you added above is valid.

      • Click Activate Public Distribution.

        Slack app distribution must be active before users can authorize the app from external workspaces. If distribution is not active, OAuth can succeed in your development workspace but fail when a user tries to connect a second workspace.

        Enable Slack app distribution

      • From Basic Information, copy the Client ID and Client Secret.

    3. Add credentials in Scalekit

      • In Scalekit dashboard, go to AgentKit > Connections and open the connection you created.

      Choose Bot scope for most agents, including agents that read channel history or send messages as your Slack app. Bot scope makes the agent act as the Slack app or bot; use User scope only when the agent must act as the authorizing Slack user.

  4. quickstart.ts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENV_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'slack'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Slack:', link)
    process.stdout.write('Press Enter after authorizing...')
    await new Promise(r => process.stdin.once('data', r))
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'slack_get_bot_info',
    toolInput: {},
    })
    console.log(result)

Connect this agent connector to let your agent:

  • Send messages — post to channels, DMs, and threads on behalf of your users
  • Read conversations — retrieve channel history, thread replies, and direct messages
  • Manage channels — create channels, invite members, and update channel settings
  • Look up users — search for team members by name, email, or username
  • Upload files — share files and attachments into any conversation
Proxy API call
const result = await actions.request({
connectionName: 'slack',
identifier: 'user_123',
path: '/api/auth.test',
method: 'POST',
});
console.log(result);
// If you use slack_fetch_conversation_history, message text can contain
// Slack mention tokens like <@U09NZ1V7KPF>. Resolve the user ID with
// slack_get_user_info before showing messages to end users.
Execute a tool
const result = await actions.executeTool({
connector: 'slack',
identifier: 'user_123',
toolName: 'slack_add_reaction',
toolInput: {},
});
console.log(result);

Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.

slack_add_bookmark#Add a bookmark to a Slack channel, such as a link. Requires a valid Slack OAuth2 connection with the bookmarks:write scope.6 params

Add a bookmark to a Slack channel, such as a link. Requires a valid Slack OAuth2 connection with the bookmarks:write scope.

NameTypeRequiredDescription
channel_idstringrequiredChannel to add the bookmark to.
titlestringrequiredTitle for the bookmark.
typestringrequiredType of the bookmark, e.g. 'link'.
emojistringoptionalEmoji to display alongside the bookmark, e.g. ':pushpin:'.
entity_idstringoptionalID of the entity being bookmarked. Only applies to 'message' or 'file' bookmark types.
linkstringoptionalURL to bookmark. Required when type is 'link'.
slack_add_reaction#Add an emoji reaction to a message in Slack. Requires a valid Slack OAuth2 connection with reactions:write scope.3 params

Add an emoji reaction to a message in Slack. Requires a valid Slack OAuth2 connection with reactions:write scope.

NameTypeRequiredDescription
channelstringrequiredChannel ID or channel name where the message exists
namestringrequiredEmoji name to react with (without colons)
timestampstringrequiredTimestamp of the message to add reaction to
slack_add_reminder#Create a Slack reminder for a user. Requires a valid Slack OAuth2 connection with the reminders:write scope.3 params

Create a Slack reminder for a user. Requires a valid Slack OAuth2 connection with the reminders:write scope.

NameTypeRequiredDescription
textstringrequiredThe content of the reminder.
timestringrequiredWhen this reminder should happen: a UNIX timestamp, the number of seconds until the reminder, or a natural-language string like 'in 15 minutes' or 'every Thursday'.
userstringoptionalThe user who will receive the reminder. Defaults to the reminder's creator if omitted.
slack_archive_conversation#Archive a public or private Slack channel. Requires a valid Slack OAuth2 connection with the conversations:write scope.1 param

Archive a public or private Slack channel. Requires a valid Slack OAuth2 connection with the conversations:write scope.

NameTypeRequiredDescription
channelstringrequiredID of the conversation to archive.
slack_auth_test#Verify the current Slack connection's authentication and identity. Returns the connected team, user, and bot identity for the active token.0 params

Verify the current Slack connection's authentication and identity. Returns the connected team, user, and bot identity for the active token.

slack_close_conversation#Close a direct message or multi-person direct message conversation in Slack. Requires a valid Slack OAuth2 connection with the im:write or mpim:write scope.1 param

Close a direct message or multi-person direct message conversation in Slack. Requires a valid Slack OAuth2 connection with the im:write or mpim:write scope.

NameTypeRequiredDescription
channelstringrequiredConversation to close.
slack_complete_reminder#Mark a Slack reminder as complete. Requires a valid Slack OAuth2 connection with the reminders:write scope.1 param

Mark a Slack reminder as complete. Requires a valid Slack OAuth2 connection with the reminders:write scope.

NameTypeRequiredDescription
reminderstringrequiredThe ID of the reminder to mark as complete.
slack_complete_upload_external#Step 2 of Slack's current file-upload flow: finalize file(s) previously uploaded to the URL returned by slack_get_upload_url_external, and optionally share them to a channel or thread. Requires a valid Slack OAuth2 connection with the files:write scope.4 params

Step 2 of Slack's current file-upload flow: finalize file(s) previously uploaded to the URL returned by slack_get_upload_url_external, and optionally share them to a channel or thread. Requires a valid Slack OAuth2 connection with the files:write scope.

NameTypeRequiredDescription
filesarrayrequiredArray of uploaded files to finalize. Each item must have 'id' (the file_id from slack_get_upload_url_external) and may include 'title'.
channel_idstringoptionalChannel ID to share the completed files to.
initial_commentstringoptionalMessage text to introduce the uploaded file(s) with.
thread_tsstringoptionalTimestamp of the parent message, to share the file(s) as a threaded reply.
slack_create_canvas#Create a new standalone Canvas, or one tabbed in a channel. The entire Canvases feature is otherwise uncovered by this connector. Requires a valid Slack OAuth2 connection with the canvases:write scope.3 params

Create a new standalone Canvas, or one tabbed in a channel. The entire Canvases feature is otherwise uncovered by this connector. Requires a valid Slack OAuth2 connection with the canvases:write scope.

NameTypeRequiredDescription
channel_idstringoptionalChannel ID to tab this canvas in. Required for free/standard workspaces to create a canvas.
document_contentobjectoptionalStructure describing the initial content, e.g. {"type": "markdown", "markdown": "# Hello"}. Markdown content is limited to 1 MiB.
titlestringoptionalTitle of the newly created canvas.
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.3 params

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.

NameTypeRequiredDescription
namestringrequiredName of the channel to create (without # prefix)
is_privatebooleanoptionalCreate a private channel instead of public
team_idstringoptionalEncoded team ID to create channel in (if using org tokens)
slack_create_usergroup#Create a new Slack User Group (@handle group) for mentioning a set of users at once. Requires a valid Slack OAuth2 connection with the usergroups:write scope.5 params

Create a new Slack User Group (@handle group) for mentioning a set of users at once. Requires a valid Slack OAuth2 connection with the usergroups:write scope.

NameTypeRequiredDescription
namestringrequiredA name for the User Group. Must be unique among User Groups.
channelsstringoptionalComma-separated string of encoded channel IDs the User Group uses as its default channels.
descriptionstringoptionalA short description of the User Group.
handlestringoptionalA mention handle. Must be unique among channels, users, and User Groups.
include_countbooleanoptionalInclude the number of users in the User Group in the response.
slack_delete_file#Delete a file uploaded to Slack. Requires a valid Slack OAuth2 connection with the files:write scope.1 param

Delete a file uploaded to Slack. Requires a valid Slack OAuth2 connection with the files:write scope.

NameTypeRequiredDescription
filestringrequiredID of the file to delete.
slack_delete_message#Deletes a message from a Slack channel or direct message. Requires a valid Slack OAuth2 connection with chat:write scope.2 params

Deletes a message from a Slack channel or direct message. Requires a valid Slack OAuth2 connection with chat:write scope.

NameTypeRequiredDescription
channelstringrequiredChannel ID, channel name (#general), or user ID for DM where the message was sent
tsstringrequiredTimestamp of the message to delete
slack_delete_reminder#Delete a Slack reminder. Requires a valid Slack OAuth2 connection with the reminders:write scope.1 param

Delete a Slack reminder. Requires a valid Slack OAuth2 connection with the reminders:write scope.

NameTypeRequiredDescription
reminderstringrequiredThe ID of the reminder to delete.
slack_delete_scheduled_message#Delete a pending scheduled message from the queue before it is sent. Requires a valid Slack OAuth2 connection with the chat:write scope.3 params

Delete a pending scheduled message from the queue before it is sent. Requires a valid Slack OAuth2 connection with the chat:write scope.

NameTypeRequiredDescription
channelstringrequiredThe channel the scheduled message is posting to.
scheduled_message_idstringrequiredThe scheduled_message_id returned from a prior call to slack_schedule_rich_message.
as_userbooleanoptionalPass true to delete the message as the authed user, requires the chat:write:user scope.
slack_disable_usergroup#Disable an existing Slack User Group. Requires a valid Slack OAuth2 connection with the usergroups:write scope.2 params

Disable an existing Slack User Group. Requires a valid Slack OAuth2 connection with the usergroups:write scope.

NameTypeRequiredDescription
usergroupstringrequiredThe encoded ID of the User Group to disable.
include_countbooleanoptionalInclude the number of users in the User Group in the response.
slack_edit_bookmark#Edit an existing Slack channel bookmark's title, link, or emoji. Requires a valid Slack OAuth2 connection with the bookmarks:write scope.5 params

Edit an existing Slack channel bookmark's title, link, or emoji. Requires a valid Slack OAuth2 connection with the bookmarks:write scope.

NameTypeRequiredDescription
bookmark_idstringrequiredID of the bookmark to update.
channel_idstringrequiredChannel where the bookmark resides.
emojistringoptionalNew emoji to associate with the bookmark, e.g. ':pushpin:'.
linkstringoptionalNew URL for the bookmark.
titlestringoptionalNew display title for the bookmark.
slack_enable_usergroup#Enable a previously disabled Slack User Group. Requires a valid Slack OAuth2 connection with the usergroups:write scope.2 params

Enable a previously disabled Slack User Group. Requires a valid Slack OAuth2 connection with the usergroups:write scope.

NameTypeRequiredDescription
usergroupstringrequiredThe encoded ID of the User Group to enable.
include_countbooleanoptionalInclude the number of users in the User Group in the response.
slack_end_dnd_snooze#End the current Slack user's active Do Not Disturb snooze early. Requires a valid Slack OAuth2 connection with the dnd:write scope.0 params

End the current Slack user's active Do Not Disturb snooze early. Requires a valid Slack OAuth2 connection with the dnd:write scope.

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.5 params

Fetches conversation history from a Slack channel or direct message with pagination support. Requires a valid Slack OAuth2 connection with channels:history scope.

NameTypeRequiredDescription
channelstringrequiredChannel ID, channel name (#general), or user ID for DM
cursorstringoptionalPaginate through collections by cursor for pagination
lateststringoptionalEnd of time range of messages to include in results
limitintegeroptionalNumber of messages to return (1-1000, default 100)
oldeststringoptionalStart of time range of messages to include in results
slack_get_bot_info#Retrieve information about a bot user in Slack, such as its name and icons. Requires a valid Slack OAuth2 connection with the users:read scope.1 param

Retrieve information about a bot user in Slack, such as its name and icons. Requires a valid Slack OAuth2 connection with the users:read scope.

NameTypeRequiredDescription
botstringoptionalBot user to get info on. Defaults to the calling bot's own identity if omitted.
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.3 params

Retrieve information about a Slack channel, including metadata, settings, and member count. Requires a valid Slack OAuth2 connection with channels:read scope.

NameTypeRequiredDescription
channelstringrequiredChannel ID, channel name (#general), or user ID for DM
include_localebooleanoptionalSet to true to include the locale for this conversation
include_num_membersbooleanoptionalSet to true to include the member count for the conversation
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.7 params

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.

NameTypeRequiredDescription
channelstringrequiredChannel ID, channel name (#general), or user ID for DM
tsstringrequiredTimestamp of the parent message to get replies for
cursorstringoptionalPagination cursor for retrieving next page of results
inclusivebooleanoptionalInclude messages with latest or oldest timestamp in results
lateststringoptionalEnd of time range of messages to include in results
limitintegeroptionalNumber of messages to return (default 100, max 1000)
oldeststringoptionalStart of time range of messages to include in results
slack_get_dnd_info#Retrieve a Slack user's current Do Not Disturb status, including whether it is active and when it ends. Requires a valid Slack OAuth2 connection with the dnd:read scope.1 param

Retrieve a Slack user's current Do Not Disturb status, including whether it is active and when it ends. Requires a valid Slack OAuth2 connection with the dnd:read scope.

NameTypeRequiredDescription
userstringoptionalUser to fetch Do Not Disturb status for. Defaults to the authenticated user.
slack_get_file_info#Retrieve metadata and comments for a specific file shared in Slack. Requires a valid Slack OAuth2 connection with the files:read scope.3 params

Retrieve metadata and comments for a specific file shared in Slack. Requires a valid Slack OAuth2 connection with the files:read scope.

NameTypeRequiredDescription
filestringrequiredSpecify a file by providing its ID.
cursorstringoptionalPagination cursor from a previous call's response_metadata.next_cursor.
limitintegeroptionalThe maximum number of items to return.
slack_get_reactions#Get the emoji reactions on a Slack message, file, or file comment. Requires a valid Slack OAuth2 connection with the reactions:read scope.5 params

Get the emoji reactions on a Slack message, file, or file comment. Requires a valid Slack OAuth2 connection with the reactions:read scope.

NameTypeRequiredDescription
channelstringoptionalChannel where the message to get reactions for was posted. Required when looking up a message.
filestringoptionalFile to get reactions for.
file_commentstringoptionalFile comment to get reactions for.
fullbooleanoptionalIf true, always return the complete reaction list.
timestampstringoptionalTimestamp of the message to get reactions for. Required when looking up a message.
slack_get_reminder_info#Retrieve details about a specific Slack reminder by its ID. Requires a valid Slack OAuth2 connection with the reminders:read scope.1 param

Retrieve details about a specific Slack reminder by its ID. Requires a valid Slack OAuth2 connection with the reminders:read scope.

NameTypeRequiredDescription
reminderstringrequiredThe ID of the reminder to look up.
slack_get_team_dnd_info#Retrieve the Do Not Disturb status for up to 50 users on a Slack team at once. Requires a valid Slack OAuth2 connection with the dnd:read scope.1 param

Retrieve the Do Not Disturb status for up to 50 users on a Slack team at once. Requires a valid Slack OAuth2 connection with the dnd:read scope.

NameTypeRequiredDescription
usersstringrequiredComma-separated list of user IDs to fetch Do Not Disturb status for (up to 50).
slack_get_team_info#Retrieve information about the current Slack team/workspace, such as its name, domain, and icon. Requires a valid Slack OAuth2 connection with the team:read scope.1 param

Retrieve information about the current Slack team/workspace, such as its name, domain, and icon. Requires a valid Slack OAuth2 connection with the team:read scope.

NameTypeRequiredDescription
teamstringoptionalTeam to get info on. If omitted, returns information about the current team.
slack_get_upload_url_external#Step 1 of Slack's current file-upload flow: request an upload URL and file ID for a given filename and size. Use slack_complete_upload_external afterward to finalize and share the uploaded file. The classic files.upload method was sunset on 2025-11-12; this is the only way to upload new file content today. Requires a valid Slack OAuth2 connection with the files:write scope.4 params

Step 1 of Slack's current file-upload flow: request an upload URL and file ID for a given filename and size. Use slack_complete_upload_external afterward to finalize and share the uploaded file. The classic files.upload method was sunset on 2025-11-12; this is the only way to upload new file content today. Requires a valid Slack OAuth2 connection with the files:write scope.

NameTypeRequiredDescription
filenamestringrequiredName of the file being uploaded.
lengthintegerrequiredSize of the file to upload, in bytes.
alt_txtstringoptionalDescription of the image for accessibility, max 1000 characters.
snippet_typestringoptionalSyntax type of the snippet being uploaded, if any (e.g. python, json).
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.2 params

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.

NameTypeRequiredDescription
userstringrequiredUser ID to get information about
include_localebooleanoptionalSet to true to include locale information for the user
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.1 param

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.

NameTypeRequiredDescription
userstringrequiredUser ID to check presence for
slack_get_user_profile#Retrieve detailed profile information for a Slack user, including custom profile fields. Requires a valid Slack OAuth2 connection with the users.profile:read scope.2 params

Retrieve detailed profile information for a Slack user, including custom profile fields. Requires a valid Slack OAuth2 connection with the users.profile:read scope.

NameTypeRequiredDescription
include_labelsbooleanoptionalInclude labels for each custom profile field ID.
userstringoptionalUser to retrieve profile info for. Defaults to the authenticated user if omitted.
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.2 params

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.

NameTypeRequiredDescription
channelstringrequiredChannel ID or channel name (#general) to invite users to
usersstringrequiredComma-separated list of user IDs to invite to the channel
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.1 param

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.

NameTypeRequiredDescription
channelstringrequiredChannel ID or channel name (#general) to join
slack_kick_from_conversation#Remove a user from a Slack conversation. Requires a valid Slack OAuth2 connection with the conversations:write scope.2 params

Remove a user from a Slack conversation. Requires a valid Slack OAuth2 connection with the conversations:write scope.

NameTypeRequiredDescription
channelstringrequiredID of the conversation to remove the user from.
userstringrequiredUser ID to be removed.
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.1 param

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.

NameTypeRequiredDescription
channelstringrequiredChannel ID or channel name (#general) to leave
slack_list_bookmarks#List the bookmarks on a Slack channel. Requires a valid Slack OAuth2 connection with the bookmarks:read scope.1 param

List the bookmarks on a Slack channel. Requires a valid Slack OAuth2 connection with the bookmarks:read scope.

NameTypeRequiredDescription
channel_idstringrequiredChannel whose bookmarks should be listed.
slack_list_channel_members#List the member user IDs of a Slack channel. Requires a valid Slack OAuth2 connection with channels:read (public) or groups:read (private) scope.3 params

List the member user IDs of a Slack channel. Requires a valid Slack OAuth2 connection with channels:read (public) or groups:read (private) scope.

NameTypeRequiredDescription
channelstringrequiredChannel ID or channel name to list members for
cursorstringoptionalPagination cursor from a previous response's response_metadata.next_cursor
limitintegeroptionalMaximum number of members to return per page
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.5 params

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.

NameTypeRequiredDescription
cursorstringoptionalPagination cursor for retrieving next page of results
exclude_archivedbooleanoptionalExclude archived channels from the list
limitintegeroptionalNumber of channels to return (default 100, max 1000)
team_idstringoptionalEncoded team ID to list channels for (optional)
typesstringoptionalMix and match channel types (public_channel, private_channel, mpim, im)
slack_list_emoji#List the custom emoji available for a Slack team. Requires a valid Slack OAuth2 connection with the emoji:read scope.0 params

List the custom emoji available for a Slack team. Requires a valid Slack OAuth2 connection with the emoji:read scope.

slack_list_files#List files shared in a Slack workspace, optionally filtered by user, channel, file type, or a time range. Requires a valid Slack OAuth2 connection with the files:read scope.7 params

List files shared in a Slack workspace, optionally filtered by user, channel, file type, or a time range. Requires a valid Slack OAuth2 connection with the files:read scope.

NameTypeRequiredDescription
channelstringoptionalFilter files appearing in a specific channel, indicated by its ID.
countintegeroptionalNumber of items to return per page.
pageintegeroptionalPage number of results to return.
ts_fromstringoptionalFilter files created after this UNIX timestamp (inclusive).
ts_tostringoptionalFilter files created before this UNIX timestamp (inclusive).
typesstringoptionalComma-separated list of file types to filter by (e.g., images, pdfs, docs).
userstringoptionalFilter files created by a single user.
slack_list_pinned_items#List the messages and files pinned to a Slack channel. Requires a valid Slack OAuth2 connection with the pins:read scope.1 param

List the messages and files pinned to a Slack channel. Requires a valid Slack OAuth2 connection with the pins:read scope.

NameTypeRequiredDescription
channelstringrequiredChannel to get pinned items for.
slack_list_reactions#List all items (messages, files, file comments) that a Slack user has reacted to. Requires a valid Slack OAuth2 connection with the reactions:read scope.4 params

List all items (messages, files, file comments) that a Slack user has reacted to. Requires a valid Slack OAuth2 connection with the reactions:read scope.

NameTypeRequiredDescription
cursorstringoptionalPagination cursor from a previous call's response_metadata.next_cursor.
fullbooleanoptionalIf true, always return the complete reaction list for each item.
limitintegeroptionalThe maximum number of items to return.
userstringoptionalShow reactions made by this user. Defaults to the authenticated user.
slack_list_reminders#List all reminders created by or for the authenticated Slack user. Requires a valid Slack OAuth2 connection with the reminders:read scope.0 params

List all reminders created by or for the authenticated Slack user. Requires a valid Slack OAuth2 connection with the reminders:read scope.

slack_list_scheduled_messages#Return a list of messages that are scheduled to be sent to Slack channels, optionally filtered by channel and time range.5 params

Return a list of messages that are scheduled to be sent to Slack channels, optionally filtered by channel and time range.

NameTypeRequiredDescription
channelstringoptionalThe channel of the scheduled messages. Omit to list across all channels.
cursorstringoptionalPagination cursor from a previous call's response_metadata.next_cursor.
lateststringoptionalA UNIX timestamp of the latest value in the time range.
limitintegeroptionalMaximum number of original entries to return.
oldeststringoptionalA UNIX timestamp of the oldest value in the time range.
slack_list_user_conversations#List conversations a specific user is a member of, optionally filtered by channel type. Requires a valid Slack OAuth2 connection with the conversations:read scope.5 params

List conversations a specific user is a member of, optionally filtered by channel type. Requires a valid Slack OAuth2 connection with the conversations:read scope.

NameTypeRequiredDescription
cursorstringoptionalPagination cursor from a previous call's next_cursor value.
exclude_archivedbooleanoptionalSet to true to exclude archived channels from the list.
limitintegeroptionalThe maximum number of items to return.
typesstringoptionalComma-separated list of channel types to include (public_channel, private_channel, mpim, im).
userstringoptionalBrowse conversations by a specific user ID's membership. Defaults to the authenticated user if omitted.
slack_list_usergroup_users#List all users belonging to a Slack User Group. Requires a valid Slack OAuth2 connection with the usergroups:read scope.2 params

List all users belonging to a Slack User Group. Requires a valid Slack OAuth2 connection with the usergroups:read scope.

NameTypeRequiredDescription
usergroupstringrequiredThe encoded ID of the User Group to list members for.
include_disabledbooleanoptionalAllow results for disabled User Groups.
slack_list_usergroups#List all User Groups (@handle groups) for a Slack team. Requires a valid Slack OAuth2 connection with the usergroups:read scope.3 params

List all User Groups (@handle groups) for a Slack team. Requires a valid Slack OAuth2 connection with the usergroups:read scope.

NameTypeRequiredDescription
include_countbooleanoptionalInclude the number of users in each User Group.
include_disabledbooleanoptionalInclude disabled User Groups in the results.
include_usersbooleanoptionalInclude the list of users for each User Group.
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.4 params

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.

NameTypeRequiredDescription
cursorstringoptionalPagination cursor for fetching additional pages of users
include_localebooleanoptionalSet to true to include locale information for each user
limitnumberoptionalNumber of users to return (1-1000)
team_idstringoptionalEncoded team ID to list users for (if using org tokens)
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.1 param

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.

NameTypeRequiredDescription
emailstringrequiredEmail address to search for users by
slack_mark_conversation_read#Set the read cursor in a Slack channel or conversation to a given message, marking everything up to and including it as read. Requires a valid Slack OAuth2 connection with the conversations:write scope.2 params

Set the read cursor in a Slack channel or conversation to a given message, marking everything up to and including it as read. Requires a valid Slack OAuth2 connection with the conversations:write scope.

NameTypeRequiredDescription
channelstringrequiredChannel or conversation to set the read cursor for.
tsstringrequiredUnique identifier (timestamp) of the message marked as most recently seen in this conversation.
slack_open_conversation#Open or resume a direct message or multi-person direct message in Slack. Provide either an existing im/mpim channel ID to resume, or a list of user IDs to start a new one. Requires a valid Slack OAuth2 connection with the im:write scope.3 params

Open or resume a direct message or multi-person direct message in Slack. Provide either an existing im/mpim channel ID to resume, or a list of user IDs to start a new one. Requires a valid Slack OAuth2 connection with the im:write scope.

NameTypeRequiredDescription
channelstringoptionalResume a conversation by supplying an existing im or mpim channel ID. Provide this or users, not both.
return_imbooleanoptionalIf true, the response includes the full IM channel definition even if the channel already existed.
usersstringoptionalComma-separated list of user IDs. If only one user is included, this creates a 1:1 DM.
slack_open_view#Open a modal view for a Slack user in response to a trigger (e.g., a slash command or button click). Requires a valid Slack OAuth2 connection.2 params

Open a modal view for a Slack user in response to a trigger (e.g., a slash command or button click). Requires a valid Slack OAuth2 connection.

NameTypeRequiredDescription
trigger_idstringrequiredExchange a trigger to post the view to the user. Trigger IDs expire after 3 seconds.
viewobjectrequiredA view payload object describing the modal to display.
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.2 params

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.

NameTypeRequiredDescription
channelstringrequiredChannel ID or channel name where the message exists
timestampstringrequiredTimestamp of the message to pin
slack_publish_view#Publish a static App Home view for a specific Slack user. Requires a valid Slack OAuth2 connection.3 params

Publish a static App Home view for a specific Slack user. Requires a valid Slack OAuth2 connection.

NameTypeRequiredDescription
user_idstringrequiredThe id of the user you want to publish the App Home view to.
viewobjectrequiredA view payload object of type 'home' describing the App Home content.
hashstringoptionalA string representing view state, used to protect against race conditions between multiple publishes.
slack_push_view#Push a new modal view onto the stack of an existing root modal view for a Slack user. Requires a valid Slack OAuth2 connection.2 params

Push a new modal view onto the stack of an existing root modal view for a Slack user. Requires a valid Slack OAuth2 connection.

NameTypeRequiredDescription
trigger_idstringrequiredExchange a trigger to post the view to the user. Trigger IDs expire after 3 seconds.
viewobjectrequiredA view payload object describing the modal to push onto the stack.
slack_remove_bookmark#Remove a bookmark from a Slack channel. Requires a valid Slack OAuth2 connection with the bookmarks:write scope.2 params

Remove a bookmark from a Slack channel. Requires a valid Slack OAuth2 connection with the bookmarks:write scope.

NameTypeRequiredDescription
bookmark_idstringrequiredID of the bookmark to remove.
channel_idstringrequiredChannel where the bookmark resides.
slack_remove_pin#Un-pin a message from a Slack channel. Requires a valid Slack OAuth2 connection with the pins:write scope.2 params

Un-pin a message from a Slack channel. Requires a valid Slack OAuth2 connection with the pins:write scope.

NameTypeRequiredDescription
channelstringrequiredChannel where the item is pinned.
timestampstringoptionalTimestamp of the message to un-pin.
slack_remove_reaction#Remove an emoji reaction from a message in Slack. Requires a valid Slack OAuth2 connection with reactions:write scope.3 params

Remove an emoji reaction from a message in Slack. Requires a valid Slack OAuth2 connection with reactions:write scope.

NameTypeRequiredDescription
channelstringrequiredChannel ID or channel name where the message exists
namestringrequiredEmoji name to remove (without colons)
timestampstringrequiredTimestamp of the message to remove reaction from
slack_rename_conversation#Rename an existing Slack channel. Requires a valid Slack OAuth2 connection with the conversations:write scope.2 params

Rename an existing Slack channel. Requires a valid Slack OAuth2 connection with the conversations:write scope.

NameTypeRequiredDescription
channelstringrequiredID of the conversation to rename.
namestringrequiredNew name for the conversation.
slack_revoke_file_public_url#Revoke public, external sharing access for a file uploaded to Slack, disabling its public URL. Requires a valid Slack OAuth2 connection with the files:write scope.1 param

Revoke public, external sharing access for a file uploaded to Slack, disabling its public URL. Requires a valid Slack OAuth2 connection with the files:write scope.

NameTypeRequiredDescription
filestringrequiredFile to revoke public sharing for.
slack_schedule_rich_message#Schedules a message for future delivery to a Slack channel or direct message, with full support for Block Kit blocks and legacy attachments. Use this when a scheduled message needs rich formatting (sections, dividers, buttons, images, markdown layout) or attachments. Requires a valid Slack OAuth2 connection with chat:write scope.9 params

Schedules a message for future delivery to a Slack channel or direct message, with full support for Block Kit blocks and legacy attachments. Use this when a scheduled message needs rich formatting (sections, dividers, buttons, images, markdown layout) or attachments. Requires a valid Slack OAuth2 connection with chat:write scope.

NameTypeRequiredDescription
channelstringrequiredChannel ID, channel name (#general), or user ID for DM
post_atintegerrequiredUnix timestamp (seconds) for when the message should be sent
textstringrequiredFallback message text, shown in notifications and clients that can't render blocks/attachments
attachmentsarrayoptionalArray of legacy attachment objects for additional message formatting
blocksarrayoptionalArray of Block Kit block elements for rich message formatting
reply_broadcastbooleanoptionalUsed in conjunction with thread_ts to broadcast reply to channel
thread_tsstringoptionalTimestamp of parent message to reply in thread
unfurl_linksbooleanoptionalEnable or disable link previews
unfurl_mediabooleanoptionalEnable or disable media link previews
slack_search_files#Search for files matching a query across a Slack workspace. The existing slack_search_messages tool only covers messages, not files. Requires a valid Slack OAuth2 connection with the search:read scope (a user token, not a bot token).7 params

Search for files matching a query across a Slack workspace. The existing slack_search_messages tool only covers messages, not files. Requires a valid Slack OAuth2 connection with the search:read scope (a user token, not a bot token).

NameTypeRequiredDescription
querystringrequiredSearch query. Supports Slack search modifiers such as from:, in:, and before:.
countintegeroptionalNumber of results to return per page.
highlightbooleanoptionalEnable query highlight markers in the returned results.
pageintegeroptionalPage number of results to return.
sortstringoptionalReturn matches sorted by either score (relevance) or timestamp (recency).
sort_dirstringoptionalSort direction: ascending (asc) or descending (desc).
team_idstringoptionalEncoded team ID to search in. Required if using an org-wide token.
slack_search_messages#Search for messages matching a query across a Slack workspace. Requires a valid Slack OAuth2 connection with the search:read scope (a user token, not a bot token).6 params

Search for messages matching a query across a Slack workspace. Requires a valid Slack OAuth2 connection with the search:read scope (a user token, not a bot token).

NameTypeRequiredDescription
querystringrequiredSearch query. Supports Slack search modifiers such as from:, in:, and before:.
countintegeroptionalNumber of results to return per page. Maximum of 100.
highlightbooleanoptionalEnable query highlight markers in the returned message text.
pageintegeroptionalPage number of results to return.
sortstringoptionalReturn matches sorted by either score (relevance) or timestamp (recency).
sort_dirstringoptionalSort direction: ascending (asc) or descending (desc).
slack_send_ephemeral_message#Sends a message to a Slack channel that is only visible to a specific user (ephemeral message), with support for Block Kit blocks and legacy attachments. Requires a valid Slack OAuth2 connection with chat:write scope.6 params

Sends a message to a Slack channel that is only visible to a specific user (ephemeral message), with support for Block Kit blocks and legacy attachments. Requires a valid Slack OAuth2 connection with chat:write scope.

NameTypeRequiredDescription
channelstringrequiredChannel ID or channel name where the ephemeral message should appear
textstringrequiredFallback message text, shown in notifications and clients that can't render blocks/attachments
userstringrequiredUser ID of the user who should see the ephemeral message
attachmentsarrayoptionalArray of legacy attachment objects for additional message formatting
blocksarrayoptionalArray of Block Kit block elements for rich message formatting
thread_tsstringoptionalTimestamp of parent message to post the ephemeral message in a thread
slack_send_me_message#Share an italicized '/me'-style action message into a Slack channel (e.g., '_is away from keyboard_'). Requires a valid Slack OAuth2 connection with the chat:write scope.2 params

Share an italicized '/me'-style action message into a Slack channel (e.g., '_is away from keyboard_'). Requires a valid Slack OAuth2 connection with the chat:write scope.

NameTypeRequiredDescription
channelstringrequiredChannel to send the message to. Can be a public channel, private group, or IM channel.
textstringrequiredText of the message to send.
slack_send_message#Sends a message to a Slack channel or direct message. Requires a valid Slack OAuth2 connection with chat:write scope.10 params

Sends a message to a Slack channel or direct message. Requires a valid Slack OAuth2 connection with chat:write scope.

NameTypeRequiredDescription
channelstringrequiredChannel ID, channel name (#general), or user ID for DM
textstringrequiredMessage text content
attachmentsstringoptionalJSON-encoded array of attachment objects for additional message formatting
blocksstringoptionalJSON-encoded array of Block Kit block elements for rich message formatting
reply_broadcastbooleanoptionalUsed in conjunction with thread_ts to broadcast reply to channel
schema_versionstringoptionalOptional schema version to use for tool execution
thread_tsstringoptionalTimestamp of parent message to reply in thread
tool_versionstringoptionalOptional tool version to use for execution
unfurl_linksbooleanoptionalEnable or disable link previews
unfurl_mediabooleanoptionalEnable or disable media link previews
slack_send_rich_message#Sends a message to a Slack channel or direct message with full support for Block Kit blocks and legacy attachments. Use this instead of slack_send_message whenever the message needs rich formatting (sections, dividers, buttons, images, markdown layout) or attachments — slack_send_message currently ignores those fields. Requires a valid Slack OAuth2 connection with chat:write scope.8 params

Sends a message to a Slack channel or direct message with full support for Block Kit blocks and legacy attachments. Use this instead of slack_send_message whenever the message needs rich formatting (sections, dividers, buttons, images, markdown layout) or attachments — slack_send_message currently ignores those fields. Requires a valid Slack OAuth2 connection with chat:write scope.

NameTypeRequiredDescription
channelstringrequiredChannel ID, channel name (#general), or user ID for DM
textstringrequiredFallback message text, shown in notifications and clients that can't render blocks/attachments
attachmentsarrayoptionalArray of legacy attachment objects for additional message formatting
blocksarrayoptionalArray of Block Kit block elements for rich message formatting
reply_broadcastbooleanoptionalUsed in conjunction with thread_ts to broadcast reply to channel
thread_tsstringoptionalTimestamp of parent message to reply in thread
unfurl_linksbooleanoptionalEnable or disable link previews
unfurl_mediabooleanoptionalEnable or disable media link previews
slack_set_conversation_purpose#Set the purpose (description) for a Slack conversation. Requires a valid Slack OAuth2 connection with the conversations:write scope.2 params

Set the purpose (description) for a Slack conversation. Requires a valid Slack OAuth2 connection with the conversations:write scope.

NameTypeRequiredDescription
channelstringrequiredConversation to set the purpose of.
purposestringrequiredThe new purpose text for the conversation.
slack_set_conversation_topic#Set the topic for a Slack conversation. Does not support formatting or linkification. Requires a valid Slack OAuth2 connection with the conversations:write scope.2 params

Set the topic for a Slack conversation. Does not support formatting or linkification. Requires a valid Slack OAuth2 connection with the conversations:write scope.

NameTypeRequiredDescription
channelstringrequiredConversation to set the topic of.
topicstringrequiredThe new topic string. Does not support formatting or linkification.
slack_set_dnd_snooze#Turn on Do Not Disturb snooze for the current Slack user for a given number of minutes. Requires a valid Slack OAuth2 connection with the dnd:write scope.1 param

Turn on Do Not Disturb snooze for the current Slack user for a given number of minutes. Requires a valid Slack OAuth2 connection with the dnd:write scope.

NameTypeRequiredDescription
num_minutesintegerrequiredNumber of minutes, from now, to snooze notifications for.
slack_set_user_presence#Manually set the authenticated user's Slack presence to active or away. Requires a valid Slack OAuth2 connection with the users:write scope.1 param

Manually set the authenticated user's Slack presence to active or away. Requires a valid Slack OAuth2 connection with the users:write scope.

NameTypeRequiredDescription
presencestringrequiredThe presence to set: auto (active) or away.
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.3 params

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.

NameTypeRequiredDescription
status_emojistringoptionalEmoji to display with status (without colons)
status_expirationintegeroptionalUnix timestamp when status should expire
status_textstringoptionalStatus text to display
slack_share_file_public_url#Enable public, external sharing for a file uploaded to Slack, generating a URL anyone can use to view it. Requires a valid Slack OAuth2 connection with the files:write scope.1 param

Enable public, external sharing for a file uploaded to Slack, generating a URL anyone can use to view it. Requires a valid Slack OAuth2 connection with the files:write scope.

NameTypeRequiredDescription
filestringrequiredFile to share publicly.
slack_unarchive_conversation#Reverse the archival of a Slack channel, restoring it to active use. Requires a valid Slack OAuth2 connection with the conversations:write scope.1 param

Reverse the archival of a Slack channel, restoring it to active use. Requires a valid Slack OAuth2 connection with the conversations:write scope.

NameTypeRequiredDescription
channelstringrequiredID of the conversation to unarchive.
slack_unfurl_message#Provide custom unfurl (link preview) content for a URL posted in an existing Slack message. Requires a valid Slack OAuth2 connection with the links:write scope.3 params

Provide custom unfurl (link preview) content for a URL posted in an existing Slack message. Requires a valid Slack OAuth2 connection with the links:write scope.

NameTypeRequiredDescription
channelstringrequiredChannel ID of the message.
tsstringrequiredTimestamp of the message to add unfurl behavior to.
unfurlsobjectrequiredJSON object with keys set to URLs featured in the message, each mapped to its unfurl attachment payload.
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.5 params

Updates/edits a previously sent message in a Slack channel or direct message. Requires a valid Slack OAuth2 connection with chat:write scope.

NameTypeRequiredDescription
channelstringrequiredChannel ID, channel name (#general), or user ID for DM where the message was sent
tsstringrequiredTimestamp of the message to update
attachmentsstringoptionalJSON-encoded array of attachment objects for additional message formatting
blocksstringoptionalJSON-encoded array of Block Kit block elements for rich message formatting
textstringoptionalNew message text content
slack_update_usergroup#Update the name, handle, description, or default channels of an existing Slack User Group. Only the fields you provide are changed. Requires a valid Slack OAuth2 connection with the usergroups:write scope.6 params

Update the name, handle, description, or default channels of an existing Slack User Group. Only the fields you provide are changed. Requires a valid Slack OAuth2 connection with the usergroups:write scope.

NameTypeRequiredDescription
usergroupstringrequiredThe encoded ID of the User Group to update.
channelsstringoptionalComma-separated string of encoded channel IDs the User Group uses as its default channels.
descriptionstringoptionalA new short description of the User Group.
handlestringoptionalA new mention handle. Must be unique among channels, users, and User Groups.
include_countbooleanoptionalInclude the number of users in the User Group in the response.
namestringoptionalA new name for the User Group. Must be unique among User Groups.
slack_update_usergroup_users#Replace the entire member list of a Slack User Group with a new set of users. Requires a valid Slack OAuth2 connection with the usergroups:write scope.3 params

Replace the entire member list of a Slack User Group with a new set of users. Requires a valid Slack OAuth2 connection with the usergroups:write scope.

NameTypeRequiredDescription
usergroupstringrequiredThe encoded ID of the User Group to update.
usersstringrequiredComma-separated string of encoded user IDs that represent the entire new list of users for the User Group.
include_countbooleanoptionalInclude the number of users in the User Group in the response.
slack_update_view#Update an existing modal view in place, identified by its view_id or external_id. Requires a valid Slack OAuth2 connection.4 params

Update an existing modal view in place, identified by its view_id or external_id. Requires a valid Slack OAuth2 connection.

NameTypeRequiredDescription
viewobjectrequiredA view payload object describing the modal's new content.
external_idstringoptionalA unique identifier of the view set by the developer, unique per team. Provide either this or view_id.
hashstringoptionalA string representing view state, used to protect against race conditions between multiple updates.
view_idstringoptionalA unique identifier of the view to update. Provide either this or external_id.