MCP Server

Schedule posts from Claude, ChatGPT, Cursor, or any MCP-compatible client — over stdio (npm) or HTTP.

posterly speaks the Model Context Protocol so any MCP-compatible AI client can list connected accounts, schedule posts, and pull analytics on the user's behalf. Two transports are available — pick the one that fits your client.

Two transports

1. Stdio (npm package) — desktop AI clients

For Claude Desktop, ChatGPT Desktop, Cursor, Windsurf, Cline, and other clients that run an MCP server as a local subprocess.

npm install -g posterly-mcp-server

Add to your client's MCP config:

{
  "mcpServers": {
    "posterly": {
      "command": "npx",
      "args": ["-y", "posterly-mcp-server"],
      "env": {
        "POSTERLY_API_KEY": "pst_live_your_key_here"
      }
    }
  }
}

Quick setup — copy for your AI: Paste this into Claude, ChatGPT, or Cursor and it will configure everything for you:

"I want to connect posterly via MCP. Add this to my MCP config: { "mcpServers": { "posterly": { "command": "npx", "args": ["-y", "posterly-mcp-server"], "env": { "POSTERLY_API_KEY": "YOUR_KEY" } } } } — merge it with my existing config, then remind me to restart."

Replace YOUR_KEY with your API key from Dashboard → API & MCP.

2. HTTP — browser-based AI clients

For Claude in Chrome, ChatGPT Atlas, Cursor in browser, or any web-based agent that can't spawn a local process.

  • Endpoint: POST https://www.poster.ly/api/mcp
  • Wire format: JSON-RPC 2.0 (single request — no SSE in v1)
  • Auth header: Authorization: Bearer pst_live_your_key_here
  • Capability hint: GET /api/mcp returns server info without auth.

Quick smoke test from any terminal:

curl -s https://www.poster.ly/api/mcp \
  -H "Authorization: Bearer pst_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Both transports use the same API key, the same paywall, the same per-key rate limit (100 requests/hour), and expose the same set of tools.

Auto-discovery for agents

posterly publishes the standard .well-known discovery endpoints so agents can find everything programmatically:

URLPurpose
/.well-known/mcp/server-card.jsonMCP server card — describes both transports + tools
/.well-known/api-catalogRFC 9727 linkset describing the REST API surface
/.well-known/oauth-protected-resourceRFC 9728 — bearer methods, scopes, where to mint tokens
/.well-known/agent-skills/index.jsonCloudflare Agent Skills index — links to SKILL.md files
/api/openapiFull OpenAPI 3.1 spec for the REST API

Public marketing pages also emit RFC 8288 Link headers pointing at all of the above, so agents that crawl https://www.poster.ly discover the API surface without any prior configuration.

Auth & billing handoff (RFC 6750)

When an agent calls a tool with a missing/invalid token or no API add-on, posterly returns a WWW-Authenticate header that tells the agent exactly what to do — surface this to the user and they can subscribe inside the agent conversation.

  • 401 invalid_tokenWWW-Authenticate: Bearer ... token_uri="https://www.poster.ly/dashboard/api"
  • 403 insufficient_subscriptionWWW-Authenticate: Bearer ... error_uri="https://www.poster.ly/dashboard/api?upgrade=api_addon"
  • 403 insufficient_scopeWWW-Authenticate: Bearer ... scope="posts:write"
  • 429 — body includes retry_after, plus a Retry-After header.

Available tools

The same 12 tools are exposed over both transports:

  • whoami — show the user, workspaces, and scopes your key can access.
  • list_accounts — show all connected social accounts.
  • list_posts / get_post — browse scheduled and published content.
  • create_post — schedule or immediately publish a post (one or many platforms).
  • update_post / delete_post — manage scheduled content.
  • upload_media — upload an image or video.
  • find_available_slot — find the next open posting slot honoring the 1h gap.
  • generate_image — create AI images with Nano Banana.
  • get_account_analytics — follower growth, reach, views, engagement rate (Instagram, LinkedIn, Google Business Profile).
  • get_post_analytics — per-post likes, comments, reach, impressions, saves, shares, plays.

Usage examples

In Claude, ChatGPT, or any MCP client:

  • "Schedule a LinkedIn post about our Q1 results for tomorrow at 10am"
  • "What accounts do I have connected to posterly?"
  • "Upload this image and create an Instagram post with it"
  • "How did my Instagram perform over the last 14 days?"
  • "Which of my recent LinkedIn posts got the most engagement?"

See the MCP marketing page for client-specific setup screenshots.