Skip to main content

Slack

Post, edit and react to Slack messages as a bot; read channels and threads, and look up people.

Connect a Slack app to work channels end to end: post messages and threaded replies (plain mrkdwn or Block Kit), edit and delete what the bot posted, send a message only one person can see, react with emoji, link to a message, read channel history and threads, browse channels and members, look someone up by email, and open a DM.

Connect

Sign in with Slack. Continue with Slack to install the bot into a workspace with the fifteen scopes shown on the consent screen. An organization admin configures the OAuth app once under Integrations → OAuth apps; after that, connecting is a consent screen.

  • Connecting installs the app's bot into the workspace you pick on Slack's consent screen - tools act as that bot, and the scopes shown there are the permission ceiling.

  • The bot still needs inviting to private channels it should read (/invite @yourbot in Slack).

  • Your organization can use Yekar.AI's managed Slack app or configure its own Slack OAuth app under Integrations → OAuth apps.

SettingRequiredWhat it is
Default channel (DEFAULT_CHANNEL)NoChannel id used when a tool call omits channel - handy for notify-style automations.

Tools

ToolAccessWhat it does
Get bot identity (yekar.slack.get-me)ReadReport exactly which bot, in which Slack workspace, this connection acts as. Use it to confirm a connection before acting, and to get the bot's own user id.
Send message (yekar.slack.send-message)WritePost a message to a channel, DM or thread as the bot. Returns the message's ts, which is both its id and its thread key - pass it back as threadTs to reply to it, or as ts to edit or delete it.
Update message (yekar.slack.update-message)WriteReplace the text of a message the bot posted. A bot can only edit its own messages. The new text replaces the old entirely, and Slack marks the message as edited.
Delete message (yekar.slack.delete-message)WriteDelete a message the bot posted. A bot can only delete its own messages, and deletion is permanent - Slack has no undo.
Send ephemeral message (yekar.slack.send-ephemeral)WritePost a message only ONE user can see, inside a channel. It vanishes when they reload Slack, is never stored in channel history, and cannot afterwards be edited, deleted or linked to. The user must already be in the channel.
Add reaction (yekar.slack.add-reaction)WriteAdd an emoji reaction to a message as the bot. Emoji names carry no colons. Reacting again when the bot already reacted is reported as a no-op, not an error.
Get message link (yekar.slack.get-permalink)ReadGet the shareable Slack permalink for a message, to quote it elsewhere. The link only opens for people who can already see that channel.
List channels (yekar.slack.list-channels)ReadA page of the workspace's conversations - id, name, kind, topic and whether the bot is a member. This is where channel ids come from; every other tool addresses channels by id, never by #name. Slack returns no total for a page, so this reports whether more pages remain rather than a count.
Get channel (yekar.slack.get-channel)ReadDetails of one conversation - name, kind, topic, purpose, archived state, and whether the bot is a member. Check isMember before reading history: a bot can only read channels it belongs to.
Join channel (yekar.slack.join-channel)WriteAdd the bot to a PUBLIC channel so it can read history there. Private channels cannot be joined this way - someone must invite the bot from Slack with /invite. Joining a channel the bot is already in succeeds unchanged.
Read channel messages (yekar.slack.read-history)ReadA page of a channel's recent messages, newest first. The bot must be a member of the channel (run Join channel, or have it invited). Thread replies do NOT appear here - a parent message reports replyCount, and Read thread returns them. Authors come back as user ids; resolve names with Get user.
Read thread (yekar.slack.read-thread)ReadA page of one thread's messages, oldest first, starting with the parent. Pass the parent's ts - a reply's own ts addresses only that reply. The bot must be a member of the channel.
List users (yekar.slack.list-users)ReadA page of the workspace's members - id, handle, real name, title and whether the account is a bot or deactivated. Emails appear only if the app holds users:read.email. Slack returns no total for a page, so this reports whether more pages remain rather than a count; to find one person by address use Get user instead of paging.
Get user (yekar.slack.get-user)ReadOne workspace member by user id, or by email address - the way to turn the user id on a message into a name, or an email address into the id needed to DM someone.
Open direct message (yekar.slack.open-dm)WriteGet the conversation id for a DM with one user, or a group DM with several, so Send message can post there. Slack reuses the existing conversation when one is already open - this does not create a duplicate or notify anyone by itself.

Notes

  • Continue with Slack through Yekar.AI's managed app, or configure your own Slack OAuth app under Integrations → OAuth apps before connecting.
  • The OAuth consent requests these bot scopes: chat:write, chat:write.public, channels:read, groups:read, im:read, mpim:read, channels:history, groups:history, im:history, mpim:history, channels:join, reactions:write, users:read, users:read.email, im:write.
  • Adding a scope later requires REINSTALLING the app before it takes effect; the token itself does not change.
  • Invite the bot to every private channel it should use (/invite @yourbot in Slack). It can post to public channels without joining, but reading history always needs membership - Join channel does that for public channels.
  • Find channel ids with List channels - every tool addresses channels by id (C0123ABCDEF), not by #name.
  • Optionally set the Default channel property so automation steps can omit channel entirely.