MCP
Threads
Reading channels, DMs and group chats, catching up on unread, and marking them read.
Threads — channels, DMs and group chats — is read and written as the person
the connection acts as, and membership is the access rule: the assistant
sees the conversations that person is in, whatever scopes the connection
holds. threads:read unlocks the reading tools; threads:write adds
posting and read state.
Finding what needs attention. list_conversations carries the
person's own read state on every row — unreadCount, markedUnread,
lastReadAt, unreadThreadCount, isMuted, isFavorite — and takes
unread=true for what needs catching up on, with type
(channel, dm, group), favorite and isArchived to narrow.
unreadCount is the number the Threads badge shows, computed by the same
code; a muted conversation never counts toward unread=true.
list_unread_threads is the other half — threads with replies the person
has not opened, which a conversation's own badge doesn't separate out.
Reading. get_conversation returns one conversation's members, topic
and description, the person's read state and the latest message.
list_conversation_messages returns its top-level messages, newest first;
pass unreadOnly=true or after to read forward from what they haven't
seen, oldest first. Each message has replyCount, lastReplyAt and
unreadReplyCount; get_message_thread reads a thread's root and replies.
Reading never marks anything read.
Posting and read state. send_conversation_message posts into a
conversation, or replies in a thread when you pass parentMessageId (the
root message's id). It marks what the person just wrote as read for them.
mark_conversation_read clears a conversation and every thread in it,
mark_conversation_unread brings it back to their list, and
mark_thread_read clears one thread. All three move the person's own
markers and nobody else's, can be repeated, and show in the console at once.
A public channel of the person's own company can be read without joining it,
and Pixelbase's support rota can read a customer's Support channel; neither has
read state, so get_conversation reports it as null there and the mark tools
refuse. Creating or archiving channels, editing or deleting messages,
reactions, pins and polls are not part of this.