Available in ChatGPT

Add posterly in ChatGPT

posterly is the publish layer. ChatGPT is the chat layer. Open the plugin listing, connect your posterly account, then ask ChatGPT to draft, check, and schedule posts across 18 platforms.

Hero prompt

Using posterly, list my connected accounts, then draft one caption for LinkedIn, X, and Instagram announcing our launch. Find the next free slot in Europe/London, run validate_post for each, show me the drafts, and wait for my yes before create_post with confirm true.

Add posterly in ChatGPTCreate API key
Preview what is copied
# posterly for ChatGPT

posterly is the publish layer. ChatGPT is the chat layer. Add the plugin listing, then schedule across 18 platforms after the user approves.

posterly publishes to 18 platforms: Instagram, Facebook, TikTok, X, LinkedIn, YouTube, Pinterest, Threads, Google Business, Telegram, Bluesky, Discord, Slack, Mastodon, Dev.to, Hashnode, WordPress, Lemmy.

## Connect

Add posterly in ChatGPT: https://chatgpt.com/plugins/plugin_asdk_app_6ac675cfa8a0819197c6cd0f08b7d264. Sign in with your posterly account when ChatGPT asks. Then call whoami.

Advanced alternative, custom MCP in developer mode: Settings, Security and login, turn on Developer mode. Then chatgpt.com/plugins, +, Create app, Create MCP App, server URL https://www.poster.ly/api/mcp. Auth is OAuth. OpenAI's help documents write actions on that custom MCP path as Business, Enterprise, or Edu, and Pro custom MCP as read and fetch only. That ChatGPT plan limit is for the custom MCP path. It is not a confirmed limit for the plugin listing.

Codex: `codex mcp add posterly --env POSTERLY_API_KEY=pst_live_your_key_here -- npx -y posterly-mcp-server@latest` or `codex mcp add posterly --url https://www.poster.ly/api/mcp`. Config: ~/.codex/config.toml.

Stdio file_path uploads work in Codex only, not in ChatGPT web. Chat attachments never reach MCP. Walkthrough: https://www.poster.ly/blog/posterly-chatgpt-app

## Are we connected yet?

1. Call `whoami` (no params). Confirm the user, scopes, and workspaces.
2. Call `list_accounts` (`workspace_id` optional). If none are connected, stop and send the user to connect social accounts in posterly. Do not invent account IDs.
3. Prefer `validate_post` before `create_post`. Show the preview. Wait for a clear yes.
4. Only then call `create_post` with `confirm: true`. Never publish or schedule live without that approval.
5. Prefer `scheduled_at` (ISO 8601 UTC) or `find_available_slot` (`account_ids`, `timezone`, `count`). Do not publish immediately unless the user asks.

## Rules

- posterly is the publish layer. This client is the chat or agent layer.
- Never collect card details, posterly passwords, or social-network passwords. Send the user to https://www.poster.ly/agents/signup or https://www.poster.ly/dashboard/api.
- Point to https://www.poster.ly/mcp for the rest of the 70 hosted HTTP MCP tools (73 on the local stdio package).
- After a post is created, send the View in posterly link. Avoid raw JSON dumps unless the user asks to debug.

## Media (honest)

Chat attachments never reach MCP. The paperclip in this chat does not give posterly the file.

The ~4MB limit is the **Vercel request body** on posterly API routes (`/api/mcp`, `POST /api/v1/media/upload`). It is not an MCP protocol cap and not the plan storage cap. Base64 inflates files, so hosted `upload_media` is small images only (relay cap 5MB decoded).

- Public HTTPS URL: `upload_media` with `url` (optional `filename`, `content_type`) or pass `media_url` / `media_urls` on `validate_post` / `create_post`. Server fetch: about 5MB relay, 60MB hard cap. Large R2/S3 URLs fail with `remote_media_too_large`.
- Hosted `upload_media`: required `filename` + `base64_data`. Optional `content_type`. Hits the 4MB Vercel body. JPEG, PNG, GIF, WebP, MP4, MOV, WebM. HEIC is unsupported.
- Laptop file in ChatGPT web, Claude.ai, or Gemini web: `create_media_drop` (optional `filename`, optional `max_files`, 1 to 20, default 10). Send the user `drop_url` (`https://www.poster.ly/drop/<token>`). They open it with no dashboard login and drop up to 20 files per link (JPEG, PNG, GIF, WebP, MP4, MOV, WebM, or PDF up to 50MB for LinkedIn document posts; HEIC is not accepted). Then `list_media` (`drop_session_id`) and pass `public_url` to `validate_post` / `create_post`. This is not the chat paperclip.
- Larger files, when this client can HTTP PUT: `create_signed_upload` (`filename`, `content_type`, `size`, or `files` for 1 to 20 files in one call), PUT the raw bytes of each file to its `upload_url` (object storage, not a posterly API route) with the returned headers (send the returned `Content-Type` exactly: pinning is available per request with `pin_content_type: true`, and posterly may turn it on by default in the future), then pass `public_url` to `create_post`. That PUT does not hit the 4MB body. Plan video caps: Starter 500MB, Pro 750MB, Power 1GB, Agency 4GB. A PDF (up to 50MB) also works: create the post with `post_type` `document`, `media_url` set to its `public_url`, and a `document_title` in `settings` (LinkedIn only).
- Stdio `upload_media` also accepts `file_path` when the user gives a real local filesystem path. The local server reads the disk and uses signed upload for large files, so this does not hit the Vercel 4MB body. Never guess paths. Chat attachments are not a file_path.

