Bot Integrations
Bot Integrations turn your agent into a two-way conversational presence on chat platforms. Instead of only sending outbound messages via tools, the agent can listen for mentions and DMs, hold a multi-turn conversation, and use any of its tools to respond — all from inside Discord or Slack.
What it gives you
A bot integration is the difference between an agent that sends notifications and an agent you can actually talk to from Slack or Discord. Once enabled, the bot:
- Replies in real time when @mentioned in any channel it's in
- Holds private 1:1 DMs with authorized users
- Persists conversation history per channel — threaded back-and-forth keeps context
- Has access to all the agent's tools for authorized users; public bot-mode users get no tools
- Can be locked down to an authorized user list — strangers get a different (limited) prompt instead of full agent access
- Emits inbound events (
discord.mention_received,slack.mention_received, etc.) so you can wire automations off them
Common use cases
| Use case | Example |
|---|---|
| Personal status helper | DM the bot "what did I finish yesterday?" — it reads your task page, summarizes, and replies in Slack. |
| Weekly review helper | @mention in #journal with "summarize what I shipped this week" — it pulls from your task page and posts a digest. |
| Knowledge concierge | DM the bot to ask questions answered from your personal RAG knowledge base. |
| Automation router | Use slack.mention_received as an automation trigger to kick off custom workflows. |
| Cross-tool dispatcher | "@bot create a Notion page from this thread, then post the link in #ideas" — one message, multiple tools. |
| Scoped public bot | Authorized users get full agent access; everyone else gets a narrow shared bot prompt. |
How this differs from the Integrations pages
There are two layers to chat platform support and they often confuse new users. They build on the same credential but do opposite things:
| Layer | Direction | What it gives you |
|---|---|---|
| Integrations → Slack / Discord | agent → platform | The outbound tool set (slack_send_message, discord_create_thread, etc.). The agent uses these when it decides to act on the platform during a chat in the web UI. |
| Bot Integrations → Slack Bot / Discord Bot | platform → agent | The persistent gateway connection that lets people in Slack/Discord talk to the agent via @mentions and DMs. Authorized users can use full agent tools; public bot-mode users get restricted text replies. |
They build on each other. The Bot layer requires the Integration layer to be enabled too — replies are posted using the outbound tools (e.g. slack_send_message) and both layers share the same credential.
- Want notifications only? Enable just the Integration. The agent can post to channels from the web UI but no one can chat back.
- Want a two-way bot? Enable the Integration and the Bot Integration. The Integration page is step 1 (connect Slack/Discord); the Bot page is step 2 (turn on the conversational layer on top).
How the gateway works
Both Discord and Slack bots use a persistent WebSocket gateway (no public webhook URL required, no ngrok). Inbound messages route through Convex into a per-channel conversation, the agent runs against the same pipeline as the chat UI, and replies are posted back to the original channel (or thread).
Slack vs Discord — small but real differences:
| Discord | Slack | |
|---|---|---|
| Tokens needed | One bot token | Bot token + app-level token (xapp-) |
| Inbound transport | Discord Gateway WebSocket | Socket Mode WebSocket |
| Authorized-user identifier | Username (case-insensitive) | User ID (stable across renames) |
| DM enablement | Works automatically | Requires App Home → Messages Tab + checkbox |
| Special intent/scope | MESSAGE CONTENT INTENT in Dev Portal | app_mentions:read + im:history scopes |
Authorization is per-agent: you maintain a list of user identifiers who get "agent" mode (full system prompt + every enabled tool). Anyone else gets "bot" mode — a restricted shared bot prompt by default, optionally overridden per platform with a different model. Bot mode has no tools, pages, memory, documents, schedules, automations, or integration guides. This keeps personal agent context private unless you explicitly authorize someone.
