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

  1. In Claude, open Customize → Connectors → + → Add custom connector.
  2. Paste the address and sign in to Postey in your browser.
https://mcp.postey.ai/mcp

Connect ChatGPT

  1. In ChatGPT, open Settings → Apps → Advanced → Developer Mode → Create app.
  2. Paste the address and sign in to Postey in your browser.
https://mcp.postey.ai/mcp

Connect Hermes

  1. Register Postey with the config commands. Hermes refuses a direct edit of its config file.
  2. 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

  1. Mint an MCP key in Postey under Settings → AI & Agents → Advanced.
  2. 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

  1. Mint an MCP key in Postey under Settings → AI & Agents → Advanced.
  2. 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

  1. Mint an MCP key in Postey under Settings → AI & Agents → Advanced.
  2. 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_post Create 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_post Overwrite an existing draft or scheduled post. Updating a published post does not re-publish it.
  • get_posts List post summaries for an account, filtered by platform and status. Summaries only, no post text.
  • get_post_content Read the full per-platform content of one post.
  • delete_draft Send a draft to the trash, or delete it permanently. Drafts only.
  • restore_post Bring a post back out of the trash with its content intact.
  • restore_posts Restore several trashed posts at once. The result lists restored posts and explains any failures.
  • resolve_share_link Resolve 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_draft Publish a draft to the selected platforms now. Requires your explicit confirmation in the same turn, because it is irreversible and public.
  • schedule_post Schedule a draft. Each platform carries its own timestamp, so a set can be staggered. Paid: can_schedule
  • get_schedule Read a scheduled post back: platforms, UTC times, post actions and Auto-DM rules.
  • update_schedule Change the time or the platform set on a scheduled post. Paid: can_schedule
  • unschedule_post Cancel 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_content Dry-run content against a platform's hard limit, counting rules, threading requirements and media constraints. Returns warnings and mutates nothing.
  • convert_post_content Adapt 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_media Upload an image, video, GIF or PDF and get CDN URLs back for use in a post’s media list.
  • file_manager Open a drop zone in the chat. A file dropped there goes to the CDN and comes back as a URL.
  • list_files List the files uploaded through that drop zone. They are kept for 24 hours.
  • read_file Get 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_comments Read the team notes attached to a post inside Postey. These are never published to the network.
  • review_post Analyse a post and leave internal improvement notes on it. Model-backed, and it stays inside Postey. Paid: can_use_ai · can_use_comments
  • get_review_status Collect the result of a review_post run by its job id. Reading the status is free and never starts a second pass.
  • get_platform_comments List real comments left by other people on the published post. LinkedIn, X, YouTube, Instagram, Bluesky and Facebook. Paid: can_use_comments
  • reply_comment Reply 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_accounts Every social account the caller can reach, with its connected platforms. Superseded by the accounts resource where the client can read resources.
  • connect_account Start a connection or a re-authorisation. Returns a link for you to open. The agent never receives a credential.
  • link_cli Give 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_teams List the teams the caller belongs to.
  • get_team_info Full team detail, including the member list, so an agent can turn a UUID on a post into a person.
  • add_tag Attach a tag to an existing post. Idempotent.
  • remove_tag Detach 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://accounts
  • postey://accounts/{account_id}
  • postey://accounts/{account_id}/analytics
  • postey://accounts/{account_id}/analytics/posts
  • postey://accounts/{account_id}/automations
  • postey://accounts/{account_id}/tags
  • postey://accounts/{account_id}/trash
  • postey://notifications
  • postey://platform-limits
  • postey://platforms/{platform}/actions
  • postey://platforms/{platform}/rules
  • postey://posts/{post_id}/analytics
  • postey://posts/{post_id}/comments/{platform}
  • postey://posts/{post_id}/content/{platform}
  • postey://posts/{post_id}/publish-status
  • postey://setup
  • postey://skill-manifest
  • postey://teams
  • postey://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-post
  • review-for-virality
  • repurpose-content
  • improve-post
  • analyze-engagement
  • generate-captions-from-transcript
  • generate-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.

Postey - Featured on AI Agents Directory