group:platform_actions group) AND the underlying bot permissions on the platform itself. Granting Comis access does not bypass platform permissions; the bot must already have the relevant capability (e.g., “Kick Members” on Discord, group-admin status on Telegram or WhatsApp).
Quick Reference
| Platform | Tool Name | Action count | Guide |
|---|---|---|---|
| Discord | discord_action | 19 | Discord Actions |
| Telegram | telegram_action | 12 | Telegram Actions |
| Slack | slack_action | 12 | Slack Actions |
whatsapp_action | 11 | WhatsApp Actions |
action parameter specifying what to do, plus any additional parameters that action requires. The action set per platform reflects what each platform’s bot/API actually exposes — Slack and WhatsApp do not have direct equivalents of Discord’s role system, for example, and Telegram’s API is the only one that exposes native polls.
Auth and bot permissions
Each tool reads its credentials from the same place its channel adapter does. There is no separate auth surface for platform actions — if your bot is connected and can send messages, it can attempt platform actions, subject to the bot’s own platform permissions.| Tool | Reads credentials from | Bot must have |
|---|---|---|
discord_action | DISCORD_BOT_TOKEN (same as the Discord adapter) | Server-side permissions per action: “Kick Members” for kick, “Ban Members” for ban, “Manage Roles” for role ops, “Manage Channels” for channel ops, “Manage Messages” for pin/unpin |
telegram_action | TELEGRAM_BOT_TOKEN | Bot must be a chat administrator with the relevant rights for ban / promote / pin / set_title / set_description |
slack_action | SLACK_BOT_TOKEN and SLACK_APP_TOKEN | Bot scopes per action: channels:manage, pins:write, channels:write.invites, channels:archive, bookmarks:write, etc. — configure in the Slack app’s OAuth & Permissions screen |
whatsapp_action | Baileys auth dir (no env keys) | Bot must be a group admin for participant / settings / promote / demote ops |
errorKind: "platform" and the platform’s error message. The action classifier also gates destructive actions (kick, ban, archive, channelDelete, group_leave) behind user confirmation via _confirmed: true.
Discord Actions
Thediscord_action tool provides actions for managing Discord servers, channels, threads, roles, and member moderation.
pin -- Pin a message
pin -- Pin a message
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "pin" |
message_id | string | Yes | The ID of the message to pin |
unpin -- Unpin a message
unpin -- Unpin a message
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "unpin" |
message_id | string | Yes | The ID of the message to unpin |
kick -- Kick a member
kick -- Kick a member
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "kick" |
user_id | string | Yes | The Discord user ID to kick |
reason | string | No | Reason for the kick (shown in audit log) |
ban -- Ban a member
ban -- Ban a member
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "ban" |
user_id | string | Yes | The Discord user ID to ban |
reason | string | No | Reason for the ban (shown in audit log) |
delete_message_days | number | No | Number of days of message history to delete from the banned user (0-7) |
unban -- Unban a member
unban -- Unban a member
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "unban" |
user_id | string | Yes | The Discord user ID to unban |
role_add -- Add a role to a member
role_add -- Add a role to a member
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "role_add" |
user_id | string | Yes | The Discord user ID |
role_id | string | Yes | The role ID to assign |
role_remove -- Remove a role from a member
role_remove -- Remove a role from a member
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "role_remove" |
user_id | string | Yes | The Discord user ID |
role_id | string | Yes | The role ID to remove |
set_topic -- Set channel topic
set_topic -- Set channel topic
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "set_topic" |
topic | string | Yes | The new channel topic text |
set_slowmode -- Set slowmode delay
set_slowmode -- Set slowmode delay
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "set_slowmode" |
seconds | number | Yes | Slowmode interval in seconds (0 to disable) |
guild_info -- Get server information
guild_info -- Get server information
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "guild_info" |
channel_info -- Get channel information
channel_info -- Get channel information
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "channel_info" |
threadCreate -- Create a thread
threadCreate -- Create a thread
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "threadCreate" |
name | string | Yes | The thread name |
message_id | string | No | Message ID to create the thread from (creates a thread attached to that message) |
auto_archive_duration | number | No | Auto-archive duration in minutes (60, 1440, 4320, or 10080) |
threadList -- List threads
threadList -- List threads
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "threadList" |
threadReply -- Reply in a thread
threadReply -- Reply in a thread
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "threadReply" |
thread_id | string | Yes | The thread ID to reply in |
text | string | Yes | The message text to send |
channelCreate -- Create a channel
channelCreate -- Create a channel
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "channelCreate" |
name | string | Yes | The channel name |
type | string | Yes | Channel type: "text", "voice", "category", "announcement", "forum", or "stage" |
parent_id | string | No | Parent category ID to create the channel under |
position | number | No | Position of the channel in the channel list |
channelEdit -- Edit channel settings
channelEdit -- Edit channel settings
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "channelEdit" |
name | string | No | New channel name |
topic | string | No | New channel topic |
channelDelete -- Delete a channel
channelDelete -- Delete a channel
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "channelDelete" |
channelMove -- Move channel to a category
channelMove -- Move channel to a category
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "channelMove" |
category_id | string | Yes | The category ID to move the channel to |
setPresence -- Set bot presence
setPresence -- Set bot presence
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "setPresence" |
status_text | string | Yes | Bot status text displayed under the bot’s name |
activity_type | string | No | Activity type: "playing", "watching", "listening", or "competing" |
Telegram Actions
Thetelegram_action tool provides actions for managing Telegram groups and channels.
pin -- Pin a message
pin -- Pin a message
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "pin" |
message_id | string | Yes | The message ID to pin |
unpin -- Unpin a message
unpin -- Unpin a message
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "unpin" |
message_id | string | Yes | The message ID to unpin |
poll -- Create a poll
poll -- Create a poll
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "poll" |
question | string | Yes | The poll question |
options | array | Yes | Array of answer options (strings) |
sticker -- Send a sticker
sticker -- Send a sticker
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "sticker" |
sticker_id | string | Yes | The sticker file ID |
chat_info -- Get chat information
chat_info -- Get chat information
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "chat_info" |
member_count -- Get member count
member_count -- Get member count
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "member_count" |
get_admins -- List administrators
get_admins -- List administrators
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "get_admins" |
set_title -- Set chat title
set_title -- Set chat title
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "set_title" |
title | string | Yes | The new chat title |
set_description -- Set chat description
set_description -- Set chat description
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "set_description" |
description | string | Yes | The new chat description |
ban -- Ban a user
ban -- Ban a user
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "ban" |
user_id | string | Yes | The Telegram user ID to ban |
unban -- Unban a user
unban -- Unban a user
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "unban" |
user_id | string | Yes | The Telegram user ID to unban |
promote -- Promote to admin
promote -- Promote to admin
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "promote" |
user_id | string | Yes | The Telegram user ID to promote |
rights | object | No | Admin rights object specifying permissions to grant (if omitted, grants default admin permissions) |
Slack Actions
Theslack_action tool provides actions for managing Slack workspaces and channels.
pin -- Pin a message
pin -- Pin a message
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "pin" |
message_id | string | Yes | The message timestamp (Slack’s message ID) |
unpin -- Unpin a message
unpin -- Unpin a message
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "unpin" |
message_id | string | Yes | The message timestamp to unpin |
set_topic -- Set channel topic
set_topic -- Set channel topic
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "set_topic" |
topic | string | Yes | The new channel topic |
set_purpose -- Set channel purpose
set_purpose -- Set channel purpose
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "set_purpose" |
purpose | string | Yes | The new channel purpose |
archive -- Archive a channel
archive -- Archive a channel
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "archive" |
unarchive -- Unarchive a channel
unarchive -- Unarchive a channel
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "unarchive" |
create_channel -- Create a channel
create_channel -- Create a channel
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "create_channel" |
name | string | Yes | The channel name (lowercase, no spaces) |
is_private | boolean | No | Whether the channel is private (defaults to public) |
invite -- Invite users to channel
invite -- Invite users to channel
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "invite" |
user_ids | array | Yes | Array of Slack user IDs to invite |
kick -- Remove a user from channel
kick -- Remove a user from channel
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "kick" |
user_id | string | Yes | The Slack user ID to remove |
channel_info -- Get channel information
channel_info -- Get channel information
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "channel_info" |
members_list -- List channel members
members_list -- List channel members
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "members_list" |
limit | number | No | Maximum number of members to return |
bookmark_add -- Add a bookmark
bookmark_add -- Add a bookmark
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "bookmark_add" |
title | string | Yes | The bookmark display name |
link | string | Yes | The URL to bookmark |
WhatsApp Actions
Thewhatsapp_action tool provides actions for managing WhatsApp groups.
group_info -- Get group information
group_info -- Get group information
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "group_info" |
group_update_subject -- Change group name
group_update_subject -- Change group name
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "group_update_subject" |
subject | string | Yes | The new group name |
group_update_description -- Change group description
group_update_description -- Change group description
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "group_update_description" |
description | string | Yes | The new group description |
group_participants_add -- Add participants
group_participants_add -- Add participants
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "group_participants_add" |
participant_jids | array | Yes | Array of participant JIDs to add (e.g., ["1234567890@s.whatsapp.net"]) |
group_participants_remove -- Remove participants
group_participants_remove -- Remove participants
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "group_participants_remove" |
participant_jids | array | Yes | Array of participant JIDs to remove |
group_promote -- Promote to admin
group_promote -- Promote to admin
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "group_promote" |
participant_jids | array | Yes | Array of participant JIDs to promote |
group_demote -- Demote from admin
group_demote -- Demote from admin
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "group_demote" |
participant_jids | array | Yes | Array of participant JIDs to demote |
group_settings -- Update group settings
group_settings -- Update group settings
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "group_settings" |
setting | string | Yes | One of: "announcement" (only admins can send messages), "not_announcement" (everyone can send), "locked" (only admins can edit group info), "unlocked" (everyone can edit) |
group_invite_code -- Get invite link
group_invite_code -- Get invite link
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "group_invite_code" |
profile_status -- Update bot profile status
profile_status -- Update bot profile status
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "profile_status" |
status_text | string | Yes | The new profile status text |
group_leave -- Leave a group
group_leave -- Leave a group
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "group_leave" |
Permissions and Trust
Platform actions require appropriate bot permissions on each platform. For example:- Discord — Kick and ban require the bot to have the “Kick Members” and “Ban Members” permissions in the server settings. Role management requires “Manage Roles.”
- Telegram — Ban, promote, and group management actions require the bot to be an administrator with the relevant permissions.
- Slack — Channel management actions require appropriate bot scopes (like
channels:manage,chat:write) configured in the Slack app settings. - WhatsApp — Group management actions require the bot to be a group admin.
group:platform_actions tool group and can be restricted through Tool Policy. By default, they are available in the full profile but not in restricted profiles like minimal or coding.
End-to-end example: auto-pin first message of the day
A community-management workflow: at the start of each day, the agent finds the first user message in a channel and pins it as a “today’s kickoff” anchor. This combinescron, the message tool’s fetch action, and a platform action pin call.
discord_action for telegram_action or slack_action — the action name pin is identical across all three.
