Slack Integration
Connect Curate-Me AI to your Slack workspace to manage your AI agent fleet directly from channels. Use slash commands, @mention the bot, send DMs, and get real-time notifications — all without leaving Slack.
What You Get
| Feature | Description |
|---|---|
/cm slash command | Check status, manage fleet, schedule tasks, track costs |
| Slack shortcuts | One-click Quick Ask and Ask-from-message flows (no long command typing) |
| @mention the bot | Chat with your agents directly in any channel |
| DM conversations | Send files and have multi-turn conversations with agents |
| App Home tab | Fleet overview dashboard right inside Slack |
| Interactive buttons | Quick actions, approval workflows, modal dialogs |
| Webhook notifications | Real-time alerts for agent events and cost thresholds |
Setup Overview
There are two setup paths depending on your role:
| Path | Who | What |
|---|---|---|
| Self-service (coming soon) | Any B2B customer | Click “Connect Slack” in Dashboard Settings |
| Manual setup | Platform admin / your own workspace | Configure at api.slack.com |
Self-Service (B2B Customers)
When the dashboard integration page is live, connecting Slack is one click:
- Go to Dashboard > Settings > Integrations
- Click Connect Slack
- Authorize Curate-Me AI in your workspace
- Choose a default channel for notifications
- Done —
/cm helpworks immediately
The OAuth callback stores your bot token securely and maps your Slack workspace to your Curate-Me organization automatically.
Manual Setup (Your Own Workspace)
If you’re running the platform yourself or need custom configuration:
Step 1: Create a Slack App
- Go to api.slack.com/apps and click Create New App
- Choose From an app manifest for fastest setup
- Select your workspace
- Paste this manifest (update the URLs for your domain):
{
"display_information": {
"name": "Curate-Me AI",
"description": "AI agent fleet manager — schedule tasks, monitor costs, talk to your agents",
"background_color": "#0d9488",
"long_description": "Curate-Me AI connects your AI agent fleet to Slack. Use /cm commands to check agent status, schedule tasks, track LLM costs, and chat with your agents directly."
},
"features": {
"app_home": {
"home_tab_enabled": true,
"messages_tab_enabled": true,
"messages_tab_read_only_enabled": false
},
"bot_user": {
"display_name": "Curate-Me AI",
"always_online": true
},
"slash_commands": [
{
"command": "/cm",
"url": "https://YOUR_DOMAIN/gateway/slack/commands",
"description": "Curate-Me AI agent control — /cm help for commands",
"usage_hint": "[status|fleet|ask|schedule|budget|help]",
"should_escape": false
}
]
},
"oauth_config": {
"redirect_urls": [
"https://YOUR_DOMAIN/gateway/admin/integrations/slack/callback"
],
"scopes": {
"bot": [
"chat:write",
"chat:write.public",
"channels:read",
"channels:join",
"channels:history",
"app_mentions:read",
"im:history",
"im:write",
"im:read",
"users:read",
"commands",
"files:read",
"reactions:write",
"incoming-webhook"
]
}
},
"settings": {
"event_subscriptions": {
"request_url": "https://YOUR_DOMAIN/gateway/slack/events",
"bot_events": [
"app_mention",
"app_home_opened",
"message.channels",
"message.im"
]
},
"interactivity": {
"is_enabled": true,
"request_url": "https://YOUR_DOMAIN/gateway/slack/interactions"
},
"org_deploy_enabled": false,
"socket_mode_enabled": false,
"token_rotation_enabled": false
}
}Replace YOUR_DOMAIN with your gateway URL (e.g., api.curate-me.ai).
Step 2: Install to Your Workspace
- Go to Install App in the sidebar
- Click Install to Workspace
- Authorize the requested permissions
- Copy the Bot User OAuth Token (
xoxb-...)
Step 3: Store the Token
Store the bot token in your environment or credential vault:
# Environment variable (development)
export SLACK_BOT_TOKEN=xoxb-your-token-here
# Or store in MongoDB credential vault (production)
curl -X POST https://YOUR_DOMAIN/gateway/admin/integrations/slack/configure \
-H "Authorization: Bearer $ADMIN_JWT" \
-H "Content-Type: application/json" \
-d '{
"bot_token": "xoxb-your-token-here",
"team_id": "T0A6C9FH3L3",
"channel_id": "C0AHAQFT596"
}'Step 4: Verify Events URL
Slack needs to verify your events endpoint. Once your gateway is deployed and accessible at the URL you configured, Slack will send a challenge request automatically. The gateway handles this:
POST /gateway/slack/events
Body: {"type": "url_verification", "challenge": "abc123"}
Response: {"challenge": "abc123"}Slash Commands
Type /cm in any Slack channel to interact with Curate-Me AI.
Available Commands
| Command | Description | Example |
|---|---|---|
/cm help | Show all available commands | /cm help |
/cm status | Show all agents and their current state | /cm status |
/cm fleet | Fleet overview with resource usage | /cm fleet |
/cm agents | Show alias directory (recommended in pilot) | /cm agents |
/cm ask <agent> <message> | Send a message to a specific agent | /cm ask frank analyze this data |
/cm @<agent> <message> | Fast alias shortcut | /cm @cfo-orch summarize this thread |
/cm schedule <when> <task> | Schedule a task with natural language | /cm schedule every day at 9am check costs |
/cm budget | Show today’s LLM spend by model | /cm budget |
Pilot Recommendation: Shortcuts + Aliases
For pilot teams, avoid long slash command phrasing in day-to-day usage:
- Use global shortcut
Quick Askto open an agent picker modal. - Use message shortcut
Ask Curate-Mefrom any message/thread. - Use short aliases for fleet agents (
cfo-orch,cfo-medicaid,cfo-budget). - Keep
/cmfor power-user/backup flows.
Natural Language Scheduling
The schedule command understands natural language:
/cm schedule every weekday at 9am generate daily report
/cm schedule every monday at 2pm review agent performance
/cm schedule in 30 minutes run data sync
/cm schedule tomorrow at 3pm deploy new modelSupported patterns:
- Recurring:
every day at 9am,every weekday at 2pm,every monday at 10am,every 2 hours,hourly - One-shot:
in 30 minutes,tomorrow at 3pm,next tuesday at noon
@Mention the Bot
Mention @Curate-Me AI in any channel to start a conversation:
@Curate-Me AI what's the fleet status?
@Curate-Me AI ask frank to analyze the latest logs
@Curate-Me AI how much have we spent today?The bot responds in-thread to keep channels clean.
DM Conversations
Send a direct message to the Curate-Me AI bot for private conversations:
- Text messages are routed through the channel bridge to your default agent
- File attachments are supported — upload CSVs, images, or documents and the agent can process them
- Multi-turn conversations maintain context within a thread
App Home Tab
Click on the Curate-Me AI app in your sidebar to see the App Home tab:
- Fleet status overview (online/offline agents)
- Quick action buttons for common operations
- Recent activity feed
Gateway Endpoints
The Slack integration uses three gateway endpoints:
| Endpoint | Purpose | Caller |
|---|---|---|
POST /gateway/slack/commands | Slash command handler | Slack (on /cm usage) |
POST /gateway/slack/events | Event subscriptions (mentions, DMs, App Home) | Slack |
POST /gateway/slack/interactions | Button clicks, modal submissions | Slack |
These are registered automatically when the gateway starts.
Multi-Tenant Architecture
When multiple B2B organizations connect their Slack workspaces:
- Each org goes through the OAuth flow independently
- The OAuth callback stores the org’s
bot_token+team_idmapping - When Slack sends events, the gateway resolves
team_id → org_id - All operations are scoped to the correct organization
- Each org sees only their own agents, costs, and data
The channel_connections MongoDB collection stores per-org Slack credentials:
{
"org_id": "org_abc123",
"channel_type": "slack",
"config": {
"bot_token": "xoxb-...",
"team_id": "T0A6C9FH3L3",
"default_channel_id": "C0AHAQFT596"
},
"connected_at": "2026-03-01T10:00:00Z"
}Troubleshooting
/cm Returns an Error
- “dispatch_failed”: The gateway is not reachable at the configured URL. Verify your domain is deployed and the gateway is running.
- “expired_trigger_id”: The command took too long. Slack requires a response within 3 seconds.
Bot Doesn’t Respond to @Mentions
- Check that Event Subscriptions URL is verified (green checkmark in Slack app settings)
- Verify
app_mentionis in the bot events list - Check gateway logs for incoming events
DM Files Not Processed
Ensure the files:read scope is granted. Reinstall the app if scopes were
added after initial installation.
Next Steps
- Connect Your Machine — Run agents on your own hardware
- BYO MCP Guide — Connect custom MCP servers to agents
- Runners Quickstart — Create your first managed runner