Discord Automation via Rube MCP
Automate Discord operations through Composio's Discord/Discordbot toolkits via Rube MCP.
Toolkit docs: composio.dev/toolkits/discord
Prerequisites
-
Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
-
Active Discord connection via RUBE_MANAGE_CONNECTIONS with toolkits discord and discordbot
-
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 discordbot (bot operations) or discord (user operations)
-
If connection is not ACTIVE, follow the returned auth link to complete Discord auth
-
Confirm connection status shows ACTIVE before running any workflows
Core Workflows
- Send Messages
When to use: User wants to send messages to channels or DMs
Tool sequence:
-
DISCORD_LIST_MY_GUILDS
-
List guilds the bot belongs to [Prerequisite]
-
DISCORDBOT_LIST_GUILD_CHANNELS
-
List channels in a guild [Prerequisite]
-
DISCORDBOT_CREATE_MESSAGE
-
Send a message [Required]
-
DISCORDBOT_UPDATE_MESSAGE
-
Edit a sent message [Optional]
Key parameters:
-
channel_id : Channel snowflake ID
-
content : Message text (max 2000 characters)
-
embeds : Array of embed objects for rich content
-
guild_id : Guild ID for channel listing
Pitfalls:
-
Bot must have SEND_MESSAGES permission in the channel
-
High-frequency sends can hit per-route rate limits; respect Retry-After headers
-
Only messages sent by the same bot can be edited
- Send Direct Messages
When to use: User wants to DM a Discord user
Tool sequence:
-
DISCORDBOT_CREATE_DM
-
Create or get DM channel [Required]
-
DISCORDBOT_CREATE_MESSAGE
-
Send message to DM channel [Required]
Key parameters:
-
recipient_id : User snowflake ID for DM
-
channel_id : DM channel ID from CREATE_DM
Pitfalls:
-
Cannot DM users who have DMs disabled or have blocked the bot
-
CREATE_DM returns existing channel if one already exists
- Manage Roles
When to use: User wants to create, assign, or remove roles
Tool sequence:
-
DISCORDBOT_CREATE_GUILD_ROLE
-
Create a new role [Optional]
-
DISCORDBOT_ADD_GUILD_MEMBER_ROLE
-
Assign role to member [Optional]
-
DISCORDBOT_DELETE_GUILD_ROLE
-
Delete a role [Optional]
-
DISCORDBOT_GET_GUILD_MEMBER
-
Get member details [Optional]
-
DISCORDBOT_UPDATE_GUILD_MEMBER
-
Update member (roles, nick, etc.) [Optional]
Key parameters:
-
guild_id : Guild snowflake ID
-
user_id : User snowflake ID
-
role_id : Role snowflake ID
-
name : Role name
-
permissions : Bitwise permission value
-
color : RGB color integer
Pitfalls:
-
Role assignment requires MANAGE_ROLES permission
-
Target role must be lower in hierarchy than bot's highest role
-
DELETE permanently removes the role from all members
- Manage Webhooks
When to use: User wants to create or use webhooks for external integrations
Tool sequence:
-
DISCORDBOT_GET_GUILD_WEBHOOKS / DISCORDBOT_LIST_CHANNEL_WEBHOOKS
-
List webhooks [Optional]
-
DISCORDBOT_CREATE_WEBHOOK
-
Create a new webhook [Optional]
-
DISCORDBOT_EXECUTE_WEBHOOK
-
Send message via webhook [Optional]
-
DISCORDBOT_UPDATE_WEBHOOK
-
Update webhook settings [Optional]
Key parameters:
-
webhook_id : Webhook ID
-
webhook_token : Webhook secret token
-
channel_id : Channel for webhook creation
-
name : Webhook name
-
content /embeds : Message content for execution
Pitfalls:
-
Webhook tokens are secrets; handle securely
-
Webhooks can post with custom username and avatar per message
-
MANAGE_WEBHOOKS permission required for creation
- Manage Reactions
When to use: User wants to view or manage message reactions
Tool sequence:
-
DISCORDBOT_LIST_MESSAGE_REACTIONS_BY_EMOJI
-
List users who reacted [Optional]
-
DISCORDBOT_DELETE_ALL_MESSAGE_REACTIONS
-
Remove all reactions [Optional]
-
DISCORDBOT_DELETE_ALL_MESSAGE_REACTIONS_BY_EMOJI
-
Remove specific emoji reactions [Optional]
-
DISCORDBOT_DELETE_USER_MESSAGE_REACTION
-
Remove specific user's reaction [Optional]
Key parameters:
-
channel_id : Channel ID
-
message_id : Message snowflake ID
-
emoji_name : URL-encoded emoji or name:id for custom emojis
-
user_id : User ID for specific reaction removal
Pitfalls:
-
Unicode emojis must be URL-encoded (e.g., '%F0%9F%91%8D' for thumbs up)
-
Custom emojis use name:id format
-
DELETE_ALL requires MANAGE_MESSAGES permission
Common Patterns
Snowflake IDs
Discord uses snowflake IDs (64-bit integers as strings) for all entities:
- Guilds, channels, users, roles, messages, webhooks
Permission Bitfields
Permissions are combined using bitwise OR:
-
SEND_MESSAGES = 0x800
-
MANAGE_ROLES = 0x10000000
-
MANAGE_MESSAGES = 0x2000
-
ADMINISTRATOR = 0x8
Pagination
-
Most list endpoints support limit , before , after parameters
-
Messages: max 100 per request
-
Reactions: max 100 per request, use after for pagination
Known Pitfalls
Bot vs User Tokens:
-
discordbot toolkit uses bot tokens; discord uses user OAuth
-
Bot operations are preferred for automation
Rate Limits:
-
Discord enforces per-route rate limits
-
Respect Retry-After headers on 429 responses
Quick Reference
Task Tool Slug Key Params
List guilds DISCORD_LIST_MY_GUILDS (none)
List channels DISCORDBOT_LIST_GUILD_CHANNELS guild_id
Send message DISCORDBOT_CREATE_MESSAGE channel_id, content
Edit message DISCORDBOT_UPDATE_MESSAGE channel_id, message_id
Get messages DISCORDBOT_LIST_MESSAGES channel_id, limit
Create DM DISCORDBOT_CREATE_DM recipient_id
Create role DISCORDBOT_CREATE_GUILD_ROLE guild_id, name
Assign role DISCORDBOT_ADD_GUILD_MEMBER_ROLE guild_id, user_id, role_id
Delete role DISCORDBOT_DELETE_GUILD_ROLE guild_id, role_id
Get member DISCORDBOT_GET_GUILD_MEMBER guild_id, user_id
Update member DISCORDBOT_UPDATE_GUILD_MEMBER guild_id, user_id
Get guild DISCORDBOT_GET_GUILD guild_id
Create webhook DISCORDBOT_CREATE_WEBHOOK channel_id, name
Execute webhook DISCORDBOT_EXECUTE_WEBHOOK webhook_id, webhook_token
List webhooks DISCORDBOT_GET_GUILD_WEBHOOKS guild_id
Get reactions DISCORDBOT_LIST_MESSAGE_REACTIONS_BY_EMOJI channel_id, message_id, emoji_name
Clear reactions DISCORDBOT_DELETE_ALL_MESSAGE_REACTIONS channel_id, message_id
Test auth DISCORDBOT_TEST_AUTH (none)
Get channel DISCORDBOT_GET_CHANNEL channel_id
Powered by Composio