Post Bridge
Server Details
Schedule and publish social media posts to 10 platforms from your AI agent
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- post-bridge-hq/agent-mode
- GitHub Stars
- 14
- ChatGPT
- –
- Claude
- post bridge - social media scheduler
TDQS
Scored across 17 tools
Most tools target a clearly distinct resource+action (create/update/delete/get/list posts, media, analytics, accounts). The main friction points are upload_media vs request_upload_link, which both handle local files, and list_analytics vs get_analytics_daily vs sync_analytics — though the descriptions explicitly explain when to use each, so an agent can recover.
Every tool follows a strict verb_noun snake_case pattern: create_post, update_post, delete_post, list_posts, list_media, upload_media, search_instagram_audio, request_connect_link, etc. No mixed conventions or vague standalone verbs anywhere in the set.
17 tools is slightly above the ideal 3-15 band, but the domain (10+ platforms, media management, analytics, account connections) genuinely justifies each addition. No obvious redundant or filler tools that could be removed without losing capability.
Full post lifecycle (create/get/update/delete/list), media lifecycle (upload/list/preview/delete), analytics (list, per-day detail, sync), and account discovery/connection are all covered. Minor gaps exist — no way to disconnect or modify a connected account, and no single-post result retry — but agents can work around these.
Available Tools
17 toolscreate_postCreate PostADestructiveInspect
Publish or schedule a social media post to Instagram, TikTok, YouTube, X (Twitter), LinkedIn, Facebook, Pinterest, Threads, Bluesky, and Google Business Profile. One call can cross-post the same text, image, or video to multiple accounts and platforms at once. Use list_social_accounts first to get account IDs. Omit scheduled_at to post immediately. Pass public media URLs via media_urls (the API downloads them). IMPORTANT for X/Twitter: links are automatically removed from the text before posting to X — this includes full URLs (http://, https://, www.) AND bare domains like foo.com or foo.io/path. X charges far more for posts that contain links. Other platforms keep their links. To share a link on X, put it in platform_configurations.twitter.first_comment (a reply) or the account bio. To post a multi-tweet thread on X, or a multi-post thread on Threads, put the follow-up posts in platform_configurations.twitter.thread / platform_configurations.threads.thread (an array of strings, chained in order under the main post). To make a Threads post a native quote of another Threads post, set platform_configurations.threads.quote_post_id (a post id or the post's threads.com URL); a Threads link pasted in the caption only shows as a plain link. To publish a Threads post as a reply under an existing post, set platform_configurations.threads.reply_to_id. Note: is_draft saves the post in Post Bridge only — it does not create a draft on any platform. All platforms will publish immediately when the draft is later sent. TikTok's platform_configurations.tiktok.draft is a separate option that creates an actual draft on TikTok. TikTok photo carousels: pass several images (media or media_urls) to a TikTok account and it publishes as a photo carousel. Caption limits: Bluesky 300, Threads 500, Pinterest 800, Google Business 1,500, Instagram 2,200, TikTok 2,200 for videos and 4,000 for photo posts, LinkedIn 3,000 characters. When the shared caption is longer than a platform allows, write a shorter platform-specific caption in platform_configurations..caption in the same call, without being asked. X allows 280 characters, or up to 25,000 when the account has X Premium: check has_x_premium on that account from list_social_accounts, keep the full caption if it is true, and write a shorter X caption if it is false.
Inputs: caption (required), social_accounts (required), media, is_draft, +5 more.
delete_mediaADestructiveInspect
Delete an uploaded media file. Only deletes media not currently used by any post.
Inputs: id (required).
delete_postADestructiveInspect
Delete a scheduled or draft post. Published posts cannot be deleted via the API.
Inputs: id (required).
get_analytics_dailyARead-onlyInspect
Get per-day analytics snapshots and deltas for a single post. Returns cumulative snapshots and per-day gains (views/likes/comments/shares). Use the analytics record ID from list_analytics.
Inputs: id (required).
get_postARead-onlyInspect
Get details of a single post by ID, including its status, caption, media, and platform results.
Inputs: id (required).
list_analyticsARead-onlyInspect
Get social media post performance analytics — views, likes, comments, and shares for posts published through Post Bridge (TikTok, YouTube, Instagram, Facebook). Can filter by platform, timeframe, or media type (video vs TikTok slideshow).
Inputs: limit, offset, platform, timeframe, +1 more.
list_mediaARead-onlyInspect
List your uploaded media files. Returns media IDs, URLs, and types. Use media IDs when creating posts with previously uploaded content.
Inputs: limit, offset.
list_post_resultsARead-onlyInspect
Check posting results per platform. Shows whether each platform post succeeded or failed, with error details if applicable.
Inputs: limit, offset, post_id.
list_postsARead-onlyInspect
List your posts with optional filters. Returns post ID, caption, status (scheduled, processing, posted), is_draft flag, scheduled time, and associated accounts. Drafts have status 'scheduled' with is_draft: true and scheduled_at: null.
Inputs: limit, offset, status, platform.
list_social_accountsARead-onlyInspect
List the user's connected social media accounts across Instagram, TikTok, YouTube, X (Twitter), LinkedIn, Facebook, Pinterest, Threads, Bluesky, and Google Business Profile. Returns account IDs, platforms, usernames, needs_reconnect, and has_x_premium (X accounts only: true means posts can be up to 25,000 characters instead of 280). When needs_reconnect is true, repeated dead-token failures have paused posting to that account: posts to it are skipped until the user reconnects it in the dashboard (reconnecting clears it automatically). Do not post or retry against accounts in that state; tell the user to reconnect instead. Each account also carries workspace_id and workspace_name, the dashboard workspace it sits in (workspace_id null = the default "Main" workspace). Users often keep one workspace per brand or client: when they name a workspace, brand or client, post only to the accounts in that workspace, never to every account on the platform. Pass workspace_id (or "main") to list just one workspace.
Inputs: workspace_id.
preview_mediaARead-onlyInspect
See an uploaded image: returns a small preview of the picture itself so you can tell photos apart (which one is the pink hat). Images only; videos and PDFs return a text note. Use list_media first to get ids.
Inputs: id (required).
request_connect_linkRequest Connect LinkAInspect
Get a link that connects a new Instagram, Facebook, TikTok, YouTube, X, LinkedIn, Threads, Pinterest or Bluesky account to the user's Post Bridge account without them opening the dashboard. Give the link to the person who owns the social account (the user themselves, or a client of theirs): they approve on the platform's own consent screen and are sent back. In Claude and ChatGPT a connect button renders right in the chat and the new account is reported back to you once it is connected. Optional external_ref tags the connected accounts with the user's own reference (a client name or id) so list_social_accounts can be filtered by it later. Each connected account counts against the plan's account cap; when the cap is reached this returns an error pointing at the billing page. Instagram uses Instagram's own login (one professional account, no Facebook Page needed); Facebook connects every Page the login manages; LinkedIn connects the profile plus every company page it administers; Bluesky asks for the handle and an app password.
Inputs: platform (required), expires_in, return_url, external_ref.
request_upload_linkRequest Upload LinkAInspect
Get an upload page for files that live on the user's device (a video or photos on their phone or laptop) and therefore have no public URL. Returns a link valid for 24 hours; give it to the user, they open it and drop one or many files in (a whole carousel at once is fine), and each file lands in their Post Bridge media library. In Claude and ChatGPT the upload box renders right in the chat and the media ids are reported back to you when the upload finishes; elsewhere, call list_media (newest first) after the user says they are done and take as many media_ids as files they uploaded, then pass them to create_post. Use this whenever the user wants to post a file that upload_media cannot reach: no URL, larger than 3MB, and you cannot run shell commands on the user's machine (if you can, use upload_media with size_bytes instead).
Inputs: no named parameters.
search_instagram_audioSearch Instagram MusicARead-onlyInspect
Search the music (or original sounds) Meta lets apps attach to an Instagram reel. Pass a returned audio_id as platform_configurations.instagram.audio_id in create_post or update_post (optionally audio_volume and video_volume, 0-100). Omit query for trending audio. ONLY works for Instagram accounts connected through Facebook login (supports_instagram_music: true in list_social_accounts). Accounts connected with Instagram login return an error: tell the user music needs the account connected via Connections > Instagram > "Login with Facebook" in the dashboard (a Business or Creator account linked to a Facebook Page), or to add the audio to the video before uploading. The catalogue is what Meta clears for third-party apps, so it can differ from the in-app library.
Inputs: social_account_id (required), type, query.
sync_analyticsAInspect
Trigger a refresh of analytics data from all connected platforms. Use this if analytics seem stale.
Inputs: platform.
update_postBDestructiveInspect
Update a scheduled or draft post. You can change the caption, schedule time, accounts, or media.
Inputs: id (required), media, caption, is_draft, +5 more.
upload_mediaUpload MediaAInspect
Upload media and get back a reusable media_id. Four modes: (1) pass url to upload from a publicly accessible URL, (2) pass data (base64-encoded file bytes) plus mime_type for small files (3MB cap), (3) for a file on the user's machine when you can run shell commands (Claude Code, Cowork, Codex, Cursor), pass size_bytes plus mime_type and name with no url or data: you get a media_id and a presigned upload_url, then PUT the raw file to it yourself (curl command included in the result, valid 2 hours, up to 500MB, no 3MB cap). Use mode 3 for any local video. (4) In ChatGPT, pass a file from the conversation (one the user attached, or an image you generated) as file: ChatGPT supplies its download link and the file goes straight into the media library, no size cap beyond 500MB and no manual upload. Supports images (PNG/JPEG), videos (MP4/MOV), and PDFs (application/pdf). A PDF returns a document-kind media_id — pass it to create_post on a LinkedIn account to publish a native LinkedIn document post (PDF carousel); set platform_configurations.linkedin.document_title to control the title. Use the returned media_id with the media param on create_post/update_post. A media_id stays available until the last post that uses it has published, then the file is deleted: reusing it across posts that are all scheduled is fine, but for a post created after those have gone out, upload the file again. HEIC/HEIF images are not supported — convert to JPEG or PNG first. Direct data uploads are capped at 3MB raw because of serverless request-body limits — for larger local files use mode 3 if you can run commands, otherwise request_upload_link.
Inputs: url, data, file, name, +2 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
Draft, schedule and publish social posts to nine platforms from any AI agent.
Schedule and publish posts and short videos to every major social platform from any AI agent.
Schedule, publish and track social posts on 11 networks from any AI agent, with a full dashboard.
Draft, schedule and publish social media posts from any AI agent.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceSocial media scheduling and publishing for AI agents. 17 validation-first tools to post to X, LinkedIn, Instagram, TikTok, YouTube, Reddit, Discord, Telegram, and more through one connected workspace.164 npm110MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to create, schedule, and manage social media posts across 10 platforms via a unified API.-
- AlicenseAqualityBmaintenanceOfficial MCP server for PostEverywhere (posteverywhere.ai/social-media-scheduler). Let Claude, ChatGPT, Cursor or any MCP client schedule and publish posts to 13 platforms: Instagram, TikTok, YouTube, LinkedIn, Facebook, X, Threads, Pinterest, Bluesky, Telegram, Discord, WordPress and Google Business Profile. 40 tools: best-time scheduling, threads, cross-posting, campaigns, analytics.33289 npm7MIT

AdaptlyPostofficial
AlicenseAqualityBmaintenanceGives AI agents the ability to schedule and publish social media posts to Instagram, TikTok, YouTube, X, LinkedIn, Facebook, Pinterest, Threads, and Bluesky. Create, schedule, and bulk-plan posts with per-platform captions, then check per-platform results and retry failures.12MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.