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
- Have a Post Bridge account with at least one social account connected (7-day free trial works)
- Paste this URL wherever your AI client adds MCP servers or connectors:
https://www.post-bridge.com/api/mcp/mcp- A browser window opens — log in to Post Bridge and click Allow
- 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 clickOne click from the Claude directory
- 1Open post bridge in the Claude connector directory
- 2Hit Connect and sign in with your post bridge account
- 3That's it. Claude has all 15 posting tools
Also works in Claude Code and Claude Desktop via MCP.
Using Claude Code, or prefer to add it manually?
- In Claude Code run
claude mcp add --transport http post-bridge https://www.post-bridge.com/api/mcp/mcp - In Claude: Settings, Connectors, Add custom connector, paste the URL and leave the optional OAuth client ID and secret blank
https://www.post-bridge.com/api/mcp/mcp - Log in and click Allow when the browser opens
ChatGPT
OAuth, one clickOne click from the ChatGPT plugin directory
- 1Open post bridge in the ChatGPT plugin directory, or search “post bridge” under Plugins
- 2Hit Install plugin and approve access on the post bridge screen
- 3Then just ask ChatGPT to post. No config, no API key
Prefer wiring it up yourself? The MCP URL still works as a custom connector.
Prefer to add it manually as a custom connector?
- Enable developer mode: Settings, Apps & Connectors, Advanced, Developer mode
- Settings, Connectors, Create. Name it post bridge, paste the URL, auth: OAuth
https://www.post-bridge.com/api/mcp/mcp - Sign in and allow when prompted
Grok
API keyKey in the URL
- 1Grab an API key from your dashboard's API Keys page
- 2In Grok, add a connector using the URL below with your key pasted in
- 3Ask Grok to post. It gets all 15 tools
https://www.post-bridge.com/api/mcp/mcp?key=YOUR_API_KEYGrok's connector only takes a URL, no sign-in flow, so the key rides inside it. Treat that URL like a password.
Grokbot
PromptTell Grokbot the MCP URL
- 1Paste the prompt below into Grokbot and confirm “Add it” when it asks
- 2Approve access in the browser window it opens
- 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/mcpGrokbot 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 keyInstall the post bridge skill
- 1Add the skill from our OpenClaw setup guide (one command)
- 2Your agent gets the CLI + all 15 tools
- 3Let it run your queue autonomously
The skill ships postbridge-cli, so short commands instead of long API calls.
Hermes
OAuth via configPaste one MCP config block
- 1Copy the config below into your Hermes MCP settings
- 2Sign in when the OAuth prompt appears
- 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 configAdd post bridge to your MCP config
- 1Paste the config below into ~/.cursor/mcp.json (Windsurf: mcp_config.json)
- 2Reload. First use opens the OAuth login in your browser
- 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
OAuthCustom app in the Gemini web app
- 1In the Gemini web app open Settings & help, then Connected apps, and under Custom apps for Spark click Add a custom app
- 2Paste the URL below, click Next, and approve post bridge in the sign-in window that opens
- 3Ask Gemini to post, on the web or in the phone app. It gets all 15 tools
https://www.post-bridge.com/api/mcp/mcpCustom 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?
- Run this once (it writes ~/.gemini/settings.json), then start gemini and approve access in the browser
gemini mcp add -s user -t http post-bridge https://www.post-bridge.com/api/mcp/mcp - 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 keyMuse writes its own connector from the API
- 1Grab an API key from your dashboard's API Keys page
- 2Send Muse the prompt below with your key pasted in. It reads the API reference and sets the connection up itself
- 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 referenceMeta'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 keyNo install, straight from the terminal
- 1Grab an API key from your dashboard's API Keys page
- 2One-time: npx postbridge-cli setup --key YOUR_API_KEY
- 3Done. Wire it into cron jobs, CI, or your own agent
npx postbridge-cli setup --key YOUR_API_KEYAPI docsOpen source (MIT): post-bridge-hq/agent-mode on GitHub.
Any MCP client
OAuth via configOne URL, works in any MCP-capable agent
- 1Add the config below wherever your agent lists MCP servers (Windsurf, Codex, Zed, your own framework)
- 2First use opens the post bridge login in your browser. Approve it
- 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 clientstdio-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
https://www.post-bridge.com/api/mcp/mcp
Streamable HTTP
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_hereOAuth 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-modeOpen 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.
| Tool | Description | Key params |
|---|---|---|
| list_social_accounts | List all connected social media accounts with IDs, platforms, and usernames. | None |
| request_connect_link | Get 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_post | Create, 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_posts | List your posts with optional filters by platform or status. | platform?, status?, limit?, offset? |
| get_post | Get full details of a single post by ID. | id |
| update_post | Update a scheduled or draft post's caption, schedule, accounts, or media. | id, caption?, scheduled_at?, social_accounts?, media?, media_urls? |
| delete_post | Delete a scheduled or draft post. Published posts cannot be deleted. | id |
| list_analytics | Get post analytics: views, likes, comments, shares. Filter by platform. | platform?, limit?, offset? |
| get_analytics_daily | Per-day analytics snapshots and gains (views, likes, comments, shares) for a single post. | id (from list_analytics) |
| sync_analytics | Trigger a fresh sync of analytics data from all connected platforms. | None |
| list_post_results | Check per-platform posting results: success or failure with the platform's error details. | post_id?, limit?, offset? |
| upload_media | Upload 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_link | Get 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_media | List uploaded media files with IDs, URLs, and types. | limit?, offset? |
| delete_media | Delete 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.
| Platform | Media | Accepts |
|---|---|---|
| youtube | Required | exactly 1 video |
| tiktok | Required | 1 video, or one+ images (photo post) |
| Required | 1–10 images/videos; story = exactly 1; no PDFs | |
| Required | 1-5 images (2+ = carousel, same aspect ratio) or 1 video | |
| twitter / X | Optional | up to 4 images, or 1 video |
| Optional | 1 video, or one+ images | |
| Optional | up to 20 images, or 1 video, or 1 PDF | |
| threads | Optional | up to 20 images/videos |
| bluesky | Optional | up to 4 images, or 1 video |
| google_business | Optional | text 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 key | Options (beyond caption / media) |
|---|---|
| board_ids[], link, title, video_cover_timestamp_ms | |
| placement:"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 | |
| tiktok | title, video_cover_timestamp_ms, draft (native TikTok draft), is_aigc |
| first_comment (put links here — stripped from the main tweet) | |
| youtube | title, tags[] (per video, 500 chars total), contains_synthetic_media, thumbnail (media id, long-form only) |
| placement:"story", first_comment (ignored for stories) | |
| document_title (PDF/document posts only) | |
| bluesky | caption / media only |
| threads | location:"timeline"|"reels", first_comment (posted as a reply) |
| google_business | single 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
- Drafts —
is_draftsaves 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.