Channel Connectors
Slack / Discord / Telegram bridges.
8 actions. Each is callable by the agent as a tool, over HTTP via /api/invoke, and (usually) from a UI page.
channels.catalog
GET
List supported channel providers (Slack, Discord, Telegram, WhatsApp, Teams, Gmail, Webex, Google Chat, …) with their capabilities, webhook path, and auth hints.
- AI tool:
channels_catalog - API:
GET /api/invoke/channels.catalog
Input
No parameters.
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": {}
}channels.list
GET
List configured channel connectors. Prefer filtering by projectId — connectors are scoped per workspace × project.
- AI tool:
channels_list - API:
GET /api/invoke/channels.list
Input
| Field | Type | Required | Description |
|---|---|---|---|
provider |
"slack" | "discord" | "telegram" | "whatsapp" | "teams" | "imessage" | "signal" | "email-imap" | "webex" | "google-chat" | "sms" | "composio" | — | |
active |
boolean | — | |
projectId |
string | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"provider": {
"type": "string",
"enum": [
"slack",
"discord",
"telegram",
"whatsapp",
"teams",
"imessage",
"signal",
"email-imap",
"webex",
"google-chat",
"sms",
"composio"
]
},
"active": {
"type": "boolean"
},
"projectId": {
"type": "string",
"minLength": 1
}
}
}channels.get
GET
Get a connector + recent event audit log.
- AI tool:
channels_get - API:
GET /api/invoke/channels.get
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | |
eventLimit |
integer | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"eventLimit": {
"default": 50,
"type": "integer",
"minimum": 1,
"maximum": 200
}
},
"required": [
"id"
]
}channels.create
POST · mutating
Add a new channel connector scoped to a project. Configure provider, mode (native/composio/simulated), assigned agent, and provider-specific config (bot tokens, signing secrets, etc.).
- AI tool:
channels_create - API:
POST /api/invoke/channels.create
Input
| Field | Type | Required | Description |
|---|---|---|---|
provider |
"slack" | "discord" | "telegram" | "whatsapp" | "teams" | "imessage" | "signal" | "email-imap" | "webex" | "google-chat" | "sms" | "composio" | yes | |
mode |
"native" | "composio" | "simulated" | — | |
name |
string | yes | |
description |
string | — | |
config |
object | — | |
assignedToActorId |
string | — | |
mentionRequired |
boolean | — | |
allowlistChannelIds |
string[] | — | |
denylistUserIds |
string[] | — | |
composioConnectionId |
string | — | |
projectId |
string | yes | |
subjectId |
string | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"provider": {
"type": "string",
"enum": [
"slack",
"discord",
"telegram",
"whatsapp",
"teams",
"imessage",
"signal",
"email-imap",
"webex",
"google-chat",
"sms",
"composio"
]
},
"mode": {
"type": "string",
"enum": [
"native",
"composio",
"simulated"
]
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"config": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"assignedToActorId": {
"type": "string",
"minLength": 1
},
"mentionRequired": {
"type": "boolean"
},
"allowlistChannelIds": {
"type": "array",
"items": {
"type": "string"
}
},
"denylistUserIds": {
"type": "array",
"items": {
"type": "string"
}
},
"composioConnectionId": {
"type": "string"
},
"projectId": {
"type": "string",
"minLength": 1
},
"subjectId": {
"type": "string",
"minLength": 1
}
},
"required": [
"provider",
"name",
"projectId"
]
}channels.update
PATCH · mutating
Update a channel connector (name, config, assigned agent, mention gate, etc.).
- AI tool:
channels_update - API:
PATCH /api/invoke/channels.update
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | |
patch |
object | yes |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"patch": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"provider": {
"type": "string",
"enum": [
"slack",
"discord",
"telegram",
"whatsapp",
"teams",
"imessage",
"signal",
"email-imap",
"webex",
"google-chat",
"sms",
"composio"
]
},
"mode": {
"default": "simulated",
"type": "string",
"enum": [
"native",
"composio",
"simulated"
]
},
"name": {
"type": "string"
},
"description": {
"default": "",
"type": "string"
},
"config": {
"default": {},
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"assignedToActorId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"mentionRequired": {
"default": true,
"type": "boolean"
},
"allowlistChannelIds": {
"default": [],
"type": "array",
"items": {
"type": "string"
}
},
"denylistUserIds": {
"default": [],
"type": "array",
"items": {
"type": "string"
}
},
"projectId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"subjectId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"composioConnectionId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"active": {
"default": true,
"type": "boolean"
},
"lastEventAt": {
"anyOf": [
{},
{
"type": "null"
}
]
},
"lastError": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"createdAt": {},
"updatedAt": {}
}
}
},
"required": [
"id",
"patch"
]
}channels.delete
DELETE · mutating
Delete a channel connector. Audit events are preserved via FK cascade.
- AI tool:
channels_delete - API:
DELETE /api/invoke/channels.delete
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
]
}channels.test
POST
Run the adapter's self-test (e.g. Slack auth.test, Telegram getMe). Returns { ok, detail }.
- AI tool:
channels_test - API:
POST /api/invoke/channels.test
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
]
}channels.simulate_inbound
POST · mutating
Inject a synthetic inbound event into a connector — useful for dev/test without a real provider. Bypasses signature verification.
- AI tool:
channels_simulate_inbound - API:
POST /api/invoke/channels.simulate_inbound
Input
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | |
body |
string | yes | |
externalAuthorHandle |
string | — | |
externalChannelId |
string | — | |
isMention |
boolean | — | |
isDirectMessage |
boolean | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string"
},
"externalAuthorHandle": {
"default": "test-user",
"type": "string"
},
"externalChannelId": {
"default": "test-channel",
"type": "string"
},
"isMention": {
"default": true,
"type": "boolean"
},
"isDirectMessage": {
"default": false,
"type": "boolean"
}
},
"required": [
"id",
"body"
]
}