PostLake
Publish, schedule, validate, and manage posts on Bluesky, including reading comments and notifications and retrieving analytics.
Publish, schedule, validate, and manage posts on Facebook, including reading comments and notifications and retrieving analytics.
Publish, schedule, validate, and manage posts on Instagram, including reading comments and notifications and retrieving analytics.
Publish, schedule, validate, and manage posts on Pinterest, including reading comments and notifications and retrieving analytics.
Publish, schedule, validate, and manage posts on Threads, including reading comments and notifications and retrieving analytics.
Publish and schedule TikTok posts, validate TikTok-specific constraints, confirm asynchronous publishing, and manage comments and analytics.
Publish, schedule, validate, and manage posts on YouTube, including reading comments and notifications and retrieving analytics.
PostLake: the social operating system for AI agents
Give an agent one reliable way to run social. PostLake lets agents publish, schedule, monitor, discover, reply, moderate, and learn across X, LinkedIn, Instagram, TikTok, Facebook, Threads, Bluesky, YouTube, and Pinterest.
One connection gives an agent one normalised contract instead of nine platform SDKs, nine auth models, and nine incompatible result shapes. It can act with a hosted MCP server, a drop-in agent skill, or the REST API.
An agent can plan a campaign, validate each destination before it spends a credit, publish or save a draft for approval, confirm asynchronous posts, read conversations and comments, handle what needs a response, and use the results to decide what to do next.
Hosted MCP:
https://api.postlake.dev/mcpDocumentation: https://docs.postlake.dev
Website: https://postlake.dev
Machine-readable docs: https://postlake.dev/llms.txt
MCP Registry:
dev.postlake/socialGrok Build: install
postlakefrom the plugin marketplace, or add this repo as a marketplace source
Why agents use PostLake
One contract, every network
Post once or fan out to every connected network. Each target has the same state, URL, time, and error shape, so an agent handles the result once rather than writing platform-specific recovery logic.
Safe to let an agent act
validate_post provides a free dry run before publishing. Idempotency keys
make retries safe. Owners can require approval on an OAuth connection, which
forces every publish request from that agent into a draft and prevents it from
approving its own work. confirm_post checks an asynchronous provider after
it accepts a post, and every action reports the individual target result rather
than hiding partial failure.
Not just a publishing endpoint
An agent can read a unified feed of notifications, direct messages, comments, and post performance. It can then reply, moderate, engage, research a topic, or inspect an account before it acts. Social management stays in the same workflow as publishing.
Human control where it belongs
OAuth makes the account owner approve a connection in the browser. get_connect_link
lets an agent send them directly to that approval step. Owners can revoke an
agent, manage channels, set agent limits, and require approval from PostLake.
An OAuth agent cannot create an unrestricted account key to bypass those
controls, and never needs a social-network password.
Related MCP server: postforme-mcp-pro
Start in minutes
Hosted MCP: Cursor, Claude, ChatGPT, Gemini, Copilot, and more
PostLake is a remote Streamable HTTP MCP server. Nothing is installed, run, or self-hosted. Add this server in your MCP client, then complete the PostLake OAuth approval once.
{
"mcpServers": {
"postlake": {
"url": "https://api.postlake.dev/mcp"
}
}
}Cursor
Open Settings -> Tools & MCP -> New MCP server, add the configuration above, then select Connect for PostLake and approve the browser sign-in.
Claude Code
claude mcp add --transport http postlake https://api.postlake.dev/mcpGrok Build
This repository is a Grok Build plugin. It ships the hosted MCP server and the agent skills. No local process, no shell hooks, no API key in chat.
Add this repo as a marketplace, then install postlake:
grok plugin marketplace add PostLake/postlake-mcp
grok plugin install postlake --trustInside Grok Build you can also browse /marketplace after the official xAI
catalog lists it.
The MCP server is https://api.postlake.dev/mcp (Streamable HTTP). On first
use, Grok opens PostLake OAuth in the browser. The account owner approves the
agent once and can revoke it from https://app.postlake.dev/app/agents.
This plugin calls only:
https://api.postlake.dev(MCP and REST)https://postlake.devandhttps://docs.postlake.dev(docs the skills cite)https://app.postlake.dev(OAuth approval and dashboard)
openclaw/ in this repo is a separate OpenClaw package. Grok Build does not
load it.
Other MCP clients
Add https://api.postlake.dev/mcp as a remote MCP server. The initial OAuth
challenge opens the host's sign-in and approval flow. Full setup instructions:
https://docs.postlake.dev/mcp
Drop-in skills: coding agents
Install PostLake's agent skills for Claude Code, Cursor, Codex, Windsurf, and other skills-compatible coding agents:
npx skills add postlake/postlake-mcp --allSet POSTLAKE_API_KEY in the agent's runtime, then ask it to handle social
work in plain language. The skills cover accounts, publishing, scheduling,
media, inbox conversations, and analytics.
REST API: custom agent runtimes
Use https://api.postlake.dev/v1 from LangGraph, CrewAI, AutoGen, OpenAI tool
calls, or any HTTPS client. The REST API and MCP server work against the same
profiles, channels, posts, and safety rules.
What an agent can do
The MCP server currently provides 55 focused tools. They are designed around social outcomes rather than individual platform APIs.
Outcome | Tools |
Understand the account |
|
Connect and organise channels |
|
Plan and validate |
|
Publish and schedule |
|
Media |
|
Unified Inbox |
|
Discover and understand the network |
|
Engage and manage presence |
|
Commerce, events, and collaborations |
|
Measure and improve |
|
Account-key-authenticated MCP callers can also use create_api_key to hand off
to another trusted service. OAuth agents do not see or receive this tool because
an account key would bypass their owner-set limits.
An agent workflow that does not break trust
Call
whoamiandlist_social_accountsto understand the account, limits, connected channels, and current readiness.If a human still needs to connect a channel, call
get_connect_linkand send them the short-lived approval URL. Do not ask them to hunt through a dashboard.Call
get_platform_capabilitiesandvalidate_postbefore creating a multi-network post. PostLake returns each target's exact constraint and fix.Use
create_postto publish, schedule, or save adraftfor human review. If the owner enabled Require my approval, PostLake saves a draft even when the agent does not request one. Include an idempotency key so a retry cannot double-post.If a platform is processing asynchronously, call
confirm_postto obtain the provider-confirmed state without waiting for a public URL.Use
list_notifications,list_conversations, andread_commentsto see what needs attention. Reply, moderate, or engage only where the platform supports it.Use
get_analyticsandget_post_analyticsto turn results into the next informed action, not a spreadsheet someone has to interpret later.
Direct messages
Facebook, Instagram, X, and Bluesky use one normalized conversation shape.
Agents list threads with list_conversations, open one with
read_conversation, finish it with mark_conversation_read, and reply with
send_message. A message can include content for an attachment, shared
media, or a provider payload that PostLake cannot safely flatten to text.
Facebook and Instagram can deliver message.received webhooks. X and Bluesky
do not push inbound messages to PostLake, so poll list_conversations on a
schedule. Sending a DM on X costs 6 credits; sending on the other supported
inbox networks does not spend credits. Full REST and MCP guidance:
https://docs.postlake.dev/messages.
Example prompts
"Check every connected channel, then tell me what needs a human approval."
"Draft a launch post for LinkedIn, Instagram, Threads, and TikTok. Validate it, save it as a draft, and show me the platform-specific changes."
"Read new DMs and comments. Give me concise reply drafts, but do not send anything until I approve them."
"Find what people are saying about this topic, inspect the strongest three accounts, then propose a post that adds something useful."
"Confirm yesterday's TikTok post, then compare its performance with the rest of the week and recommend the next post."
Platform-aware, not platform-blind
PostLake knows the constraints that cause social automations to fail in real life: media types, image counts, caption limits, creator-level TikTok settings, network-specific privacy options, post destinations, async publishing, and whether a given connection can read, search, message, or engage.
When a platform cannot perform an action, PostLake says so in the response. An empty list never silently means a network was not read. A partial publish does not pretend every destination succeeded. Agents get the information they need to recover safely.
What this repository contains
Path | Used by |
| Claude Code, Cursor, Codex, Windsurf ( |
| Grok Build, Claude Code plugins, Cursor plugins. Hosted MCP only. |
| Grok Build plugin manifest |
| Claude Code / Cursor plugin manifest |
| OpenClaw only. Not part of the Grok or Claude plugin. |
Security and ownership
For interactive MCP clients, PostLake uses OAuth and PKCE. The account owner approves each connected agent once and can revoke it from the dashboard at any time. OAuth tokens are scoped to that client and refresh automatically. Owners can enforce profile, platform, daily-credit, pack-credit, and approval limits. An approval-gated agent cannot publish its own drafts or mint an unrestricted account API key.
For unattended services, use a PostLake API key in the service's secret store, not in a prompt or source file. Keys have account-level access, so use a named key per trusted service and revoke it when it is no longer needed.
Pricing
Every plan includes the MCP server and agent access. Start with 20 free credits
per month and no card. Credits are charged when publishing or where a platform
charges for a particular operation. On X, send_message costs 6 credits; sends
on Facebook, Instagram, and Bluesky do not spend credits. See current pricing
and credit rates at https://postlake.dev/pricing.
Documentation
MCP setup and tool reference: https://docs.postlake.dev/mcp
Quickstart: https://docs.postlake.dev/quickstart
Publishing and schedules: https://docs.postlake.dev/publishing
Reading, Inbox, and engagement: https://docs.postlake.dev/reading
API reference: https://docs.postlake.dev
Built by PostLake. Issues and pull requests are welcome.
This server cannot be deployed
Maintenance
Related MCP Connectors
Create, schedule, and publish social posts, manage accounts, and read analytics as MCP tools.
Schedule, publish, and analyze social media posts across 11 platforms from any MCP client.
- OutstandOAuthso.outstand
Publish and schedule social media posts and read analytics across 12 networks through one API.
Schedule, publish, and analyze social posts across 11 platforms from any MCP client.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server for Instagram Graph API, Threads API & Meta platform — posting, insights, comments, messaging57204 npm24MIT
- AlicenseAqualityCmaintenanceMCP server for the Post for Me API, enabling publishing, scheduling, editing, deleting, and analyzing social media posts across 9 platforms from any MCP client.2719 npm1MIT
- FlicenseNot gradedqualityCmaintenanceProvides unified access to social media data across nine networks (Instagram, TikTok, YouTube, etc.) through a set of MCP tools for profiles, posts, search, and comments, backed by the SocialBridge API.-
- AlicenseNot gradedqualityCmaintenanceProvides MCP tools for social media, including publishing posts and retrieving analytics via X (Twitter) API v2, with OAuth token management and rate-limit handling.24 npmApache 2.0