ClawLink

How to connect Slack to OpenClaw

Connect Slack to OpenClaw with ClawLink in one click — 145 tools your AI agent can call from chat via hosted OAuth. No API keys, no manual setup.

Get started for free
OpenClaw
OpenClaw
ClawLink
ClawLink
Slack
Slack
SlackOAUTH2MCP

Post messages and browse Slack channels. Once connected, OpenClaw can read and act on Slack from chat — pairing, token refresh, and tool wiring handled for you.

145 tools

The usual route to Slack access for OpenClaw is an MCP server you configure and keep running, plus your own OAuth app or API keys. ClawLink gives OpenClaw a more practical Slack setup: install one ClawHub skill, connect Slack in the browser, and OpenClaw can call real Slack actions from any chat surface with no auth, token refresh, or tool wiring to build yourself.

Copy this prompt into OpenClaw, or open the Slack skill on ClawHub.

Prompt for OpenClaw
Before installing anything, inspect the ClawHub skill metadata and setup requirements.
If the skill asks you to install a third-party package or CLI, verify its source, maintainer, and package contents before running the install command.
Install the skill "Slack" (hith3sh/slack-messaging) from ClawHub only after those checks pass.
Skill page: https://clawhub.ai/hith3sh/slack-messaging
Keep the work scoped to this skill only.
After install, help me finish setup from verified skill metadata.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Setup

It takes three steps to connect OpenClaw to Slack.

  1. 1

    Install the plugin

    Paste the setup prompt into OpenClaw, or install from the terminal and ask OpenClaw to pair:

    openclaw plugins install clawhub:clawlink-plugin
  2. 2

    Connect Slack

    One-click OAuth in the dashboard.

  3. 3

    Use it from chat

    Ask OpenClaw: "What can you do with Slack?"

Install by command

The setup prompt above does all of this in one paste. By hand, it is one install command plus a browser approval:

openclaw plugins install clawhub:clawlink-plugin

Then ask OpenClaw to set up ClawLink. It starts browser pairing and prints an approval link — open it, approve the device, return to the chat, and say done. Finally, connect Slack in the ClawLink dashboard — a one-click OAuth approval, no API keys.

Verify the connection by asking OpenClaw:

Find the #<channel> channel with slack_find_channels, pull the last day of messages with slack_fetch_conversation_history, and give me a summary plus anything addressed to me that still needs a reply.

Using a different agent?

The OpenClaw plugin is one client of ClawLink's MCP server. Claude Code, Cursor, Codex, or any agent that can run a shell command pairs with the same ClawLink account through the CLI:

npx -y @useclawlink/cli login

login opens the same browser approval and stores a credential locally. Once Slack is connected in the dashboard, that agent calls the same 145 Slack tools over MCP. Full setup for MCP clients and shell agents: connect apps to any AI agent.

Slack MCP for OpenClaw

Looking for a Slack MCP server for OpenClaw? ClawLink connects Slack to OpenClaw and exposes 145 Slack tools your agent can call over MCP, with hosted auth and nothing to run or maintain yourself. Using Hermes instead? The Hermes Slack integration works the same way.

The standard route to Slack in an agent is a project of its own: create a Slack app, choose bot scopes, enable Socket Mode, install it to the workspace, then keep an xoxb- token and often an xapp- token somewhere your agent can read them. ClawLink replaces all of it with Slack's OAuth screen — you approve the workspace once in the browser and OpenClaw can call the 145 Slack tools below. This is also different from the no-code and Slack-AI options search results suggest: those run the automation on someone else's platform and hand you a builder, whereas here the tools are called directly by your own agent, in your own chat, with the workspace access you approved.

What the OpenClaw Slack integration can do

145 Slack tools are ready for OpenClaw once the account is connected. The 30 below are the ones people reach for most; your agent can call all 145.

30 of 145 Slack tools for OpenClaw

ToolWhat it does
Add reaction to an item slack_add_reaction_to_an_itemAdd an emoji reaction to a Slack message
Archive conversation slack_archive_conversationArchive a Slack conversation
Create a reminder slack_create_a_reminderCreate a Slack reminder
Create channel slack_create_channelCreate a new Slack channel
Deletes a message from a chat slack_deletes_a_message_from_a_chatDelete a message from a Slack conversation
Download slack file slack_download_slack_fileDownload a file from Slack
Fetch conversation history slack_fetch_conversation_historyFetch message history from a Slack conversation
Fetch message thread from a conversation slack_fetch_message_thread_from_a_conversationFetch a message thread from a Slack conversation
Find channels slack_find_channelsFind Slack channels by name
Find user by email address slack_find_user_by_email_addressFind a Slack user by email address
Find users slack_find_usersSearch for Slack users
Get bot user slack_get_bot_userGet the bot user identity in Slack
Invite user to channel slack_invite_user_to_channelInvite a user to a Slack channel
Join an existing conversation slack_join_an_existing_conversationJoin an existing Slack conversation
Leave conversation slack_leave_conversationLeave a Slack conversation
List all channels slack_list_all_channelsList all Slack channels
List all users slack_list_all_usersList all Slack users in the workspace
List conversations slack_list_conversationsList Slack conversations
List files with filters in slack slack_list_files_with_filters_in_slackList Slack files with filters
List pinned items slack_list_pinned_itemsList pinned items in a Slack channel
List reminders slack_list_remindersList Slack reminders
List scheduled messages slack_list_scheduled_messagesList scheduled messages in Slack
List user groups slack_list_user_groupsList Slack user groups
Pin item slack_pin_itemPin an item in a Slack channel
Remove reaction from item slack_remove_reaction_from_itemRemove an emoji reaction from a Slack message
Retrieve conversation information slack_retrieve_conversation_informationRetrieve information about a Slack conversation
Retrieve conversation members list slack_retrieve_conversation_members_listRetrieve members of a Slack conversation
Retrieve user profile information slack_retrieve_user_profile_informationRetrieve a Slack user's profile
Schedule message slack_schedule_messageSchedule a message to be sent later
Search messages slack_search_messagesSearch Slack messages

