PostLake
Publish, schedule and read analytics across every major social network from one MCP server.
Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeCan modify data
What it can do
- Whoami: Confirm which PostLake account this API key belongs to and which platforms are supported.
- Get Platform Capabilities: Machine-readable capabilities per platform: character limits, media rules (required/video-only/max images/formats/sizes), whether publishing is async, and EVERY platformOpti
- Get Publish Info: Live creator-level publish constraints for one connected account (TikTok: available privacy options, whether comments/duet/stitch are allowed, max video duration for this creator). U
What data it sees
Do you need an account
No: the server works without sign-in
Publish, schedule and read analytics across every major social network from one MCP server. Hosted, OAuth, 15 tools, one normalised response shape.
Server tool list (15)
Raw names from tools/list. Only developers need these.
| whoami | Confirm which PostLake account this API key belongs to and which platforms are supported. |
| get_platform_capabilities | Machine-readable capabilities per platform: character limits, media rules (required/video-only/max images/formats/sizes), whether publishing is async, and EVERY platformOptions field with its valid values. Call this before create_post to construct a valid post. Omit `platform` for all platforms. |
| get_publish_info | Live creator-level publish constraints for one connected account (TikTok: available privacy options, whether comments/duet/stitch are allowed, max video duration for this creator). Use it to pick a valid privacyLevel before posting to TikTok. |
| validate_post | Dry-run a post WITHOUT publishing: runs the exact validation create_post would run (media rules, per-platform character limits, option values) and returns per-target errors and warnings. Free — call it before create_post. |
| upload_media | Upload media from a public URL so it can be attached to posts. PostLake fetches the URL server-side, validates type/size (images ≤20MB: jpeg/png/webp/gif; videos ≤200MB: mp4/mov/webm) and returns a med_… id to pass as `media` in create_post. |
| list_social_accounts | List the social accounts the caller has connected (handles + ids). Use the returned ids when creating a post. |
| list_account_targets | List the postable destinations inside a connected account (Pinterest boards, Facebook Page). Returns {id,name}; pass the id back in platformOptions (e.g. boardId). |
| create_post | Publish (or schedule) one post to one or more connected accounts. Say WHERE to post the simple way — `profile` (a profile name), optionally narrowed with `platforms` — or the precise way, explicit `accounts` ids. Provide at least one. Returns a normalised result with per-platform status and live URLs. Omit scheduledAt to publish now. |
| get_post | Fetch a previously created post by its id (post_…), including per-platform status. |
| list_posts | List the caller's posts (most recent first), each with per-platform status. Pass state='scheduled' to see the upcoming schedule. Cursor pagination: pass `limit` (default 50, max 100) and `cursor` (the previous response's `nextCursor`). |
| edit_post | Edit a scheduled post's text and/or fire time before it fires. Only 'scheduled' posts can be edited; the new time must be in the future. |
| cancel_post | Cancel a scheduled post before it fires. Only posts still in 'scheduled' state can be cancelled. |
| get_post_analytics | Get normalised performance metrics for one post — per-platform plus totals (impressions, reach, likes, comments, shares, saves, clicks, followers). Metrics are null for platforms whose analytics aren't wired yet. |
| get_analytics | Cross-platform analytics over a period — decisions, not just measurements. One normalised response with totals, a per-platform breakdown with engagement RATES (the honest cross-platform comparison), precomputed derived metrics (engagement rate, CTR — never derive them yourself), a daily timeseries, top posts, best posting times from this account's own history, structured recommendations[] ({action, reason, confidence}) for what to post next, and a one-line summary. Fields are null when there's no real data behind them (never fabricated). periodDays defaults to 30. |
| list_profiles | List the caller's profiles — named buckets (e.g. a brand or client) that own connected accounts. |