Skip to main content
Version: 0.0.2

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:

ParameterTypeRequiredDescription
channelstringYesSlack channel ID (e.g., C12345678) or name with # (e.g., #general)
timestampstringYesTimestamp ID of the message to react to
emojisarray[string]YesA 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โ€‹

FieldDescription
responsesArray of response objects, one for each emoji reaction attempt
responses[].okBoolean indicating if the individual reaction was successful
responses[].errorError code if the reaction failed
responses[].detailDetailed 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 CodeDescriptionSolution
channel_not_foundChannel doesn't exist or bot lacks accessVerify channel name/ID and bot permissions
message_not_foundMessage timestamp is invalid or message doesn't existVerify the timestamp parameter
no_reactionEmoji name is invalid or doesn't existCheck emoji name spelling and availability
already_reactedUser has already reacted with this emojiThis is informational, not necessarily an error
not_in_channelBot is not a member of the channelInvite the bot to the channel
invalid_authInvalid or missing API tokenCheck SLACK_BOT_TOKEN environment variable
rate_limitedToo many requests sentImplement rate limiting in your application
too_many_reactionsMessage has reached maximum reaction limitRemove 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 messages
  • channels:read - Required to access public channels
  • groups: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 (use thumbsup, not :thumbsup:)
  • Case Insensitive: ThumbsUp and thumbsup are 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_reacted error
  • 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"]
}