Try it: find the Slack tool you need

Browse the 30 Slack tools

Click any tool to see exactly what OpenClaw can do and copy a ready-to-use prompt.

Example prompts

Find the #<channel> channel with slack_find_channels, pull the last day of messages with slack_fetch_conversation_history, and give me a summary plus anything addressed to me that still needs a reply.

Use slack_search_messages for "<term>" over the last 30 days, group the results by channel, and tell me who the main participants were. Do not post anything.

In #<channel>, find the thread started by <person> about "<topic>" using slack_fetch_message_thread_from_a_conversation, draft a reply for me to approve, and only then post it into that same thread.

Draft a status update for #<channel> from the notes above, show it to me, and once I approve use slack_schedule_message to post it at 9am tomorrow in my timezone.

How the Slack tools take their arguments

Details from the manifest that decide whether a Slack prompt works on the first try.

  • Channels are addressed by id, not by name. slack_find_channels and slack_list_all_channels resolve a name to a C… id. A prompt that passes #general directly is the usual source of channel_not_found.
  • Threads need the parent timestamp. slack_fetch_message_thread_from_a_conversation returns the ts that a threaded reply must carry. Without it, a reply becomes a new channel message.
  • People are resolved by email or lookup, not by display name. slack_find_user_by_email_address and slack_find_users return the U… ids that mention and invite calls expect.
  • slack_schedule_message is the safe write. It gives you a reviewable gap between the agent composing something and the workspace seeing it, which is worth using for anything customer-facing.
  • Reading history and searching are different tools with different reach. slack_fetch_conversation_history walks one channel the account belongs to; slack_search_messages spans everything the account can see. Ask for the second when you do not know where something was said.

The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for OpenClaw. That is fine if you want to build and maintain the integration yourself. Most teams just want Slack working from chat.

ManualClawLink
Connection flowRegister a Slack app, configure redirect URLs, manage consent details, and reconnect users when auth settings drift.Users connect Slack through the hosted browser flow and ClawLink keeps the token lifecycle out of your app code.
Ongoing maintenanceYou own refresh logic, permission debugging, environment config, and every provider-specific edge case for Slack.ClawLink handles the repetitive integration plumbing so your team can focus on the workflow instead of the infrastructure.
Agent usabilityYou still need to expose the right Slack actions to the runtime in a format your agent can reliably use.145 tools for Slack are already exposed through ClawLink, so the agent can read and act from chat immediately.

Composio also exposes Slack to AI agents. It is developer infrastructure: Python and TypeScript SDKs, an MCP server, and a catalog past 1,000 apps, aimed at teams shipping agent products. ClawLink is built for OpenClaw users instead. You install the plugin once, connect Slack in the browser, and the 145 tools above work from chat. There is no SDK, no config file, and no API key handling. Choosing between them? Read the full Composio alternatives comparison.

Troubleshooting

OpenClaw installed the Slack skill but can't call the tools

The ClawHub skill teaches OpenClaw about Slack, but the calls run through the ClawLink plugin and your connected account. Make sure Slack is connected in the dashboard, then start a fresh chat so OpenClaw reloads the tool catalog. If OpenClaw runs as a persistent gateway, restart it so the new tools register.

Connection succeeds but no tools appear

Reconnect Slack from the dashboard, then start a fresh chat if the runtime still has the old tool catalog loaded.

"Tool schema not loaded yet" error when calling Slack tools

Slack tool schemas load on demand the first time a tool runs and are cached after that, so this error usually clears on its own: wait a few seconds and retry the same request. If every Slack call keeps failing with it in a fresh chat, reconnect from the dashboard, and contact support if it still persists — that pattern points to a configuration problem on our side, not something you can fix by reconnecting again.

Slack returns 403 or "permission denied" on one action while others work

Two usual causes. The connected account may not have access to the specific workspace, inbox, store, or project in the request — check that first. If access looks right, the agent may have sent a placeholder value (like "YOUR_ID" or an example id from documentation) instead of a real one: ask it to run a list or search tool first, then retry the action with a real id from those results. Most failures at this stage are one of these two, not ClawLink bugs.

