← All Skills
S

Messaging

Slack Bot

Run bot commands and send DMs.

Slackbot gives agents workspace-wide read access to a Slack workspace on behalf of the installing user — search messages and files, browse channel and thread history, and look up users and channels — while continuing to post and react as the bot. Includes direct messages and user email addresses so agents can search across DMs and resolve users by email.

Triggers8

Things that can wake up your Slack Bot coworker.

  • New Channel Created Trigger

    Triggered when a new channel is created in Slack.

    SLACKBOT_CHANNEL_CREATED
  • Channel Message Received

    Triggered when a message is posted in a Slack channel (public, private, or multi-party IM). Does NOT match direct messages.

    SLACKBOT_CHANNEL_MESSAGE_RECEIVED
  • Direct Message Received

    Triggered when a new direct message (DM) is sent to a user in Slack. Catches all DMs across all DM channels.

    SLACKBOT_DIRECT_MESSAGE_RECEIVED
  • Message Reaction Added

    Triggered when a reaction is added to a message in Slack. Supports optional filtering by channel and emoji name.

    SLACKBOT_MESSAGE_REACTION_ADDED
  • Reaction Added Trigger

    DEPRECATED: use `SLACK_MESSAGE_REACTION_ADDED` instead. Triggered when a reaction is added to a message in Slack.

    SLACKBOT_REACTION_ADDED
  • Reaction Removed Trigger

    DEPRECATED. Triggered when a reaction is removed from a message.

    SLACKBOT_REACTION_REMOVED
  • New Bot Message Received Trigger

    DEPRECATED: use `SLACK_CHANNEL_MESSAGE_RECEIVED` with `is_bot_message=true` instead. Triggered when a new bot message is posted to a Slack channel.

    SLACKBOT_RECEIVE_BOT_MESSAGE
  • New Message Received Trigger

    DEPRECATED: use `SLACK_CHANNEL_MESSAGE_RECEIVED` instead. Triggered when a new message is posted to a Slack channel.

    SLACKBOT_RECEIVE_MESSAGE

Actions20

