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.
Slack Automation via Rube MCP
Automate Slack workspace operations including messaging, search, channel management, and reaction workflows through Composio's Slack toolkit.
Prerequisites
RUBE_MANAGE_CONNECTIONS with toolkit slackRUBE_SEARCH_TOOLS first to get current tool schemasSetup
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.
RUBE_SEARCH_TOOLS respondsRUBE_MANAGE_CONNECTIONS with toolkit slackCore 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 threadblocks: 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/attachmentsthread_ts is omittedresponse.data.channel and response.data.message.ts from SEND_MESSAGE for edit/thread operations2. 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=truesort: 'score' (relevance) or 'timestamp' (chronological)sort_dir: 'asc' or 'desc'Pitfalls:
query is missing/emptyok=true can still mean no hits (response.data.messages.total=0)response.data.messages.matches (sometimes also response.data_preview.messages.matches)match.text may be empty/truncated; key info can appear in matches[].attachments[]response.data.has_more=true; paginate via response_metadata.next_cursor3. 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_cursorlimit: Results per page (default varies; set explicitly for large workspaces)types: Channel types filter ('public_channel', 'private_channel', 'im', 'mpim')Pitfalls:
response.data.team, not top-levelSLACK_LIST_ALL_CHANNELS returns public channels only; use SLACK_LIST_CONVERSATIONS for private/IM coverageSLACK_LIST_ALL_USERS can hit HTTP 429 rate limits; honor Retry-After headerresponse_metadata.next_cursor until empty; de-duplicate by id4. 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 livestimestamp / 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 repliesPitfalls:
SLACK_FETCH_CONVERSATION_HISTORY only returns main channel timeline, NOT threaded repliesSLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION with parent's thread_ts to get thread replies5. 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 IDpost_at: Unix timestamp for delivery (up to 120 days in advance)text / blocks: Message contentPitfalls:
post_at must be a Unix timestamp, not ISO 8601Common Patterns
ID Resolution
Always resolve display names to IDs before operations:
SLACK_FIND_CHANNELS with query paramSLACK_FIND_USERS with search_query or emailSLACK_OPEN_DM with resolved user IDsPagination
Most list endpoints use cursor-based pagination:
response_metadata.next_cursor until emptylimit values (e.g., 100-200) for reliable pagingid across pagesMessage Formatting
markdown_text over text or blocks for formatted messages<@USER_ID> format to mention users (not @username)\n for line breaks in markdown_textKnown Pitfalls
SLACK_FIND_CHANNELS can return empty results if channel is private and bot hasn't been invitedSLACK_LIST_ALL_USERS and other list endpoints can hit HTTP 429; honor Retry-After headerresponse.data.results[0].response.data in wrapped executionsSLACK_FETCH_CONVERSATION_HISTORY returns main timeline only; use SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION for thread replieschannel and original message ts; persist these from SEND_MESSAGE responseSLACK_GET_APP_PERMISSION_SCOPESQuick Reference
| Task | Tool Slug | Key Params |
|---|---|---|
| Find channels | SLACK_FIND_CHANNELS | query |
| List all channels | SLACK_LIST_ALL_CHANNELS | limit, cursor, types |
| Send message | SLACK_SEND_MESSAGE | channel, markdown_text |
| Edit message | SLACK_UPDATES_A_SLACK_MESSAGE | channel, ts, markdown_text |
| Search messages | SLACK_SEARCH_MESSAGES | query, count, sort |
| Get thread | SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION | channel, ts |
| Add reaction | SLACK_ADD_REACTION_TO_AN_ITEM | channel, name, timestamp |
| Find users | SLACK_FIND_USERS | search_query or email |
| List users | SLACK_LIST_ALL_USERS | limit, cursor |
| Open DM | SLACK_OPEN_DM | user IDs |
| Schedule message | SLACK_SCHEDULE_MESSAGE | channel, post_at, text |
| Get channel info | SLACK_RETRIEVE_CONVERSATION_INFORMATION | channel ID |
| Channel history | SLACK_FETCH_CONVERSATION_HISTORY | channel, oldest, latest |
| Workspace info | SLACK_FETCH_TEAM_INFO | (none) |