Cross-platform DM
Direct messaging across platforms.
2 actions. Each is callable by the agent as a tool, over HTTP via /api/invoke, and (usually) from a UI page.
dm.send
POST · mutating
Send a direct message on any supported platform (twitter, linkedin, instagram, slack, discord, sms). Routes through Composio for social platforms and Twilio for SMS. Messages are mirrored into a platform conversation so the thread stays visible in the comms hub.
When the agent calls it: Use this to send DMs on any platform. For SMS, also set fromPhoneNumberId. Pass projectId when the workspace has multiple connectors for the same provider. The
tofield is platform-specific: Twitter → @handle or user_id, LinkedIn → profile URL or URN, Instagram → username, Slack → channel/user id, Discord → channel_id, SMS → E.164 phone number.
- AI tool:
dm_send - API:
POST /api/invoke/dm.send
Input
| Field | Type | Required | Description |
|---|---|---|---|
platform |
string | yes | Platform slug — e.g. twitter, linkedin, instagram, slack, discord, telegram, whatsapp, sms, or any connected channel provider. |
to |
string | yes | Recipient handle, username, user ID, or phone number (for SMS). |
body |
string | yes | |
conversationId |
string | — | Existing conversation to continue. If omitted, one is found or created. |
actorId |
string | — | Which agent/actor persona sends. Falls back to workspace default. |
fromPhoneNumberId |
string | — | |
composioUserId |
string | — | |
projectId |
string | — | |
fromSubjectId |
string | — | Subject/persona account to send FROM. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"platform": {
"type": "string",
"minLength": 1,
"description": "Platform slug — e.g. twitter, linkedin, instagram, slack, discord, telegram, whatsapp, sms, or any connected channel provider."
},
"to": {
"type": "string",
"minLength": 1,
"description": "Recipient handle, username, user ID, or phone number (for SMS)."
},
"body": {
"type": "string",
"minLength": 1
},
"conversationId": {
"description": "Existing conversation to continue. If omitted, one is found or created.",
"type": "string",
"minLength": 1
},
"actorId": {
"description": "Which agent/actor persona sends. Falls back to workspace default.",
"type": "string",
"minLength": 1
},
"fromPhoneNumberId": {
"type": "string",
"minLength": 1
},
"composioUserId": {
"type": "string"
},
"projectId": {
"type": "string",
"minLength": 1
},
"fromSubjectId": {
"description": "Subject/persona account to send FROM.",
"type": "string",
"minLength": 1
}
},
"required": [
"platform",
"to",
"body"
]
}dm.list_threads
GET
List DM threads on a platform. Returns both locally-mirrored conversations and, when Composio is connected, live threads from the platform.
- AI tool:
dm_list_threads - API:
GET /api/invoke/dm.list_threads
Input
| Field | Type | Required | Description |
|---|---|---|---|
platform |
string | — | Filter to a single platform slug (twitter, linkedin, sms, …). Omit to list all. |
composioUserId |
string | — | |
limit |
integer | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"platform": {
"description": "Filter to a single platform slug (twitter, linkedin, sms, …). Omit to list all.",
"type": "string"
},
"composioUserId": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100
}
}
}