← Back to MCP

Connect your AI to Post Bridge

One click for Claude and ChatGPT. One URL and an OAuth sign-in for Claude Code, Cursor, Windsurf, Hermes and Grokbot. An API key only for Grok, the CLI and the REST API.

On Claude or ChatGPT? One click.

Post Bridge is listed in both official directories. Hit the button, sign in, done. No URLs, no config.

Everything else: the 60-second version

  1. Have a Post Bridge account with at least one social account connected (7-day free trial works)
  2. Paste this URL wherever your AI client adds MCP servers or connectors:
https://www.post-bridge.com/api/mcp/mcp
  1. A browser window opens — log in to Post Bridge and click Allow
  2. Ask your AI to post something

That is the whole setup for every OAuth-capable client. Exact clicks per client below. Your AI never sees your social passwords, and you can revoke access anytime from Settings → Connected apps.

Setup by client

The fastest path first. Manual and fallback routes are folded under each client.

Claude

OAuth, one click

One click from the Claude directory

  1. 1Open post bridge in the Claude connector directory
  2. 2Hit Connect and sign in with your post bridge account
  3. 3That's it. Claude has all 15 posting tools
Add to Claude

Also works in Claude Code and Claude Desktop via MCP.

Using Claude Code, or prefer to add it manually?
  1. In Claude Code runclaude mcp add --transport http post-bridge https://www.post-bridge.com/api/mcp/mcp
  2. In Claude: Settings, Connectors, Add custom connector, paste the URL and leave the optional OAuth client ID and secret blankhttps://www.post-bridge.com/api/mcp/mcp
  3. Log in and click Allow when the browser opens

ChatGPT

OAuth, one click

One click from the ChatGPT plugin directory

  1. 1Open post bridge in the ChatGPT plugin directory, or search “post bridge” under Plugins
  2. 2Hit Install plugin and approve access on the post bridge screen
  3. 3Then just ask ChatGPT to post. No config, no API key
Open in ChatGPT

Prefer wiring it up yourself? The MCP URL still works as a custom connector.

Prefer to add it manually as a custom connector?
  1. Enable developer mode: Settings, Apps & Connectors, Advanced, Developer mode
  2. Settings, Connectors, Create. Name it post bridge, paste the URL, auth: OAuthhttps://www.post-bridge.com/api/mcp/mcp
  3. Sign in and allow when prompted

Grok

API key

Key in the URL

  1. 1Grab an API key from your dashboard's API Keys page
  2. 2In Grok, add a connector using the URL below with your key pasted in
  3. 3Ask Grok to post. It gets all 15 tools
https://www.post-bridge.com/api/mcp/mcp?key=YOUR_API_KEY

Grok's connector only takes a URL, no sign-in flow, so the key rides inside it. Treat that URL like a password.

Grokbot

Prompt

Tell Grokbot the MCP URL

  1. 1Paste the prompt below into Grokbot and confirm “Add it” when it asks
  2. 2Approve access in the browser window it opens
  3. 3Ask it to post. It gets all 15 tools
Connect to the post bridge social media scheduler MCP server at https://www.post-bridge.com/api/mcp/mcp

Grokbot is separate from Grok on grok.com. No connector settings needed: it registers the server from the prompt and signs in with OAuth.

OpenClaw

Skill + API key

Install the post bridge skill

  1. 1Add the skill from our OpenClaw setup guide (one command)
  2. 2Your agent gets the CLI + all 15 tools
  3. 3Let it run your queue autonomously
OpenClaw setup

The skill ships postbridge-cli, so short commands instead of long API calls.

Hermes

OAuth via config

Paste one MCP config block

  1. 1Copy the config below into your Hermes MCP settings
  2. 2Sign in when the OAuth prompt appears
  3. 3Every post bridge tool shows up automatically
{
  "mcpServers": {
    "post-bridge": {
      "type": "http",
      "url": "https://www.post-bridge.com/api/mcp/mcp"
    }
  }
}

Same block works in any MCP-capable agent.

Cursor

OAuth via config

Add post bridge to your MCP config

  1. 1Paste the config below into ~/.cursor/mcp.json (Windsurf: mcp_config.json)
  2. 2Reload. First use opens the OAuth login in your browser
  3. 3Ship release notes to socials without leaving the editor
{
  "mcpServers": {
    "post-bridge": {
      "type": "http",
      "url": "https://www.post-bridge.com/api/mcp/mcp"
    }
  }
}

Works the same in Windsurf and Claude Code. No OAuth in your build? Use the API-key header instead.

Gemini

OAuth

Custom app in the Gemini web app

  1. 1In the Gemini web app open Settings & help, then Connected apps, and under Custom apps for Spark click Add a custom app
  2. 2Paste the URL below, click Next, and approve post bridge in the sign-in window that opens
  3. 3Ask Gemini to post, on the web or in the phone app. It gets all 15 tools
https://www.post-bridge.com/api/mcp/mcp

