Versión2.0.0
Categoríacommunication
AutenticaciónOAuth 2
Herramientas110
Transportestdio
LicenciaMIT
01
Qué hace
La aplicación, en sus propias palabras.
Full Slack workspace integration: channels, messages, threads, reactions, files, users, search, and presence. Uses Slack Web API with OAuth 2.0.
02
Herramientas
110 herramientas que el agente puede llamar.
Todas se declaran con parámetros tipados y devuelven resultados estructurados, así que el anfitrión puede renderizarlas en vez de narrarlas.
- -health-checkInternal health check. Probes Slack OAuth credentials and API reachability via auth.test.
- accept-shared-inviteAccept a Slack Connect invite (joins the shared channel into the user's workspace). Provide inviteId XOR channelId. Returns { channelId, inviteId }. Not retryable. Params: channelName (local name for the joined channel), inviteId? | channelId?, isPrivate (def false), freeTrial (def false).
- add-bookmarkAdd a bookmark to a channel (links shown in the channel header). Returns the curated bookmark. Not retryable. Params: channel, title, link (URL), emoji? (e.g. ':notebook:').
- add-callRegister a call (external provider) with Slack. Returns curated call. EXPERIMENTAL. Params: externalUniqueId, joinUrl, desktopAppJoinUrl?, externalDisplayId?, title?, users? (JSON array), dateStart? (unix seconds).
- add-call-participantsAdd participants to an active call. users is a JSON array of {slackId|externalId, displayName?, avatarUrl?}. Returns { callId, added: count }. Not retryable. EXPERIMENTAL.
- add-emojiAdd a custom workspace emoji. Provide EITHER url (new image) OR aliasFor (alias of existing emoji). Returns { name, isAlias, aliasFor?, ok: true }. Not retryable. Params: name, url? | aliasFor?.
- add-reactionAdd an emoji reaction to a message. Returns { channel, timestamp, name }. Idempotent (already_reacted raises BUSINESS_RULE). Params: channel, timestamp, name (no colons).
- add-remote-fileRegister an external file (e.g. Google Drive, Dropbox) with Slack so it's discoverable in search and share-able. Returns curated remote file. Not retryable. Params: externalId, externalUrl, title, fileType?, previewImage?, indexableFileContents?.
- append-streamAppend a chunk of content to an active streaming message. Returns { streamId, appended: true }. Not retryable (each call appends — retry would duplicate content). EXPERIMENTAL. Params: streamId, content.
- approve-shared-inviteApprove a Slack Connect channel invite as a workspace admin (when admin approval is required by policy). Returns { inviteId, approved: true }. Not retryable. Params: inviteId, targetTeam? (Enterprise Grid).
- archive-channelArchive a channel (read-only afterwards). Returns { id, name } from a follow-up info call. Not retryable. Params: channelId.
- complete-uploadStep 2 of the modern upload flow: after PUT-ing bytes to the uploadUrl from get-upload-url, call this with files=[{id, title?}] to finalize. Optionally share to a channel/thread with initialComment. Returns curated file(s). Not retryable. Params: files (JSON array), channelId?, initialComment?, threadTs?.
- create-canvasCreate a standalone Slack Canvas (rich-text doc). Returns curated canvas. EXPERIMENTAL. Params: title, contentMarkdown? (initial content).
- create-channelCreate a channel. Slack normalizes the name (lowercase, no spaces, only [a-z0-9_-], ≤80). Returns the curated channel + ActionBadge('created'). Not retryable. Params: name, isPrivate? (def false), topic?, fields?, includeRaw.
- create-channel-canvasCreate a canvas attached to a channel (visible to all members). Returns curated canvas. EXPERIMENTAL. Params: channelId, title?, contentMarkdown?.
- create-listCreate a Slack List (collaborative table). Returns curated list with schema. EXPERIMENTAL — Slack Lists API is still evolving (2024+). Params: name, description?, schema? (JSON array of {name, type}), todoMode (def false).
- create-list-fieldAdd a new column to a Slack List schema. Returns the created field. Not retryable. EXPERIMENTAL. Params: listId, name, type (text|number|date|user|checkbox|select|multi_select|url|email), required (def false).
- create-list-itemAdd a row (item) to a Slack List. fields is a JSON object mapping column-id → value. Returns curated item. Not retryable. EXPERIMENTAL. Params: listId, fields (JSON).
- decline-shared-inviteDecline a Slack Connect channel invite. Returns { inviteId, declined: true }. Not retryable. Params: inviteId, targetTeam? (override target team id).
- delete-canvasDelete a canvas. Returns { canvasId, deleted: true }. Not retryable. EXPERIMENTAL. Params: canvasId.
- delete-fileDelete a file. The token user must be owner or workspace admin. Returns { fileId, deleted: true }. Not retryable. Params: fileId (F...).
- delete-listDelete a Slack List (and all its items). Returns { listId, deleted: true }. Not retryable. EXPERIMENTAL. Params: listId.
- delete-list-fieldDelete a column from a Slack List schema (all values in items are also dropped). Returns { listId, fieldId, deleted: true }. Not retryable. EXPERIMENTAL. Params: listId, fieldId.
- delete-list-itemDelete a list item. Returns { listId, itemId, deleted: true }. Not retryable. EXPERIMENTAL. Params: listId, itemId.
- delete-messageDelete a message. The token user must be author or workspace admin. Returns { channel, ts, deleted: true }. Not retryable. Params: channel, ts, asUser? (default true — deletes as the user; false impersonates the workspace).
- delete-scheduled-messageCancel a scheduled message. Returns { channel, scheduledMessageId, deleted: true }. Not retryable. Params: channel, scheduledMessageId, asUser? (def true).
- delete-user-photoDelete the authenticated user's profile photo (replaces with default avatar). Returns { deleted: true }. Not retryable. No params.
- edit-bookmarkEdit an existing channel bookmark. Partial update. Returns the updated bookmark. Not retryable. Params: channel, bookmarkId, title?, link? (http/https), emoji?.
- edit-canvasEdit a canvas with a list of changes. Operations: insert_at_start|insert_at_end (no section_id) | insert_before|insert_after|replace|delete (section_id REQUIRED — use canvases.sections.lookup). All except delete also require document_content {type:'markdown',markdown:string}. Returns curated canvas. Not retryable. EXPERIMENTAL.
- end-callMark a call as ended. Returns { callId, ended: true }. Not retryable. EXPERIMENTAL. Params: callId, duration? (seconds).
- end-dndEnd the current snooze. Returns { snoozeEnabled: false }. Idempotent. No params.
- get-access-logsGet login audit trail for the workspace (paid plans only). Returns { logs, paging }. Retryable. Params: before? (unix seconds), count (1-1000, def 100), page.
- get-callGet call details (participants, duration, status). Returns curated call. Retryable. EXPERIMENTAL. Params: callId.
- get-channelGet a single channel. Returns { id, name, isPrivate, isArchived, isMember, numMembers, topic, purpose, created, creator, isGeneral, isShared } + extras. Params: channelId, fields?, includeRaw.
- get-dndGet DND status for a user. Returns { snoozeEnabled, snoozeEndtime, snoozeRemaining, nextDndStart, nextDndEnd }. Retryable. Params: userId? (default: authed user).
- get-fileGet full info for a file (channels shared, permalinks, optional comments). Returns curated file + comments?[]. Retryable. Params: fileId (F...), includeComments (def false), includeRaw.
- get-integration-logsGet integration audit trail (apps installed/uninstalled/scope changes). Paid plans only. Returns { logs, paging }. Retryable. Params: appId?, changeType? (added|removed|enabled|disabled|updated|expanded), serviceId?, user?, count (1-1000, def 100), page.
- get-listGet list details + schema. Returns curated list. Retryable. EXPERIMENTAL. Params: listId.
- get-permalinkGet a permanent URL for a message. Returns { channel, ts, permalink }. Idempotent, retryable. Params: channel, ts.
- get-reactionsGet reactions on a message or file. Provide EITHER (channel+timestamp) for a message OR (file) for a file. Returns { reactions: [{ name, count, users }], type, target }. Retryable. Params: channel?+timestamp? | file?, full (def true — include all reactors).
- get-remote-fileGet details of a remote file. Provide externalId XOR fileId. Returns curated remote file. Retryable. Params: externalId? | fileId?.
- get-team-dndGet DND status for multiple users at once. users is a comma-separated user id list. Returns { users: [{ userId, snoozeEnabled, ... }] }. Retryable. Params: users (csv).
- get-team-infoGet the connected Slack workspace info. Returns { id, name, domain, emailDomain, iconUrl, enterpriseId, enterpriseName }. Params: fields?, includeRaw.
- get-team-preferencesGet workspace policy preferences (locale, default channels, who can create/archive channels, message edit window, calls/huddles enabled). Returns curated preferences. Retryable. No params.
- get-team-profileGet the schema of custom user profile fields for the workspace. Returns { fields: [{ id, label, type, hint, isHidden, ordering, possibleValues }] }. Retryable. Params: visibility (def all).
- get-upload-urlStep 1 of Slack's modern multi-step upload: get a pre-signed external URL + uploadId. PUT the file bytes to the URL, then call complete-upload with the uploadId. Use this for files >100MB or when progress tracking is needed. Returns { uploadUrl, fileId, length }. Params: filename, length (bytes), altTxt?, snippetType?.
- get-userGet a single user by id or email. Returns the curated user (id, name, realName, displayName, email, imageUrl, profile, tz). Provide exactly one of userId/email. Params: userId?, email?, fields?, includeRaw.
- get-user-identityGet the authenticated user's basic identity from the OAuth context (minimum scope: identity.basic, optionally identity.email/avatar/team). Returns curated identity. Retryable. No params.
- get-user-presenceGet presence for a Slack user. Returns { user, presence, online, autoAway, manualAway, connectionCount, lastActivity }. Params: userId.
- get-user-profileGet the full Slack profile for a user (status, custom_fields, image, phone, title, timezone). Returns curated profile. Retryable. Params: userId? (default: authed user), includeLabels (def false), includeRaw.
- invite-sharedSend Slack Connect invite to share a channel with external user(s). Provide emails (csv) OR userIds (csv). Returns { channel, inviteId, link }. Not retryable. Params: channel, emails? | userIds?, externalLimited (def false).
- invite-to-channelInvite users to a channel. Returns { channel, invitedUserIds, alreadyInChannel? }. Not retryable. Params: channelId, userIds[].
- join-channelJoin a public channel. Returns the curated channel. Idempotent (already_in_channel raises BUSINESS_RULE). Params: channelId.
- kick-from-channelRemove a user from a channel. Requires admin or channel owner permissions. Returns { channelId, userId, kicked: true }. Not retryable. Params: channelId, userId.
- leave-channelLeave a public or private channel. Returns { channelId, notInChannel }. Not retryable. Params: channelId.
- list-auth-teamsList Slack workspaces the current token has access to (relevant in Enterprise Grid). Returns { teams, nextCursor, hasMore }. Retryable. Params: includeIcon (def false), limit (1-100, def 100), cursor?.
- list-bookmarksList bookmarks attached to a channel. Returns { bookmarks: [{ id, channelId, title, link, emoji, type, dateCreated, dateUpdated, rank }], count }. Retryable. Params: channel.
- list-channel-membersList user ids that are members of a channel. Returns { channelId, members: string[], nextCursor, hasMore }. Retryable. Use list-users + lookup if you need profile info. Params: channelId, limit (1-1000, def 200), cursor?.
- list-channelsList channels. Returns curated rows { id, name, isPrivate, isArchived, isMember, numMembers, topic, purpose, created } + nextCursor. Params: types? (CSV public_channel|private_channel|mpim|im), limit (1-1000, def 100), cursor, excludeArchived (def true), fields?, includeRaw.
- list-connect-invitesList pending Slack Connect (cross-workspace) channel invites. Returns { invites, nextCursor, hasMore }. Retryable. Params: count (1-100, def 50), cursor?, teamId?.
- list-emojiList custom workspace emojis. Returns { emojis: [{ name, url, isAlias, aliasFor }], count }. Retryable. No params.
- list-filesList uploaded files. Returns curated rows { id, name, title, mimetype, prettyType, size, user, urlPrivate, permalink, thumbUrl, createdAt } + paging. Params: channel?, user?, limit (1-100, def 20), page (def 1), tsFrom, tsTo, types? (CSV all|spaces|snippets|images|gdocs|zips|pdfs), fields?, includeRaw.
- list-list-fieldsList the column schema of a Slack List as individual field objects. Returns { fields, count }. Retryable. EXPERIMENTAL. Params: listId.
- list-list-itemsList items (rows) in a Slack List with cursor pagination. Returns { listId, items, nextCursor, hasMore }. Retryable. EXPERIMENTAL. Params: listId, limit (1-100, def 50), cursor?.
- list-messagesList messages from a channel or thread (passes threadTs to fetch replies). Returns curated rows { ts, channel, user, text, threadTs, replyCount, reactions, permalink, createdAt } + nextCursor + isThread. Params: channel, threadTs?, limit (1-200, def 50), cursor, oldest, latest, inclusive, fields?, includeRaw.
- list-my-reactionsList all items the user has reacted to (messages and files). Returns { items, paging }. Retryable. Params: userId? (def authed), count (1-1000, def 100), page, full (def true).
- list-pinsList items pinned to a channel (messages and files). Returns { pins: [{ type, createdAt, createdBy, message? | file? }], count }. Retryable. Params: channel.
- list-remote-filesList remote files (external storage references like Google Drive, Dropbox) registered with Slack. Returns { files, nextCursor, hasMore }. Retryable. Params: channel?, tsFrom?, tsTo?, limit (1-200, def 100), cursor?.
- list-scheduled-messagesList pending scheduled messages for the authenticated user. Returns { messages: [{ id, channelId, postAt, postAtIso, text }], nextCursor, hasMore }. Retryable. Params: channel?, latest?, oldest? (unix-seconds bounds), limit (1-100, def 100), cursor?.
- list-starsList the user's saved items (stars). Returns { items, nextCursor, hasMore }. Retryable. Params: count (1-1000, def 100), cursor?.
- list-user-channelsList channels a user is a member of. Returns { channels, nextCursor, hasMore }. Retryable. Params: userId? (def authed), types? (csv: public_channel,private_channel,mpim,im), excludeArchived (def true), limit (1-1000, def 200), cursor?.
- list-usersList workspace users. Returns curated rows { id, name, realName, displayName, email, imageUrl, isBot, isAdmin, isOwner, deleted, tz } + nextCursor. Params: limit (1-200, def 100), cursor, includeDeleted (def false), includeBots (def true), fields?, includeRaw.
- mark-channel-readMark all messages in a channel up to and including `timestamp` as read for the authed user. Returns { channelId, timestamp, marked: true }. Idempotent. Params: channelId, timestamp.
- open-dmOpen or fetch a direct conversation. Single user → IM (D...); multiple → MPIM (M...). Idempotent (re-opens existing channel). Returns curated channel. Params: users[] (1+ U.../W... ids), returnIm (def true).
- pin-messagePin a message to a channel. Returns { channel, timestamp, pinned: true }. Idempotent (already_pinned not treated as error). Params: channel, timestamp.
- remove-bookmarkRemove a channel bookmark by id. Returns { channel, bookmarkId, removed: true }. Not retryable. Params: channel, bookmarkId.
- remove-call-participantsRemove participants from a call. users is a JSON array of {slackId|externalId}. Returns { callId, removed: count }. Not retryable. EXPERIMENTAL.
- remove-emojiRemove a custom workspace emoji. Workspace admin only. Returns { name, removed: true }. Not retryable. Params: name (no colons).
- remove-reactionRemove an emoji reaction from a message. Returns { channel, timestamp, name }. Idempotent (no_reaction raises BUSINESS_RULE). Params: channel, timestamp, name (no colons).
- remove-remote-fileRemove a remote file reference from Slack (does not delete the file in the external provider). Provide externalId XOR fileId. Returns { removed: true }. Not retryable. Params: externalId? | fileId? (one required).
- rename-channelRename a channel. Name must be ≤80 chars, lowercase, no spaces/periods (Slack normalizes). Returns curated channel. Not retryable. Params: channelId, name.
- revoke-authRevoke the current OAuth token (logs the user out of this Slack workspace from Teros). Returns { revoked: true }. Not retryable — destructive. Params: test (def false — set true to validate without actually revoking).
- revoke-file-publicRevoke a file's public URL (links via permalink_public stop working). Returns { fileId, revoked: true }. Not retryable. Params: fileId.
- schedule-messageSchedule a message to be posted at a future unix-seconds timestamp. Returns { channel, scheduledMessageId, postAt }. Slack rejects postAt > 120 days ahead. Not retryable. Params: channel, text, postAt (unix seconds), blocks?, threadTs?, unfurlLinks (def true), unfurlMedia (def true).
- search-filesSearch files workspace-wide. Supports Slack search syntax (in:#channel, from:@user, type:pdf). Returns curated hits { id, name, title, mimetype, permalink, thumbUrl, score, createdAt } + total + page. Params: query, sort? (score|timestamp), sortDirection?, count (1-100, def 20), page, highlight, fields?, includeRaw.
- search-messagesSearch messages workspace-wide. Supports Slack search syntax (in:#channel, from:@user, before/after). Returns curated hits { ts, channel, channelName, user, userName, text, permalink, score } + total + page. Params: query, sort? (score|timestamp), sortDirection? (asc|desc), count (1-100, def 20), page, highlight, fields?, includeRaw.
- send-ephemeralPost an ephemeral message visible only to one user in a channel. Returns { channel, user, messageTs }. Not retryable. Params: channel, user (recipient), text, blocks?, threadTs?.
- send-me-messageSend a /me action message (third-person italic in Slack UI). Returns { ts, channel }. Not retryable. Params: channel, text.
- send-messagePost a message to a channel, DM, or as a top-level message. Returns { ts, channel, message, permalink }. Not retryable (no idempotency key — duplicate messages on retry). Params: channel, text, blocks? (JSON), threadTs?, unfurlLinks (def true), unfurlMedia (def true).
- send-thread-replyReply inside a Slack thread. Returns { ts, channel, threadTs, broadcast, message }. Not retryable (no idempotency key). Params: channel, threadTs, text, blocks? (JSON), broadcast (def false).
- set-channel-purposeSet the purpose of a channel (long-form description shown in details). Max 250 chars. Returns { channelId, purpose }. Not retryable. Params: channelId, purpose.
- set-channel-topicSet the topic of a channel (short description in the channel header). Max 250 chars. Returns { channelId, topic }. Not retryable. Params: channelId, topic.
- set-dndTurn on Do Not Disturb for the authenticated user for N minutes. Returns { snoozeEnabled, snoozeEndtime, snoozeRemaining }. Not retryable. Params: numMinutes (1-1440).
- share-file-publicMake a file publicly accessible via URL (anyone with link can view, no login). Returns { fileId, permalinkPublic }. Not retryable. Params: fileId (F...).
- share-remote-fileShare an existing remote file to one or more channels. Provide externalId XOR fileId. Returns curated remote file. Not retryable. Params: channels (comma-separated channel ids), externalId? | fileId?.
- star-itemSave an item (message / file) to the user's saved items (stars). Provide EITHER (channel+timestamp) OR (file) OR (fileComment). Returns { type, target, starred: true }. Idempotent. Params: channel?+timestamp? | file? | fileComment?.
- start-streamStart a streaming message (AI responses delivered chunk-by-chunk live). Returns { streamId, channel }. Use append-stream + stop-stream to complete. EXPERIMENTAL. Params: channel, threadTs?, recipientTeamId?.
- stop-streamStop a streaming message (flushes final state). Returns { streamId, stopped: true }. Idempotent (stream already stopped not treated as error). EXPERIMENTAL. Params: streamId.
- unarchive-channelUnarchive a previously archived channel. Returns curated channel. Not retryable. Params: channelId.
- unfurl-linkProvide custom unfurl content for links posted in a message (replaces Slack's default preview). unfurls is a JSON map: {"https://your.url":{"blocks":[...],"text":"..."}}. Returns { channel, ts, unfurled: true }. Not retryable. Params: channel, ts, unfurls (JSON), userAuthRequired?, userAuthUrl?, userAuthMessage?.
- unpin-messageUnpin a message. Returns { channel, timestamp, unpinned: true }. Idempotent (no_pin not treated as error). Params: channel, timestamp.
- unstar-itemRemove an item from the user's saved items. Same exclusive-choice contract as star-item. Returns { type, target, unstarred: true }. Idempotent (no_pin not treated as error). Params: channel?+timestamp? | file? | fileComment?.
- update-callUpdate call metadata (title or join URLs). Returns curated call. Not retryable. EXPERIMENTAL. Params: callId, title?, joinUrl?, desktopAppJoinUrl?.
- update-listUpdate list metadata or schema. Partial: only fields provided are updated. Returns curated list. EXPERIMENTAL. Params: listId, name?, description?, schema? (JSON), todoMode?.
- update-list-fieldRename a list column or toggle required. type is immutable. Returns the updated field. Not retryable. EXPERIMENTAL. Params: listId, fieldId, name?, required?.
- update-list-itemUpdate fields of a list item. fields is a JSON object — only the keys provided are updated. Returns curated item. Not retryable. EXPERIMENTAL. Params: listId, itemId, fields (JSON).
- update-messageEdit an existing message. The token user must be the author. Returns { ts, channel, text, message }. Not retryable. Params: channel, ts, text? or blocks? (at least one required), attachments? (JSON).
- update-remote-fileUpdate metadata of a remote file (externalUrl, title, etc.). Provide externalId XOR fileId. Returns curated remote file. Not retryable. Params: externalId? | fileId? (one required), and any of externalUrl?, title?, fileType?, previewImage?, indexableFileContents?.
- update-user-profileUpdate the authenticated user's Slack profile (status, name fields, phone, title, custom fields). Returns the updated profile object. Not retryable. Params: statusText?, statusEmoji?, statusExpiration? (unix seconds), realName?, displayName?, phone?, title?, customFields? (JSON map of field_id → {value, alt?}), userId? (admin-only).
- upload-fileUpload a local file to Slack and optionally share it. Returns the curated file (id, name, mimetype, size, permalink, thumbUrl). Path must resolve to an absolute path. Not retryable. Params: filePath, channels?[], title?, initialComment?, threadTs?, fields?, includeRaw.
03
Autenticación y permisos
Qué pide.
Declarado en el manifiesto y por adelantado. La aplicación no puede alcanzar nada que no haya pedido aquí.
Permisos
bookmarks:readbookmarks:writecalls:readcalls:writecanvases:writechannels:historychannels:joinchannels:managechannels:readchannels:write.inviteschannels:write.topicchat:writechat:write.customizecommandsconversations.connect:manageconversations.connect:readconversations.connect:writeincoming-webhookdnd:readdnd:writeemoji:readfiles:readfiles:writegroups:historygroups:readgroups:writegroups:write.invitesim:historyim:readim:writelinks:writelists:readlists:writempim:historympim:readmpim:writepins:readpins:writereactions:readreactions:writeremote_files:readremote_files:shareremote_files:writesearch:readsearch:read.filessearch:read.publicstars:readstars:writeteam.preferences:readteam:readusers.profile:readusers.profile:writeusers:readusers:read.email
Secretos de sistema
CLIENT_IDCLIENT_SECRETREDIRECT_URI
Secretos de usuario
ACCESS_TOKENBOT_ACCESS_TOKENREFRESH_TOKENTEAM_IDTEAM_NAMEUSER_ID
Seguir leyendo
El manifiesto y el código de Slack están en el monorepo, junto al resto de aplicaciones.