Integrations — overview
Integrations are how agents reach outside the platform: receive chat messages, send notifications, read user data. Each integration type is a row in user_integrations, encrypted at rest, scoped per-profile via the scope model.
What’s available
Section titled “What’s available”Categories
Section titled “Categories”| Category | What it does | Members |
|---|---|---|
| Notifications & chat | Agents send messages out; users send messages in (when bidirectional). | Slack, Telegram, Email, Webhook |
| Data sources | Agents read structured data. | Gmail, Teller |
The dashboard’s Settings → Integrations page groups them this way.
Connection patterns
Section titled “Connection patterns”| Integration | Pattern |
|---|---|
| Slack | OAuth (server initiates, callback on /api/slack/callback) |
| Gmail | OAuth (Google) |
| Telegram | BotFather token + /link claim in DM, OR one-tap pair with the platform’s shared bot |
| Teller | Connect popup (JS SDK) → POST /v1/integrations/teller/callback |
| Resend API key entered by user; stored encrypted | |
| Webhook | URL entered by user; optional HMAC secret |
Multi-row integration types
Section titled “Multi-row integration types”- Teller — one row per bank enrollment.
- Telegram — one row per bot (each independently bindable to a profile).
For all others, one integration per user.
Notification channels (outbound)
Section titled “Notification channels (outbound)”When a playbook or agent sends a notification, it routes by the channel value:
| Channel | Format |
|---|---|
Bare type (slack, email, webhook, telegram) | Uses the user’s default integration of that type. |
telegram:<integration_id> | Specific Telegram bot. Required when using thread-claim. |
Specify channel via notification_channels[] on a playbook, or as channel in mcp_notify__notify_user calls. See notify MCP.
What gets injected per profile
Section titled “What gets injected per profile”| Integration granted to profile | Agent gets |
|---|---|
| Teller | mcp__teller__* tools |
| Gmail | mcp__gmail__* tools |
| Slack / Telegram | Inbound chat surfaces (user messages route to this profile via the bot). |
| Email / Webhook | Outbound via notify_user only. No inbound surface. |
Disconnecting
Section titled “Disconnecting”DELETE /v1/integrations/:id removes the row + revokes downstream auth (Telegram webhook deleted, Slack token revoked where supported). OAuth refresh tokens that we hold are deleted; revoking them on the provider side requires the user to visit their Google/Slack account settings.