Slack returns "missing_scope" or 403 on one action while other Slack tools work

The error name is Slack's and it means the installed authorization does not carry the permission that one call needs. On a self-built app the documented fix is to add the scope in your app configuration and reinstall to the workspace, because Slack does not grant new scopes to an existing install — that reinstall step is what most search results are describing. On a hosted connection you do not own the app configuration, so the equivalent action is to reconnect from the ClawLink dashboard, which runs the install again and picks up the full permission set. Before doing that, rule out the cheaper cause: a write to a private channel the connected account is not a member of fails even with correct scopes, and inviting the account in Slack fixes it without touching the connection.

Ask the agent to diagnose it:

Call slack_get_bot_user and slack_list_all_channels, tell me which workspace and account you are connected as and which channels you can actually see. Then quote the exact error string from the failed call.
"channel_not_found" when the channel is right there in my sidebar

Two causes, and neither is a broken connection. The first is membership: private channels are only visible to members, so the agent cannot see one it was never invited to, and inviting the connected account in Slack resolves it immediately. The second is the identifier — Slack tools take channel ids like C0123456789, not the display name, and an agent that passes #general or a name lifted from an example gets channel_not_found rather than a helpful error. Ask it to resolve the name first with slack_find_channels and then use the id from that result.

Ask the agent to diagnose it:

Use slack_find_channels to look up the channel by name and show me the exact channel id you get back. Then retry the failed call with that id.
Slack messages send as the wrong identity, or replies land outside the thread

Sending identity follows the connection: messages post through the authorization you approved, so if a workspace has several ClawLink connections the one marked default is the one used unless the prompt names another. Threading is a separate and more common mistake. A reply belongs in a thread only if the call carries the parent message's timestamp, so an agent that posts without one starts a new message in the channel instead. Ask it to fetch the thread with slack_fetch_message_thread_from_a_conversation first and reply using the ts it returns.

OAuth finished in the browser but the account is still missing

Try reconnecting Slack and complete the consent flow in the same browser session. Partial OAuth approvals or switching accounts mid-flow can leave the connection incomplete.

FAQ

Is there a OpenClaw Slack integration?

Yes. ClawLink is the fastest way to connect OpenClaw to Slack: link your Slack account once in the browser and OpenClaw can call the Slack API through 145 ready-made tools — no custom code or token handling.

How do I add Slack to OpenClaw with ClawLink?

Paste the setup prompt from this page into OpenClaw. It installs the ClawLink Slack skill from ClawHub, then you click Connect in the dashboard to authorize Slack. OpenClaw calls the tools from the next message — no config files or API keys to manage.

How long does it take to connect Slack to OpenClaw?

About two minutes. Sign in, click Connect next to Slack in the dashboard, authenticate, and OpenClaw can use it from the next chat message.

Why use ClawLink instead of wiring Slack up myself?

The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for OpenClaw. That is fine if you want to build and maintain the integration yourself. Most teams just want Slack working from chat.

Do I need to create a Slack app or collect xoxb tokens?

No. Connecting through ClawLink uses Slack's OAuth install flow, so you pick the workspace, review the permissions on Slack's own screen, and approve. There is no app to create in api.slack.com, no bot token or app-level token to copy, and nothing to add to openclaw.json. The practical difference shows up later: a token pasted into a config file keeps working until someone remembers to revoke it, whereas a workspace admin removing the app cuts access immediately.

How is this different from a no-code platform or Slack's own AI features?

Those are different products for a different job. A no-code platform runs workflows on its own infrastructure and gives you a builder to configure them; Slack's built-in AI works inside Slack. This integration gives your agent the Slack API as tools, so the reasoning happens wherever OpenClaw runs and the agent decides which calls to make in response to what you asked. That matters when the work spans several systems — searching Slack, then filing an issue, then replying — because there is no workflow to pre-define.

Which channels can the agent see?

Public channels in the workspace you connected, plus private channels the connected account is a member of. Slack scopes access to membership, so a private channel nobody invited you to is invisible to the agent as well, and the fix is to invite the account to the channel in Slack rather than to change anything in ClawLink. This is the most common cause of an agent reporting that a channel does not exist when you can see it perfectly well in your own sidebar.

Is it safe to connect Slack to an AI agent?

The connection is Slack's own OAuth install, so the permissions are named on Slack's approval screen, the agent never handles your password, and a workspace admin can revoke the app at any time from Slack's side while you can disconnect from the ClawLink dashboard. Two practical cautions matter more than the mechanism. First, the agent inherits your reach: it can read what you can read, so connect the account whose access you intend it to have. Second, message content is untrusted input — an agent asked to act on whatever it finds in a channel is acting on text anyone in that channel can write, so keep a human in the loop for anything that sends, deletes, or invites.

OpenClaw installed the Slack skill but can't call the tools

The ClawHub skill teaches OpenClaw about Slack, but the calls run through the ClawLink plugin and your connected account. Make sure Slack is connected in the dashboard, then start a fresh chat so OpenClaw reloads the tool catalog. If OpenClaw runs as a persistent gateway, restart it so the new tools register.