conversations module is the MCP surface for new messaging automation. It
uses the same conversation DTOs as the Public API and supports direct and group
chat conversations without exposing unread-state internals or private channel
names.
Available Tools
list_conversations
List direct and group conversations, newest updated first.
- Type: Read-only
- Important Input Fields:
conversationType(string, optional):directorgroup.clientId(string, optional): Filter by client.participantId/participantRole(string, optional): Filter by participant.contextType/contextId(string, optional): Filter by semantic context.page/limit(integer, optional): Page pagination.
list_conversation_inbox
List the combined inbox of direct and group conversations, newest updated
first. This is an alias of list_conversations with the same filters and page
pagination.
- Type: Read-only
- Important Input Fields:
conversationType(string, optional):directorgroup.clientId(string, optional): Filter by client.participantId/participantRole(string, optional): Filter by participant.contextType/contextId(string, optional): Filter by semantic context.page/limit(integer, optional): Page pagination.
get_conversation
Retrieve one conversation without marking messages as read.
- Type: Read-only
- Important Input Fields:
conversationId(string, required): Conversation ID.conversationType(string, optional):directorgroup.
get_conversation_messages
Retrieve conversation messages, newest first.
- Type: Read-only
- Important Input Fields:
conversationId(string, required): Conversation ID.conversationType(string, optional):directorgroup.page/limit(integer, optional): Page pagination.
list_conversation_participants
List active participants for a conversation.
- Type: Read-only
- Important Input Fields:
conversationId(string, required): Conversation ID.conversationType(string, optional):directorgroup.page/limit(integer, optional): Page pagination.
create_conversation
Create or find a direct conversation, or create a group conversation.
- Type: Write
- Write Tool Grant:
create_conversation - Important Input Fields:
conversationType(string, required):directorgroup.participants(array, required): Coach/client participants.createdBy(object, optional): Requesting coach actor. Defaults to the grant owner when available.name(string, group only): Required for group conversations.context(object, optional):none,client,company,lesson,calendar_event, orbooking.
send_conversation_message
Send a text message as the requesting coach when that coach is an active
participant.
- Type: Write
- Write Tool Grant:
send_conversation_message - Important Input Fields:
conversationId(string, required): Conversation ID.senderCoachId(string, required): Requesting coach sender ID.message(string, required): Text body.
update_conversation_message
Update a text message sent by the requesting coach within the edit window.
- Type: Write
- Write Tool Grant:
update_conversation_message - Important Input Fields:
conversationId(string, required): Conversation ID.messageId(string, required): Message ID.senderCoachId(string, required): Original requesting coach sender ID.message(string, required): Replacement text.
delete_conversation_message
Soft-delete a text message sent by the requesting coach within the edit window.
- Type: Write
- Write Tool Grant:
delete_conversation_message - Important Input Fields:
conversationId(string, required): Conversation ID.messageId(string, required): Message ID.senderCoachId(string, required): Original requesting coach sender ID.
add_conversation_participants
Add or restore participants in a group conversation.
- Type: Write
- Write Tool Grant:
add_conversation_participants - Important Input Fields:
conversationId(string, required): Group conversation ID.actorCoachId(string, required): Requesting coach performing the change.participants(array, required): Participants to add.
remove_conversation_participant
Remove one participant from a group conversation.
- Type: Write
- Write Tool Grant:
remove_conversation_participant - Important Input Fields:
conversationId(string, required): Group conversation ID.actorCoachId(string, required): Requesting coach performing the change.participantId(string, required): User ID to remove.
Actor and Context Rules
MCP writes use the grant owner as the requesting coach. The request still passessenderCoachId, actorCoachId, or createdBy for audit clarity, but that coach
must match the requesting coach, belong to the company, and already be an active
conversation participant where applicable. Other-coach delegation is intentionally
not enabled yet; it can be added later as an explicit permission without
renaming these tools.
Conversation contexts are intentionally future-facing. The current contract
accepts and returns client, company, lesson, calendar_event, and
booking context values, so later company chats or lesson-specific chats can be
added without replacing the tool names.
Conversation write tools use the same mutation service as the Public API.
Successful writes therefore emit the same outbound Public API webhook events
when the company has an active matching webhook subscription. Webhook payloads
stay metadata-only: they include IDs, roles, context IDs, and timestamps, but no
message text, media URLs, conversation names, descriptions, or context labels.