Postey
Draft, schedule and publish posts to 9 social networks from Claude, ChatGPT or any MCP client, with a separate caption for each.
Hosted MCP Server
npx add-mcp 'https://mcp.postey.ai/mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
Connect your AI to Postey in one line.
Paste one line into your AI app, sign in through your browser, and it can draft, schedule and publish to all your accounts. Nothing to download. Connecting is free.
Connect Claude
- In Claude, open Customize → Connectors → + → Add custom connector.
- Paste the address and sign in to Postey in your browser.
https://mcp.postey.ai/mcp
Connect ChatGPT
- In ChatGPT, open Settings → Apps → Advanced → Developer Mode → Create app.
- Paste the address and sign in to Postey in your browser.
https://mcp.postey.ai/mcp
Connect Hermes
- Register Postey with the config commands. Hermes refuses a direct edit of its config file.
- Sign in, then restart the gateway from another terminal.
hermes config set mcp_servers.postey.url https://mcp.postey.ai/mcp
hermes config set mcp_servers.postey.auth oauth
hermes config set mcp_servers.postey.skip_preflight true
hermes mcp login postey
hermes gateway restart
Connect OpenClaw Preview
- Mint an MCP key in Postey under Settings → AI & Agents → Advanced.
- Add Postey to ~/.openclaw/openclaw.json as a remote server, then restart OpenClaw.
{
"mcpServers": {
"postey": {
"type": "http",
"url": "https://mcp.postey.ai/mcp",
"headers": { "X-API-Key": "mk_..." }
}
}
}
Connect Muse
- Mint an MCP key in Postey under Settings → AI & Agents → Advanced.
- Add Postey to Muse as a remote MCP server with this entry.
{
"mcpServers": {
"postey": {
"type": "http",
"url": "https://mcp.postey.ai/mcp",
"headers": { "X-API-Key": "mk_..." }
}
}
}
Connect Grokbot
- Mint an MCP key in Postey under Settings → AI & Agents → Advanced.
- Add Postey to Grokbot as a remote MCP server with this entry.
{
"mcpServers": {
"postey": {
"type": "http",
"url": "https://mcp.postey.ai/mcp",
"headers": { "X-API-Key": "mk_..." }
}
}
}
Pick your AI. Any other MCP client takes the same address.
- Ask in plain English Draft it, schedule it, post it.
- It knows your accounts It reads your connected accounts and the limits they carry.
- You see the plan first It shows you the plan, then waits.
- Nothing posts without you Publishing asks, every time.
- Nothing to install One line, then a browser sign-in.
The reference below covers authentication, every tool, resource and prompt, and plan limits. You don't need any of it to connect.
How authentication works
An unauthenticated call is refused with a challenge that points at the discovery document. A client that supports it registers itself, opens your browser, and you grant access. No API key to copy.
$ curl -sD - -X POST https://mcp.postey.ai/mcp \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize"}'
HTTP/2 401
www-authenticate: Bearer resource_metadata=
"https://mcp.postey.ai/.well-known/
oauth-protected-resource/mcp"
GET /.well-known/oauth-authorization-server
{
"issuer": "https://srvr.postey.ai/",
"authorization_endpoint": ".../authorize",
"token_endpoint": ".../token",
"registration_endpoint": ".../register",
"grant_types_supported": [
"authorization_code",
"refresh_token"
],
"code_challenge_methods_supported": ["S256"],
"client_id_metadata_document_supported": true
}
From a terminal
# Claude Code
claude mcp add --transport http postey \
https://mcp.postey.ai/mcp --scope user
# Codex CLI
codex mcp add postey --url https://mcp.postey.ai/mcp
Prefer a key
A client that cannot open a browser, such as a cron job or a server, cannot finish the flow above, and a client that supports neither dynamic registration nor a client ID metadata document will not start it. Both send an MCP key instead, minted in your Postey settings under AI & Agents → Advanced, as the header below or as a bearer token. Every grant an agent holds is listed in the same place and can be revoked there, one at a time.
{
"mcpServers": {
"postey": {
"type": "http",
"url": "https://mcp.postey.ai/mcp",
"headers": { "X-API-Key": "mk_..." }
}
}
}
Drafts
8 create_post · update_post · get_posts · get_post_content · delete_draft · restore_post · restore_posts · resolve_share_link
tools/posts.py
create_postCreate a draft. The tool refuses to run until the agent has read the account list and had you confirm which accounts it may write to.update_postOverwrite an existing draft or scheduled post. Updating a published post does not re-publish it.get_postsList post summaries for an account, filtered by platform and status. Summaries only, no post text.get_post_contentRead the full per-platform content of one post.delete_draftSend a draft to the trash, or delete it permanently. Drafts only.restore_postBring a post back out of the trash with its content intact.restore_postsRestore several trashed posts at once. The result lists restored posts and explains any failures.resolve_share_linkResolve a Postey share URL to post metadata. The only way in when a share link is all the agent has.
Publishing and scheduling
5 publish_draft · schedule_post · get_schedule · update_schedule · unschedule_post
tools/publishing.py · tools/scheduling.py
publish_draftPublish a draft to the selected platforms now. Requires your explicit confirmation in the same turn, because it is irreversible and public.schedule_postSchedule a draft. Each platform carries its own timestamp, so a set can be staggered. Paid: can_scheduleget_scheduleRead a scheduled post back: platforms, UTC times, post actions and Auto-DM rules.update_scheduleChange the time or the platform set on a scheduled post. Paid: can_scheduleunschedule_postCancel the schedule on one or more platforms, reverting to draft once the last one is removed.
Checking before you post
2 validate_post_content · convert_post_content
tools/validation.py · tools/conversion.py
validate_post_contentDry-run content against a platform's hard limit, counting rules, threading requirements and media constraints. Returns warnings and mutates nothing.convert_post_contentAdapt one post’s content from one platform to others, in place on the same post. Mechanical, not a model call.
Media
4 upload_media · file_manager · list_files · read_file
tools/media.py · uploads.py
upload_mediaUpload an image, video, GIF or PDF and get CDN URLs back for use in a post’s media list.file_managerOpen a drop zone in the chat. A file dropped there goes to the CDN and comes back as a URL.list_filesList the files uploaded through that drop zone. They are kept for 24 hours.read_fileGet one uploaded file’s URL, name, size and type by its id. Never the bytes.
Comments and replies
5 get_internal_comments · review_post · get_review_status · get_platform_comments · reply_comment
tools/comments.py · tools/manual_comment.py
get_internal_commentsRead the team notes attached to a post inside Postey. These are never published to the network.review_postAnalyse a post and leave internal improvement notes on it. Model-backed, and it stays inside Postey. Paid: can_use_ai · can_use_commentsget_review_statusCollect the result of a review_post run by its job id. Reading the status is free and never starts a second pass.get_platform_commentsList real comments left by other people on the published post. LinkedIn, X, YouTube, Instagram, Bluesky and Facebook. Paid: can_use_commentsreply_commentReply to one of those comments, published directly on the network.
Accounts, teams and tags
7 get_accounts · connect_account · link_cli · get_teams · get_team_info · add_tag · remove_tag
tools/accounts.py · tools/teams.py · tools/connect.py · tools/auth_link.py · tools/tags.py
get_accountsEvery social account the caller can reach, with its connected platforms. Superseded by the accounts resource where the client can read resources.connect_accountStart a connection or a re-authorisation. Returns a link for you to open. The agent never receives a credential.link_cliGive the Postey CLI this connection’s access without a second sign-in. The CLI collects the credential directly; the tool does not return it.get_teamsList the teams the caller belongs to.get_team_infoFull team detail, including the member list, so an agent can turn a UUID on a post into a person.add_tagAttach a tag to an existing post. Idempotent.remove_tagDetach a tag from a post. The tag itself survives. Idempotent.
Resources
20 Read-only state an agent can fetch without spending a tool call.
Read-only state an agent can fetch without spending a tool call. A client that can read MCP resources should read these instead of calling the equivalent tool.
postey://accountspostey://accounts/{account_id}postey://accounts/{account_id}/analyticspostey://accounts/{account_id}/analytics/postspostey://accounts/{account_id}/automationspostey://accounts/{account_id}/tagspostey://accounts/{account_id}/trashpostey://notificationspostey://platform-limitspostey://platforms/{platform}/actionspostey://platforms/{platform}/rulespostey://posts/{post_id}/analyticspostey://posts/{post_id}/comments/{platform}postey://posts/{post_id}/content/{platform}postey://posts/{post_id}/publish-statuspostey://setuppostey://skill-manifestpostey://teamspostey://teams/{team_id}postey://teams/{team_id}/members
Prompts
7 Server-supplied prompts your client lists as slash commands.
Server-supplied prompts. Your client lists them as slash commands, so the wording that gets sent is ours and stays consistent between clients.
compose-postreview-for-viralityrepurpose-contentimprove-postanalyze-engagementgenerate-captions-from-transcriptgenerate-captions-batch
What the surface reaches
The publishing tools cover 9 networks: X, LinkedIn, Bluesky, Threads, TikTok, Instagram, YouTube, Facebook, Pinterest. Analytics collection is a smaller set than publishing, and the analytics resources say so rather than returning a shape that pretends otherwise.
Two tools are worth reading the description of before you wire them up. publish_draft is irreversible and public, so the server requires your explicit confirmation in the same turn rather than trusting the model to have asked. create_post refuses to run until the agent has read your account list and had you confirm which accounts it may write to. The guard is in the tool, not in a sentence of prose the model may skip.
Where the free plan stops
Connecting an agent is free, and so is the MCP key. Some tools need a paid plan. Here is which.
- Connect an agent and list the surface An MCP key sits outside can_use_api_keys. See app/routers/v1/api/keys.py Free
- Create, read and update drafts Free caps drafts at 5 per social set Free
- Publish a draft to the networks publishing: true, so 15 publishes per platform per 30 days Free
- Schedule a post, or move one can_schedule, without which schedule_post and update_schedule refuse Paid plan
- Ask for AI review notes on a draft can_use_ai and can_use_comments, both checked Paid plan
- Read and reply to comments on live posts can_use_comments, checked when the comment watch starts Paid plan
- Read the analytics resources can_use_analytics, and the paywall runs before the query Paid plan
Read from the live plan catalog at srvr.postey.ai/v1/payment/plans and the entitlement checks in app/core/mcp/tools/, 20 October 2026.