## Starter tools

- `whoami` (none): Call first. Returns the authenticated user, API key scopes, and workspaces.
- `list_accounts` workspace_id?: Connected social accounts. Stop if this is empty and send the user to connect accounts in posterly.
- `validate_post` account_id or username+platform, caption, scheduled_at?, media_url?, media_urls?, post_type?, workspace_id?: Dry run. Does not create a post. Use this before showing a preview.
- `create_post` same as validate_post, plus confirm: true (required): Destructive write. Refuse unless the user clearly approved caption, account, media, and schedule.
- `upload_media` filename, base64_data (hosted), or url. content_type optional. Stdio also accepts file_path.: Hosted path is base64 with a decoded file of 5MB or less. With url, posterly fetches a public HTTPS URL into storage (localhost and private IPs are blocked). Chat paperclip files never arrive here.
- `create_signed_upload` filename, content_type, size, or files (1 to 20): Bypasses the Vercel ~4MB API body. Returns upload_url (object storage) and public_url. PUT raw bytes to upload_url, then pass public_url to create_post. Pass files to get up to 20 slots in one call (one per file, failed files reported in place, slots expire in 15 minutes). Use this when the client can PUT (Cursor, Claude Code, Codex).
- `create_media_drop` filename?, max_files?: Creates a no-login page at https://www.poster.ly/drop/<token> that takes up to 20 files (max_files, default 10). Send drop_url to the user. ChatGPT web, Claude.ai, and Gemini web laptop files use this, then list_media. Not the chat paperclip.
- `list_media` limit?, drop_session_id?: Newest media assets. After create_media_drop, pass drop_session_id and use public_url on validate_post / create_post.
- `find_available_slot` account_ids?, timezone?, workspace_id?, count?: Always pass timezone explicitly (IANA, e.g. Europe/London). Respects a 1-hour gap.
- `generate_captions` platforms (required), brief?, tone?, count?, mode?, source_caption?: Returns caption options only. It does not schedule or publish.
- `list_posts` status?, platform?, account_id?, workspace_id?, limit?: Upcoming or recent posts. status is scheduled, published, failed, or draft.

## Example prompts

- Using posterly, run whoami, then list_accounts. Tell me which LinkedIn, X, and Instagram accounts are connected.
- Draft one caption for LinkedIn, X, and Instagram about our product launch. Show me the three drafts and wait.
- Find the next free slot in Europe/London for my LinkedIn account, then run validate_post for a text post. Do not create_post yet.
- Turn this blog URL into three scheduled posts (LinkedIn, X, Instagram). validate_post each one, then wait for my yes before create_post with confirm true.
- List my last 10 scheduled posts and summarise what is already on the calendar this week.
- Generate three caption options for LinkedIn with generate_captions, then help me pick one. Do not publish.
- Schedule the approved LinkedIn caption for the next free Europe/London slot. Use create_post with confirm true only after I say yes.
- I have a video on my laptop. Call create_media_drop, send me the /drop/ link, wait, then list_media and validate_post. Do not use the paperclip.

## Links

- Human landing: https://www.poster.ly/chatgpt
- MCP hub: https://www.poster.ly/mcp
- ChatGPT guide: https://www.poster.ly/guides/chatgpt-guide
- AI agents: https://www.poster.ly/agents
- Agent signup: https://www.poster.ly/agents/signup

Chat attachments never reach posterly. Laptop files go through create_media_drop then list_media. Codex can still use local stdio. Developer mode is the advanced alternative, not the main path.

What it looks like in chat

Draft, validate, then approve. Your AI never publishes until you say so.

your AI · connected to posterly MCP

Never posts without approval · validate_post before create_post

View in posterly

Works with Claude, ChatGPT, Gemini, Cursor, OpenClaw, Hermes, Grok Bot, Muse, Poke, Manus, Cue, and any MCP client.

Add posterly in ChatGPT

