Chat Control
Mark read, retry, labels, notes, flows and deletes
Every tool takes an optional orgId - tech providers only, naming the managed client to act on. An id outside the target org behaves exactly like a missing one.
Chat control - 10
| Tool | Scope | Does |
|---|---|---|
mark_conversation_read | CONVERSATIONS_MANAGE | Marks every thread read. |
retry_message | MESSAGES_SEND | Retries one failed outbound message. Inbound or not-failed is a 400. |
start_flow | CONVERSATIONS_MANAGE | Starts a published flow in a chat. See flows. |
stop_flow | CONVERSATIONS_MANAGE | Stops the active flow. |
add_conversation_note | NOTES_WRITE | An internal note on a conversation. |
list_labels | MESSAGES_READ | The org's labels, 1–100. |
set_message_labels | CONVERSATIONS_MANAGE | Sets labels on a message, up to 50. |
archive_label | CONVERSATIONS_MANAGE | Archives a label. |
delete_chat | CONVERSATIONS_DELETE | Irreversible. Deletes one thread with its messages and media; the contact stays. Expensive. |
delete_conversation | CONVERSATIONS_DELETE | Irreversible. The whole conversation. With removePeople: true also needs CONTACTS_ERASE. Expensive. |
Creating a label is not exposed over MCP - it is plan-gated. A key without NOTES_WRITE cannot label an internal note or a system row; that answers not-found.
Flows
start_flow(chatId, flowId) starts a flow in a chat. Three rules:
- The flow must belong to the org and be published. A draft, archived or foreign flow is one not-found.
- A key cannot start a flow in a group chat - 400.
- Flows are not listable over the API, so
flowIdcomes from the dashboard.
Both start_flow and stop_flow return { chatId, activeFlow }, where activeFlow carries the flow id, title, execution id, initiator and start time. A key-started run is recorded with initiator WEBHOOK and platform api.
Acting as an Operator
send_message and add_conversation_note accept actingUserId - a user id from list_members, which must be an active member of the target org. The message or note is then authored as that operator instead of the organisation that owns the key. A non-member is a not-found and nothing is sent.
mentions takes up to 50 user ids from the same place. Mention emails are not sent for notes a key originates; in-app notifications still are.