Custom apps need Gemini Spark (Google AI Pro or Ultra, personal account, US, English); work accounts and other countries do not see the option yet, use Gemini CLI below or ChatGPT/Claude instead. You can only add the app on the web; once added it shows up in the Gemini phone app too. These are Google's published steps, not yet run by us on a US account.

Using Gemini CLI or Code Assist instead?
  1. Run this once (it writes ~/.gemini/settings.json), then start gemini and approve access in the browsergemini mcp add -s user -t http post-bridge https://www.post-bridge.com/api/mcp/mcp
  2. Or add this under mcpServers in ~/.gemini/settings.json by hand{ "mcpServers": { "post-bridge": { "url": "https://www.post-bridge.com/api/mcp/mcp", "type": "http" } } }

Muse

API key

Muse writes its own connector from the API

  1. 1Grab an API key from your dashboard's API Keys page
  2. 2Send Muse the prompt below with your key pasted in. It reads the API reference and sets the connection up itself
  3. 3Ask Muse to post. Publishing, scheduling, media and analytics are all in the API
Connect to post bridge, my social media scheduler. The REST API reference is at https://api.post-bridge.com/reference. Authenticate with this API key as a Bearer token: YOUR_API_KEY. Start by listing my social accounts.
API reference

Meta's Muse has no MCP support yet, so it takes the API route: Muse builds a connector for any service with a public API once you hand it credentials. Treat the key like a password and revoke it from the same dashboard page when you are done. If Muse adds MCP, the URL to give it is the same one as everywhere else.

CLI / API

API key

No install, straight from the terminal

  1. 1Grab an API key from your dashboard's API Keys page
  2. 2One-time: npx postbridge-cli setup --key YOUR_API_KEY
  3. 3Done. Wire it into cron jobs, CI, or your own agent
npx postbridge-cli setup --key YOUR_API_KEY
API docs

Open source (MIT): post-bridge-hq/agent-mode on GitHub.

Any MCP client

OAuth via config

One URL, works in any MCP-capable agent

  1. 1Add the config below wherever your agent lists MCP servers (Windsurf, Codex, Zed, your own framework)
  2. 2First use opens the post bridge login in your browser. Approve it
  3. 3Every post bridge tool shows up, all 15 of them
{
  "mcpServers": {
    "post-bridge": {
      "type": "http",
      "url": "https://www.post-bridge.com/api/mcp/mcp"
    }
  }
}
Setup docs per client

stdio-only client? Bridge it with npx mcp-remote and the same URL. No OAuth in your client? Use an API key in an Authorization: Bearer header.

Any other MCP client

Endpoint

https://www.post-bridge.com/api/mcp/mcp

Transport

Streamable HTTP

Auth

OAuth 2.0 (preferred, automatic client registration), or Authorization: Bearer pb_live_..., or ?key=pb_live_... for clients without header support

stdio-only client? Bridge it with mcp-remote:

{
  "mcpServers": {
    "post-bridge": {
      "command": "npx",
      "args": ["mcp-remote", "https://www.post-bridge.com/api/mcp/mcp"]
    }
  }
}

When you need an API key

Only in three cases: a client with no sign-in flow (Grok on grok.com and other URL-only connectors), headless or server-side agents where nobody can click a login window, and scripts hitting the REST API or CLI. Everything else should use OAuth — it's one click, and revoking it doesn't break your other integrations.

Keys come from the API Keys page and go in a header:

Authorization: Bearer pb_live_your_api_key_here

OAuth connections are managed separately, under Settings → Connected apps. Revoking either takes effect immediately.

Prefer a CLI or agent skills?

The same endpoints ship as the postbridge-cli npm package plus installable skills for Claude Code, Cursor, Windsurf and Codex. Short commands instead of long API calls — less context, fewer mistakes:

npx skills add post-bridge-hq/agent-mode

Open source, MIT: github.com/post-bridge-hq/agent-mode. Building your own integration? Use the REST API reference.

Example prompts

Once connected, talk to your agent normally. It picks the right tools on its own. A few things to try:

  • Which social accounts do I have connected?
  • Post “shipping something new today” to my X and LinkedIn accounts right now.
  • Schedule this video to TikTok, Instagram Reels and YouTube Shorts for tomorrow at 9am.
  • Show me everything I have scheduled this week.
  • Move my Friday post to Monday morning and shorten the caption.
  • Which of my posts got the most views in the last 30 days?

Sane default for agent-written content: ask for drafts first, review in the dashboard, then schedule. Nothing publishes behind your back.

Tool Reference

The MCP server exposes 15 tools. Your AI will discover these automatically, you just ask in plain language.

