Skip to content

MCP data structures ​

These are the application result models exposed by the 70 MCP tools. Names such as McpChatInfo are .NET model names; tables use their JSON field names (camelCase). Requests consist of the tool arguments listed in the tool reference, not separate request-object types. Message and notification payloads use the shared ExternalMessage shape.

Identifiers and primitive values ​

ValueMeaning
User IDOpaque string identifying an account. Obtain it from get_me, list_members or list_peer_chats.
Chat IDOpaque string identifying a group, direct or place chat. Obtain it from a chat-list result and reuse it unchanged.
Place IDOpaque string identifying a place, obtained from list_places. It is not the ID of a chat inside the place.
Message ID / LID / entryId64-bit integer local to one chat. The pair (chatId, id) identifies a message. IDs can have gaps.
Author IDString identifying an author within a chat (or a place's root chat). It is not interchangeable with a user ID.
Avatar ID, Invite ID, Upload ID, Stream ID, Conversation IDOpaque strings returned by the tool that creates or lists them.
Media IDString identifying a media object, returned by uploads and attachments. Use returned URLs to retrieve content.
Version64-bit message version token for identifying changes. It is not a product release version or message ID.
TimestampsMilliseconds since the Unix epoch (UTC), as 64-bit integers.

Use a JSON implementation that preserves 64-bit integers when storing message IDs, versions and timestamps. Do not derive chronological ordering from opaque string IDs.

Account and avatars ​

McpAccount ​

FieldTypeMeaning
userIdstringYour user ID.
namestringDisplay name (the default avatar's name).
avatarIdstringDefault avatar ID.
avatarNamestringDefault avatar name.
avatarUrlstring or nullDefault avatar picture URL.

McpAvatar ​

FieldTypeMeaning
idstringAvatar ID.
namestringAvatar name.
biostringShort bio; may be empty.
pictureUrlstring or nullPicture URL.
isDefaultbooleanThis avatar is the account's default.

Places and chats ​

McpListPlacesResult / McpPlaceInfo ​

McpListPlacesResult has places (McpPlaceInfo[]; may be empty).

McpPlaceInfo fieldTypeMeaning
idstringPlace ID.
isPublicbooleanWhether the place is public.
titlestringPlace title.

McpListChatsResult / McpChatInfo ​

McpListChatsResult has chats (McpChatInfo[]; may be empty).

McpChatInfo fieldTypeMeaning
idstringChat ID.
isPublicbooleanWhether the chat is public.
titlestringChat title; direct chats can use the other person's display name as a fallback.

Neither list wrapper includes a total count or a separate next-page token. Reuse the final item's id as the exclusive cursor, following the caveats in the tool reference.

McpChatDetails ​

FieldTypeMeaning
idstringChat ID.
kindstringChat kind name (for example group, peer or place).
title, descriptionstringTitle and description.
isPublicbooleanWhether anyone can join.
placeIdstring or nullPlace ID for a place chat; otherwise null.
pictureUrlstring or nullPicture URL.
memberCountintegerNumber of authors listed for the chat.
permissionsstring[]Names of the permission flags the caller has, such as Invite or EditMembers.

McpPlaceDetails ​

FieldTypeMeaning
idstringPlace ID.
title, descriptionstringTitle and description.
isPublicbooleanWhether the place is public.
pictureUrl, backgroundUrlstring or nullPicture and background URLs.
memberCountintegerNumber of authors listed for the place.
permissionsstring[]Permission flag names the caller has.

McpListMembersResult / McpMember ​

McpListMembersResult has members (McpMember[]).

McpMember fieldTypeMeaning
authorIdstringAuthor ID; also the paging cursor.
userIdstring or nullUser ID; User ID.
namestringAuthor's avatar name.
isOwnerbooleanThe member is an owner.
FieldTypeMeaning
idstringInvite ID; pass to revoke_invite_link.
urlstringAbsolute invite URL. Treat as a secret.
remainingintegerRemaining uses.
expiresOn64-bit integerExpiry, Unix milliseconds.

Messages ​

McpIdRange of long ​

FieldTypeMeaning
firstId64-bit integerInclusive first local message ID.
lastId64-bit integerInclusive last local message ID.

An empty range has lastId < firstId. The underlying .NET model is generic McpIdRange<T>; MCP tools use it only with long.

McpListMessagesResult ​

FieldTypeMeaning
rangeMcpIdRange<long>Inclusive bounds of this returned page, or an empty range.
fullRangeMcpIdRange<long>Chat's full local-ID range at the time of reading.
messagesExternalMessage[]Returned messages in ascending local-ID order.

ExternalMessage ​

FieldTypeMeaning
id64-bit integerMessage's local ID in its chat.
version64-bit integerMessage version token.
createdAt64-bit integerMessage beginning time, Unix milliseconds.
authorExternalAuthorAuthor of the message.
isSystembooleanThis is a system entry.
isStreamingbooleanContent is currently streaming.
isTranscribedbooleanThe entry has associated audio. This is derived from the audio flag, not a transcript-quality guarantee.
isRemovedbooleanRemoval flag. Normal list_messages results omit removed entries.
textstring or nullStored message content; null while isStreaming is true. May contain Voxt text markup. In-progress transcription is never exposed.
textTruncatedboolean or nullSet only by producers that truncate text; MCP leaves it null.
attachmentsExternalAttachment[]Attached media metadata; empty if there are none.
repliedToId64-bit integer or nullLocal ID of the message this one replies to.
mentionsstring[]Author IDs mentioned in the text.
urlstringAbsolute link to the message.
originExternalOriginHow the message was produced.

The model does not contain a reaction list, a thread model or an audio stream; use list_reactions for reactions.

ExternalAuthor ​

FieldTypeMeaning
idstringChat-specific author ID.
namestringAuthor avatar name; empty if unavailable.
avatarUrlstring or nullAvatar picture URL.

ExternalOrigin ​

FieldTypeMeaning
kindstringuser, api (posted through an API key or MCP), webhook (posted through an incoming webhook) or bot.

ExternalAttachment ​

FieldTypeMeaning
mediaIdstringBacking media ID.
kindstringimage, video, audio or file, classified from content type.
fileNamestringStored filename.
contentTypestringMIME content type.
length64-bit integerMedia size in bytes.
width, heightintegerStored pixel size where applicable.
urlstringContent URL.
previewUrlstring or nullImage preview URL when the image proxy is available; otherwise null.
thumbnailUrlstring or nullThumbnail content URL when a thumbnail exists; otherwise null.

Do not require dimensions or previews for every file type. To attach files to a new message, upload them and pass the returned media IDs to post_message.

McpReactionSummary ​

FieldTypeMeaning
emojistringThe emoji.
count64-bit integerNumber of reactions with this emoji.
authorIdsstring[]The first reacting authors.

McpFoundMessage / McpFoundContact ​

McpFoundMessage fieldTypeMeaning
chatIdstringChat containing the match.
entryId64-bit integerMessage local ID.
textstringMatched text.
McpFoundContact fieldTypeMeaning
kindstringuser, place or chat.
idstringUser ID, place ID or chat ID, per kind.
titlestringName or title.

Streams ​

McpMessageStream ​

FieldTypeMeaning
streamIdstringPass to append_message_stream and finish_message_stream.
entryId64-bit integerLocal ID of the message being filled in.
offsetintegerCharacters of text the server has accepted.
speechBacklognumber or nullSeconds of speech a listener still has to hear; null while nobody is listening.
isFinishedbooleanThe stream is closed.

McpVoiceStream ​

FieldTypeMeaning
streamIdstringPass to the other voice-stream tools.
entryId64-bit integer or nullNull until finish_voice_stream returns it, and still null if nothing was posted.
textOffsetintegerCharacters of text the server has accepted.
audioBytes64-bit integerAudio bytes received.
audioDurationnumberSeconds of audio the server has decoded.
isFinishedbooleanThe stream is closed.

Uploads and chat content ​

McpUploadStatus ​

FieldTypeMeaning
uploadIdstringUpload ID.
mediaIdstring or nullMedia ID reserved for the upload. Null after begin_import_upload, until finish_import_upload.
offset64-bit integerBytes the server has received. After finish_upload reaches Ready, equals length.
length64-bit integerTotal length in bytes.
stagestringUploading, a processing stage name, or Ready.
progressnumberPercent complete for the current stage.
mediaMcpMediaRef or nullSet when stage is Ready.

McpMediaRef ​

FieldTypeMeaning
mediaIdstringMedia ID to pass to other tools.
kindstringimage, video, audio or file.
fileName, contentTypestringStored name and MIME type.
length64-bit integerSize in bytes.
width, heightintegerPixel size where applicable.
urlstringContent URL.
previewUrl, thumbnailUrlstring or nullPreview and thumbnail URLs when available.

McpContentPage of T ​

FieldTypeMeaning
periodKeystringPeriod (month) this page belongs to.
pageIndexintegerPage within the period (0-based).
pageCountintegerPages in the period.
nextPeriodKeystring or nullOlder period to request next; null if none.
itemsT[]McpMediaItem, McpFileItem or McpLinkItem.
McpMediaItem fieldTypeMeaning
entryId64-bit integerMessage the media belongs to.
at64-bit integerTime, Unix milliseconds.
mediaId, kind, fileName, contentTypestringAs in McpMediaRef.
length64-bit integerSize in bytes.
urlstringContent URL.
thumbnailUrlstring or nullThumbnail URL.
McpFileItem fieldTypeMeaning
entryId, at64-bit integerMessage and time.
mediaId, fileName, contentTypestringFile identity.
length64-bit integerSize in bytes.
urlstringContent URL.
McpLinkItem fieldTypeMeaning
entryId, at64-bit integerMessage and time.
urlstringThe link.
title, descriptionstring or nullLink preview text when available.

Conversations ​

McpListConversationsResult / McpConversation ​

McpListConversationsResult has conversations (McpConversation[]) and nextBeforeId (string or null).

McpConversation fieldTypeMeaning
idstringConversation ID.
chatIdstringChat ID.
startEntryId, endEntryId64-bit integerFirst and last message local IDs.
startsAt, endsAt64-bit integerStart and end, Unix milliseconds.
title, description, summarystringGenerated title, description and summary.
messageCount, attachmentCountintegerCounts of messages and attachments.
authorIdsstring[]Participating author IDs.

Notifications ​

McpListNotificationsResult / McpNotification ​

McpListNotificationsResult has items (McpNotification[]) and version (string): an identifier of the exact set, to pass to wait_for_notifications.

McpNotification fieldTypeMeaning
idstringNotification ID; pass it to dismiss_notification.
kindstringLowercase notification kind, such as message, reply, invitation, mention, reaction, attention, thread, conversation, incomingcall or speechstarted.
at64-bit integerSent time, Unix milliseconds.
chatIdstring or nullRelated chat.
entryId64-bit integer or nullRelated message local ID.
authorIdstring or nullAuthor who triggered it.
title, textstringNotification title and text.
messageExternalMessage or nullThe message, if it exists and the chat is still accessible.

Import ​

McpImportStatus / McpImportPendingMember ​

get_import returns McpImportStatus. When active is false, all other fields are null.

FieldTypeMeaning
activebooleanAn import is running for the chat.
importIdstringImport ID for the other import tools.
scopestringchat, or place for a place-wide import.
placeIdstring or nullPlace ID of a place-wide import.
startedBystring or nullUser ID of the owner who started it.
startedAt64-bit integerStart time, Unix milliseconds.
consentingCount, nonConsentingCountintegerMembers who have and have not consented.
consentPercentnumberShare of consenting members, rounded to one decimal.
myConsentbooleanYou have consented.
pendingMcpImportPendingMember[] or nullOwners only: a page of members who have not consented.
McpImportPendingMember fieldTypeMeaning
userIdstringUser ID.
namestringThe member's avatar name.
peerChatIdstring or nullYour direct chat with the member, or null if there is none.

McpImportSession / McpImportEndResult ​

start_import returns McpImportSession: importId, chatId, scope (chat or place), startedBy (user ID or null) and startedAt (Unix milliseconds). end_import returns McpImportEndResult with nonConsentingCount, the number of members who had not consented when the import ended.

McpImportMessage / McpImportMessagesResult ​

import_messages takes messages, an array of McpImportMessage:

FieldTypeMeaning
authorUserIdstringUser ID of the author.
sentAt64-bit integerOriginal time, Unix milliseconds.
textstringMessage text, up to 64 KB.
replyToId64-bit integer or nullLocal ID of a message already in the chat.
uploadIdsstring[] or nullUp to 10 upload IDs.

It returns McpImportMessagesResult, whose items has one entry per message in input order: id (the new local message ID, or null) and error (the reason it was rejected, or null).

Model map ​

text
get_me → McpAccount
list_avatars / create_avatar / update_avatar → McpAvatar
list_places → McpListPlacesResult → McpPlaceInfo[]
list_group_chats / list_peer_chats / list_place_chats
  → McpListChatsResult → McpChatInfo[]
get_chat / create_chat / update_chat → McpChatDetails
get_place / create_place / update_place → McpPlaceDetails
list_members / list_place_members → McpListMembersResult → McpMember[]
create_invite_link / create_place_invite_link / list_*_invite_links → McpInviteLink
get_id_range → McpIdRange<long>
list_messages → McpListMessagesResult → range, fullRange; messages: ExternalMessage[]
  ExternalMessage → ExternalAuthor, ExternalAttachment[], ExternalOrigin
list_pinned_messages → ExternalMessage[]
list_reactions → McpReactionSummary[]
post_message → long
start/append/finish_message_stream → McpMessageStream
start/append/finish_voice_stream → McpVoiceStream
begin/append/finish_upload, upload_from_url → McpUploadStatus → McpMediaRef
begin/finish_import_upload, import_upload_from_url → McpUploadStatus → McpMediaRef
get_import → McpImportStatus → McpImportPendingMember[]
start_import → McpImportSession
end_import → McpImportEndResult
import_messages → McpImportMessagesResult → items (id or error)
list_media / list_files / list_links → McpContentPage<McpMediaItem | McpFileItem | McpLinkItem>
list_conversations → McpListConversationsResult → McpConversation[]
get_conversation → McpConversation
search_messages → McpFoundMessage[]
search_contacts → McpFoundContact[]
list_notifications → McpListNotificationsResult → McpNotification[] → ExternalMessage
all other tools → no application result value

All model leaves are strings, booleans, numbers or null; no further domain models are nested behind the structures above.

Source ​

At d2eee636e0f13804421d2864a9575fa21ab6c940: MCP models, conversion rules, ExternalMessage and its conversion.