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_CONNECTIONSwith toolkitslack - •Always call
RUBE_SEARCH_TOOLSfirst 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_TOOLSresponds - •Call
RUBE_MANAGE_CONNECTIONSwith toolkitslack - •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_CHANNELSrequiresqueryparam; missing it errors with "Invalid request data provided" - •
SLACK_SEND_MESSAGErequires 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_tsis omitted - •Persist
response.data.channelandresponse.data.message.tsfrom 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 within:#channel[Optional] - •
SLACK_FIND_USERS- Resolve user for author filter withfrom:@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
queryis missing/empty - •
ok=truecan still mean no hits (response.data.messages.total=0) - •Matches are under
response.data.messages.matches(sometimes alsoresponse.data_preview.messages.matches) - •
match.textmay be empty/truncated; key info can appear inmatches[].attachments[] - •Thread expansion via FETCH_MESSAGE_THREAD can truncate when
response.data.has_more=true; paginate viaresponse_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 fromresponse_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_CHANNELSreturns public channels only; useSLACK_LIST_CONVERSATIONSfor private/IM coverage - •
SLACK_LIST_ALL_USERScan hit HTTP 429 rate limits; honor Retry-After header - •Always paginate via
response_metadata.next_cursoruntil empty; de-duplicate byid
4. React to and Thread Messages
When to use: User wants to add reactions or manage threaded conversations
Tool sequence:
- •
SLACK_SEARCH_MESSAGESorSLACK_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 usingthread_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_HISTORYonly returns main channel timeline, NOT threaded replies - •Use
SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATIONwith parent'sthread_tsto 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 withpost_attimestamp [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_atmust 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_CHANNELSwithqueryparam - •User name -> User ID:
SLACK_FIND_USERSwithsearch_queryoremail - •DM channel:
SLACK_OPEN_DMwith resolved user IDs
Pagination
Most list endpoints use cursor-based pagination:
- •Follow
response_metadata.next_cursoruntil empty - •Set explicit
limitvalues (e.g., 100-200) for reliable paging - •De-duplicate results by
idacross pages
Message Formatting
- •Prefer
markdown_textovertextorblocksfor formatted messages - •Use
<@USER_ID>format to mention users (not @username) - •Use
\nfor line breaks in markdown_text
Known Pitfalls
- •Channel resolution:
SLACK_FIND_CHANNELScan return empty results if channel is private and bot hasn't been invited - •Rate limits:
SLACK_LIST_ALL_USERSand other list endpoints can hit HTTP 429; honor Retry-After header - •Nested responses: Results may be nested under
response.data.results[0].response.datain wrapped executions - •Thread vs channel:
SLACK_FETCH_CONVERSATION_HISTORYreturns main timeline only; useSLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATIONfor thread replies - •Message editing: Requires both
channeland original messagets; 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
| 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) |