Skip to content
DunSocial Docs

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

  1. list_social_accounts — find the Slack account id
  2. list_slack_channels — pick a real channelId (do not guess). Public and private channels the bot can see.
  3. Upload media if the message needs attachments (get_upload_url → PUT → complete_upload)
  4. publish_slack_now (or schedule) with:
    • socialAccountId
    • channelId
    • content (up to 4,000 characters; required unless mediaUrls is 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 channelId from list_slack_channels
  • Skipping the channel entirely — metadata.slack.channelId is 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.