41 operations. Call each with POST https://app.chirply.io/api/v1/actions/<name> and a bearer token; the response is { "data": { "action", "summary", "result" } }. A read badge means the operation changes nothing; write requires the credential’s write scope.
Add AI to a chat channel
team_chat.add_aiwriteconfirm
Put an AI employee or AI agent into a team-chat room so people can @mention it there. It will be able to read everything said in that room from then on — including, in a PRIVATE channel, the whole history. An AI employee added this way acts under the permissions of whichever person asks it something, never its own. Only the channel's owner, its creator, or a account owner/admin can.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
channel_id
string (uuid)
required
Id of the channel or direct message, from team_chat.list_channels.
bot_kind
"employee" | "agent"
required
employee = an AI coworker from AI Employees, which can take actions under the asking person's permissions. agent = a customer-facing receptionist from AI Agents, which answers in its own persona but takes no actions.
bot_id
string (uuid)
required
The AI employee's or AI agent's id, from team_chat.list_ai.
Over MCP the same operation is the tool team_chat_add_ai at https://app.chirply.io/api/mcp, same bearer token, same input.
Add people to a chat channel
team_chat.add_memberswriteconfirm
Add teammates to a channel and notify the people added. A private channel grants access to its entire past transcript. You must already belong to the channel. Linked project chats require an account admin; other channels allow existing members to add people.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
channel_id
string (uuid)
required
Id of the channel or direct message, from team_chat.list_channels.
Over MCP the same operation is the tool team_chat_add_members at https://app.chirply.io/api/mcp, same bearer token, same input.
Archive a chat channel
team_chat.archive_channelwriteconfirm
Archive a channel so it drops out of everyone's sidebar and takes no new messages. The transcript is kept and the channel can be unarchived with `archived: false`. Only the channel's owner, its creator, or a account owner/admin can.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
channel_id
string (uuid)
required
Id of the channel or direct message, from team_chat.list_channels.
archived
boolean
optional
True to archive, false to bring the channel back. Default: true
Over MCP the same operation is the tool team_chat_archive_channel at https://app.chirply.io/api/mcp, same bearer token, same input.
Ask an AI in a chat channel
team_chat.ask_aiwriteconfirm
Post a question into a team-chat room addressed to an AI that is already in it, wait for that AI to answer, and return its reply. Everyone in the room sees both the question and the answer. This SPENDS MODEL CREDITS on the account's own AI key, and an AI employee may take real actions while answering — under the permissions of the person asking, with anything risky stopping in the approvals inbox. Slow by nature: a turn with tool calls can take tens of seconds. Acts as the signed-in person, so an API key cannot use it.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
channel_id
string (uuid)
required
Id of the channel or direct message, from team_chat.list_channels.
bot_kind
"employee" | "agent"
required
employee = an AI coworker from AI Employees, which can take actions under the asking person's permissions. agent = a customer-facing receptionist from AI Agents, which answers in its own persona but takes no actions.
bot_id
string (uuid)
required
The AI employee's or AI agent's id, from team_chat.list_ai.
body
string
required
The message text. Mention a teammate by typing @ and their name or email — it is resolved to that person and pings them. '@all' pings everyone in the room.
parent_id
string (uuid)
optional
Ask inside this message's thread instead of the channel.
Over MCP the same operation is the tool team_chat_ask_ai at https://app.chirply.io/api/mcp, same bearer token, same input.
How much history a channel holds
team_chat.channel_statsread
How far back one channel or direct message goes and how much is in it: when its oldest surviving message was posted, when the most recent one was, how many messages it holds in total, and how many of those are in the main transcript rather than inside threads. Read this BEFORE paging a room you have not read — it is what turns 'give me everything from 2019' from blind paging into a bounded range read with team_chat.list_messages. Deleted messages and the grey system lines ('Sam joined the channel') are excluded from both counts, since neither is what a person means by a message. Refuses a room the caller cannot see.
Parameters
Field
Type
Required
Description
channel_id
string (uuid)
required
Id of the channel or direct message, from team_chat.list_channels.
Over MCP the same operation is the tool team_chat_channel_stats at https://app.chirply.io/api/mcp, same bearer token, same input.
Create a chat channel
team_chat.create_channelwrite
Open a new internal chat channel and add teammates to it. A private channel is invisible to everyone outside its member list and cannot be opened up later, so choose deliberately. Channel names are unique within the account.
Parameters
Field
Type
Required
Description
name
string
required
The channel's name, as it appears in the sidebar. A leading '#' is stripped.
topic
string
optional
One line saying what the channel is for. Shown in its details panel.
is_private
boolean
optional
Private channels are invisible to everyone who is not a member, and cannot be made public again afterwards. Default: false
member_ids
array of (string (uuid))
optional
Teammates to add straight away, besides the creator.
Over MCP the same operation is the tool team_chat_create_channel at https://app.chirply.io/api/mcp, same bearer token, same input.
Delete a chat conversation
team_chat.delete_channelwriteconfirmadmin only
PERMANENTLY delete an internal chat conversation — a channel or a direct message — and everything inside it: every message for every member, every reaction, every starred item, and every file that was shared in it, which is deleted from storage too. There is no undo and no export; archiving (team_chat.archive_channel) is the reversible version and is almost always what is wanted instead. Only an account owner or admin can, and only in a room they can already see, so a private room or a DM they are not in stays out of reach. Any AI employee duty that was reporting into this room keeps running but announces nowhere afterwards.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
channel_id
string (uuid)
required
Id of the channel or direct message, from team_chat.list_channels.
Over MCP the same operation is the tool team_chat_delete_channel at https://app.chirply.io/api/mcp, same bearer token, same input.
Delete a chat message
team_chat.delete_messagewriteconfirm
Remove a message from the conversation. Its text and any attachments stop being readable immediately and cannot be recovered. You can delete your own messages; account owners and admins can delete anyone's.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
message_id
string (uuid)
required
Id of the message, from team_chat.list_messages; imported records use stable GUIDs.
Over MCP the same operation is the tool team_chat_delete_message at https://app.chirply.io/api/mcp, same bearer token, same input.
Edit a chat message
team_chat.edit_messagewrite
Rewrite the text of a message you sent. It is marked as edited for everyone in the room. You can only edit your own messages — not a colleague's, whatever your role.
Parameters
Field
Type
Required
Description
message_id
string (uuid)
required
Id of the message, from team_chat.list_messages; imported records use stable GUIDs.
body
string
required
The message text. Mention a teammate by typing @ and their name or email — it is resolved to that person and pings them. '@all' pings everyone in the room.
Over MCP the same operation is the tool team_chat_edit_message at https://app.chirply.io/api/mcp, same bearer token, same input.
View channel image
team_chat.get_channel_imageread
Read a channel's current picture as base64 bytes and its image MIME type, or null when no picture is set. Applies the same channel visibility rules as chat; an API key can read only open channels. Does not change data or send messages.
Parameters
Field
Type
Required
Description
channel_id
string (uuid)
required
Id of the channel or direct message, from team_chat.list_channels.
Over MCP the same operation is the tool team_chat_get_channel_image at https://app.chirply.io/api/mcp, same bearer token, same input.
Read chat images
team_chat.inspect_imageswriteconfirm
Read pictures and screenshots attached to selected chat messages, including visible text. Inspects up to four PNG, JPEG, WebP or GIF images per request (6 MB each) using the account's vision model; AI usage is billed to its connected OpenRouter account. Returns observations and explicit unreadable/skipped results. Reads only messages and stored attachments in a channel the caller can see; never fetches arbitrary URLs. Use list_messages to find message ids, including older messages and thread replies.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
channel_id
string (uuid)
required
Id of the channel or direct message, from team_chat.list_channels.
message_ids
array of (string (uuid))
required
Message ids from this channel, in priority order; the first four supported images are inspected.
question
string
optional
What to look for, such as an error message, chart values or text to transcribe. Omit for a general description.
Over MCP the same operation is the tool team_chat_inspect_images at https://app.chirply.io/api/mcp, same bearer token, same input.
Join a chat channel
team_chat.join_channelwrite
Join an open channel, so it appears in your sidebar and you start getting its messages. A short 'joined the channel' line is posted. Private channels cannot be joined — someone in them has to add you.
Parameters
Field
Type
Required
Description
channel_id
string (uuid)
required
Id of the channel or direct message, from team_chat.list_channels.
Over MCP the same operation is the tool team_chat_join_channel at https://app.chirply.io/api/mcp, same bearer token, same input.
Leave a chat conversation
team_chat.leave_channelwriteconfirm
Leave a channel or a group direct message. It drops out of your sidebar and stops notifying you; the transcript stays for everyone else and you can rejoin an open channel later. Leaving a PRIVATE channel means you can no longer see it at all unless someone adds you back. Leaving a direct message removes only your seat — starting a direct message with the same people again reopens the same thread with its history.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
channel_id
string (uuid)
required
Id of the channel or direct message, from team_chat.list_channels.
Over MCP the same operation is the tool team_chat_leave_channel at https://app.chirply.io/api/mcp, same bearer token, same input.
List AI available for chat
team_chat.list_airead
List every AI in this account that can be put into a team-chat room — AI employees (which can take actions) and AI agents (which answer as themselves). Shows whether each is currently active; a paused employee or a switched-off agent stays silent in chat.
Over MCP the same operation is the tool team_chat_list_ai at https://app.chirply.io/api/mcp, same bearer token, same input.
List who is in a chat channel
team_chat.list_channel_membersread
List the PEOPLE in one channel or direct message by name, each with when they last posted in that room, how many messages they have posted in it, and when they joined it. This is the answer to 'who is in here' and 'who has gone quiet' — the transcript only shows who happened to speak recently, and team_chat.list_people returns the whole account rather than this room. Quietest first. Humans only: the AI members of a room are silent unless mentioned, so they are listed by team_chat.list_ai instead. Refuses a room the caller cannot see.
Parameters
Field
Type
Required
Description
channel_id
string (uuid)
required
Id of the channel or direct message, from team_chat.list_channels.
Over MCP the same operation is the tool team_chat_list_channel_members at https://app.chirply.io/api/mcp, same bearer token, same input.
List chat channels
team_chat.list_channelsread
List the internal chat rooms available to the caller: channels they have joined, open channels they could join, and their direct messages. Each row carries the room's last message, its member count, and the caller's own unread count. An API key sees open channels only — private rooms and DMs belong to a person.
Parameters
Field
Type
Required
Description
include_archived
boolean
optional
Include channels that have been archived. Default: false
Over MCP the same operation is the tool team_chat_list_channels at https://app.chirply.io/api/mcp, same bearer token, same input.
Read a chat conversation
team_chat.list_messagesread
Read messages from one channel or direct message, oldest first. The room's ENTIRE history is reachable through this action, however old: it is not capped to recent messages. Read the newest with no timestamps; read a date range by passing `after` and `before` together; walk a long room by repeating the call with `before` set to the oldest message you have so far, until `has_more` comes back false. Each page is at most 200 messages, so call team_chat.channel_stats first to find out how far back the room goes and how many messages are in it before paging a large one. Pass `parent_id` to read one thread's replies instead of the channel's main transcript — the two are separate, and the main transcript never contains thread replies. Refuses a room the caller cannot see.
Parameters
Field
Type
Required
Description
channel_id
string (uuid)
required
Id of the channel or direct message, from team_chat.list_channels.
parent_id
string (uuid)
optional
Read the replies under this message instead of the channel's main transcript.
before
string (date-time)
optional
Return only messages sent strictly BEFORE this ISO 8601 timestamp. On its own it pages backwards through the room's history; together with `after` it is the end of a date range.
after
string (date-time)
optional
Return only messages sent strictly AFTER this ISO 8601 timestamp — the start of a date range, or everything since a moment you have already read. Note that a page is filled from the NEWEST end of the range, so when `has_more` is true with both bounds set, the missing messages are the OLDER ones: move `before` back to the oldest message you received and call again.
Over MCP the same operation is the tool team_chat_list_messages at https://app.chirply.io/api/mcp, same bearer token, same input.
List teammates for chat
team_chat.list_peopleread
List everyone in this account who can be messaged in team chat — their user id, display name, email, avatar and public GitHub usernames saved in their profile or linked in this account. These are staff, not CRM contacts; use contacts.list for customers. Sends no messages and costs nothing.
Over MCP the same operation is the tool team_chat_list_people at https://app.chirply.io/api/mcp, same bearer token, same input.
Starred messages
team_chat.list_starredread
Read your own starred messages, newest star first, each with the room it was said in. Returns only the signed-in person's stars — there is no way to read anyone else's. Reads only and sends no notifications.
Parameters
Field
Type
Required
Description
limit
integer
optional
How many starred messages to return, newest star first. Default: 50
Over MCP the same operation is the tool team_chat_list_starred at https://app.chirply.io/api/mcp, same bearer token, same input.
Mark a conversation read
team_chat.mark_readwrite
Clear your unread badge for one channel or direct message, exactly as opening it in the app does. Personal to you. Acts as the signed-in person, so an API key cannot use it.
Parameters
Field
Type
Required
Description
channel_id
string (uuid)
required
Id of the channel or direct message, from team_chat.list_channels.
Over MCP the same operation is the tool team_chat_mark_read at https://app.chirply.io/api/mcp, same bearer token, same input.
Message a teammate directly
team_chat.message_personwriteconfirm
Send one direct message to a single teammate, starting the private conversation with them if there isn't one yet — the two steps a person takes by clicking a colleague's name in chat and typing. It appears immediately for them and pushes a notification to their desktop AND their phone, so treat it like tapping a real colleague on the shoulder. Costs nothing: this is internal staff chat, never an SMS or email to a customer. It can be edited or deleted afterwards, but not unsent. Acts as the signed-in person, so an API key — which has no colleagues — cannot use it.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
user_id
string (uuid)
required
A teammate's user id, from team_chat.list_people. Not a contact id.
body
string
required
The message text. Mention a teammate by typing @ and their name or email — it is resolved to that person and pings them. '@all' pings everyone in the room.
Over MCP the same operation is the tool team_chat_message_person at https://app.chirply.io/api/mcp, same bearer token, same input.
Open a direct message with an AI
team_chat.open_ai_direct_messagewrite
Find or start your own private one-to-one conversation with an AI employee or agent, and return its channel id. Nobody else in the account can see it. In a one-to-one the AI answers every message without being @mentioned. Calling it twice never creates a second conversation. Acts as the signed-in person, so an API key cannot use it.
Parameters
Field
Type
Required
Description
bot_kind
"employee" | "agent"
required
employee = an AI coworker from AI Employees, which can take actions under the asking person's permissions. agent = a customer-facing receptionist from AI Agents, which answers in its own persona but takes no actions.
bot_id
string (uuid)
required
The AI employee's or AI agent's id, from team_chat.list_ai.
Over MCP the same operation is the tool team_chat_open_ai_direct_message at https://app.chirply.io/api/mcp, same bearer token, same input.
Open a direct message
team_chat.open_direct_messagewrite
Find or start the private conversation between you and one or more teammates, and return its channel id so you can post into it. Calling it twice never creates a second thread. Acts as the signed-in person, so an API key cannot use it.
Parameters
Field
Type
Required
Description
user_ids
array of (string (uuid))
required
The teammates to talk to. You are added automatically.
Over MCP the same operation is the tool team_chat_open_direct_message at https://app.chirply.io/api/mcp, same bearer token, same input.
Attach a saved image
team_chat.prepare_image_attachmentwrite
Prepare a completed AI Studio or media-library image for a team-chat room you belong to. Copies the account-owned PNG/JPEG/GIF/WebP file (up to 6 MB) privately into that room without downloading image bytes into the model. Requires read access to the source library. Returns an attachment to pass unchanged to team_chat.send_message; this step sends no message and incurs no AI generation charge. Generate first with ai_studio.generate_image or assets.generate_image when a new image is needed.
Parameters
Field
Type
Required
Description
channel_id
string (uuid)
required
Id of the channel or direct message, from team_chat.list_channels.
source
"asset" | "generation"
required
asset for an assets media-library record; generation for a completed ai_studio image.
id
string (uuid)
required
The saved asset or generation id returned by the image-generation or library tool. Never a URL.
Over MCP the same operation is the tool team_chat_prepare_image_attachment at https://app.chirply.io/api/mcp, same bearer token, same input.
React to a chat message
team_chat.reactwrite
Add an emoji reaction to a message, or take yours off if it is already there — the same toggle as clicking the emoji in the app. Acts as the signed-in person, so an API key cannot use it.
Parameters
Field
Type
Required
Description
message_id
string (uuid)
required
Id of the message, from team_chat.list_messages; imported records use stable GUIDs.
Over MCP the same operation is the tool team_chat_react at https://app.chirply.io/api/mcp, same bearer token, same input.
Remove AI from a chat channel
team_chat.remove_aiwriteconfirm
Take an AI employee or agent out of a room. It stops answering there and stops seeing what is said. Anything it already did is not undone. Only the channel's owner, its creator, or a account owner/admin can.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
channel_id
string (uuid)
required
Id of the channel or direct message, from team_chat.list_channels.
bot_kind
"employee" | "agent"
required
employee = an AI coworker from AI Employees, which can take actions under the asking person's permissions. agent = a customer-facing receptionist from AI Agents, which answers in its own persona but takes no actions.
bot_id
string (uuid)
required
The AI employee's or AI agent's id, from team_chat.list_ai.
Over MCP the same operation is the tool team_chat_remove_ai at https://app.chirply.io/api/mcp, same bearer token, same input.
Remove someone from a chat channel
team_chat.remove_memberwriteconfirm
Take a teammate out of a channel. In a private channel they immediately lose access to the whole conversation, including its history and files. Only the channel's owner, its creator, or a account owner/admin can.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
channel_id
string (uuid)
required
Id of the channel or direct message, from team_chat.list_channels.
user_id
string (uuid)
required
A teammate's user id, from team_chat.list_people. Not a contact id.
Over MCP the same operation is the tool team_chat_remove_member at https://app.chirply.io/api/mcp, same bearer token, same input.
Search team chat
team_chat.searchread
Search the text of team-chat messages. Searches every room the caller can see unless `channel_id` narrows it to one conversation. Deliberately never reaches a private channel the caller is not a member of — naming one in `channel_id` returns nothing rather than searching it.
Parameters
Field
Type
Required
Description
query
string
required
Text to look for in message bodies.
channel_id
string (uuid)
optional
Search only this conversation. Omit to search every room the caller can see. A room the caller cannot see returns no matches rather than an error.
Over MCP the same operation is the tool team_chat_search at https://app.chirply.io/api/mcp, same bearer token, same input.
Send a chat message
team_chat.send_messagewriteconfirm
Post a message into a team-chat channel or direct message. It appears immediately for everyone in the room and pushes a notification to each member whose notification setting allows it — on their desktop AND on their phone, so real people are interrupted wherever they are; treat it like speaking in the room. Costs nothing: this is internal staff chat, never an SMS or email to a customer. A message can be edited or deleted afterwards, but not unsent. Messages posted by a signed-in person queue replies from mentioned AI teammates (and AI direct-message recipients); those replies use the account’s AI credits and run under that person’s permissions. Machine callers without a user cannot wake AI teammates. The sent message returns immediately; AI replies arrive separately.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
channel_id
string (uuid)
required
Id of the channel or direct message, from team_chat.list_channels.
body
string
required
Message text, including @mentions. May be empty when attaching a file.
attachments
object[]
optional
Up to four files uploaded into this same room.
attachments[].key
string
required
Storage key returned by team_chat.upload_attachment or team_chat.prepare_image_attachment.
attachments[].url
string
required
Private URL returned by the upload.
attachments[].name
string
required
Original filename.
attachments[].contentType
string
required
Validated MIME type from the upload.
attachments[].size
integer
required
File size in bytes.
parent_id
string (uuid)
optional
Reply inside this message's thread instead of posting to the channel.
Over MCP the same operation is the tool team_chat_send_message at https://app.chirply.io/api/mcp, same bearer token, same input.
Change channel image
team_chat.set_channel_imagewrite
Upload, replace or remove the picture shown for a channel in its chat list, header and Details. Accepts JPG, PNG or WebP up to 2 MB. Requires channel-management permission; linked project channels require an account admin. Images remain private to people who can view the channel. Does not send a chat message or change membership.
Parameters
Field
Type
Required
Description
channel_id
string (uuid)
required
Id of the channel or direct message, from team_chat.list_channels.
image_base64
string (or null)
required
Raw base64 image bytes, without a data URL prefix. Pass null to remove the channel picture.
content_type
"image/png" | "image/jpeg" | "image/webp"
optional
Image MIME type; required when uploading bytes, omitted when removing the picture.
Over MCP the same operation is the tool team_chat_set_channel_image at https://app.chirply.io/api/mcp, same bearer token, same input.
Set a channel's notifications
team_chat.set_notificationswrite
Choose what one channel sends you — every message, only mentions, or nothing — and whether it is starred to the top of your sidebar. Personal to you and invisible to everyone else in the room. Acts as the signed-in person, so an API key cannot use it.
Parameters
Field
Type
Required
Description
channel_id
string (uuid)
required
Id of the channel or direct message, from team_chat.list_channels.
notify
"all" | "mentions" | "none"
optional
What this room sends to your devices: all messages, only ones that mention you, or nothing.
starred
boolean
optional
Pin this room to the Starred section at the top of your sidebar.
Over MCP the same operation is the tool team_chat_set_notifications at https://app.chirply.io/api/mcp, same bearer token, same input.
Share a message into another room
team_chat.share_messagewriteconfirm
Carry an existing team-chat message into another channel or direct message, with your own note above it. Unlike quoting, this brings the WHOLE message: who wrote it, when, its text, and its images and files, which are copied into the destination room so everyone there can open them. It posts as a new message in that room and notifies its members exactly like any other post — desktop and phone — so real people are interrupted; treat it like speaking in the room. Costs nothing: internal staff chat, never an SMS or email to a customer. You must be able to read the message AND be a member of the room it is going to. THIS IS HOW A PRIVATE ROOM'S CONTENT LEAVES IT: what you share becomes readable to everyone in the destination room, including people who were never in the room it came from, and it cannot be unsent — only deleted afterwards. Sharing a message that is itself a share carries the original rather than nesting one inside another. An expired ZIP archive is left behind and the card says how many files did not come along.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
message_id
string (uuid)
required
Id of the message, from team_chat.list_messages; imported records use stable GUIDs.
channel_id
string (uuid)
required
The channel or direct message to carry it INTO — not the one it came from. You have to be a member of it.
note
string
optional
Your own words about it, posted above the shared message. @mentions here work normally; the shared message's own mentions are flattened to plain names and re-ping nobody.
parent_id
string (uuid)
optional
Share it into this message's thread instead of the room's main transcript.
Over MCP the same operation is the tool team_chat_share_message at https://app.chirply.io/api/mcp, same bearer token, same input.
Star a chat message
team_chat.star_messagewrite
Save a message to your own starred list, or take the star off if it is already there — the same toggle as clicking the star in the app. A star is PRIVATE: unlike a reaction, nobody else in the room can see that you saved it, and it changes nothing about the message for anyone else. Acts as the signed-in person, so an API key cannot use it. Sends no notifications.
Parameters
Field
Type
Required
Description
message_id
string (uuid)
required
Id of the message, from team_chat.list_messages; imported records use stable GUIDs.
Over MCP the same operation is the tool team_chat_star_message at https://app.chirply.io/api/mcp, same bearer token, same input.
Connect my Teamwork
team_chat.teamwork_connect_linkwrite
Creates a ten-minute link that signs the signed-in person into Teamwork and saves their OWN Teamwork access, encrypted, for importing the private one-to-ones and private groups they are a member of. The link only works in that person's signed-in browser, and only for the Teamwork site this account's administrator connected. Connecting imports nothing and changes nothing in Teamwork. Available while Teamwork's developer app is enabled for this account; otherwise use Connect with an API token.
Over MCP the same operation is the tool team_chat_teamwork_connect_link at https://app.chirply.io/api/mcp, same bearer token, same input.
Connect with an API token
team_chat.teamwork_connect_tokenwriteconfirm
Verifies and saves the signed-in person's own Teamwork API token (Teamwork → profile → Edit my details → API & Mobile), encrypted and readable by nobody else, including account administrators. It must be a token for the Teamwork site this account's administrator connected, and for the person's own Teamwork user — a sign-in this account already knows as another teammate is refused. Consumes one Teamwork read; imports nothing and changes nothing in Teamwork.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
api_token
string
required
The person's own Teamwork API token (or an already-issued OAuth bearer token). Encrypted at rest and never returned.
auth_type
"api_key" | "bearer"
optional
api_key for a personal API token from Teamwork's API & Mobile settings; bearer for an already-issued OAuth access token. Default: "api_key"
Over MCP the same operation is the tool team_chat_teamwork_connect_token at https://app.chirply.io/api/mcp, same bearer token, same input.
Disconnect my Teamwork
team_chat.teamwork_disconnectwriteconfirm
Deletes the signed-in person's saved Teamwork token and stops importing and live-syncing their private conversations. Everything already imported stays in Team Chat. Only the person who connected can disconnect; it does not affect the account's own Teamwork connection or anyone else's.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Over MCP the same operation is the tool team_chat_teamwork_disconnect at https://app.chirply.io/api/mcp, same bearer token, same input.
Import my conversations
team_chat.teamwork_importwriteconfirm
Starts, resumes or re-scans the signed-in person's import of their private Teamwork conversations — one-to-ones and private groups they are a member of that were active in the last 3 months — and runs one bounded batch now; the rest continues in the background. Messages from the last 3 months come across under their original authors and dates without notifying anyone. Each conversation becomes a private Team Chat room seated with its matched participants only, and an untitled one-to-one becomes the direct message between the two people (merged into one that already exists). Conversations the account migration already imported are recognised and skipped. Reads Teamwork only; nothing is written back.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Over MCP the same operation is the tool team_chat_teamwork_import at https://app.chirply.io/api/mcp, same bearer token, same input.
My Teamwork
team_chat.teamwork_statusread
Reads the signed-in person's own Teamwork connection: whether it is connected and as whom, which Teamwork site it must use, import progress (conversations and messages imported, errors) and the private conversations it brought into Team Chat. Never returns a token. Reads only; contacts nobody.
Over MCP the same operation is the tool team_chat_teamwork_status at https://app.chirply.io/api/mcp, same bearer token, same input.
Check for new messages
team_chat.teamwork_sync_nowwriteconfirm
Reads the newest messages in the signed-in person's imported private Teamwork conversations, using their own Teamwork connection, and posts anything said since into the matching Team Chat rooms under the original author's name with a Teamwork badge. New messages raise unread badges and send the usual Team Chat notifications to the people in that room. This also runs automatically every minute while the person stays connected. Reads Teamwork only; nothing is written back.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Over MCP the same operation is the tool team_chat_teamwork_sync_now at https://app.chirply.io/api/mcp, same bearer token, same input.
Update a chat channel
team_chat.update_channelwriteconfirm
Change a channel's name, its one-line description, its standing meeting link, or whether new teammates are added to it automatically. Only the channel's owner, its creator, or a account owner/admin can. Setting `is_private` to true is possible and permanent; the reverse is not, because it would retroactively expose a transcript people wrote in private — that one field is why this whole capability requires confirmation, even though the other fields (name, topic, meeting link, auto-join) are freely reversible.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
channel_id
string (uuid)
required
Id of the channel or direct message, from team_chat.list_channels.
name
string
optional
The channel's name, as it appears in the sidebar. A leading '#' is stripped.
topic
string (or null)
optional
One line saying what the channel is for. Shown in its details panel.
meeting_url
string (or null)
optional
A standing video-call link for this channel (Zoom, Meet, Teams…).
is_private
true
optional
Set to true to close the channel. It cannot be reopened.
auto_join
boolean
optional
Put every NEW member of this account into this channel as they join — the setting that keeps an all-hands room actually company-wide. Only valid on a PUBLIC channel; a private one refuses, because its membership is chosen. Applies to people who join later, not to the people already here, and never to external members (clients), who are only ever in rooms somebody put them in deliberately.
Over MCP the same operation is the tool team_chat_update_channel at https://app.chirply.io/api/mcp, same bearer token, same input.
Attach a file
team_chat.upload_attachmentwrite
Upload one file of up to 6 MB to a team-chat room you belong to — an image, video, audio clip, PDF or ZIP archive. Returns an attachment for team_chat.send_message. The 6 MB cap is this JSON surface's base64 transport limit; people using the app itself can attach files up to 25 MB, and team_chat.send_message accepts attachments of either origin. File bytes are validated like web chat uploads and remain private to the room, readable only by its members. ZIP archives are TEMPORARY: they delete themselves 14 days after upload and cannot be recovered, so do not use this as storage for anything that has to last. Uploading alone sends no notification; posting the attachment notifies room members according to their preferences.
Parameters
Field
Type
Required
Description
channel_id
string (uuid)
required
Id of the channel or direct message, from team_chat.list_channels.
name
string
required
Original filename including its extension. The extension decides the stored type and must be one of png, jpg, jpeg, gif, webp, svg, ico, mp4, m4v, mov, webm, mp3, wav, m4a, ogg, pdf or zip; a zip is deleted 14 days after upload.
content_type
string
required
The selected file's MIME type; actual bytes are checked independently.
base64
string
required
Base64-encoded file bytes, without a data URL prefix. Maximum decoded size 6 MB.