The plugin listing is the way to connect. Sign in when ChatGPT asks. Full tables stay on the MCP hub and the ChatGPT setup guide.

1

Open the plugin listing

Add posterly in ChatGPT from the plugin listing. Search for posterly if you are already in ChatGPT plugins.

Add posterly in ChatGPT
2

Connect your posterly account

When ChatGPT asks, sign in to posterly and allow the connection. You need a posterly plan with API access. A card-backed monthly or yearly trial can include it on that same subscription.

ChatGPT setup guide
3

Verify, then schedule

Ask ChatGPT to run whoami and list_accounts. Prefer validate_post, then wait for a clear yes before create_post with confirm true.

MCP hub

Advanced: custom MCP in developer mode

Use this only if you are not adding the plugin. It is the fallback, not a second equal path.

On chatgpt.com open Settings, Security and login, and turn on Developer mode. Then chatgpt.com/plugins, +, Create app, Create MCP App. Set the server URL to https://www.poster.ly/api/mcp, choose OAuth, and sign in. OpenAI's help documents write actions for this custom MCP path as Business, Enterprise, or Edu on the web, with Pro limited to read and fetch, and no mobile MCP. That limit is not confirmed for the plugin listing. Codex can still use local stdio.

What the plugin connects to

The plugin listing connects ChatGPT to the hosted endpoint. Do not paste an npx stdio config into ChatGPT web. Codex is the stdio exception.

Fields

Plugin listing

https://chatgpt.com/plugins/plugin_asdk_app_6ac675cfa8a0819197c6cd0f08b7d264

Add posterly in ChatGPT, then sign in with your posterly account.

Server URL

https://www.poster.ly/api/mcp

The hosted endpoint the plugin uses. JSON-RPC 2.0 over HTTPS. No SSE in v1.

Auth

Sign in with your posterly account

ChatGPT opens posterly sign-in. A raw key is only for the advanced custom MCP form.

Hosted HTTP MCP

This is the endpoint ChatGPT calls after you add the plugin. Same endpoint as Claude, Gemini, Cursor, Grok Bot, and Poke.

POST https://www.poster.ly/api/mcp
Authorization: Bearer pst_live_your_key_here
Content-Type: application/json

{ "jsonrpc": "2.0", "id": 1, "method": "tools/list" }

GET /api/mcp returns server info without auth. Discovery lives at /.well-known/mcp/server-card.json.

Codex (stdio or HTTP)

The codex terminal command, the IDE extension, and the Codex tab in the ChatGPT desktop app share ~/.codex/config.toml. The desktop app's Connect to a custom MCP form writes the same config. This is the ChatGPT surface that can run local stdio.

codex mcp add posterly --env POSTERLY_API_KEY=pst_live_your_key_here -- npx -y posterly-mcp-server@latest
codex mcp add posterly --url https://www.poster.ly/api/mcp
codex mcp list

Stdio exposes 73 tools, including file_path uploads. ChatGPT web cannot use that path.

What ChatGPT can do once connected

Start with these tools. The rest of the 70 hosted HTTP MCP tools live on the MCP hub. Prefer validate_post, then wait for a clear yes before create_post with confirm true.

Starter tools

whoamilist_accountsvalidate_postcreate_postupload_mediacreate_signed_uploadcreate_media_droplist_mediafind_available_slotgenerate_captionslist_posts
  • whoami (none): Call first. Returns the authenticated user, API key scopes, and workspaces. Covers: You, your scopes, and your workspaces, MCP server and connection status.
  • list_accounts workspace_id?: Connected social accounts. Stop if this is empty and send the user to connect accounts in posterly. Covers: Connected accounts, Learned voice of an account, Performance profile of an account, Check a connect session.
  • validate_post account_id or username+platform, caption, scheduled_at?, media_url?, media_urls?, post_type?, workspace_id?: Dry run. Does not create a post. Use this before showing a preview.
  • create_post same as validate_post, plus confirm: true (required): Destructive write. Refuse unless the user clearly approved caption, account, media, and schedule.
  • upload_media filename, base64_data (hosted), or url. content_type optional. Stdio also accepts file_path.: Hosted path is base64 with a decoded file of 5MB or less. With url, posterly fetches a public HTTPS URL into storage (localhost and private IPs are blocked). Chat paperclip files never arrive here. Covers: Upload a file, Delete a library file, Upload from a URL.
  • create_signed_upload filename, content_type, size, or files (1 to 20): Bypasses the Vercel ~4MB API body. Returns upload_url (object storage) and public_url. PUT raw bytes to upload_url, then pass public_url to create_post. Pass files to get up to 20 slots in one call (one per file, failed files reported in place, slots expire in 15 minutes). Use this when the client can PUT (Cursor, Claude Code, Codex).
  • create_media_drop filename?, max_files?: Creates a no-login page at https://www.poster.ly/drop/<token> that takes up to 20 files (max_files, default 10). Send drop_url to the user. ChatGPT web, Claude.ai, and Gemini web laptop files use this, then list_media. Not the chat paperclip.
  • list_media limit?, drop_session_id?: Newest media assets. After create_media_drop, pass drop_session_id and use public_url on validate_post / create_post.
  • find_available_slot account_ids?, timezone?, workspace_id?, count?: Always pass timezone explicitly (IANA, e.g. Europe/London). Respects a 1-hour gap.
  • generate_captions platforms (required), brief?, tone?, count?, mode?, source_caption?: Returns caption options only. It does not schedule or publish.
  • list_posts status?, platform?, account_id?, workspace_id?, limit?: Upcoming or recent posts. status is scheduled, published, failed, or draft. Covers: Posts, one page at a time, Post counts by day, status, account, and brand.
