Skip to main content

Slack notify

The optional notify MCP tool sends messages to Slack with chat.postMessage. Use it for workflow milestones, batch completions, and alerts so agents do not need to call execute("chat_postMessage", …) for every post.

  • Enable: CLAWQL_ENABLE_NOTIFY=1 (or true / yes).
  • Spec: The loaded OpenAPI merge must include Slack (operation id chat_postMessage), e.g. CLAWQL_PROVIDER=slack, CLAWQL_BUNDLED_PROVIDERS containing slack, or a default merge that already includes Slack.
  • Auth: CLAWQL_SLACK_TOKEN / SLACK_BOT_TOKEN / … — same rules as execute for the slack label. Minimum scope chat:write.

Canonical guide (setup, notify vs execute, thread replies, Block Kit, errors, Cursor JSON, Helm): notify-tool.md · mcp-tools.md § notify · issue #77.

Quick examples

Minimal completion message:

{
  "channel": "C0123456789",
  "text": "✅ Q1 invoice import finished — 14 files archived."
}

Thread reply (use the parent message ts from Slack):

{
  "channel": "C0123456789",
  "thread_ts": "1713898000.000100",
  "text": "Step 3/3: import complete — doc id `5102`."
}

Public channel by name (bot must be a member):

{
  "channel": "#releases",
  "text": "*Deploy* succeeded for `v4.0.0`."
}

Slack sometimes returns {"ok":false,"error":"not_in_channel"} with HTTP 200. The notify tool maps that to a tool result error string plus the parsed slack object so the model can retry or ask you to /invite the bot.

Testing

Repo tests: src/clawql-notify.test.ts, src/server.test.ts. Follow-up issues: #136#140 — index notify-tool-test-backlog.md.

See also Tools for how notify fits alongside search, execute, memory_*, cache, and audit.

Was this page helpful?