Schedule social posts from Claude
posterly is the publish layer. Claude is the chat layer. Add posterly as a custom connector on claude.ai, or install local stdio in Claude Desktop and Claude Code, then schedule 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.
Preview what is copied
# posterly for Claude
posterly is the publish layer. Claude is the chat layer. Add a custom connector on claude.ai, or local stdio in Claude Desktop and Claude Code.
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
claude.ai: Customize, Connectors, Add custom connector, paste https://www.poster.ly/api/mcp. Free plans can add one custom connector. Writes run after user approval.
Claude Code: `claude mcp add --transport http posterly https://www.poster.ly/api/mcp` or stdio `claude mcp add --scope user -e POSTERLY_API_KEY=pst_live_your_key_here posterly -- npx -y posterly-mcp-server@latest`.
Claude Desktop: claude_desktop_config.json with the npx stdio block.
This is a custom connector you add yourself. Do not look for a directory listing.
Stdio file_path uploads work in Claude Desktop and Claude Code, not on claude.ai. Chat attachments never reach MCP.
## 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 86 hosted HTTP MCP tools (89 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_from_url` (`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 or Claude.ai: `create_media_drop` (optional `filename`, optional `max_files`, default 10). Send the user `drop_url` (`https://www.poster.ly/drop/<token>`). They open it with no dashboard login and drop the file. 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`), PUT the raw bytes to the returned `upload_url` (object storage, not a posterly API route) with the returned headers, 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.
- 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). content_type optional. Stdio also accepts file_path.: Hosted path is base64 with a decoded file of 5MB or less. Chat paperclip files never arrive here.
- `upload_media_from_url` url (required), filename?, content_type?: Fetch a public HTTPS URL into posterly storage. Localhost and private IPs are blocked.
- `create_signed_upload` filename, content_type, size: 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. 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>. Send drop_url to the user. ChatGPT web and Claude.ai 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 and list_accounts. Which LinkedIn and Instagram accounts can I post to?
- Draft a LinkedIn, X, and Instagram launch post. Find the next free slot in Europe/London, run validate_post for each, and wait for my approval.
- Write three caption options for this product update with generate_captions. Do not schedule anything yet.
- List scheduled posts for this week and suggest one gap I could fill on LinkedIn.
- After I approve, create_post the LinkedIn draft with confirm true and send me the View in posterly link.
- I have a public image URL. upload_media_from_url, then validate_post an Instagram image post for tomorrow 9:00 Europe/London. Wait for my 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.
- Do not publish live. Prefer scheduled_at or find_available_slot unless I explicitly ask to post now.
## Links
- Human landing: https://www.poster.ly/claude
- MCP hub: https://www.poster.ly/mcp
- Claude guide: https://www.poster.ly/guides/claude-guide
- AI agents: https://www.poster.ly/agents
- Agent signup: https://www.poster.ly/agents/signup
Custom connectors work on Free through Enterprise. Free is limited to one custom connector. Writes run after you approve the tool call. Chat attachments never reach posterly. Laptop files go through create_media_drop then list_media. This is a custom connector you add yourself.
What it looks like in chat
Draft, validate, then approve. Your AI never publishes until you say so.
your AI · connected to posterly MCP
MCPAssistant
Three short captions in your brand voice, via generate_captions. Next I will call validate_post, then wait.
1 · Tue 9:00
Your AI can now schedule social posts. You still approve every one.
2 · Wed 9:00
MCP signup is live. Connect Claude, ChatGPT, or Grok Bot in a few minutes.
3 · Thu 9:00
Validate first, then publish. That is the whole workflow.
Schedule 3 posts · Tue to Thu 9:00 Asia/Dubai
LinkedIn @Acme
Waiting for approval. Nothing will be scheduled until you approve.
Never posts without approval · validate_post before create_post
View in posterlyWorks with Claude, Cursor, ChatGPT, OpenClaw, Hermes, Grok Bot, Poke, and any MCP client.
Get Claude connected in three steps
Create a posterly API key, add the hosted URL as a custom connector (or local stdio in Desktop and Claude Code), then verify with whoami.
Enable API and MCP access
Buy Starter + API in one checkout, then create an API key in Dashboard, API and MCP.
Open API dashboardAdd a custom connector
On claude.ai: Customize, Connectors, Add custom connector, paste https://www.poster.ly/api/mcp. Claude Code and Desktop can also run local stdio with npx.
MCP hubApprove writes, then schedule
Ask Claude to run whoami and list_accounts. Prefer validate_post. Claude asks before writes. Only create_post after you approve.
Claude walkthroughWhat to paste into Claude
claude.ai, Cowork, and Claude in Chrome are remote-only. Claude Desktop and Claude Code can run the npm stdio package locally.
Fields
Server URL (claude.ai)
https://www.poster.ly/api/mcpCustomize, then Connectors, then Add custom connector. Free plans can add one custom connector.
Auth
OAuth, or Authorization: Bearer pst_live_your_key_hereWrites are allowed after you approve the tool call in Claude.
Claude Code
claude mcp add --transport http posterly https://www.poster.ly/api/mcpOr stdio: claude mcp add --scope user -e POSTERLY_API_KEY=pst_live_your_key_here posterly -- npx -y posterly-mcp-server@latest
claude.ai custom connector
Remote HTTP. The server must be on the public internet. This is the same hosted endpoint ChatGPT and Cursor use.
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" }Team and Enterprise owners add connectors in Organisation settings before members can use them.
Claude Code and Desktop
Local stdio for Desktop (claude_desktop_config.json) and Claude Code. HTTP also works in Claude Code.
claude mcp add --transport http posterly https://www.poster.ly/api/mcp
claude mcp add --scope user -e POSTERLY_API_KEY=pst_live_your_key_here posterly -- npx -y posterly-mcp-server@latestIf Claude Code says posterly was not added, run claude mcp remove posterly, then add it again with --scope user.
What Claude can do once connected
Start with these tools. The rest of the 86 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_mediaupload_media_from_urlcreate_signed_uploadcreate_media_droplist_mediafind_available_slotgenerate_captionslist_postswhoami(none): Call first. Returns the authenticated user, API key scopes, and workspaces.list_accountsworkspace_id?: Connected social accounts. Stop if this is empty and send the user to connect accounts in posterly.validate_postaccount_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_postsame as validate_post, plus confirm: true (required): Destructive write. Refuse unless the user clearly approved caption, account, media, and schedule.upload_mediafilename, base64_data (hosted). content_type optional. Stdio also accepts file_path.: Hosted path is base64 with a decoded file of 5MB or less. Chat paperclip files never arrive here.upload_media_from_urlurl (required), filename?, content_type?: Fetch a public HTTPS URL into posterly storage. Localhost and private IPs are blocked.create_signed_uploadfilename, content_type, size: 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. Use this when the client can PUT (Cursor, Claude Code, Codex).create_media_dropfilename?, max_files?: Creates a no-login page at https://www.poster.ly/drop/<token>. Send drop_url to the user. ChatGPT web and Claude.ai laptop files use this, then list_media. Not the chat paperclip.list_medialimit?, 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_slotaccount_ids?, timezone?, workspace_id?, count?: Always pass timezone explicitly (IANA, e.g. Europe/London). Respects a 1-hour gap.generate_captionsplatforms (required), brief?, tone?, count?, mode?, source_caption?: Returns caption options only. It does not schedule or publish.list_postsstatus?, platform?, account_id?, workspace_id?, limit?: Upcoming or recent posts. status is scheduled, published, failed, or draft.
Example prompts
- Using posterly, run whoami and list_accounts. Which LinkedIn and Instagram accounts can I post to?
- Draft a LinkedIn, X, and Instagram launch post. Find the next free slot in Europe/London, run validate_post for each, and wait for my approval.
- Write three caption options for this product update with generate_captions. Do not schedule anything yet.
- List scheduled posts for this week and suggest one gap I could fill on LinkedIn.
- After I approve, create_post the LinkedIn draft with confirm true and send me the View in posterly link.
- I have a public image URL. upload_media_from_url, then validate_post an Instagram image post for tomorrow 9:00 Europe/London. Wait for my 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.
- Do not publish live. Prefer scheduled_at or find_available_slot unless I explicitly ask to post now.
Post to 18 platforms
Claude can schedule through posterly to every supported social platform.
Related setup guides
Claude is one route into the same API and MCP layer. These pages pair well with it.
MCP setup guide
The hub for hosted HTTP MCP, local stdio, OAuth metadata, and the full tool list.
Claude guide (long read)
Custom connectors, Desktop, Claude Code, Routines, and worked scheduling prompts.
Claude Code plugin
Optional plugin that bundles MCP, a skill, and a guided /posterly:setup flow.
AI agents overview
How posterly connects to any agent that speaks MCP or REST, plus the agent signup flow.
ChatGPT setup
The same hosted endpoint as a ChatGPT custom MCP app. Writes need Business+.
Cursor setup
Local stdio in the editor, hosted HTTP for Cloud Agents.
Pricing
One Stripe subscription: your plan plus API & MCP. Charged now, no free trial.
API, MCP & Agent Access
Starter $7 + API $3, charged now. No free trial on this path.
- Claude custom connector on the hosted HTTP endpoint
- Claude Code and Desktop stdio via npx posterly-mcp-server
- Same key for MCP and REST
- 86 hosted HTTP MCP tools 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
Claude questions
How do I connect posterly to Claude?+
On claude.ai open Customize, Connectors, Add custom connector, and paste https://www.poster.ly/api/mcp. In Claude Code use claude mcp add --transport http, or local stdio with npx. Claude Desktop uses claude_desktop_config.json.
Does the Free plan work?+
Yes. Custom connectors are available on Free through Enterprise. Free is limited to one custom connector.
Can Claude write posts?+
Yes, after you approve the tool call. Prefer validate_post first, then create_post with confirm true only when you clearly say yes.
Can I attach a laptop video in Claude and have posterly post it?+
No. Chat attachments never reach MCP. Ask Claude to call create_media_drop, open the https://www.poster.ly/drop/<token> link, drop the file there, then let it call list_media. Claude Code / Desktop can still use file_path or create_signed_upload then PUT.
Is posterly listed as an official Claude connector?+
No. This is a custom connector you add yourself.
What can Claude 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.
Ready to connect Claude?
Pay for Starter + API in one checkout, create a key, then add the custom connector or local stdio config.
