slack-automation

Automate Slack messaging, channel management, search, reactions, and threads via Rube MCP (Composio). Send messages, search conversations, manage channels/users, and react to messages programmatically.

View Source
name:slack-automationdescription:Automate Slack messaging, channel management, search, reactions, and threads via Rube MCP (Composio). Send messages, search conversations, manage channels/users, and react to messages programmatically.requires:mcp:[rube]

Slack Automation via Rube MCP

Automate Slack workspace operations including messaging, search, channel management, and reaction workflows through Composio's Slack toolkit.

Prerequisites

  • Rube MCP must be connected (RUBE_SEARCH_TOOLS available)

  • Active Slack connection via RUBE_MANAGE_CONNECTIONS with toolkit slack

  • Always call RUBE_SEARCH_TOOLS first to get current tool schemas
  • Setup

    Get Rube MCP: Add https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.


  • Verify Rube MCP is available by confirming RUBE_SEARCH_TOOLS responds

  • Call RUBE_MANAGE_CONNECTIONS with toolkit slack

  • If connection is not ACTIVE, follow the returned auth link to complete Slack OAuth

  • Confirm connection status shows ACTIVE before running any workflows
  • Core Workflows

    1. Send Messages to Channels

    When to use: User wants to post a message to a Slack channel or DM

    Tool sequence:

  • SLACK_FIND_CHANNELS - Resolve channel name to channel ID [Prerequisite]

  • SLACK_LIST_ALL_CHANNELS - Fallback if FIND_CHANNELS returns empty/ambiguous results [Fallback]

  • SLACK_FIND_USERS - Resolve user for DMs or @mentions [Optional]

  • SLACK_OPEN_DM - Open/reuse a DM channel if messaging a user directly [Optional]

  • SLACK_SEND_MESSAGE - Post the message with resolved channel ID [Required]

  • SLACK_UPDATES_A_SLACK_MESSAGE - Edit the posted message if corrections needed [Optional]
  • Key parameters:

  • channel: Channel ID or name (without '#' prefix)

  • markdown_text: Preferred field for formatted messages (supports headers, bold, italic, code blocks)

  • text: Raw text fallback (deprecated in favor of markdown_text)

  • thread_ts: Timestamp of parent message to reply in a thread

  • blocks: Block Kit layout blocks (deprecated, use markdown_text)
  • Pitfalls:

  • SLACK_FIND_CHANNELS requires query param; missing it errors with "Invalid request data provided"

  • SLACK_SEND_MESSAGE requires valid channel plus one of markdown_text/text/blocks/attachments

  • Invalid block payloads return error=invalid_blocks (max 50 blocks)

  • Replies become top-level posts if thread_ts is omitted

  • Persist response.data.channel and response.data.message.ts from SEND_MESSAGE for edit/thread operations
  • 2. Search Messages and Conversations

    When to use: User wants to find specific messages across the workspace

    Tool sequence:

  • SLACK_FIND_CHANNELS - Resolve channel for scoped search with in:#channel [Optional]

  • SLACK_FIND_USERS - Resolve user for author filter with from:@user [Optional]

  • SLACK_SEARCH_MESSAGES - Run keyword search across accessible conversations [Required]

  • SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION - Expand threads for relevant hits [Required]
  • Key parameters:

  • query: Search string supporting modifiers (in:#channel, from:@user, before:YYYY-MM-DD, after:YYYY-MM-DD, has:link, has:file)

  • count: Results per page (max 100), or total with auto_paginate=true

  • sort: 'score' (relevance) or 'timestamp' (chronological)

  • sort_dir: 'asc' or 'desc'
  • Pitfalls:

  • Validation fails if query is missing/empty

  • ok=true can still mean no hits (response.data.messages.total=0)

  • Matches are under response.data.messages.matches (sometimes also response.data_preview.messages.matches)

  • match.text may be empty/truncated; key info can appear in matches[].attachments[]

  • Thread expansion via FETCH_MESSAGE_THREAD can truncate when response.data.has_more=true; paginate via response_metadata.next_cursor
  • 3. Manage Channels and Users

    When to use: User wants to list channels, users, or workspace info

    Tool sequence:

  • SLACK_FETCH_TEAM_INFO - Validate connectivity and get workspace identity [Required]

  • SLACK_LIST_ALL_CHANNELS - Enumerate public channels [Required]

  • SLACK_LIST_CONVERSATIONS - Include private channels and DMs [Optional]

  • SLACK_LIST_ALL_USERS - List workspace members [Required]

  • SLACK_RETRIEVE_CONVERSATION_INFORMATION - Get detailed channel metadata [Optional]

  • SLACK_LIST_USER_GROUPS_FOR_TEAM_WITH_OPTIONS - List user groups [Optional]
  • Key parameters:

  • cursor: Pagination cursor from response_metadata.next_cursor

  • limit: Results per page (default varies; set explicitly for large workspaces)

  • types: Channel types filter ('public_channel', 'private_channel', 'im', 'mpim')
  • Pitfalls:

  • Workspace metadata is nested under response.data.team, not top-level

  • SLACK_LIST_ALL_CHANNELS returns public channels only; use SLACK_LIST_CONVERSATIONS for private/IM coverage

  • SLACK_LIST_ALL_USERS can hit HTTP 429 rate limits; honor Retry-After header

  • Always paginate via response_metadata.next_cursor until empty; de-duplicate by id
  • 4. React to and Thread Messages

    When to use: User wants to add reactions or manage threaded conversations

    Tool sequence:

  • SLACK_SEARCH_MESSAGES or SLACK_FETCH_CONVERSATION_HISTORY - Find the target message [Prerequisite]

  • SLACK_ADD_REACTION_TO_AN_ITEM - Add an emoji reaction [Required]

  • SLACK_FETCH_ITEM_REACTIONS - List reactions on a message [Optional]

  • SLACK_REMOVE_REACTION_FROM_ITEM - Remove a reaction [Optional]

  • SLACK_SEND_MESSAGE - Reply in thread using thread_ts [Optional]

  • SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION - Read full thread [Optional]
  • Key parameters:

  • channel: Channel ID where the message lives

  • timestamp / ts: Message timestamp (unique identifier like '1234567890.123456')

  • name: Emoji name without colons (e.g., 'thumbsup', 'wave::skin-tone-3')

  • thread_ts: Parent message timestamp for threaded replies
  • Pitfalls:

  • Reactions require exact channel ID + message timestamp pair

  • Emoji names use Slack's naming convention without colons

  • SLACK_FETCH_CONVERSATION_HISTORY only returns main channel timeline, NOT threaded replies

  • Use SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION with parent's thread_ts to get thread replies
  • 5. Schedule Messages

    When to use: User wants to schedule a message for future delivery

    Tool sequence:

  • SLACK_FIND_CHANNELS - Resolve channel ID [Prerequisite]

  • SLACK_SCHEDULE_MESSAGE - Schedule the message with post_at timestamp [Required]
  • Key parameters:

  • channel: Resolved channel ID

  • post_at: Unix timestamp for delivery (up to 120 days in advance)

  • text / blocks: Message content
  • Pitfalls:

  • Scheduling is limited to 120 days in advance

  • post_at must be a Unix timestamp, not ISO 8601
  • Common Patterns

    ID Resolution


    Always resolve display names to IDs before operations:
  • Channel name -> Channel ID: SLACK_FIND_CHANNELS with query param

  • User name -> User ID: SLACK_FIND_USERS with search_query or email

  • DM channel: SLACK_OPEN_DM with resolved user IDs
  • Pagination


    Most list endpoints use cursor-based pagination:
  • Follow response_metadata.next_cursor until empty

  • Set explicit limit values (e.g., 100-200) for reliable paging

  • De-duplicate results by id across pages
  • Message Formatting


  • Prefer markdown_text over text or blocks for formatted messages

  • Use <@USER_ID> format to mention users (not @username)

  • Use \n for line breaks in markdown_text
  • Known Pitfalls

  • Channel resolution: SLACK_FIND_CHANNELS can return empty results if channel is private and bot hasn't been invited

  • Rate limits: SLACK_LIST_ALL_USERS and other list endpoints can hit HTTP 429; honor Retry-After header

  • Nested responses: Results may be nested under response.data.results[0].response.data in wrapped executions

  • Thread vs channel: SLACK_FETCH_CONVERSATION_HISTORY returns main timeline only; use SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION for thread replies

  • Message editing: Requires both channel and original message ts; persist these from SEND_MESSAGE response

  • Search delays: Recently posted messages may not appear in search results immediately

  • Scope limitations: Missing OAuth scopes can cause 403 errors; check with SLACK_GET_APP_PERMISSION_SCOPES
  • Quick Reference

    TaskTool SlugKey Params
    Find channelsSLACK_FIND_CHANNELSquery
    List all channelsSLACK_LIST_ALL_CHANNELSlimit, cursor, types
    Send messageSLACK_SEND_MESSAGEchannel, markdown_text
    Edit messageSLACK_UPDATES_A_SLACK_MESSAGEchannel, ts, markdown_text
    Search messagesSLACK_SEARCH_MESSAGESquery, count, sort
    Get threadSLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATIONchannel, ts
    Add reactionSLACK_ADD_REACTION_TO_AN_ITEMchannel, name, timestamp
    Find usersSLACK_FIND_USERSsearch_query or email
    List usersSLACK_LIST_ALL_USERSlimit, cursor
    Open DMSLACK_OPEN_DMuser IDs
    Schedule messageSLACK_SCHEDULE_MESSAGEchannel, post_at, text
    Get channel infoSLACK_RETRIEVE_CONVERSATION_INFORMATIONchannel ID
    Channel historySLACK_FETCH_CONVERSATION_HISTORYchannel, oldest, latest
    Workspace infoSLACK_FETCH_TEAM_INFO(none)

      slack-automation - Agent Skills