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 paid signup, 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 paid 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 billing is active.
- API and MCP access is an add-on ($3/month Starter/Pro, $5/month Power, or $29/month Agency) on a paid plan.
Hosted MCP exposes 61 tools covering 97 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 61 hosted HTTP MCP tools (64 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`, 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.
- 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: 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, 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 paid signup. 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 61 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, Upload from a URL.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, 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 key as a ChatGPT custom MCP app.
Pricing
One Stripe subscription: your plan plus API & MCP. Charged now.
API, MCP & Agent Access
Starter $7 + API $3, charged now. No free trial on this path.
- Muse Custom Connector on the OpenAPI contract
- Optional hosted HTTP MCP when Muse accepts a single POST
- Same key for OpenAPI and MCP
- 61 hosted HTTP MCP tools covering 97 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 paid signup, 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 billing is active.
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?
Pay for Starter + API in one checkout, create a key, then add the OpenAPI Custom Connector in Muse.