Things your coworker can do in Slack Bot.

  • Add reaction to message

    Adds a specified emoji reaction to an existing message in a Slack channel, identified by its timestamp; does not remove or retrieve reactions.

    SLACKBOT_ADD_REACTION_TO_AN_ITEM
  • Create a reminder

    Creates a Slack reminder with specified text and time; time accepts Unix timestamps, seconds from now, or natural language (e.g., 'in 15 minutes', 'every Thursday at 2pm').

    SLACKBOT_CREATE_A_REMINDER
  • Create Slack Canvas

    Creates a new Slack Canvas with the specified title and optional content.

    SLACKBOT_CREATE_CANVAS
  • Delete Slack Canvas

    Deletes a Slack Canvas permanently and irreversibly. Always confirm with the user before calling this tool.

    SLACKBOT_DELETE_CANVAS
  • Download Slack file

    Tool to download Slack file content and convert it to a publicly accessible URL. Use when you need to retrieve and download files that have been shared in Slack channels or conversations.

    SLACKBOT_DOWNLOAD_FILE
  • Edit Slack Canvas

    Edits a Slack Canvas with granular control over content placement. Supports replace, insert (before/after/start/end) operations for flexible content management.

    SLACKBOT_EDIT_CANVAS
  • Fetch conversation history

    Fetches a chronological list of messages and events from a specified Slack conversation, accessible by the authenticated user/bot, with options for pagination and time range filtering. IMPORTANT LIMITATION: This action only returns messages from the main channel timeline. Threaded replies are NOT returned by this endpoint. To retrieve threaded replies, use the SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION action (conversations.replies API) instead. The oldest/latest timestamp filters work reliably for filtering the main channel timeline, but cannot be used to retrieve individual threaded replies - even if you know the exact reply timestamp, setting oldest=latest to that timestamp will return an empty messages array. To get threaded replies: 1. Use this action to get parent messages (which include thread_ts, reply_count, latest_reply fields) 2. Use SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION with the parent's thread_ts to fetch all replies in that thread

    SLACKBOT_FETCH_CONVERSATION_HISTORY
  • Find channels

    Find channels in a Slack workspace by any criteria - name, topic, purpose, or description. Returns channel IDs (C*/G* prefixed) required by most Slack tools — always resolve names to IDs here before passing to other tools. NOTE: This action searches channels and conversations visible to the authenticated user. Empty results may indicate: - No channels match the search query in name, topic, or purpose - The target private channel or DM is not accessible to the authenticated user because they are not a member - The connection lacks required read scopes (channels:read, groups:read, im:read, mpim:read). If empty, retry with exact_match=false or exclude_archived=false to avoid false negatives. In large workspaces, paginate using next_cursor to avoid missing matches. Check 'composio_execution_message' and 'total_channels_searched' in the response for details.

    SLACKBOT_FIND_CHANNELS
  • Find users

    Find users in a Slack workspace by any criteria - email, name, display name, or other text. Includes optimized email lookup for exact email matches. Zero results may reflect email visibility restrictions or workspace policies, not global absence. Repeated calls may trigger HTTP 429; honor the Retry-After header.

    SLACKBOT_FIND_USERS
  • Get Slack Canvas (Deprecated)

    DEPRECATED: Use SLACK_RETRIEVE_DETAILED_INFORMATION_ABOUT_A_FILE instead. Retrieves a specific Slack Canvas by its ID, including its content and metadata.

    SLACKBOT_GET_CANVAS
  • List all channels

    Lists conversations available to the user with various filters and search options. Always use resolved `channel_id` (not display names) for downstream operations, as names may be non-unique. The `created` field in results is a Unix epoch timestamp (UTC). Pagination across large workspaces may return HTTP 429 with a `Retry-After` header; honor the delay and resume from the last successful cursor.

    SLACKBOT_LIST_ALL_CHANNELS
  • List all users

    Retrieves a paginated list of all users with profile details, status, and team memberships in a Slack workspace; data may not be real-time. Filter response fields `is_bot`, `is_app_user`, and `deleted` to build human-only rosters. Profile fields like `email` and `phone` may be absent depending on OAuth scopes and workspace privacy settings. Guest/restricted accounts may be omitted based on scopes—do not treat results as a complete directory. High-frequency calls risk HTTP 429; honor the `Retry-After` header and throttle to ~1–2 requests/second. Use stable user IDs rather than display names for mapping. Prefer SLACK_FIND_USERS for targeted lookups; cache results to avoid full-workspace fetches.

    SLACKBOT_LIST_ALL_USERS
  • List Slack Canvases (Deprecated)

    DEPRECATED: Use SLACK_LIST_FILES_WITH_FILTERS_IN_SLACK instead (pass types="canvas" for equivalent behavior). Lists Slack Canvases with filtering by channel, user, timestamp, and page-based pagination. Uses Slack's files.list API with types=canvas filter. Only canvases accessible to the authenticated app are returned; missing canvases indicate permissions restrictions, not empty data. Use `paging.pages` in the response to determine total pages; iterate `page` with `count` to retrieve all results. Known limitations: - The 'user' filter may return canvases accessible to the specified user, not just canvases they created. - The 'ts_from' and 'ts_to' timestamp filters may not work reliably for canvas types. Consider client-side filtering on the 'created' field in the response if precise date filtering is required.

    SLACKBOT_LIST_CANVASES
  • Lookup Canvas Sections

    Looks up section IDs in a Slack Canvas for use with targeted edit operations. Section IDs are needed for insert_after, insert_before, delete, and section-specific replace operations.

    SLACKBOT_LOOKUP_CANVAS_SECTIONS
  • Remove reaction from item

    Removes an emoji reaction from a message, file, or file comment in Slack. Provide exactly one targeting method: channel+timestamp together, file, or file_comment. Mixing methods or omitting all returns invalid_arguments.

    SLACKBOT_REMOVE_REACTION_FROM_ITEM
  • Schedule message

    Schedules a message to a Slack channel, DM, or private group for a future time (`post_at`), requiring `text`, `blocks`, or `attachments` for content; scheduling is limited to 120 days in advance.

    SLACKBOT_SCHEDULE_MESSAGE
  • Search all content

    Tool to search all messages and files. Use when you need unified content search across channels and files in one call. Results are scoped to content visible to the authenticated token; missing hits in private or restricted channels reflect permission/membership gaps. Response separates messages and files into distinct sections — explicitly read the files section for document results. Results are index-based and may lag several minutes behind real-time; use SLACK_FETCH_CONVERSATION_HISTORY for near-real-time per-channel coverage. Paginated searches exceeding ~1 req/sec may return HTTP 429 too_many_requests; honor the Retry-After header and resume from the last page.

    SLACKBOT_SEARCH_ALL
  • Search messages

    Workspace‑wide Slack message search with date ranges and filters. Use `query` modifiers (e.g., in:#channel, from:@user, before/after:YYYY-MM-DD), sorting (score/timestamp), and pagination.

    SLACKBOT_SEARCH_MESSAGES
  • Send message

    Posts a message to a Slack channel, DM, or private group. Provide exactly one visible content mode: `markdown_text` for normal Markdown content, or `blocks` for raw Slack Block Kit layouts. Use `fallback_text` only with `blocks`; it maps to Slack's top-level `text` fallback. Fails with `not_in_channel`, `channel_not_found`, or `channel_is_archived` if the bot lacks access. Rate-limited at ~1 req/sec (HTTP 429, honor `Retry-After`). Not idempotent — duplicate calls post duplicate messages.

    SLACKBOT_SEND_MESSAGE
  • Update a Slack message

    Updates a Slack message by timestamp. Provide exactly one visible content mode: `markdown_text` for normal Markdown content, or `blocks` for raw Slack Block Kit layouts. Use `fallback_text` only with `blocks`; it maps to Slack's top-level `text` fallback.

    SLACKBOT_UPDATES_A_MESSAGE