Slack Add Reactions MCP API
The Slack Add Reactions MCP API allows you to add one or more emoji reactions to specific messages in Slack channels using the Model Context Protocol interface. For more information about MCP, see the official documentation.
Tool Informationโ
slack_add_reactionsโ
- Tool name:
slack_add_reactions - Function:
add_slack_reactions - Description: Add one or more emoji reactions to a specific message in a Slack channel. This allows adding emoji reactions to any message, including those in threads.
Input Parametersโ
The tool accepts a SlackAddReactionsInput object with the following parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
channel | string | Yes | Slack channel ID (e.g., C12345678) or name with # (e.g., #general) |
timestamp | string | Yes | Timestamp ID of the message to react to |
emojis | array[string] | Yes | A list of emoji names to add as reactions (without colons) |
Usage Examplesโ
Single Reactionโ
{
"channel": "#general",
"timestamp": "1234567890.123456",
"emojis": ["thumbsup"]
}
Multiple Reactionsโ
{
"channel": "C1234567890",
"timestamp": "1234567890.123456",
"emojis": ["thumbsup", "heart", "fire", "100"]
}
Custom Emoji Reactionsโ
{
"channel": "#team-updates",
"timestamp": "1640995200.000000",
"emojis": ["company_logo", "party-parrot", "rocket"]
}
Thread Message Reactionsโ
{
"channel": "C9876543210",
"timestamp": "1641081600.123456",
"emojis": ["eyes", "thinking_face", "question"]
}
Mixed Standard and Custom Emojisโ
{
"channel": "#announcements",
"timestamp": "1234567891.456789",
"emojis": ["tada", "clap", "custom_celebrate", "heart_eyes"]
}
Response Formatโ
The tool returns a dictionary containing a list of responses under the 'responses' key. Each response is the raw JSON returned by Slack for each emoji reaction added:
{
"responses": [
{
"ok": true
}
]
}
For Multiple Reactionsโ
{
"responses": [
{
"ok": true
},
{
"ok": true
},
{
"ok": false,
"error": "already_reacted",
"detail": "Cannot react with that emoji because you have already reacted with it."
},
{
"ok": true
}
]
}
Key Response Fieldsโ
| Field | Description |
|---|---|
responses | Array of response objects, one for each emoji reaction attempt |
responses[].ok | Boolean indicating if the individual reaction was successful |
responses[].error | Error code if the reaction failed |
responses[].detail | Detailed error message if the reaction failed |
Error Handlingโ
This function may raise errors in the following situations:
- Missing or invalid Slack API token
- Invalid channel name or ID
- Invalid message timestamp
- Insufficient permissions to react in the channel
- Message doesn't exist or is not accessible
- Emoji doesn't exist in the workspace
- Already reacted with the same emoji
- Network connectivity issues
- API rate limiting
If any individual reaction fails, the corresponding response will have "ok": false:
{
"responses": [
{
"ok": true
},
{
"ok": false,
"error": "no_reaction",
"detail": "Value passed for name was invalid."
}
]
}
Common Error Codesโ
| Error Code | Description | Solution |
|---|---|---|
channel_not_found | Channel doesn't exist or bot lacks access | Verify channel name/ID and bot permissions |
message_not_found | Message timestamp is invalid or message doesn't exist | Verify the timestamp parameter |
no_reaction | Emoji name is invalid or doesn't exist | Check emoji name spelling and availability |
already_reacted | User has already reacted with this emoji | This is informational, not necessarily an error |
not_in_channel | Bot is not a member of the channel | Invite the bot to the channel |
invalid_auth | Invalid or missing API token | Check SLACK_BOT_TOKEN environment variable |
rate_limited | Too many requests sent | Implement rate limiting in your application |
too_many_reactions | Message has reached maximum reaction limit | Remove existing reactions or choose different emojis |
Use Casesโ
Typical scenarios for using slack_add_reactions:
- Sentiment Expression: Add reactions to express agreement, appreciation, or emotions
- Status Indication: Use reactions to indicate task completion or approval status
- Poll Responses: Create informal polls using reaction-based voting
- Workflow Automation: Automatically react to messages based on content analysis
- Bot Feedback: Provide immediate visual feedback from automated systems
- Team Engagement: Encourage team interaction and acknowledgment
- Content Categorization: Use reactions to tag or categorize messages
Authenticationโ
This tool requires a valid Slack bot token set in one of the following environment variables:
SLACK_BOT_TOKEN(recommended)SLACK_TOKEN(fallback)
The bot must have the following OAuth scopes:
reactions:write- Required to add reactions to messageschannels:read- Required to access public channelsgroups:read- Required to access private channels (if needed)
Rate Limitingโ
Slack enforces rate limits on the reactions.add API:
- Tier 3: 50+ requests per minute
- Tier 4: 100+ requests per minute
The server will automatically handle retries according to Slack's rate limiting headers.
Emoji Name Formatโ
Standard Emojisโ
- Format: Use the emoji name without colons
- Examples:
thumbsup,heart,fire,100,tada - Unicode: Standard Unicode emoji names are supported
Custom Emojisโ
- Format: Use the custom emoji name without colons
- Examples:
company_logo,party-parrot,custom_celebrate - Availability: Must exist in the current workspace
Emoji Name Rulesโ
- No Colons: Don't include
:characters (usethumbsup, not:thumbsup:) - Case Insensitive:
ThumbsUpandthumbsupare equivalent - Underscores: Use underscores for multi-word emoji names
- Length Limit: Maximum 21 characters per emoji name
Reaction Behaviorโ
Duplicate Reactionsโ
- Same User: Cannot react with the same emoji twice
- Error Response: Returns
already_reactederror - Non-Fatal: Other reactions in the same request will still be processed
Reaction Limitsโ
- Per Message: Maximum of 50 unique reactions per message
- Per User: No limit on different reactions from the same user
- Workspace Limit: Limited by available emojis in the workspace
Reaction Visibilityโ
- Public Channels: Reactions are visible to all channel members
- Private Channels: Reactions are visible to all channel members
- Direct Messages: Reactions are visible to all conversation participants
- Threads: Reactions on thread messages are visible to thread participants
Best Practicesโ
Reaction Strategyโ
- Meaningful Reactions: Choose emojis that add value to the conversation
- Consistent Usage: Establish team conventions for reaction meanings
- Avoid Spam: Don't overuse reactions to prevent notification fatigue
- Cultural Sensitivity: Be aware of emoji interpretations across cultures
Error Handlingโ
- Graceful Degradation: Handle individual reaction failures without stopping the entire process
- User Feedback: Inform users about failed reactions when appropriate
- Retry Logic: Implement exponential backoff for rate-limited requests
- Emoji Validation: Verify emoji availability before attempting to react
Performance Optimizationโ
- Batch Reactions: Use this tool to add multiple reactions in a single API call
- Caching: Cache emoji availability to avoid repeated validation
- Rate Management: Distribute reaction requests over time to avoid rate limits
- Error Monitoring: Track reaction failure patterns for system health
Integration Examplesโ
Automated Approval Workflowโ
// React to indicate approval status
{
"channel": "#pull-requests",
"timestamp": "1234567890.123456",
"emojis": ["white_check_mark", "shipit"]
}
Sentiment Analysis Botโ
// React based on message sentiment
{
"channel": "#feedback",
"timestamp": "1234567890.123456",
"emojis": ["thumbsup", "heart"] // Positive sentiment
}
Task Completion Indicatorโ
// Mark task as completed
{
"channel": "#project-tasks",
"timestamp": "1234567890.123456",
"emojis": ["heavy_check_mark", "tada"]
}