Skip to main content
What it does: Wraps the native moderation and management APIs of Discord, Telegram, Slack, and WhatsApp so agents can kick users, manage roles, pin messages, archive channels, change group settings, and more — all from inside a conversation. Who it’s for: Agents that need to act as moderators or admins in a chat platform. These tools require both Comis tool policy (typically the 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

PlatformTool NameAction countGuide
Discorddiscord_action19Discord Actions
Telegramtelegram_action12Telegram Actions
Slackslack_action12Slack Actions
WhatsAppwhatsapp_action11WhatsApp Actions
All platform action tools follow the same pattern: call the tool with an 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.
ToolReads credentials fromBot must have
discord_actionDISCORD_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_actionTELEGRAM_BOT_TOKENBot must be a chat administrator with the relevant rights for ban / promote / pin / set_title / set_description
slack_actionSLACK_BOT_TOKEN and SLACK_APP_TOKENBot 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_actionBaileys auth dir (no env keys)Bot must be a group admin for participant / settings / promote / demote ops
If a platform rejects the call (insufficient permission, missing scope, target not in scope), the tool returns a structured error with 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

The discord_action tool provides actions for managing Discord servers, channels, threads, roles, and member moderation.
Pin a message to the current channel so it appears in the pinned messages list.
ParameterTypeRequiredDescription
actionstringYes"pin"
message_idstringYesThe ID of the message to pin
Remove a message from the pinned messages list.
ParameterTypeRequiredDescription
actionstringYes"unpin"
message_idstringYesThe ID of the message to unpin
Remove a member from the server. They can rejoin with a new invite.
ParameterTypeRequiredDescription
actionstringYes"kick"
user_idstringYesThe Discord user ID to kick
reasonstringNoReason for the kick (shown in audit log)
Ban a member from the server. They cannot rejoin until unbanned.
ParameterTypeRequiredDescription
actionstringYes"ban"
user_idstringYesThe Discord user ID to ban
reasonstringNoReason for the ban (shown in audit log)
delete_message_daysnumberNoNumber of days of message history to delete from the banned user (0-7)
Remove a ban, allowing the user to rejoin the server.
ParameterTypeRequiredDescription
actionstringYes"unban"
user_idstringYesThe Discord user ID to unban
Assign a role to a server member.
ParameterTypeRequiredDescription
actionstringYes"role_add"
user_idstringYesThe Discord user ID
role_idstringYesThe role ID to assign
Remove a role from a server member.
ParameterTypeRequiredDescription
actionstringYes"role_remove"
user_idstringYesThe Discord user ID
role_idstringYesThe role ID to remove
Update the topic text displayed at the top of a channel.
ParameterTypeRequiredDescription
actionstringYes"set_topic"
topicstringYesThe new channel topic text
Set the slowmode interval for the channel. When enabled, members can only send one message per interval.
ParameterTypeRequiredDescription
actionstringYes"set_slowmode"
secondsnumberYesSlowmode interval in seconds (0 to disable)
Retrieve information about the current Discord server, including name, member count, channels, and roles.
ParameterTypeRequiredDescription
actionstringYes"guild_info"
Retrieve information about the current channel, including name, topic, type, and permissions.
ParameterTypeRequiredDescription
actionstringYes"channel_info"
Create a new thread in the current channel. Optionally create it from an existing message.
ParameterTypeRequiredDescription
actionstringYes"threadCreate"
namestringYesThe thread name
message_idstringNoMessage ID to create the thread from (creates a thread attached to that message)
auto_archive_durationnumberNoAuto-archive duration in minutes (60, 1440, 4320, or 10080)
List all threads in the current channel.
ParameterTypeRequiredDescription
actionstringYes"threadList"
Send a message to a specific thread.
ParameterTypeRequiredDescription
actionstringYes"threadReply"
thread_idstringYesThe thread ID to reply in
textstringYesThe message text to send
Create a new channel in the server.
ParameterTypeRequiredDescription
actionstringYes"channelCreate"
namestringYesThe channel name
typestringYesChannel type: "text", "voice", "category", "announcement", "forum", or "stage"
parent_idstringNoParent category ID to create the channel under
positionnumberNoPosition of the channel in the channel list
Modify the settings of an existing channel.
ParameterTypeRequiredDescription
actionstringYes"channelEdit"
namestringNoNew channel name
topicstringNoNew channel topic
Delete the current channel. This action is irreversible.
ParameterTypeRequiredDescription
actionstringYes"channelDelete"
Channel deletion is permanent. All messages and history in the channel will be lost.
Move a channel to a different category in the server.
ParameterTypeRequiredDescription
actionstringYes"channelMove"
category_idstringYesThe category ID to move the channel to
Update the bot’s online status and activity message.
ParameterTypeRequiredDescription
actionstringYes"setPresence"
status_textstringYesBot status text displayed under the bot’s name
activity_typestringNoActivity type: "playing", "watching", "listening", or "competing"

Telegram Actions

The telegram_action tool provides actions for managing Telegram groups and channels.
Pin a message in the chat so it appears at the top.
ParameterTypeRequiredDescription
actionstringYes"pin"
message_idstringYesThe message ID to pin
Remove a pinned message.
ParameterTypeRequiredDescription
actionstringYes"unpin"
message_idstringYesThe message ID to unpin
Create a poll in the chat for members to vote on.
ParameterTypeRequiredDescription
actionstringYes"poll"
questionstringYesThe poll question
optionsarrayYesArray of answer options (strings)
Send a sticker to the chat.
ParameterTypeRequiredDescription
actionstringYes"sticker"
sticker_idstringYesThe sticker file ID
Retrieve information about the current chat, including name, type, and member count.
ParameterTypeRequiredDescription
actionstringYes"chat_info"
Get the number of members in the current chat.
ParameterTypeRequiredDescription
actionstringYes"member_count"
List all administrators in the current chat with their permissions.
ParameterTypeRequiredDescription
actionstringYes"get_admins"
Change the title of the group or channel.
ParameterTypeRequiredDescription
actionstringYes"set_title"
titlestringYesThe new chat title
Update the description of the group or channel.
ParameterTypeRequiredDescription
actionstringYes"set_description"
descriptionstringYesThe new chat description
Ban a user from the chat. They cannot rejoin until unbanned.
ParameterTypeRequiredDescription
actionstringYes"ban"
user_idstringYesThe Telegram user ID to ban
Remove a ban, allowing the user to rejoin the chat.
ParameterTypeRequiredDescription
actionstringYes"unban"
user_idstringYesThe Telegram user ID to unban
Promote a user to administrator with specified permissions.
ParameterTypeRequiredDescription
actionstringYes"promote"
user_idstringYesThe Telegram user ID to promote
rightsobjectNoAdmin rights object specifying permissions to grant (if omitted, grants default admin permissions)

Slack Actions

The slack_action tool provides actions for managing Slack workspaces and channels.
Pin a message in the channel.
ParameterTypeRequiredDescription
actionstringYes"pin"
message_idstringYesThe message timestamp (Slack’s message ID)
Remove a pinned message.
ParameterTypeRequiredDescription
actionstringYes"unpin"
message_idstringYesThe message timestamp to unpin
Update the channel topic displayed at the top of the channel.
ParameterTypeRequiredDescription
actionstringYes"set_topic"
topicstringYesThe new channel topic
Update the channel’s purpose description.
ParameterTypeRequiredDescription
actionstringYes"set_purpose"
purposestringYesThe new channel purpose
Archive a channel. Archived channels are read-only and hidden from the channel list.
ParameterTypeRequiredDescription
actionstringYes"archive"
Restore an archived channel to active status.
ParameterTypeRequiredDescription
actionstringYes"unarchive"
Create a new Slack channel.
ParameterTypeRequiredDescription
actionstringYes"create_channel"
namestringYesThe channel name (lowercase, no spaces)
is_privatebooleanNoWhether the channel is private (defaults to public)
Invite one or more users to join the current channel.
ParameterTypeRequiredDescription
actionstringYes"invite"
user_idsarrayYesArray of Slack user IDs to invite
Remove a user from the current channel.
ParameterTypeRequiredDescription
actionstringYes"kick"
user_idstringYesThe Slack user ID to remove
Retrieve detailed information about the current channel.
ParameterTypeRequiredDescription
actionstringYes"channel_info"
List all members of the current channel.
ParameterTypeRequiredDescription
actionstringYes"members_list"
limitnumberNoMaximum number of members to return
Add a bookmark link to the channel’s bookmarks bar.
ParameterTypeRequiredDescription
actionstringYes"bookmark_add"
titlestringYesThe bookmark display name
linkstringYesThe URL to bookmark

WhatsApp Actions

The whatsapp_action tool provides actions for managing WhatsApp groups.
Retrieve information about the current WhatsApp group, including name, description, and participants.
ParameterTypeRequiredDescription
actionstringYes"group_info"
Update the group name (subject).
ParameterTypeRequiredDescription
actionstringYes"group_update_subject"
subjectstringYesThe new group name
Update the group description text.
ParameterTypeRequiredDescription
actionstringYes"group_update_description"
descriptionstringYesThe new group description
Add new members to the group.
ParameterTypeRequiredDescription
actionstringYes"group_participants_add"
participant_jidsarrayYesArray of participant JIDs to add (e.g., ["1234567890@s.whatsapp.net"])
Remove members from the group.
ParameterTypeRequiredDescription
actionstringYes"group_participants_remove"
participant_jidsarrayYesArray of participant JIDs to remove
Promote participants to group admin status.
ParameterTypeRequiredDescription
actionstringYes"group_promote"
participant_jidsarrayYesArray of participant JIDs to promote
Revoke admin status from participants, returning them to regular member status.
ParameterTypeRequiredDescription
actionstringYes"group_demote"
participant_jidsarrayYesArray of participant JIDs to demote
Change group-wide settings that control who can send messages and edit group info.
ParameterTypeRequiredDescription
actionstringYes"group_settings"
settingstringYesOne of: "announcement" (only admins can send messages), "not_announcement" (everyone can send), "locked" (only admins can edit group info), "unlocked" (everyone can edit)
Update the bot’s WhatsApp profile status message.
ParameterTypeRequiredDescription
actionstringYes"profile_status"
status_textstringYesThe new profile status text
Have the bot leave the current group. This action is irreversible — the bot must be re-invited to rejoin.
ParameterTypeRequiredDescription
actionstringYes"group_leave"
Leaving a group is permanent. The bot must be added back by a group admin to rejoin.

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.
Platform actions are part of the 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.
If a platform action fails with a permissions error, check that your bot has the required permissions on that platform. The error message will typically indicate which permission is missing.

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 combines cron, the message tool’s fetch action, and a platform action pin call.
You: Every weekday at 8am Eastern, find the first message posted in
     #general after midnight today and pin it.
The agent registers a cron job:
tool: cron
action: add
name: pin-first-message-of-day
schedule_kind: cron
schedule_expr: "0 8 * * 1-5"
timezone: America/New_York
payload_kind: agent_turn
payload_text: >
  Find the first message posted in #general today (after midnight in
  America/New_York). Pin it using discord_action. If there are no
  messages yet today, do nothing.
When the cron fires, the agent runs:
# 1. Fetch recent messages
tool: message
action: fetch
channel_type: discord
channel_id: "general"
limit: 100
The agent filters the fetched results client-side for the earliest message after the day boundary, then pins it:
# 2. Pin the first message
tool: discord_action
action: pin
message_id: "<id from step 1>"
If the bot lacks the “Manage Messages” permission, step 2 returns an error and the agent can post a notification asking the admin to grant the permission. For Telegram or Slack the same workflow swaps discord_action for telegram_action or slack_action — the action name pin is identical across all three.

Discord Setup

Set up and configure your Discord bot

Telegram Setup

Set up and configure your Telegram bot

Slack Setup

Set up and configure your Slack bot

WhatsApp Setup

Set up and configure your WhatsApp connection