Post, schedule and read analytics on X, LinkedIn, Instagram, TikTok, YouTube, Bluesky and more.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
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.
https://api.postlake.dev/mcpdev.postlake/socialpostlake from the plugin marketplace, or add this repo as a marketplace sourcePost 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.
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.
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.
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.
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.
Open Settings -> Tools & MCP -> New MCP server, add the configuration above, then select Connect for PostLake and approve the browser sign-in.
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:
Inside 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.dev and https://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.
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
Install PostLake's agent skills for Claude Code, Cursor, Codex, Windsurf, and other skills-compatible coding agents:
Set 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.
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.
The MCP server currently provides 64 focused tools. They are designed around social outcomes rather than individual platform APIs.
| Outcome | Tools |
|---|---|
| Understand the account | whoami, set_my_name, get_changelog, get_credits, list_profiles, list_social_accounts, get_social_account, list_account_targets, search_facebook_pages, check_allowance |
| Connect and organise channels | create_profile, rename_profile, delete_profile, connect_account, get_connect_link, disconnect_account |
| Plan and validate | get_platform_capabilities, get_publish_info, validate_post |
| Publish and schedule | create_post, get_post, confirm_post, list_posts, edit_post, cancel_post, publish_draft, delete_post |
| Media | upload_media, upload_media_batch |
| Unified Inbox | list_notifications, mark_notifications_seen, list_conversations, read_conversation, mark_conversation_read, send_message, read_comments, reply_to_comment, hide_comment, delete_comment |
| Discover and understand the network | search_posts, look_up_profile, read_profile_posts, search_places, list_own_posts, list_tagged_posts |
| Engage and manage presence | engage, update_profile |
| Commerce, events, and collaborations | list_products, list_branded_partners, list_facebook_partnership_permissions, list_facebook_branded_content_posts, act_on_facebook_partnership_permission, list_ad_accounts, list_events, create_event, find_creators |
| Facebook Page live broadcasts | create_live_broadcast, start_live_broadcast, list_live_broadcasts, get_live_broadcast, end_live_broadcast |
| Measure and improve | get_post_analytics, get_analytics |
set_my_name changes only the authenticated agent's display name. The account
owner can set and lock that name in Agent Control. Renaming does not change the
underlying API key or OAuth client identity.
For Facebook Partnership Ads, tagged posts and permission grants are separate.
Use list_facebook_branded_content_posts to see posts tagging the connected
brand Page, then list_facebook_partnership_permissions to check whether a
creator Page has approved account-level ad access. The action tool can send,
cancel, accept, reject, or remove a request only after the owner approves that
specific Page and action. It does not create an ad or spend money. Meta may
restrict these calls until it grants the app and Page the required access.
list_posts supports bounded cursor pagination and filters for status, agent,
profile, network, dates, approval state, and a case-insensitive literal caption
search with q. This lets an agent inspect publishing history without loading
an entire account's posts into one tool response. The REST endpoint
GET /v1/posts uses the same search and paging behavior.
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.
whoami and list_social_accounts to understand the account, limits,
connected channels, and current readiness.get_connect_link and send
them the short-lived approval URL. Do not ask them to hunt through a dashboard.get_platform_capabilities and validate_post before creating a
multi-network post. PostLake returns each target's exact constraint and fix.create_post to publish, schedule, or save a draft for 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.confirm_post to obtain
the provider-confirmed state without waiting for a public URL.list_notifications, list_conversations, and read_comments to see
what needs attention. Reply, moderate, or engage only where the platform
supports it.get_analytics and get_post_analytics to turn results into the next
informed action, not a spreadsheet someone has to interpret later.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.
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/postlake)<a href="https://allmcps.com/mcp/postlake"><img src="https://allmcps.com/api/badge/postlake?style=directory" alt="PostLake on AllMCPs" /></a>