Connect your AI Agents to Slackbot in minutes

Merge lets you securely connect your agents to Slackbot and thousands of tools instantly

Available tools

create_canvas

Create a new standalone Slack canvas with optional title and markdown content. Returns the canvas ID.

edit_canvas

Write to or edit an existing Slack canvas by applying one or more change operations. Use 'insert_at_end' to append content, 'insert_at_start' to prepend, or 'replace'/'delete' with a section_id for targeted edits.

delete_canvas

Permanently delete a Slack canvas by ID. This action cannot be undone.

create_channel_canvas

Create a canvas linked to a Slack channel. The canvas appears in the channel's canvas tab. Provide an optional markdown body for the initial content.

list_channels

List channels in the workspace (public and private; direct messages are excluded by default). Returns a lean set of fields by default (id, name, is_private, is_archived, is_member, num_members, topic); request more via the 'fields' parameter. Paginate with cursor/page_info.

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

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, most recent first by default. sort (created|timestamp) and sort_dir (asc|desc) order the returned page only — Slack's files.list has no server-side sort, so non-default ordering is not globally consistent across pages. The uploader and channels are resolved to readable names (user_name, channel_names); raw IDs remain available in user and channels. Paginate with count/page.

delete_file

Delete a file

get_file_content

Get the content of a text file

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

get_user_info

Get complete user information including workspace role, permissions, and profile

get_current_user

Resolve the authenticated user ('me'/'myself') to their Slack user ID and profile. Call this first whenever a request refers to the current user (e.g. 'send me a DM', 'message myself') to get the user_id to open a DM or post to.

list_users

List users in the workspace. Returns a lean set of fields by default (id, name, real_name, display_name, email, is_bot, deleted); request more via the 'fields' parameter. Paginate with cursor/page_info. Use lookup_user_by_email or search_users to find a specific person.

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)

get_users_conversations

Get conversations a user is a member of

validate_credential

Validate Slack credentials. Verifies credentials during setup.

View all tools by creating a free accountSee more tools

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}
11
Copy Code

Open 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}
Copy Code
Copied!

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  }
Copy Code

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}
Copy Code

FAQs on using Merge's Slackbot  MCP server

FAQs on using Merge's Slackbot  MCP server

What is a Slackbot MCP?

It's an MCP server that lets your agents access data and functionality from Slackbot via tools. Your agents can invoke these tools to post a message as the bot, reply in a thread, react to a message, open a direct message with a user, and more.

Slack offers an official MCP server, but it's built for user-scoped actions, not a bot user. For Slackbot's bot-scoped surface, posting and reacting as the bot itself, you can use a third-party platform instead, like Merge Agent Handler.

How can I use the Slackbot MCP server?

The use cases naturally depend on the agent you've built, but here are a few common ones:

  • Automated incident alerts: When a monitoring system fires a critical alert, an agent has the bot post directly to the on-call channel with severity, service name, and a link to the runbook, so the team sees it the moment it happens
  • Thread-based triage: When a customer question lands in a support channel, an agent reads the thread, drafts a suggested reply, and posts it under the bot's identity for a human to approve or edit before it goes out
  • Status update bots: On a schedule or after a deploy finishes, an agent has the bot post a status update to a channel, then edits that same message in place as the state changes instead of spamming new posts
  • Approval workflow bots: When a request needs sign-off, an agent has the bot post the request with reaction options, waits for a reviewer to react, and moves the workflow forward based on which emoji was added

What are popular tools for Slackbot's MCP server?

Here are some of the most commonly used tools:

  • post_message: posts a message to a channel or thread under the bot's identity. It's the tool most bot workflows reach for first, whether that's an alert, a digest, or a reply
  • post_message_by_name: posts to a channel identified by its display name instead of its ID. This saves a lookup step when the agent already knows which channel it's targeting
  • update_message: edits a message the bot already sent, for example refreshing a status line after a deploy finishes. The thread stays clean instead of filling up with duplicate posts
  • add_reaction: adds an emoji reaction to a message. Bots use this to acknowledge a request or signal approval without writing a full reply
  • get_conversation_replies: fetches every reply in a thread. A triage bot needs this to read the full back-and-forth before deciding what to post next
  • schedule_message: queues a message to post at a future time. Useful for reminders, recurring digests, or announcements timed to a specific hour

What makes Merge Agent Handler's Slackbot MCP server better than alternative Slackbot MCP servers?

Here's what sets Merge Agent Handler's Slackbot MCP server apart from building or using an alternative:

  • Enterprise-grade security and DLP: Merge Agent Handler includes built-in data loss prevention controls that let you block or redact sensitive fields before they reach an agent. For Slackbot, this means you can prevent private channel content or direct message contents from being exposed even when the agent has broad read access
  • Managed authentication and credentials: Merge stores and refreshes Slackbot credentials on your behalf. You never expose raw API keys or OAuth tokens to an agent or manage token rotation manually
  • Real-time observability and audit trail: Every tool call made against Slackbot is logged with timestamp, tool name, input parameters, and response metadata. You can audit exactly what an agent read or wrote without instrumenting anything yourself
  • Tool Packs and controlled access: Tool Packs let you bundle specific Slackbot tools with tools from other connectors into a single MCP endpoint, scoped to a specific use case. An agent gets exactly the tools it needs, nothing more

How can I start using Merge Agent Handler's Slackbot MCP server?

You can take the following steps:

1. Create or log into your Merge Agent Handler account.

2. Install the Merge CLI by running pipx install merge-api, then run merge configure to link the CLI to your Merge account and merge login to authenticate your session.

3. Register the Agent Handler MCP server with Claude Code by running claude mcp add --transport http agent-handler https://ah-api.merge.dev/mcp, then open Claude Code and run /mcp to confirm agent-handler appears with a connected status.

4. Select agent-handler from the MCP list. This opens a browser window where you select which integrations to authenticate. Choose Slackbot and complete the auth flow. Merge stores and manages the credentials going forward.

5. Open a Claude Code session and start querying Slackbot directly. The first time you use a Slackbot tool, a Magic Link may appear to complete connector authentication.

If you want to connect Merge Agent Handler's Slackbot MCP with internal or customer-facing agentic products, you can follow the steps in our docs.

Can employees use Merge Agent Handler to connect their AI tools to Slackbot?

Yes, Agent Handler for Employees lets your employees connect Claude, ChatGPT, Microsoft Copilot, Cursor, and other MCP-compatible AI tools to Slackbot without bypassing IT governance.

IT can provision access by role or group via SCIM. An IT support engineer, for example, gets Slackbot access to post incident updates, Jira access to open tickets, and PagerDuty access to escalate alerts, while a marketing coordinator gets Slackbot access to schedule campaign announcements, Asana access to update campaign tasks, and Google Drive access to pull creative assets.

Every tool call an employee's AI makes to Slackbot is also inspected against your DLP rules and logged to a searchable audit trail, giving security teams full visibility into what data was accessed and by whom.

Explore other MCP servers built and managed by Merge

activecampaign
ActiveCampaign
adobe_pdf_services
Adobe PDF Services
ahrefs
Ahrefs
airtable
Airtable
amadeus
Amadeus
amazon_s3
Amazon S3
amplitude
Amplitude
anaplan
Anaplan
apollo
Apollo
arize
Arize
articulate
Articulate Reach 360
asana
Asana
ashby
Ashby
attio
Attio
aviationstack
Aviationstack
axiom
Axiom
bamboohr
BambooHR
basecamp
Basecamp
biorxiv
bioRxiv
bitbucket
Bitbucket
bitly
Bitly
box
Box
calendly
Calendly
canva
Canva

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