Slack
Publish text and files to a Slack channel through MCP.
Prefer schedule_slack_post and publish_slack_now. Do not treat create_draft as a successful Slack message.
Flow
list_social_accounts— find the Slack account idlist_slack_channels— pick a realchannelId(do not guess). Public and private channels the bot can see.- Upload media if the message needs attachments (
get_upload_url→ PUT →complete_upload) publish_slack_now(or schedule) with:socialAccountIdchannelIdcontent(up to 4,000 characters; required unlessmediaUrlsis set)- optional
channelName - optional
mediaUrls(up to 10 images or videos; 50 MB per file)
Example ask
List Slack channels, then publish “Ship notes for Friday” to #launches with this screenshot.
Drafts
If you only want a draft for the web composer, use create_draft with selectedPlatforms: ["slack"]. That still does not publish.
Common mistakes
- Using a channel name instead of
channelIdfromlist_slack_channels - Skipping the channel entirely —
metadata.slack.channelIdis required - Assuming a draft is live on Slack
- Posting to a private channel without inviting the DunSocial Slack app. Public channels are joined automatically on publish. If Slack asks you to reconnect, reconnect the publish app so it can join channels and share files.
- Claiming DMs, thread replies, Block Kit, or Slack analytics — V1 is text and attachments only
- Confusing this with the Slack agent in Settings → Integrations. Publish uses a separate Slack app.