Slack for Claude, Cursor, ChatGPT & agents
Slack workspace operations — channels, messages, threads, search, reactions, files, user lookup, status, scheduled sends
curl -fsSL https://tradeloop.top/install.sh | shmacOS / Linux. Windows + manual install.
What it does
Slack workspace operations — channels, messages, threads, search, reactions, files, user lookup, status, scheduled sends. Use when the user mentions Slack, DM, channel, thread, send a message / ping / notify someone, react with emoji, share a file or screenshot, find what someone said, look up @alice, schedule a message, set my status, DM someone directly, create or join a channel, invite people, pin a message, see who's in a channel or @usergroup, check who reacted. Channel selection accepts ID (C…) or human name (#general); to DM a person use send_dm (not send_message). User selection accepts ID (U…/W…), email, or display/real name.
The Slack skill is one of 25+ pre-wired TradeLoop integrations that any MCP-compatible client — Claude Desktop, Claude Code, Cursor, Windsurf, Codex CLI, and ChatGPT desktop — can call out of the box. You don't configure MCP servers or copy API keys into a JSON file; the TradeLoop daemon discovers the skill at startup and exposes its tools to whichever AI client is running.
Sample prompts
Once TradeLoop is installed and Slack is connected, ask your agent something like:
- “Send a message to #engineering: 'Deploying v0.2 to prod in 5 minutes.'”
- “Summarize the last 50 messages in #product-launch and pull out open questions.”
- “Search Slack for any mention of the PG-1234 bug across all channels.”
Tools available (34)
slack__get_accountIdentify which Slack account TradeLoop is connected as — the authenticated user's id, handle, workspace, and best-effort profile (name, email, tz). Use for 'who am I on Slack / which workspace'.
slack__send_messageSend / post / ping a message to a Slack channel or thread. Use when the user wants to notify a channel, drop an announcement, reply in a thread, or share an update. Channel accepts ID (C…) or name (#general). mrkdwn + optional Block Kit (blocks) supported. To DM a PERSON, use send_dm instead — send_message takes a chan
slack__read_messagesRead / fetch recent messages from a Slack channel, DM, or group conversation (max ~200). Use when the user wants to catch up on a channel, summarize discussion, or pull context before replying. Each message carries `thread_ts` + `reply_count` — when reply_count > 0, the real discussion is in the thread; follow up with
slack__get_threadFetch the full thread (parent + replies) for a Slack message, oldest first. Use whenever the user asks about a discussion that happened in a thread, or after `read_messages` shows a message with `reply_count > 0`. Triggers: 'what did Bob say in the thread' / 'pull up that thread about X' / 'show me the conversation und
slack__list_channelsList the Slack channels the token can see — public, private, mpim, im. Use when the user wants to find a channel by name, see all channels in the workspace, or you need a channel_id. For looking up a specific user (rather than channel), use `find_user`.
slack__search_messagesSearch Slack workspace messages with the same query syntax as in-app search (from:@user, in:#channel, has:link, before:, after:). Use when the user wants to find what someone said, locate a discussion, or pull up an old message. Matches include `ts` + `permalink` — use the ts to fetch the surrounding thread via get_thr
slack__find_userResolve a Slack user from a name / email / ID. Returns `user_id` plus profile fields (real_name, display_name, email, tz, status) so the agent can confirm 'this is the right Alice' before DMing. THE preferred first step when the user says 'send Alice a DM' / 'tell Bob X' / 'ping @charlie' / '给Alice发条消息' — Slack APIs ne
slack__update_messageEdit a Slack message your token sent earlier — for fixing typos, correcting an @-mention, or revising the post after gathering more info. Slack only allows editing your OWN messages (errors `cant_update_message` otherwise). Triggers: 'fix that message' / 'edit the slack post I just sent' / 'change the message in #chann
slack__delete_messageDelete a Slack message your token sent earlier. Only deletes YOUR OWN messages (errors `cant_delete_message` otherwise). Triggers: 'unsend that message' / 'delete the slack post I just sent' / 'remove that thing from #channel'. CAUTION: irreversible — confirm with the user first when uncertain.
slack__get_permalinkGet a shareable Slack URL for a specific message. Use when handing off a Slack message reference to email / Notion / a doc / another tool — Slack permalinks open the message in the user's Slack client. Triggers: 'send me the link to that slack message' / 'I want to paste this into the doc' / 'share the slack URL'.
slack__add_reactionReact to a Slack message with an emoji. `name` is the emoji name without colons (`thumbsup`, `white_check_mark`, `eyes`, `rocket`). Triggers: 'react to that with ✅' / 'thumbs up the deploy message' / '给X的消息加个表情' / 'acknowledge with eyes emoji'. Already-reacted is treated as a soft success (returns `already: true`), not
slack__remove_reactionRemove your reaction from a Slack message. No-reaction is treated as a soft success (returns `already: true`), not an error.
slack__schedule_messageSchedule a Slack message to send at a future Unix timestamp. Slack restricts `post_at` to (now, now + 120 days). Triggers: 'send this at 9am Monday' / 'schedule the announcement for tomorrow morning' / 'remind the team at 3pm' / '明早9点发到团队群'. Returns `scheduled_message_id` — pair with `cancel_scheduled_message` if plans
slack__cancel_scheduled_messageCancel a not-yet-sent scheduled Slack message. Triggers: 'cancel that scheduled message' / 'undo the message I scheduled' / '取消我刚定时的那条 Slack'. Pass the channel + the `scheduled_message_id` returned by schedule_message. Errors with a clear 'already sent' message if the message has already fired (Slack invalidates the id
slack__set_statusSet the authenticated user's Slack status (text + emoji + optional expiry). Triggers: 'set my slack status to OOO' / 'show I'm in a meeting' / '把状态改成休假到周五' / 'clear my status'. Pass empty `text` to clear. Requires the users.profile:write OAuth scope; if missing, surfaces a hint to reconnect at https://tradeloop.top/con
slack__get_channel_infoGet a Slack channel's metadata — topic, purpose, member count, private/archived flags, creation date. Use when the user asks 'what's the topic of #channel' / 'how many people are in X' / 'is this channel still active' / '这个频道的简介是什么'. Cheap (one API call) — call this before deciding whether to post into an unfamiliar ch
slack__upload_fileUpload / share / attach a file to Slack and optionally post it into channels with a comment. TWO MODES: (1) text — pass `content` (UTF-8 string) + `filename`, useful for logs, snippets, CLI output; (2) binary — pass `file_path` (absolute path on disk), the canonical path for screenshots, PDFs, images, audio, anything t
slack__list_channel_membersList the members of a Slack channel or group — answers 'who's in #dev?'. Returns user IDs with display/real names hydrated. Use to see who's in a channel before posting, @-mentioning, or summarizing participation.
slack__get_user_presenceCheck whether a Slack user is 'active' or 'away' right now — e.g. before pinging them. Pass a user ID (U…), @name, or email.
slack__list_scheduled_messagesList your pending (not-yet-sent) scheduled messages so you can see what's queued before cancelling one. Pairs with schedule_message / cancel_scheduled_message. Optionally filter to one channel.
slack__download_fileDownload a file shared in Slack by its file ID (from search results, message attachments, or a files listing). Small text files come back inline as `content`; binary or large files are saved to `save_path` (or a temp file) and the path is returned. Triggers: 'get the PDF Alice posted' / 'download that file' / '把那个文件下载下
slack__send_dmSend a DIRECT message to a person (1:1 DM) — 'DM Alice' / 'message Bob directly' / '私信给某人'. Pass a user ID (U…), @name, real name, or email; the DM channel is opened automatically. Use THIS for DMing a person — send_message takes a channel, not a user. Requires the im:write scope (reconnect Slack at /connect if it erro
slack__create_channelCreate a new Slack channel — 'spin up #project-x'. Requires channels:write (public) / groups:write (private).
slack__join_channelJoin a public channel — also self-heals a 'not_in_channel' error before posting. Requires channels:write.
slack__leave_channelLeave a channel. Requires channels:write / groups:write.
slack__invite_to_channelInvite one or more people to a channel — 'add Bob to #dev'. Requires channels:write / groups:write.
slack__set_channel_topicSet a channel's topic line. Requires channels:write / groups:write.
slack__archive_channelArchive a channel (close it without deleting history). Requires channels:write / groups:write.
slack__pin_messagePin a message to its channel — 'pin this to #dev'. `timestamp` is the message ts. Requires pins:write. already_pinned is a soft success.
slack__unpin_messageUnpin a previously-pinned message. Requires pins:write. no_pin is a soft success.
slack__list_pinsList the pinned messages/items in a channel — 'what's pinned in #dev?'. Requires pins:read.
slack__list_reactionsList who reacted to a message and with which emoji — 'who 👍'd this?'. `timestamp` is the message ts. Requires reactions:read (the original grant only had reactions:write).
slack__list_usergroupsList the workspace's @-usergroups (e.g. @backend, @oncall) with handles + member counts. Requires usergroups:read.
slack__list_usergroup_membersList the members of an @-usergroup — 'who's in @backend?'. Pass the usergroup ID (S…) or its handle. Requires usergroups:read.
How to connect
Slack needs a one-click OAuth grant to talk to slack. Connect it from the TradeLoop dashboard:
- Run
curl -fsSL https://tradeloop.top/install.sh | shon macOS / Linux (or the PowerShell command on Windows). - Run
tradeloop loginto create your account and a device-bound encryption key. - Visit tradeloop.top/connect and authorize Slack.
- Run
tradeloop updateto sync the skill + credentials to every installed AI client.
Pricing
Free at every TradeLoop tier. Connect your account once at /connect; the OAuth or API-key credential stays encrypted on your machine and syncs to your other devices via the TradeLoop vault.
See the full TradeLoop pricing breakdown — Free $0/mo, Pro $29/mo, Ultra $99/mo — on the homepage.
Related
Looking at Slack? You may also want:
- Discord — send messages to channels, list guilds (servers) and channels, read channel history via the Discord REST API v10 with a bot token
- Gmail — search emails with Gmail query syntax, read messages and full threads, send / reply / draft email with attachments, download attachments, and batch-manage labels (archive, mark read, star,...
- Reddit — search across all subreddits, browse hot / new / top posts in a subreddit, fetch posts with their top-level comments, and submit text posts or comment replies
- Telegram — send text messages and photos via a bot, fetch incoming updates (long-polling), and inspect chat metadata via the Telegram Bot API
Or browse all 25 skills in the TradeLoop catalog.