Schedule social posts from Muse
posterly is the publish layer. Muse is the chat layer. Add posterly as a Custom Connector with OpenAPI and a Bearer key, then schedule across 18 platforms. Nothing goes live until you approve it.
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 Muse
posterly is the publish layer. Muse is the chat layer. Add a Custom Connector with OpenAPI and a Bearer key. Hosted MCP is optional. Directory approval has not been confirmed. posterly is not listed in the Muse directory yet.
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
Use Muse Custom Connector. Do not treat posterly as a listed Muse directory app. Directory approval has not been confirmed. posterly is not listed yet.
Primary contract: OpenAPI plus a Bearer API key.
- OpenAPI: https://www.poster.ly/api/openapi
- Interactive API reference: https://www.poster.ly/reference
- Agents overview: https://www.poster.ly/agents
- Muse Custom Connector page: https://www.poster.ly/muse
Auth (primary):
- After signup (the 7-day trial starts when the card is saved), the user copies a Bearer key that starts with pst_live_ from Dashboard, API and MCP.
- Header: Authorization: Bearer pst_live_...
- Prefer OAuth if Muse Custom Connector accepts https://www.poster.ly/.well-known/oauth-protected-resource and https://www.poster.ly/.well-known/oauth-authorization-server.
- Never invent keys. Never collect card details, posterly passwords, or social-network passwords.
Optional secondary: hosted MCP, only if Muse Custom Connector accepts JSON-RPC over a single POST.
- MCP setup: https://www.poster.ly/mcp
- Hosted MCP endpoint: POST https://www.poster.ly/api/mcp
- MCP server card: https://www.poster.ly/.well-known/mcp/server-card.json
- MCP OAuth resource: https://www.poster.ly/.well-known/oauth-protected-resource/api/mcp
- Wire format: JSON-RPC 2.0 over a single POST. No SSE and no streamable HTTP in v1.
- GET https://www.poster.ly/api/mcp returns server info without auth.
- If Muse Custom Connector requires streamable HTTP, do not pretend hosted MCP works. Stay on the OpenAPI connector and tell the user about this gap.
What you can do through the posterly API:
- List connected social accounts
- Schedule posts after the user confirms the exact caption, account, media, and time
- Create browser connect sessions so the user authorises Instagram, Meta, YouTube, LinkedIn, X, and the rest in their own browser
Approval gates:
- Call whoami, then list accounts
- Prefer validate_post or REST dry_run: true first
- Show the preview
- Wait for an explicit yes
- Only then call create_post with confirm: true, or make the live REST request
- Publish and go-live always need that confirmation
- Social account connect stays in the browser via connect sessions (POST /api/v1/connect/{platform}/sessions). Poll GET /api/v1/connect/sessions/{id}
- Do not invent Autopilot behaviour or prices
Signup and Stripe:
- Start access with POST /api/v1/signup or send the user to https://www.poster.ly/agents/signup
- Signup uses the existing posterly Stripe checkout handoff. No API key before the card is saved and billing is active.
- API and MCP access is an add-on ($3/month Starter, $4/month Pro, $5/month Power, or $29/month Agency) on any posterly plan. New accounts get a 7-day free trial on the website plan + API checkout (trial limits apply). Agent signup through POST /api/v1/signup starts the same 7-day free trial with API and MCP access: a card is required, you are charged on day 8 unless you start the paid plan sooner, and API and MCP are limited during the trial. Agent signup is monthly only with the add-on.
Hosted MCP exposes 71 tools covering 115 actions when the optional JSON-RPC POST transport is accepted. Do not scrape the dashboard. Use OpenAPI, the reference, or list_platforms.
Chat attachments never reach posterly. If Muse requires streamable HTTP or SSE, stay on the OpenAPI connector.
## 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 71 hosted HTTP MCP tools (74 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).
- Muse is an OpenAPI Custom Connector first, so there is no local `file_path`. Small images: public URL or base64 `upload_media`. Laptop video: `create_media_drop` then `list_media`. PUT after `create_signed_upload` only if this Muse runtime can PUT. Hosted MCP is optional and is not streamable HTTP.
## 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, call whoami, then list my connected accounts. Tell me which ones I can post to.
- Draft one caption for LinkedIn, X, and Instagram about our product launch. Show me the drafts and wait.
- Find the next free slot in Europe/London, then validate_post a text post. Do not create_post yet.
- I have a public image URL. Upload it, validate_post an Instagram image post for tomorrow 9:00 Europe/London, and 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 chat attachment.
- After I approve the caption, account, media, and time, create_post with confirm true and send the View in posterly link.
- Do not publish live. Prefer a scheduled time unless I explicitly ask to post now.
- If this Muse connector requires streamable HTTP, stay on the OpenAPI contract and tell me. Do not pretend hosted MCP works.
## Links
- Human landing: https://www.poster.ly/muse
- MCP hub: https://www.poster.ly/mcp
- Muse guide: https://www.poster.ly/docs/integrations/muse
- AI agents: https://www.poster.ly/agents
- Agent signup: https://www.poster.ly/agents/signup
Primary path is a Muse Custom Connector: OpenAPI at https://www.poster.ly/api/openapi plus a Bearer key that starts with pst_live_. Prefer OAuth if Muse accepts posterly well-known metadata. Hosted MCP (POST https://www.poster.ly/api/mcp) is optional JSON-RPC over a single POST. It does not implement SSE or streamable HTTP. If Muse requires streamable HTTP, stay on OpenAPI. Directory approval has not been confirmed. posterly is not listed in the Muse directory yet. Chat attachments never reach posterly.
What it looks like in chat
Draft, validate, then approve. Your AI never publishes until you say so.
your AI · connected to posterly MCP
MCPNever posts without approval · validate_post before create_post
View in posterlyWorks with Claude, ChatGPT, Gemini, Cursor, OpenClaw, Hermes, Grok Bot, Muse, Poke, Manus, Cue, and any MCP client.
Get Muse connected in three steps
Create a posterly API key, add the OpenAPI URL as a Custom Connector, then verify with whoami. Hosted MCP is optional and only when Muse accepts a single JSON-RPC POST.
Enable API access
Buy Starter + API in one checkout, then create an API key in Dashboard, API and MCP. Keys start with pst_live_.
Open API dashboardAdd a Custom Connector
In Muse, add a custom connector with the OpenAPI URL https://www.poster.ly/api/openapi and a Bearer key. Prefer OAuth if Muse accepts posterly well-known metadata. Hosted MCP is optional.
API referenceValidate, then approve one post
Ask Muse to call whoami and list accounts. Prefer validate_post or REST dry_run. Wait for a clear yes before create_post with confirm true.
AI agents overviewWhat to paste into Muse
Start with OpenAPI and a Bearer key. Hosted MCP is a secondary path, and only if Muse accepts JSON-RPC 2.0 over a single POST.
Fields
OpenAPI URL
https://www.poster.ly/api/openapiPrimary Muse Custom Connector contract. Start here.
Auth
Authorization: Bearer pst_live_your_key_hereCopy the key from Dashboard, API and MCP after the trial starts, or after checkout if this account already had a trial. Prefer OAuth if Muse accepts the well-known metadata.
Optional hosted MCP
POST https://www.poster.ly/api/mcpJSON-RPC 2.0 over a single POST. No SSE and no streamable HTTP in v1. If Muse requires streamable HTTP, stay on OpenAPI.
OpenAPI plus Bearer (start here)
Primary Muse Custom Connector contract. Paste the OpenAPI URL and a Bearer key.
GET https://www.poster.ly/api/openapi
GET https://www.poster.ly/api/v1/whoami
Authorization: Bearer pst_live_your_key_herePrefer OAuth if Muse accepts /.well-known/oauth-protected-resource and /.well-known/oauth-authorization-server.
Optional hosted MCP
Only if Muse accepts JSON-RPC 2.0 over a single POST. This is not the primary path.
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" }No SSE and no streamable HTTP in v1. If Muse requires streamable HTTP, stay on OpenAPI.
What Muse can do once connected
Start with these tools. The rest of the 71 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_postswhoami(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_accountsworkspace_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_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), 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, Import files from the chat, Upload from a URL.create_signed_uploadfilename, 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_dropfilename?, 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_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. Covers: Posts, one page at a time, Post counts by day, status, account, and brand.
Example prompts
- Using posterly, call whoami, then list my connected accounts. Tell me which ones I can post to.
- Draft one caption for LinkedIn, X, and Instagram about our product launch. Show me the drafts and wait.
- Find the next free slot in Europe/London, then validate_post a text post. Do not create_post yet.
- I have a public image URL. Upload it, validate_post an Instagram image post for tomorrow 9:00 Europe/London, and 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 chat attachment.
- After I approve the caption, account, media, and time, create_post with confirm true and send the View in posterly link.
- Do not publish live. Prefer a scheduled time unless I explicitly ask to post now.
- If this Muse connector requires streamable HTTP, stay on the OpenAPI contract and tell me. Do not pretend hosted MCP works.
Post to 18 platforms
Muse 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
Muse is one Custom Connector 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.
Muse Custom Connector docs
OpenAPI first, Bearer auth, and the honest hosted MCP gap.
AI agents overview
How posterly connects to any agent that speaks MCP or REST, plus the agent signup flow.
Agent signup
Paid Starter + API onboarding. The agent never collects card details or passwords.
Claude setup
The same posterly key as a Claude custom connector.
ChatGPT setup
The same posterly account, added from the ChatGPT plugin listing.
Pricing
One Stripe subscription: your plan plus API & MCP, with a 7-day free trial for new accounts.
API, MCP & Agent Access
Starter $7 + API $3, with a 7-day free trial for new accounts, then billed monthly, or yearly from the pricing page.
- Muse Custom Connector on the OpenAPI contract
- Optional hosted HTTP MCP when Muse accepts a single POST
- Same key for OpenAPI and MCP
- 71 hosted HTTP MCP tools covering 115 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
Muse questions
Is posterly listed in the Muse directory?+
Not yet. Directory approval has not been confirmed. Today you add posterly yourself as a custom connector, which takes a couple of minutes. We will update this page if that changes.
How do I connect posterly to Muse?+
Buy Starter + API, then copy a Bearer key that starts with pst_live_ from Dashboard, API and MCP. In Muse, add a Custom Connector with the OpenAPI URL https://www.poster.ly/api/openapi. Prefer OAuth if Muse accepts the well-known metadata. Hosted MCP at POST https://www.poster.ly/api/mcp is optional, and only when Muse accepts JSON-RPC over a single POST.
Does Muse Custom Connector use MCP or OpenAPI?+
Start with OpenAPI at https://www.poster.ly/api/openapi and a Bearer key that starts with pst_live_. Hosted MCP is optional. If Muse accepts MCP, use POST https://www.poster.ly/api/mcp. Hosted MCP is JSON-RPC 2.0 over a single POST. It does not implement SSE or streamable HTTP in v1. If Muse Custom Connector requires streamable HTTP, stay on OpenAPI and treat hosted MCP as a known gap.
How does Muse authenticate to posterly?+
After signup (the 7-day trial starts when the card is saved), copy a Bearer API key that starts with pst_live_ from Dashboard, API and MCP. Prefer OAuth if Muse Custom Connector accepts posterly well-known metadata at /.well-known/oauth-protected-resource and /.well-known/oauth-authorization-server. Never invent keys or collect card details in chat.
Can Muse publish a post without asking me?+
No. Validate first, show the exact caption, account, media, and time, then wait for an explicit yes. Live create_post needs confirm: true. Social account connection stays in the user browser through connect sessions.
Can I drop a laptop file into Muse and have posterly post it?+
No. Chat attachments never reach posterly. Use a public HTTPS URL, a small base64 upload, or create_media_drop and then list_media. Hosted upload_media hits the Vercel 4MB request body, so it is for small images only.
How does Stripe checkout work from Muse?+
Agent signup uses the existing posterly Stripe checkout handoff from POST /api/v1/signup or /agents/signup. No API key is issued before the card is saved and billing is active. The signup starts a 7-day free trial: a card is required, you are charged on day 8 unless you start the paid plan sooner, and API and MCP are limited during the trial.
What can Muse 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 Muse?
Get Starter + API in one checkout, create a key, then add the OpenAPI Custom Connector in Muse.