ToolDescriptionKey params
list_social_accountsList all connected social media accounts with IDs, platforms, and usernames.None
request_connect_linkGet a link that connects a new Instagram, Facebook or TikTok account without opening the dashboard. Send it to whoever owns the account (you or a client); they approve on the platform and are sent back. Tag the accounts with your own reference.platform, external_ref?, return_url?, expires_in?
create_postCreate, schedule or publish a post to one or many accounts. Use scheduled_at for a time, use_queue for the next free slot, is_draft to save without publishing.caption, social_accounts, scheduled_at?, use_queue?, media?, media_urls?, is_draft?, platform_configurations?
list_postsList your posts with optional filters by platform or status.platform?, status?, limit?, offset?
get_postGet full details of a single post by ID.id
update_postUpdate a scheduled or draft post's caption, schedule, accounts, or media.id, caption?, scheduled_at?, social_accounts?, media?, media_urls?
delete_postDelete a scheduled or draft post. Published posts cannot be deleted.id
list_analyticsGet post analytics: views, likes, comments, shares. Filter by platform.platform?, limit?, offset?
get_analytics_dailyPer-day analytics snapshots and gains (views, likes, comments, shares) for a single post.id (from list_analytics)
sync_analyticsTrigger a fresh sync of analytics data from all connected platforms.None
list_post_resultsCheck per-platform posting results: success or failure with the platform's error details.post_id?, limit?, offset?
upload_mediaUpload media from a public URL (preferred) or as base64 bytes (3MB cap) and get back a reusable media_id. JPEG, PNG, MP4, MOV, PDF.url? | (data + mime_type), name?
request_upload_linkGet a 24-hour upload page for files on the user's device. They drop one or many files in from any browser and each lands in the media library. Then list_media, newest first, to attach them.None
list_mediaList uploaded media files with IDs, URLs, and types.limit?, offset?
delete_mediaDelete an uploaded media file (only if not used by any post).id

Media requirements by platform

Attach media with media (uploaded media IDs) or media_urls (public URLs). Some platforms can't publish a text-only post and will fail if none is attached. You can create a post with no media and add it later with update_post, but it won't publish to a media-required platform until the media exists.

PlatformMediaAccepts
youtubeRequiredexactly 1 video
tiktokRequired1 video, or one+ images (photo post)
instagramRequired1–10 images/videos; story = exactly 1; no PDFs
pinterestRequired1-5 images (2+ = carousel, same aspect ratio) or 1 video
twitter / XOptionalup to 4 images, or 1 video
facebookOptional1 video, or one+ images
linkedinOptionalup to 20 images, or 1 video, or 1 PDF
threadsOptionalup to 20 images/videos
blueskyOptionalup to 4 images, or 1 video
google_businessOptionaltext or a single image; no video

When a post targets several platforms, each takes what it supports from the post's media; anything a platform can't use is skipped for that platform.

Platform configurations

create_post and update_post take an optional platform_configurations object to override caption/media or set platform-specific options. Each override is keyed by platform name — only add a key for a platform you're actually posting to, and only the fields you want to override (everything else falls back to the top-level caption/media).

Platform keyOptions (beyond caption / media)
pinterestboard_ids[], link, title, video_cover_timestamp_ms
instagramplacement:"story", video_cover_timestamp_ms, cover_image (media id), is_trial_reel, trial_graduation:"MANUAL"|"SS_PERFORMANCE", user_tags[], collaborators[] (co-authors, max 3), first_comment
tiktoktitle, video_cover_timestamp_ms, draft (native TikTok draft), is_aigc
twitterfirst_comment (put links here — stripped from the main tweet)
youtubetitle, tags[] (per video, 500 chars total), contains_synthetic_media, thumbnail (media id, long-form only)
facebookplacement:"story", first_comment (ignored for stories)
linkedindocument_title (PDF/document posts only)
blueskycaption / media only
threadslocation:"timeline"|"reels", first_comment (posted as a reply)
google_businesssingle image only, cta_action_type:BOOK|ORDER|SHOP|LEARN_MORE|SIGN_UP|CALL, cta_url, language_code
{
  "caption": "New drop is live 🎉",
  "social_accounts": [44029, 44031, 44032],
  "platform_configurations": {
    "tiktok":   { "draft": true },
    "instagram": { "video_cover_timestamp_ms": 2000 },
    "twitter":  { "first_comment": "Grab it: https://example.com/drop" }
  }
}

Enums accept only the exact values shown. The MCP tool schema carries the full per-field help, so your AI assistant sees these descriptions inline when it calls the tool.

Good to know

  • Draftsis_draft saves the post in Post Bridge only. It does not create a draft on any social platform. When you later publish the draft, all platforms post immediately.
  • Media cleanup — media files are automatically deleted after all posts using them have published. If you share the same media across multiple drafts or scheduled posts, it stays available until the last one goes out. After that, the media ID becomes invalid.
  • Deleting posts — you can only delete scheduled or draft posts. Published posts cannot be deleted via the API.
  • Revoking access — OAuth connections live under Settings → Connected apps, API keys under API Keys. Revoking either disconnects immediately.

Ready to connect?

Paste one URL, sign in, and your AI can post. No API key needed.