WorkerKit

AI workers for Slack

Ready-made AI workers for Slack: digests posted where the team already is, alerts that arrive with context, and channel questions answered without anyone waiting on the one person who knows.

What is an AI worker for Slack?

An AI worker for Slack is an AI agent scoped to one job in your workspace, such as posting a daily digest into a team channel or watching a channel for requests that need filing. It reads and posts only in the channels you scope it to, and reading a channel and posting in it are separate permissions, so a worker can report into Slack without reading a word of it.

What these workers do

Post a daily digest to the team channel

Delivers the morning summary where the team already looks, assembled from your calendar, tracker, or inbox rather than from Slack itself.

Turn channel requests into filed work

Watches the channel where requests land and creates properly filed items, so asking in Slack stops meaning the request disappears.

Alert on something worth interrupting for

Posts when a specific condition is met, with enough context that the message can be acted on without opening three other tools.

Answer recurring questions in channel

Replies to the questions that get asked every week using your documented sources, naming where the answer came from.

How an AI worker runs in Slack

Channels are the boundary

Posting without reading

Reading, when the channel is the job

Slack questions, answered.

Will an AI worker read all our Slack messages?

No. Access is scoped per channel, and a great many Slack workers hold no read permission at all because their only job is to post a summary produced elsewhere. A channel you do not scope in is one the worker cannot read, so the workspace does not become visible to it by virtue of the connection existing.

Can it read direct messages?

Only if you explicitly grant it, and the standard setup does not. Workers here are usually confined to named channels, so private conversations stay private without depending on the worker's discretion.

Can it post as me?

No. It posts under its own identity in the workspace, so a message from a worker is visibly from a worker and nothing it writes appears to come from your personal account. That distinction matters in a shared channel, where colleagues should be able to tell at a glance whether a person wrote something.

What stops it posting in the wrong channel?

The channel scope is enforced outside the worker. A worker permitted to post in one channel has no route to another, so a mistaken instruction results in nothing being sent rather than a message in the wrong place.

What AI workers can do in Slack

The tools a worker can be granted in Slack once you connect it. A kit grants only the ones its job needs, and you can narrow them further on the worker.

List Slack Conversations

List the workspace's conversations (channels, DMs, group DMs). Returns each one's id (use as channelId), name, and type. Paginate with the response's next cursor. If `accessInfo` is present, scope rules limited the results — render it verbatim.

Get Slack Conversation

Get one conversation's metadata: name, topic, purpose, type, and member count.

Get Slack Conversation History

List messages in a conversation, newest first. Each hit carries its `ts` (use as ts for replies, reactions, edits). Paginate with the response's next cursor. An empty `text` with `redacted: true` is a redaction rule, not an empty message; if `accessInfo` reports messages hidden by contact rules, render it verbatim. Read sourceInfo for completeness; follow nextCursor even on empty visible pages. Keep the same query and time bounds while paging. A terminal page does not prove all workspace activity was searched.

Get Slack Thread Replies

List the replies in a thread, oldest first. Without time bounds, the parent message is the first item. Use oldest to read only replies newer than a known message. Paginate with the response's next cursor. Read sourceInfo for completeness; follow nextCursor even on empty visible pages. Keep the same query and time bounds while paging. A terminal page does not prove all workspace activity was searched.

Search Slack Messages

Full-text search across messages the connected workspace can see, using Slack's search syntax (e.g. `from:@alice in:#general`). Each hit carries its channelId and `ts`. Paginate with the response's next cursor. Requires the workspace connection to hold a user token. Read sourceInfo for completeness; follow nextCursor even on empty visible pages. Keep the same query and time bounds while paging. A terminal page does not prove all workspace activity was searched.

Search Slack Files

Full-text search across files in the workspace, using Slack's search syntax. Each hit carries its file id (use as fileId for slack_get_file). Paginate with the response's next cursor. Requires the workspace connection to hold a user token.

Get Slack Message Permalink

Get a stable permalink URL for one message, for citing it back to the user.

Get Slack Message Reactions

List the emoji reactions on one message, each with its name and the users who reacted.

Get Slack User

Get one user's directory record: name, display name, real name, and whether they are a bot, deleted, or an admin.

Get Slack User Profile

Get one user's extended profile: title, email (if visible), phone, status, and custom fields.

Look Up Slack User by Email

Resolve an email address to a Slack user record, returning their user id (use as userId or to address a DM). Returns an access error if the email belongs to a block-listed contact.

Get Slack File

Get file metadata by id, or use as=model to read a PDF/image in supported hosted runs. Native input requires the containing channel and message; for a reply include its thread root. Reading file contents requires the forward_attachments permission.

Get Slack Canvas

Read a canvas's markdown content by id. Canvas listing is not available; obtain a canvas id from a channel or message reference.

List Slack User Groups

List the workspace's user groups (@-mentionable groups), each with its id (use as usergroupId), handle, name, and channels.

List Slack Custom Emoji

List the workspace's custom emoji with their names and image URLs (or alias targets).

Create Slack Channel

Create a public or private channel and optionally invite members by user id. Returns the new channel's id. Channel creation needs a user token on the connection.

Open Slack Direct Message

Open (or fetch) a direct or group-DM conversation with the given users and return its channelId for slack_send_message. Opening a DM to a block-listed user is rejected.

Mark Slack Conversation Read

Move the conversation's read cursor to a given message `ts`, marking everything up to it as read.

Send Slack Message

Post a message to a conversation. Set threadTs to reply within a thread. To DM a user, open the conversation first with slack_open_conversation and post to the returned channelId.

Send Slack Ephemeral Message

Post a message visible only to one user in a conversation (it is never stored and cannot be edited or deleted).

Schedule Slack Message

Schedule a message to post at a future time. Returns a scheduled-message id.

Update Slack Message

Replace the text and/or blocks of a message previously sent by this connection.

Delete Slack Message

Delete a message. This is destructive and irreversible — confirm with the user first.

Add Slack Reaction

Add an emoji reaction to a message. Give the emoji name without colons, e.g. 'thumbsup'.

Remove Slack Reaction

Remove an emoji reaction this connection previously added to a message.

Create Slack Canvas

Create a canvas from markdown content, optionally bound to a channel. Returns the new canvas id. Needs a user token on the connection.

Edit Slack Canvas

Apply an ordered list of edits to a canvas (insert, replace, or delete sections). Needs a user token on the connection.

Delete Slack Canvas

Delete a canvas. This is destructive and irreversible — confirm with the user first. Needs a user token on the connection.

Create Slack User Group

Create an @-mentionable user group. Returns the new group's id (use as usergroupId). Needs a user token on the connection.

Update Slack User Group

Update a user group's name, handle, description, or default channels. Provide only the fields to change. Needs a user token on the connection.

Set Slack User Group Members

Replace a user group's full membership with the given user ids (this overwrites, not appends).

Browse Slack kits

All apps