← Catalog

Slack

Search, read and send Slack messages and threads, react to them, read files, and create, read, update and share canvases in a connected Slack workspace.

Tools19

  • slack__list_channelsFreeList conversations visible to the selected account. types defaults to public_channel,private_channel,im,mpim for personal accounts and public_channel for the organization bot; pass types to narrow or expand that selection.

    List conversations visible to the selected account. types defaults to public_channel,private_channel,im,mpim for personal accounts and public_channel for the organization bot; pass types to narrow or expand that selection.

  • slack__list_usersFreeList users in the connected Slack workspace.

    List users in the connected Slack workspace.

  • slack__post_messageFreePost a message using the selected account. channel is a resolved conversation id (C…/G…/D…) or user id for a DM; a bare user id needs no pre-step. Personal-account sends use Slack hosted MCP with a visible "Sent using CoreSpeed" footer and no stored bot attribution; do not add your own footer. Canvas cards and restricted Slack Connect sends use the same user identity through the attributed Web API path. Text defaults to Slack mrkdwn; text_format=markdown opts a personal account into standard Markdown. Personal-account text must be non-empty. After format translation, bodies over 3,000 UTF-16 units split into **Part k/N** messages, at most 16 parts (~40,576 units); use create_canvas beyond that. Later parts thread under the first, or all parts use the supplied thread_ts. Sends pace ~1s between parts, longer on 429s, so allow tens of seconds. Ordinary single sends return {channel, ts, message_link?, transport, app_attributed}; split sends return {parts, ts: [per-part ts], thread_ts?, links?, transport, app_attributed}. Canvas cards retain Slack's Web API response shape. Unknown delivery or partial success requires checking the conversation before retrying; never resend the whole message blindly. Organization-bot sends are NOT length-managed: Slack silently stores raw text above ~4,000 characters as multiple messages and the returned ts names only one — keep bot sends short.

    Post a message using the selected account. channel is a resolved conversation id (C…/G…/D…) or user id for a DM; a bare user id needs no pre-step. Personal-account sends use Slack hosted MCP with a visible "Sent using CoreSpeed" footer and no stored bot attribution; do not add your own footer. Canvas cards and restricted Slack Connect sends use the same user identity through the attributed Web API path. Text defaults to Slack mrkdwn; text_format=markdown opts a personal account into standard Markdown. Personal-account text must be non-empty. After format translation, bodies over 3,000 UTF-16 units split into **Part k/N** messages, at most 16 parts (~40,576 units); use create_canvas beyond that. Later parts thread under the first, or all parts use the supplied thread_ts. Sends pace ~1s between parts, longer on 429s, so allow tens of seconds. Ordinary single sends return {channel, ts, message_link?, transport, app_attributed}; split sends return {parts, ts: [per-part ts], thread_ts?, links?, transport, app_attributed}. Canvas cards retain Slack's Web API response shape. Unknown delivery or partial success requires checking the conversation before retrying; never resend the whole message blindly. Organization-bot sends are NOT length-managed: Slack silently stores raw text above ~4,000 characters as multiple messages and the returned ts names only one — keep bot sends short.

  • slack__delete_messageFreeDelete a message by channel + ts (e.g. cleaning up test sends or superseded split parts). Deletion authority comes from the acting identity, NOT from whether this connector posted the message. Organization bot: deletes CoreSpeed-app posts — including ones other members of your org sent, since the app identity is org-shared. Personal account: deletes messages you authored (workspace admins may additionally be allowed by Slack to delete others' messages). Irreversible — verify channel + ts first.

    Delete a message by channel + ts (e.g. cleaning up test sends or superseded split parts). Deletion authority comes from the acting identity, NOT from whether this connector posted the message. Organization bot: deletes CoreSpeed-app posts — including ones other members of your org sent, since the app identity is org-shared. Personal account: deletes messages you authored (workspace admins may additionally be allowed by Slack to delete others' messages). Irreversible — verify channel + ts first.

  • slack__create_canvasFreeCreate a Slack canvas (a long-form document) as the connecting user, for content too long or too structured for messages. Returns canvas_id — share it with post_message canvas_id, which renders a clickable card. Pass channel_id to grant that channel read access (standalone canvases are otherwise only visible to you; free Slack workspaces cannot create standalone canvases at all). A 'Sent using CoreSpeed' attribution line is appended to the canvas. Requires a privately-connected Slack account that granted the create-canvases permission — reconnect Slack to grant it.

    Create a Slack canvas (a long-form document) as the connecting user, for content too long or too structured for messages. Returns canvas_id — share it with post_message canvas_id, which renders a clickable card. Pass channel_id to grant that channel read access (standalone canvases are otherwise only visible to you; free Slack workspaces cannot create standalone canvases at all). A 'Sent using CoreSpeed' attribution line is appended to the canvas. Requires a privately-connected Slack account that granted the create-canvases permission — reconnect Slack to grant it.

  • slack__delete_canvasFreeDelete a canvas by its F… canvas_id (e.g. cleaning up test or superseded canvases). Always acts as the connecting user, like create_canvas — same privately-connected-account requirement. Deletion authority is Slack's: you can delete canvases you own (create_canvas canvases are yours); workspace admins may additionally be allowed to delete others'. Irreversible — verify the canvas_id first.

    Delete a canvas by its F… canvas_id (e.g. cleaning up test or superseded canvases). Always acts as the connecting user, like create_canvas — same privately-connected-account requirement. Deletion authority is Slack's: you can delete canvases you own (create_canvas canvases are yours); workspace admins may additionally be allowed to delete others'. Irreversible — verify the canvas_id first.

  • slack__set_canvas_accessFreeGrant, change, or revoke a channel's access to a canvas after creation: access_level "read"/"write" grants (or changes) that level for the channel via canvases.access.set; "none" revokes it via canvases.access.delete. Canvas access is shared per channel, public or private — pass a channel id; a DM or group DM can't be granted canvas access. Always acts as the connecting user, like create_canvas/delete_canvas — same privately-connected-account requirement, and sharing management is bounded by Slack (the canvas owner; workspace admins where permitted).

    Grant, change, or revoke a channel's access to a canvas after creation: access_level "read"/"write" grants (or changes) that level for the channel via canvases.access.set; "none" revokes it via canvases.access.delete. Canvas access is shared per channel, public or private — pass a channel id; a DM or group DM can't be granted canvas access. Always acts as the connecting user, like create_canvas/delete_canvas — same privately-connected-account requirement, and sharing management is bounded by Slack (the canvas owner; workspace admins where permitted).

  • slack__conversations_historyFreeRead recent messages from a channel or conversation. Thread replies are NOT included unless they were broadcast to the channel (subtype thread_broadcast) — rows with reply_count/latest_reply are thread roots; read their replies with conversations_replies. A personal account reads channels/DMs that member can access without inviting the app.

    Read recent messages from a channel or conversation. Thread replies are NOT included unless they were broadcast to the channel (subtype thread_broadcast) — rows with reply_count/latest_reply are thread roots; read their replies with conversations_replies. A personal account reads channels/DMs that member can access without inviting the app.

  • slack__conversations_repliesFreeRead a message thread: the replies under one root message (channel + the root's ts). NOTE: the first message returned is the thread's ROOT itself, not a reply — the actual replies follow it. Slack caps each call's page (non-Marketplace installs: ~15 messages regardless of limit) — when the response has has_more: true, call again with cursor = response_metadata.next_cursor to read the rest. A personal account reads threads in channels/DMs that member can access without inviting the app (same semantics as conversations_history).

    Read a message thread: the replies under one root message (channel + the root's ts). NOTE: the first message returned is the thread's ROOT itself, not a reply — the actual replies follow it. Slack caps each call's page (non-Marketplace installs: ~15 messages regardless of limit) — when the response has has_more: true, call again with cursor = response_metadata.next_cursor to read the rest. A personal account reads threads in channels/DMs that member can access without inviting the app (same semantics as conversations_history).

  • slack__users_infoFreeLook up a single Slack user by id.

    Look up a single Slack user by id.

  • slack__search_messagesFreeSearch messages and files across the workspace — public channels, private channels, DMs and group DMs you can see. Supports Slack search modifiers in query ("in:#channel", "from:@user", "has:link", "is:thread", "during:July"). Returns ranked results with surrounding context; page with cursor. Always acts as the connecting user — requires a privately-connected Slack account that granted the act-as-you permission (reconnect Slack to grant).

    Search messages and files across the workspace — public channels, private channels, DMs and group DMs you can see. Supports Slack search modifiers in query ("in:#channel", "from:@user", "has:link", "is:thread", "during:July"). Returns ranked results with surrounding context; page with cursor. Always acts as the connecting user — requires a privately-connected Slack account that granted the act-as-you permission (reconnect Slack to grant).

  • slack__search_channelsFreeFind channels by name or description (public and private ones you can see) — the way to turn a channel NAME into the id every other tool takes. Always acts as the connecting user — requires a privately-connected Slack account that granted the act-as-you permission (reconnect Slack to grant).

    Find channels by name or description (public and private ones you can see) — the way to turn a channel NAME into the id every other tool takes. Always acts as the connecting user — requires a privately-connected Slack account that granted the act-as-you permission (reconnect Slack to grant).

  • slack__search_usersFreeFind workspace members by partial name, display name, or email — the way to turn a person into the U… id post_message takes. Reactions target a known message's channel_id and message_ts, not a user id. For a full profile of a known id use users_info. Always acts as the connecting user — requires a privately-connected Slack account that granted the act-as-you permission (reconnect Slack to grant).

    Find workspace members by partial name, display name, or email — the way to turn a person into the U… id post_message takes. Reactions target a known message's channel_id and message_ts, not a user id. For a full profile of a known id use users_info. Always acts as the connecting user — requires a privately-connected Slack account that granted the act-as-you permission (reconnect Slack to grant).

  • slack__list_channel_membersFreeList the members of a channel or conversation — 30 per page, so large channels take several calls via cursor. Detailed names and profiles require the connecting user's users:read grant; reconnect an older private Slack connection once after upgrading. Always acts as the connecting user — requires a privately-connected Slack account that granted the act-as-you permission (reconnect Slack to grant).

    List the members of a channel or conversation — 30 per page, so large channels take several calls via cursor. Detailed names and profiles require the connecting user's users:read grant; reconnect an older private Slack connection once after upgrading. Always acts as the connecting user — requires a privately-connected Slack account that granted the act-as-you permission (reconnect Slack to grant).

  • slack__read_fileFreeRead a file shared in Slack by its F… file id (as found in search_messages results or message attachments). Text-only replies retain Slack's parsed text/JSON payload; binary files may return canonical MCP image, audio, embedded-resource, or resource-link content blocks. Always acts as the connecting user — requires a privately-connected Slack account that granted the act-as-you permission (reconnect Slack to grant).

    Read a file shared in Slack by its F… file id (as found in search_messages results or message attachments). Text-only replies retain Slack's parsed text/JSON payload; binary files may return canonical MCP image, audio, embedded-resource, or resource-link content blocks. Always acts as the connecting user — requires a privately-connected Slack account that granted the act-as-you permission (reconnect Slack to grant).

  • slack__read_canvasFreeRead a canvas as markdown, plus the section_id_mapping update_canvas needs. Those ids change after every update, so re-read before each edit batch and never reuse a stale one. Always acts as the connecting user — requires a privately-connected Slack account that granted the act-as-you permission (reconnect Slack to grant).

    Read a canvas as markdown, plus the section_id_mapping update_canvas needs. Those ids change after every update, so re-read before each edit batch and never reuse a stale one. Always acts as the connecting user — requires a privately-connected Slack account that granted the act-as-you permission (reconnect Slack to grant).

  • slack__get_reactionsFreeList the emoji reactions on one message, with who reacted. Always acts as the connecting user — requires a privately-connected Slack account that granted the act-as-you permission (reconnect Slack to grant).

    List the emoji reactions on one message, with who reacted. Always acts as the connecting user — requires a privately-connected Slack account that granted the act-as-you permission (reconnect Slack to grant).

  • slack__add_reactionFreeReact to a message with an emoji, as you (useful for acknowledging without adding channel noise). One emoji per call; pass the name without colons. Always acts as the connecting user — requires a privately-connected Slack account that granted the act-as-you permission (reconnect Slack to grant).

    React to a message with an emoji, as you (useful for acknowledging without adding channel noise). One emoji per call; pass the name without colons. Always acts as the connecting user — requires a privately-connected Slack account that granted the act-as-you permission (reconnect Slack to grant).

  • slack__update_canvasFreeEdit an existing canvas. Pass a batch of section edits — they apply atomically against one document snapshot, so section ids stay stable within the batch. Workflow: read_canvas for a fresh section_id_mapping, pick targets from it, then send the whole batch in ONE call (up to 100 edits); ids change after every update, so never reuse ids from an earlier update. Markdown content, like create_canvas. Always acts as the connecting user — requires a privately-connected Slack account that granted the act-as-you permission (reconnect Slack to grant).

    Edit an existing canvas. Pass a batch of section edits — they apply atomically against one document snapshot, so section ids stay stable within the batch. Workflow: read_canvas for a fresh section_id_mapping, pick targets from it, then send the whole batch in ONE call (up to 100 edits); ids change after every update, so never reuse ids from an earlier update. Markdown content, like create_canvas. Always acts as the connecting user — requires a privately-connected Slack account that granted the act-as-you permission (reconnect Slack to grant).

Give this to your agent

set up https://corespeed.io/SKILL.md
Get started