Connect your AI Agents to Slack in minutes

Available tools
list_channels
List all channels in the workspace
create_channel
Create a new channel
get_channel_info
Get information about a channel using Channel ID (not channel name)
join_channel
Join a channel
leave_channel
Leave a channel
archive_channel
Archive a channel
unarchive_channel
Unarchive a channel
get_channel_members
Get members of a channel
invite_to_channel
Invite users to a channel
kick_from_channel
Remove a user from a channel
set_channel_topic
Set the topic for a channel
set_channel_purpose
Set the purpose for a channel
rename_channel
Rename a channel
get_file_info
Get information about a file
list_files
List files in the workspace
delete_file
Delete a file
share_file
Share a file to channels
get_file_content
Get the content of a text file
make_file_public
Make a file publicly accessible
revoke_file_public_url
Revoke public access to a file
post_message
Send a message to a Slack channel using Channel ID (not channel name)
update_message
Update an existing message in Slack
delete_message
Delete a message from Slack
get_message_permalink
Get a permanent link to a message
get_conversation_history
Get message history from a channel using Channel ID with enhanced timestamp filtering. For time windows: use Unix timestamps (oldest='1640995200.123456', latest='1640995300.123456') OR convenient parameters (days_ago=7, hours_ago=24, start_date='2023-12-01', end_date='2023-12-15'). Set inclusive=True to include boundary messages.
schedule_message
Schedule a message to be sent later
delete_scheduled_message
Delete a scheduled message
add_reaction
Add an emoji reaction to a message
remove_reaction
Remove an emoji reaction from a message
get_conversation_replies
Get all replies in a Slack thread. This tool MUST be called whenever you encounter a message with reply_count > 0 from get_conversation_history, search_messages, or any message-fetching tool to provide complete conversation context. When presenting results to users, always display username/display_name instead of user_id for better readability.
list_unread_direct_messages
Get all unread direct messages and group DMs with their message content. When presenting results to users, always display username/display_name instead of user_id for better readability.
list_unread_channel_messages
Get all unread messages from channels with their message content. Uses smart prioritization to check most recently active channels first. When presenting results to users, always display username/display_name instead of user_id for better readability.
list_scheduled_messages
List scheduled messages that haven't been sent yet
get_unread_messages_from_channel
Get all unread messages from a specific channel. Uses the channel's last_read timestamp to accurately identify unread messages. When presenting results to users, always display username/display_name instead of user_id for better readability.
get_unread_messages_from_user
Get all unread direct messages from a specific user. When presenting results to users, always display username/display_name instead of user_id for better readability.
post_message_by_name
Send a message to a person or channel by name instead of ID. Resolves display name, real name, username, or channel name to the correct ID and sends the message. Use this when you have a person's name but not their Slack user/channel ID.
list_pinned_messages
List all pinned messages and items in a channel
pin_message
Pin a message to a channel
unpin_message
Remove a pinned message from a channel
search_messages
Search Slack messages using Slack's exact search syntax with enhanced timestamp filtering. For time windows: use date modifiers (after:YYYY-MM-DD, before:YYYY-MM-DD) OR convenient parameters (days_ago=7, hours_ago=24, start_date='2023-12-01', end_date='2023-12-15'). IMPORTANT: When using from:@username, NEVER guess usernames - use list_users tool first to find the exact username/display name. Returns paginated results.
search_files
Search for files across Slack using keywords with enhanced timestamp handling and automatic pagination. Supports channel filtering, file type filtering, and efficient date-based searches. IMPORTANT: When using from:@username, NEVER guess usernames - use list_users tool first to find the exact username/display name.
get_user_info
Get complete user information including workspace role, permissions, and profile
list_users
List all users in the workspace
lookup_user_by_email
Look up a user by their email address
get_user_presence
Get a user's presence status
set_user_presence
Set your own presence status (auto or away)
set_user_profile
Set profile information for a user
get_users_conversations
Get conversations a user is a member of
set_user_status
Set status text and emoji for a user. Only sends emoji parameter when provided (not null/empty).
clear_user_status
Clear the status for a user
validate_credential
Validate Slack credentials. Verifies credentials during setup.