See all MCP tools

Example prompts

  • Using posterly, run whoami, then list_accounts. Tell me which LinkedIn, X, and Instagram accounts are connected.
  • Draft one caption for LinkedIn, X, and Instagram about our product launch. Show me the three drafts and wait.
  • Find the next free slot in Europe/London for my LinkedIn account, then run validate_post for a text post. Do not create_post yet.
  • Turn this blog URL into three scheduled posts (LinkedIn, X, Instagram). validate_post each one, then wait for my yes before create_post with confirm true.
  • List my last 10 scheduled posts and summarise what is already on the calendar this week.
  • Generate three caption options for LinkedIn with generate_captions, then help me pick one. Do not publish.
  • Schedule the approved LinkedIn caption for the next free Europe/London slot. Use create_post with confirm true only after I say yes.
  • I have a video on my laptop. Call create_media_drop, send me the /drop/ link, wait, then list_media and validate_post. Do not use the paperclip.

Post to 18 platforms

ChatGPT can schedule through posterly to every supported social platform.

Browse every platform MCP server for the tools, limits, and connection steps on each network.

Related setup guides

ChatGPT is one route into the same API and MCP layer. These pages pair well with it.

Pricing

One Stripe subscription: your plan plus API & MCP, with a 7-day free trial for new accounts. posterly pricing compared with Buffer.

API, MCP & Agent Access

$10/month

Starter $7 + API $3, with a 7-day free trial for new accounts, then billed monthly, or yearly from the pricing page.

  • ChatGPT plugin listing on the hosted HTTP endpoint
  • Codex stdio via npx posterly-mcp-server
  • Same key for MCP and REST
  • 70 hosted HTTP MCP tools covering 112 actions for status checks, scoped API keys, schemas, scheduling, support, media, brands, analytics, webhooks, OAuth, connect sessions, subscription management, and GBP
  • 100 create-post requests/hour plus separate media/read limits
  • All 18 supported platforms
Get Starter + API · $10/mo

ChatGPT questions

How do I connect posterly to ChatGPT?+

Open https://chatgpt.com/plugins/plugin_asdk_app_6ac675cfa8a0819197c6cd0f08b7d264, add posterly, and sign in with your posterly account when ChatGPT asks. Then ask ChatGPT to run whoami.

Which ChatGPT plan can publish?+

The plugin listing is a different connection from a custom MCP app. OpenAI documents write access for custom MCP in developer mode as Business, Enterprise, or Edu on the web, with Pro limited to read and fetch. That limit is not confirmed for the plugin listing. If a write is refused, check your ChatGPT plan.

Does this work on the ChatGPT mobile app?+

Open the plugin listing on chatgpt.com. OpenAI documents custom MCP in developer mode as web only. Mobile support for the plugin listing is not confirmed here.

Can I drop a laptop video onto the ChatGPT paperclip and have posterly post it?+

No. Chat attachments never reach MCP. Ask ChatGPT to call create_media_drop, open the https://www.poster.ly/drop/<token> link, drop the file there, then let it call list_media. Codex / Cursor / Claude Code can still use file_path or create_signed_upload then PUT.

Is posterly in the ChatGPT plugin listing?+

Yes. Add posterly in ChatGPT at https://chatgpt.com/plugins/plugin_asdk_app_6ac675cfa8a0819197c6cd0f08b7d264. Developer mode remains an advanced alternative if you already use a custom MCP app.

What can ChatGPT schedule?+

All 18 posterly platforms: Instagram, Facebook, TikTok, X, LinkedIn, YouTube, Pinterest, Threads, Google Business, Telegram, Bluesky, Discord, Slack, Mastodon, Dev.to, Hashnode, WordPress, Lemmy.

Add posterly in ChatGPT

Open the plugin listing and sign in with your posterly account. Developer mode stays available if you already use a custom MCP app.