list_conversations
List the authenticated user's Bluesky direct-message conversations (chat.bsky.convo.listConvos). Every call is proxied to the Bluesky chat service (did:web:api.bsky.chat) — DMs are not served by the PDS.
Authentication
Required: Yes (Private tool)
Direct messages additionally require that the app password used for the session was created with "Allow access to your direct messages" enabled (bsky.app → Settings → Privacy and Security → App Passwords). Without it, the chat service rejects every call with 401 "Bad token scope".
Parameters
limit (optional)
- Type:
number - Default:
50 - Constraints: 1-100
- Description: Maximum number of conversations to return per page
cursor (optional)
- Type:
string - Description: Pagination cursor from the previous response; omit for the first page
status (optional)
- Type:
string("request"or"accepted") - Description: Filter by conversation status.
requestreturns incoming chat requests that have not been accepted yet;acceptedreturns active conversations. Omit to list both.
Response
Tool results are returned as stringified JSON text. The shape below is illustrative.
{
success: boolean;
conversations: Array<{
id: string; // Pass to get_conversation_messages / send_direct_message
members: Array<{
did: string;
handle: string;
displayName?: string;
chatDisabled?: boolean; // True when the member cannot participate in chats
}>;
unreadCount: number;
muted: boolean;
status?: string; // "request" | "accepted" (open union; may be absent)
lastMessage?: { // Absent when the conversation has no messages
id?: string;
senderDid?: string;
text?: string; // Absent when the message was deleted
sentAt?: string;
deleted: boolean;
hasEmbed: boolean; // True when the message embeds a shared post
};
}>;
cursor?: string; // Absent when there are no more results
hasMore: boolean;
}The members array includes the authenticated user as well as the other participant(s).
Examples
List Recent Conversations
{
"limit": 25
}List Only Pending Chat Requests
{
"status": "request"
}Get the Next Page
{
"limit": 25,
"cursor": "cursor_from_previous_response"
}Error Handling
Common Errors
Authentication Required
{
"error": "Authentication required",
"code": "AUTHENTICATION_FAILED"
}App Password Without DM Access
A 401 "Bad token scope" from the chat service means the current app password was created without direct-message access. The error message includes guidance to create a new app password with "Allow access to your direct messages" enabled.
{
"error": "InvalidToken: Bad token scope — Bluesky direct messages require an authenticated session whose app password was created with \"Allow access to your direct messages\" enabled (...)",
"code": "AUTHENTICATION_FAILED"
}Pagination
Pass the cursor from the previous response to fetch older conversations, and check hasMore before requesting another page. limit accepts 1-100 (default 50).
Related Tools
- get_conversation_messages - Read the messages of a conversation
- send_direct_message - Send a direct message