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 to field 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
    }
  }
}