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.