How to set up Merge Agent Handler
In an mcp.json file, add the configuration below, and restart Cursor.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "url": "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
5 "headers": {
6 "Authorization": "Bearer yMt*****"
7 }
8 }
9 }
10}
11Open your Claude Desktop configuration file and add the server configuration below. You'll also need to restart the application for the changes to take effect.
Make sure Claude is using the Node v20+.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "yMt*****"
14 }
15 }
16 }
17}Open your Windsurf MCP configuration file and add the server configuration below.
Click on the refresh button in the top right of the Manage MCP server page or in the top right of the chat box in the box icon.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api.merge.dev/api/v1/tool-packs/<tool-pack-id>/registered-users/<registered-user-id>/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "<ah-production-access-key>"
14 }
15 }
16 }
17 }In Command Palette (Cmd+Shift+P on macOS, Ctrl+Shift+P on Windows), run "MCP: Open User Configuration".
You can then add the configuration below and press "start" right under servers. Enter the auth token when prompted.
Learn more in the official documentation ↗
1{
2 "inputs": [
3 {
4 "type": "promptString",
5 "id": "agent-handler-auth",
6 "description": "Agent Handler AUTH_TOKEN", // "yMt*****" when prompt
7 "password": true
8 }
9 ],
10 "servers": {
11 "agent-handler": {
12 "type": "stdio",
13 "command": "npx",
14 "args": [
15 "-y",
16 "mcp-remote@latest",
17 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
18 "--header",
19 "Authorization: Bearer ${input:agent-handler-auth}"
20 ]
21 }
22 }
23}FAQs on using Merge's Slack MCP server
FAQs on using Merge's Slack MCP server
How can I use the Slack MCP server?
The Slack MCP server allows AI agents to search channels and files, send and read messages, fetch user profiles, and much more.
To use Slack with Merge Agent Handler, you'd use Agent Handler’s standard flow:
- Add Slack to a Tool Pack: Create or configure a Tool Pack and add the Slack connector with the specific tools you want to enable (e.g., list_channels, post_message)
- Set up authentication: Choose between individual authentication (user-specific Slack credentials) and shared authentication (organization-level access)
- Register users: Create registered users in Agent Handler who’ll interact with Slack through your agent
- Authenticate via Merge Link: When a user first attempts a Slack tool call, Agent Handler automatically prompts them through a guided authentication flow using Merge Link
- Make tool calls: Once you've authenticated your agent, it can execute Slack tool calls with built-in security, observability, and DLP safeguards
What are popular tools for Slack’s MCP server?
Search tools
- Search messages and files: Filter by date, user, and type; retrieve metadata and content
- Search users: Filter by name, partial name, email, or ID; retrieve user details and status
- Search private and public channels: Filter by name/description; retrieve channel metadata
Messaging tools
- Send messages: Send to any Slack conversation
- Read channels: Retrieve full message history
- Read threads: Retrieve entire threaded conversations
User management
- Fetch user profiles: Retrieve full profile metadata, including custom fields
What makes Merge Agent Handler’s Slack MCP server better than alternative Slack MCP servers?
Secure authentication & credential handling
Merge Agent Handler provides built-in authentication flows, user onboarding, and dynamic authorization handling so Slack credentials are managed securely and consistently.
Granular security with data loss prevention (DLP)
The Security Gateway actively scans Slack tool inputs and outputs for sensitive information and can block, redact, or mask data. This protects against data misuse across Slack interactions.
Real-time observability with fully-searchable logs
Agent Handler logs every tool call and underlying Slack API request. These server Logs are fully searchable, allowing you to easily debug, audit, and optimize your agentic workflows with Slack.
Connector Studio for customization
Merge Agent Handler’s Slack MCP server already includes 50+ tools. But you can modify existing ones and add any with ease.
How does Merge Agent Handler manage authentication?
Merge handles all Slack credential workflows—including onboarding prompts, dynamic authorization flows, and individual vs. shared authentication configuration—through Merge Agent Handler and built-in auth logic.
For each connector in a Tool Pack, you can determine whether Slack requires individual authentication or can use shared authentication.
Can I set custom security rules for Slack tool calls?
Yes. Agent Handler supports:
- Default DLP rules
- Custom rules that scan Slack tool inputs and responses for sensitive data
- Actions, including block, redact, or mask
For example, you can set rules that block post_message calls that contain credit card numbers before they're sent to Slack channels; redact social security numbers from search_messages responses; and log any get_user_profile calls that access employee phone numbers.
What are common use cases for the Slack MCP server?
- Knowledge retrieval: An AI agent can search Slack message history, threads, and channels to answer questions, surface past decisions, and provide context
- Automated notifications and updates: Agents can post status updates, such as daily summaries, to specific channels based on data from connected systems (e.g., issues in Jira)
- Workflow orchestration: Agents can coordinate cross-platform actions, like creating an Asana ticket from a Slack conversation and then posting the ticket link back to the thread
- Meeting and event coordination: Agents can parse Slack discussions to identify scheduling needs, check availability across calendar systems, and send meeting confirmations to relevant channels or users
- Customer support triage: Agents can monitor support channels, categorize requests, and route issues to the appropriate team members
Explore other MCP servers built and managed by Merge
























Ready to try it out?
Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now

