Developers

Postmixr MCP

Connect Claude, Cursor, or VS Code to Postmixr with the Model Context Protocol. Every tool calls the same /api/v1 REST API your integrations use — one API key, one rate limit, one source of truth. Comparing API-first tools? See our alternatives hub (Ayrshare, Postiz, Zernio, and more).

Prerequisites

  • A Starter or Pro workspace (MCP uses the public API plan gate).
  • An API key from Settings → API keys. Use a workspace key (pmx_) for one workspace, or an account key (pmx_user_) to switch workspaces via list_workspaces and set_workspace.
  • At least one connected social account in Postmixr before scheduling posts.

Endpoint & authentication

URLhttps://api.postmixr.com/api/mcp/mcp
TransportStreamable HTTP (MCP spec)
AuthAuthorization: Bearer pmx_… or X-Api-Key: pmx_…

REST reference: https://api.postmixr.com/api/docs

Claude Code

Add to ~/.claude/settings.json (or project .claude/settings.json):

{
  "mcpServers": {
    "postmixr": {
      "type": "http",
      "url": "https://api.postmixr.com/api/mcp/mcp",
      "headers": {
        "Authorization": "Bearer pmx_your_api_key_here"
      }
    }
  }
}

Claude Desktop

Claude Desktop does not support remote HTTP MCP natively. Use mcp-remote as a bridge in ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "postmixr": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://api.postmixr.com/api/mcp/mcp",
        "--header",
        "Authorization: Bearer pmx_your_api_key_here"
      ]
    }
  }
}

Cursor

Add to .cursor/mcp.json in your project (or global MCP settings):

{
  "mcpServers": {
    "postmixr": {
      "url": "https://api.postmixr.com/api/mcp/mcp",
      "headers": {
        "Authorization": "Bearer pmx_your_api_key_here"
      }
    }
  }
}

VS Code (GitHub Copilot)

Add to your VS Code MCP configuration:

{
  "servers": {
    "postmixr": {
      "type": "http",
      "url": "https://api.postmixr.com/api/mcp/mcp",
      "headers": {
        "Authorization": "Bearer pmx_your_api_key_here"
      }
    }
  }
}

Tools

Each tool maps to a /api/v1 route. Arguments match the REST request body or query parameters.

ToolDescription
list_accountsList connected social accounts
get_accountGet one account by id
list_pinterest_boardsList Pinterest boards for an account
get_tiktok_creator_infoTikTok privacy levels and creator limits
list_postsList posts (optional status/platform filters)
list_scheduled_postsList scheduled posts
get_postGet a post by id (includes platformSpecificData per target)
create_postCreate draft, scheduled, or publish-now post
update_postUpdate draft or scheduled post (including channel settings)
delete_postDelete draft or scheduled post
publish_postPublish a post immediately
upload_mediaGet presigned upload URL for media
get_post_analyticsPer-target analytics for a published post
list_post_analyticsAnalytics for recent published posts
get_workspace_analyticsSummed canonical metrics by platform
list_platformsSupported platforms and capabilities
list_workspacesList workspaces accessible with the current API key
set_workspaceSelect active workspace for account keys (pmx_user_*) before other tools
verify_api_keyVerify API key; returns keyType and workspace context

Channel settings

Pass per-platform options on create_post and update_post via targets[].platformSpecificData. Use targets[].content for a per-channel caption override. get_post returns the same fields on each target. If you only pass socialAccountIds, channel settings cannot be set.

Discovery helpers: list_pinterest_boards (board names) and get_tiktok_creator_info (allowed privacy_level values).

PlatformplatformSpecificData fields
instagram
  • post_typeFeed post or story [post | story]
  • is_trial_reelTrial reel (single video only)
tiktok
  • privacy_levelWho can view (use get_tiktok_creator_info for allowed values)
  • content_posting_methodDirect post to TikTok or upload to inbox [DIRECT_POST | UPLOAD]
  • brand_content_togglePaid partnership / branded content
  • brand_organic_togglePromoting own business
youtube
  • title(required)Video title
x
  • who_can_reply_postReply audience [everyone | following | mentionedUsers | subscribers | verified]
  • communityX community URL (optional)
  • made_with_aiDisclose AI-generated content
  • paid_partnershipPaid partnership label
facebook
  • urlLink URL for link posts
linkedin
  • post_as_images_carouselPublish images as a carousel
  • carousel_nameCarousel title when carousel mode is on
pinterest
  • board(required)Board name (use list_pinterest_boards)
  • titlePin title
  • linkDestination URL
  • dominant_colorHex color hint

Example create_post

{
  "content": "Summer launch 🚀",
  "mediaUrls": ["https://cdn.example.com/hero.jpg"],
  "scheduledAt": "2026-06-15T14:00:00Z",
  "targets": [
    {
      "accountId": "<instagram-account-uuid>",
      "platformSpecificData": { "post_type": "story" }
    },
    {
      "accountId": "<youtube-account-uuid>",
      "platformSpecificData": { "title": "Summer launch video" }
    },
    {
      "accountId": "<pinterest-account-uuid>",
      "platformSpecificData": { "board": "Marketing", "title": "Launch pin" }
    }
  ]
}

Optional mediaMeta array (duration, dimensions, alt text) helps validate video length limits — same shape as the REST API.

Good to know

  • Drafts vs native drafts: Postmixr drafts live in your workspace until you schedule or publish — they are not Instagram or TikTok native drafts.
  • Media uploads: Call upload_media, PUT your file to uploadUrl, then pass publicUrl in create_post as mediaUrls.
  • Analytics: Metrics are per platform target (canonical fields). There is no single combined rollup yet — sum in your agent or use list_post_analytics for a table view.
  • Rate limits: 60 requests per minute per API key (shared between REST and MCP).
  • Account keys: With pmx_user_*, run list_workspaces then set_workspace before list_accounts or other workspace tools. Or pass X-Workspace-Id on each MCP HTTP request.
  • MCP sessions: After a server deploy, reconnect your MCP client (it will send a new initialize request). API keys stay valid.

Ready to connect?

Create an API key, paste it into your MCP config, then ask your assistant to verify_api_key, list_workspaces (account keys), and list_accounts.