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.

whoamiConfirm which PostLake account this API key belongs to and which platforms are supported.
get_platform_capabilitiesMachine-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_infoLive 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_postDry-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_mediaUpload 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_accountsList the social accounts the caller has connected (handles + ids). Use the returned ids when creating a post.
list_account_targetsList the postable destinations inside a connected account (Pinterest boards, Facebook Page). Returns {id,name}; pass the id back in platformOptions (e.g. boardId).
create_postPublish (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_postFetch a previously created post by its id (post_…), including per-platform status.
list_postsList 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_postEdit 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_postCancel a scheduled post before it fires. Only posts still in 'scheduled' state can be cancelled.
get_post_analyticsGet 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_analyticsCross-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_profilesList the caller's profiles — named buckets (e.g. a brand or client) that own connected accounts.