Slack connector
OAuth 2.0CommunicationCollaborationConnect to Slack workspace. Send Messages as Bots or on behalf of users
Slack connector
-
Install the SDK
Section titled “Install the SDK”Terminal window npm install @scalekit-sdk/nodeTerminal window pip install scalekit -
Set your credentials
Section titled “Set your credentials”Add your Scalekit credentials to your
.envfile. 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> -
Set up the connector
Section titled “Set up the connector”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:
-
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.
-
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.
-
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.

-
From Basic Information, copy the Client ID and Client Secret.
-
-
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.
-
Enter your credentials:
- Client ID
- Client Secret
- Permissions (scopes — see Slack Scopes documentation)

-
Click Save.
-
-
Authorize and make your first call
Section titled “Authorize and make your first call”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.actionsconst connector = 'slack'const identifier = 'user_123'// Generate an authorization link for the userconst { 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 callconst result = await actions.executeTool({connector,identifier,toolName: 'slack_get_bot_info',toolInput: {},})console.log(result)quickstart.py import osfrom scalekit.client import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENV_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "slack"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Slack:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="slack_get_bot_info",connection_name=connection_name,identifier=identifier,)print(result)
What you can do
Section titled “What you can do”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
Common workflows
Section titled “Common workflows”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.result = actions.request( connection_name='slack', identifier='user_123', path="/api/auth.test", method="POST")print(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);result = actions.execute_tool( tool_input={}, tool_name='slack_add_reaction', connection_name='slack', identifier='user_123',)print(result)Tool list
Section titled “Tool list”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.
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.
channelstringrequiredChannel ID or channel name where the message existsnamestringrequiredEmoji name to react with (without colons)timestampstringrequiredTimestamp of the message to add reaction toslack_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.
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.
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.
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.
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.
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.
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.
namestringrequiredName of the channel to create (without # prefix)is_privatebooleanoptionalCreate a private channel instead of publicteam_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.
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.
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.
channelstringrequiredChannel ID, channel name (#general), or user ID for DM where the message was senttsstringrequiredTimestamp of the message to deleteslack_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.
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.
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.
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.
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.
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.
channelstringrequiredChannel ID, channel name (#general), or user ID for DMcursorstringoptionalPaginate through collections by cursor for paginationlateststringoptionalEnd of time range of messages to include in resultslimitintegeroptionalNumber of messages to return (1-1000, default 100)oldeststringoptionalStart of time range of messages to include in resultsslack_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.
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.
channelstringrequiredChannel ID, channel name (#general), or user ID for DMinclude_localebooleanoptionalSet to true to include the locale for this conversationinclude_num_membersbooleanoptionalSet to true to include the member count for the conversationslack_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.
channelstringrequiredChannel ID, channel name (#general), or user ID for DMtsstringrequiredTimestamp of the parent message to get replies forcursorstringoptionalPagination cursor for retrieving next page of resultsinclusivebooleanoptionalInclude messages with latest or oldest timestamp in resultslateststringoptionalEnd of time range of messages to include in resultslimitintegeroptionalNumber of messages to return (default 100, max 1000)oldeststringoptionalStart of time range of messages to include in resultsslack_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.
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.
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_permalink#Retrieve a permalink URL for a specific existing Slack message, identified by its channel and timestamp.2 params
Retrieve a permalink URL for a specific existing Slack message, identified by its channel and timestamp.
channelstringrequiredThe ID of the conversation or channel containing the message.message_tsstringrequiredA message's ts value, uniquely identifying it within a channel.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.
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.
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.
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.
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.
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.
userstringrequiredUser ID to get information aboutinclude_localebooleanoptionalSet to true to include locale information for the userslack_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.
userstringrequiredUser ID to check presence forslack_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.
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.
channelstringrequiredChannel ID or channel name (#general) to invite users tousersstringrequiredComma-separated list of user IDs to invite to the channelslack_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.
channelstringrequiredChannel ID or channel name (#general) to joinslack_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.
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.
channelstringrequiredChannel ID or channel name (#general) to leaveslack_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.
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.
channelstringrequiredChannel ID or channel name to list members forcursorstringoptionalPagination cursor from a previous response's response_metadata.next_cursorlimitintegeroptionalMaximum number of members to return per pageslack_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.
cursorstringoptionalPagination cursor for retrieving next page of resultsexclude_archivedbooleanoptionalExclude archived channels from the listlimitintegeroptionalNumber 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.
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.
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.
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.
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.
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.
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.
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.
cursorstringoptionalPagination cursor for fetching additional pages of usersinclude_localebooleanoptionalSet to true to include locale information for each userlimitnumberoptionalNumber 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.
emailstringrequiredEmail address to search for users byslack_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.
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.
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.
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.
channelstringrequiredChannel ID or channel name where the message existstimestampstringrequiredTimestamp of the message to pinslack_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.
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.
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.
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.
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.
channelstringrequiredChannel ID or channel name where the message existsnamestringrequiredEmoji name to remove (without colons)timestampstringrequiredTimestamp of the message to remove reaction fromslack_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.
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.
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.
channelstringrequiredChannel ID, channel name (#general), or user ID for DMpost_atintegerrequiredUnix timestamp (seconds) for when the message should be senttextstringrequiredFallback message text, shown in notifications and clients that can't render blocks/attachmentsattachmentsarrayoptionalArray of legacy attachment objects for additional message formattingblocksarrayoptionalArray of Block Kit block elements for rich message formattingreply_broadcastbooleanoptionalUsed in conjunction with thread_ts to broadcast reply to channelthread_tsstringoptionalTimestamp of parent message to reply in threadunfurl_linksbooleanoptionalEnable or disable link previewsunfurl_mediabooleanoptionalEnable or disable media link previewsslack_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).
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).
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.
channelstringrequiredChannel ID or channel name where the ephemeral message should appeartextstringrequiredFallback message text, shown in notifications and clients that can't render blocks/attachmentsuserstringrequiredUser ID of the user who should see the ephemeral messageattachmentsarrayoptionalArray of legacy attachment objects for additional message formattingblocksarrayoptionalArray of Block Kit block elements for rich message formattingthread_tsstringoptionalTimestamp of parent message to post the ephemeral message in a threadslack_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.
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.
channelstringrequiredChannel ID, channel name (#general), or user ID for DMtextstringrequiredMessage text contentattachmentsstringoptionalJSON-encoded array of attachment objects for additional message formattingblocksstringoptionalJSON-encoded array of Block Kit block elements for rich message formattingreply_broadcastbooleanoptionalUsed in conjunction with thread_ts to broadcast reply to channelschema_versionstringoptionalOptional schema version to use for tool executionthread_tsstringoptionalTimestamp of parent message to reply in threadtool_versionstringoptionalOptional tool version to use for executionunfurl_linksbooleanoptionalEnable or disable link previewsunfurl_mediabooleanoptionalEnable or disable media link previewsslack_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.
channelstringrequiredChannel ID, channel name (#general), or user ID for DMtextstringrequiredFallback message text, shown in notifications and clients that can't render blocks/attachmentsattachmentsarrayoptionalArray of legacy attachment objects for additional message formattingblocksarrayoptionalArray of Block Kit block elements for rich message formattingreply_broadcastbooleanoptionalUsed in conjunction with thread_ts to broadcast reply to channelthread_tsstringoptionalTimestamp of parent message to reply in threadunfurl_linksbooleanoptionalEnable or disable link previewsunfurl_mediabooleanoptionalEnable or disable media link previewsslack_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.
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.
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.
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.
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.
status_emojistringoptionalEmoji to display with status (without colons)status_expirationintegeroptionalUnix timestamp when status should expirestatus_textstringoptionalStatus text to displayslack_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.
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.
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.
channelstringrequiredChannel ID, channel name (#general), or user ID for DM where the message was senttsstringrequiredTimestamp of the message to updateattachmentsstringoptionalJSON-encoded array of attachment objects for additional message formattingblocksstringoptionalJSON-encoded array of Block Kit block elements for rich message formattingtextstringoptionalNew message text contentslack_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.
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.
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.
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.