PostLake: unified inbox
Use PostLake's normalized inbox instead of calling four network APIs.
Start safely
- Call
list_social_accountsto identify the connection. - Call
get_platform_capabilitiesif you do not know whether that connection supports messaging. - Call
list_conversations, optionally filtered byaccount. - Check
problemsbefore claiming there are no messages. - Call
read_conversationwith both the conversation id and account id. - Draft a concise reply. Do not send until the user has asked you to send it.
- Call
send_message, thenmark_conversation_readafter the thread is handled.
Conversation ids are scoped to one connected account. Never guess the account or reuse a conversation id with another connection.
REST equivalents
| Action | REST endpoint |
|---|---|
| List conversations | GET /v1/conversations |
| Find or open a thread | POST /v1/conversations with account and handle |
| Read messages | GET /v1/conversations/{id}/messages?account=acc_... |
| Mark read | POST /v1/conversations/{id}/read |
| Send a message | POST /v1/conversations/{id}/messages |
All REST requests use Authorization: Bearer $POSTLAKE_API_KEY. Reading,
marking, and sending require the connected account id because a conversation
id has meaning only within that connection.
What the response means
fromMeidentifies which side sent a message. Do not infer this from handles.contentcan describe an attachment, shared media, or an unsupported provider payload. Do not claim that an emptytextmeans the message itself was empty.- The optional shape is
{ "kind": "attachment" | "shared_media" | "unsupported", "label": "...", "url": "..." | null }. - A
problemsentry means PostLake could not read a network. Report it. An emptyitemsarray without a problem means the network answered with no threads. - Cursors are opaque. Pass them back exactly as returned.
Network rules
- Facebook and Instagram can produce
message.receivedwebhooks. - X and Bluesky require polling with
list_conversations. - Sending a direct message on X costs 6 credits. Messaging on the other currently supported inbox networks does not spend credits.
- Meta normal replies must be within 24 hours of the person's last message.
- Never send
humanAgent: truefrom an autonomous workflow. It asserts that a person wrote the reply, and Meta can penalize the connected account when that assertion is false. MCP deliberately does not expose this override. - Bluesky app passwords need direct-message access enabled when created.
- Facebook and Instagram messaging may be unavailable until Meta grants the required permission to the connected business.
Supported boundary
PostLake currently exposes inbox messaging for Facebook, Instagram, X, and Bluesky. LinkedIn, TikTok, Threads, YouTube, and Pinterest do not provide a usable creator DM API for this product.
Docs: https://docs.postlake.dev/messages MCP: https://api.postlake.dev/mcp