postlake-inbox
Skill2 starsChanged 2 months agoMITView on GitHub
Read and handle PostLake direct-message conversations across Facebook, Instagram, X, and Bluesky. Use when checking DMs, reading a thread, marking it read, drafting a reply, or sending an approved reply.
- Reads credentials
In this repository7 other files it gives its agents.
- b2c-marketingSkill
- multi-account-operatorSkill
- postlake-accountsSkill
- postlake-analyticsSkill
- postlake-mediaSkill
- postlake-publishSkill
- postlake-scheduleSkill
The file
We split this skill into the rules it gives an agent
9 rules. About 0 are common, 1 is distinctive, and 8 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
8
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 8
Use PostLake's normalized inbox instead of calling four network APIs.
- Very specific: line 12
Call list_social_accounts to identify the connection.
- Very specific: line 13
Call get_platform_capabilities if you do not know whether that connection supports messaging.
- Very specific: line 14
Call list_conversations, optionally filtered by account.
- Very specific: line 15
Check problems before claiming there are no messages.
- Very specific: line 16
Call read_conversation with both the conversation id and account id.
- Very specific: line 18
Call send_message, then mark_conversation_read after the thread is handled.
- Very specific: line 33
All REST requests use Authorization: Bearer $POSTLAKE_API_KEY.
- Very specific: line 55
Never send humanAgent: true from an autonomous workflow.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
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
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

