PostifyPostify Docs

Connecting AI assistants (MCP)

Connect Claude, ChatGPT, Cursor, VS Code, Gemini or any MCP-capable client to your Postify workspace with the Postify MCP server.

Postify runs a remote MCP (Model Context Protocol) server, so AI assistants like Claude — and any MCP-capable client — can work with your workspace: list and read posts, create drafts, reschedule, check analytics, and more.

Server URL: https://app.usepostify.com/api/mcp (Streamable HTTP transport)

Connect from any MCP client

Add to ClaudeAdd to ChatGPTAdd to CursorAdd to VS CodeAdd to KiroAdd to ReplitAdd to AntigravityAdd to GeminiAdd to CodexAdd to PerplexityAdd to MistralAdd to Grok

Buttons for Claude and ChatGPT open Postify's listing in that app's directory; the others install directly or jump to the instructions.

Postify's MCP server is a hosted Streamable HTTP endpoint with OAuth 2.1 sign-in. There is nothing to install or run: point the client at the URL below and sign in to Postify when the browser opens. Every client that supports remote MCP servers with OAuth works; the ones below are the common ones.

https://app.usepostify.com/api/mcp

No API key is needed. The client registers itself via dynamic client registration and walks an OAuth 2.1 flow in your browser, where you sign in and approve scopes on a consent screen. PKCE is required, and refresh tokens rotate on use. Discovery documents live at /.well-known/oauth-protected-resource and /.well-known/oauth-authorization-server.

Claude (claude.ai, Claude Desktop, Claude Code)

  • Fastest: Add to Claude opens Postify in Claude's connector directory. Click Connect, then sign in. The connector syncs to Claude Desktop and mobile.
  • Manual (claude.ai / Claude Desktop): Settings → Connectors → Add custom connector, paste the URL, then sign in — or open the dialog pre-filled.
  • Claude Code: claude mcp add --transport http postify https://app.usepostify.com/api/mcp then /mcp to sign in.

ChatGPT and Codex

  • ChatGPT — fastest: open Postify's ChatGPT app, add it and sign in.
  • Manual (ChatGPT): Settings → Apps & Connectors → Create (developer mode), name it Postify, paste the URL, authentication OAuth.
  • Codex CLI: add to ~/.codex/config.toml:
[mcp_servers.postify]
url = "https://app.usepostify.com/api/mcp"

Cursor

One click: Add to Cursor. Or in .cursor/mcp.json:

{
  "mcpServers": {
    "postify": {
      "url": "https://app.usepostify.com/api/mcp"
    }
  }
}

VS Code and GitHub Copilot

One click: Add to VS Code. Or run MCP: Add Server → HTTP and paste the URL, which writes to .vscode/mcp.json:

{
  "servers": {
    "postify": {
      "type": "http",
      "url": "https://app.usepostify.com/api/mcp"
    }
  }
}

Google Antigravity

Install the plugin from the repository (or from the Antigravity Marketplace once listed):

agy plugin install https://github.com/DevinoSolutions/mcp-servers/antigravity-plugins/postify

Or add the server by hand in ~/.gemini/config/mcp_config.json (Antigravity requires the serverUrl key):

{
  "mcpServers": {
    "postify": {
      "serverUrl": "https://app.usepostify.com/api/mcp"
    }
  }
}

Gemini

  • Gemini app: Settings → Connected apps → Custom apps → Add a custom app, paste the URL, then mention @Postify in a chat. (Custom apps are currently limited to personal Google accounts in the US.)
  • Gemini CLI: gemini extensions install https://github.com/DevinoSolutions/mcp-servers then /mcp auth postify, or add { "mcpServers": { "postify": { "httpUrl": "https://app.usepostify.com/api/mcp" } } } to ~/.gemini/settings.json.

Kiro

One click: Add to Kiro. Or in .kiro/settings/mcp.json:

{
  "mcpServers": {
    "postify": {
      "url": "https://app.usepostify.com/api/mcp"
    }
  }
}

Perplexity, Mistral Le Chat, Grok

  • Perplexity (Pro, Max, Enterprise): Settings → Connectors → Custom connector, paste the URL, authentication OAuth.
  • Mistral Le Chat (all plans): Intelligence → Connectors → Add Connector → Custom MCP Connector, paste the URL.
  • Grok: grok.com → Connectors → New connector → Custom, paste the URL.

Other clients

  • Replit: Add to Replit, or Integrations → Add MCP server.
  • Devin, Windsurf, Zed, JetBrains Junie, Cline, OpenCode: add a remote (HTTP) MCP server with the URL above; each prompts for the OAuth sign-in on first use. Cline can also install it from the Cline marketplace entry using its llms-install.md.

Tokens are scoped to what you approve on the consent screen; a tool you did not grant is never shown to the assistant. Revoke access at any time under Settings, then API Keys, then Connected AI apps — see Managing connections.

Scopes

You approve exactly which scopes a client gets. Tools outside the granted scopes are not even listed to the client.

ScopeGrants
posts:readList and read posts, search the media library
posts:writeCreate drafts and reschedule; publish/delete sit behind an extra toggle
channels:readList connected channels
channels:writeHand you the link to connect a social account (you approve the connection in your own browser)
inbox:readRead the inbox — mentions, comments and direct messages from connected accounts
analytics:readRead workspace analytics
ai:generateAI suggestions (optimal posting times)
offline_accessRefresh tokens — stay connected without re-consenting

Workspaces

If you belong to more than one workspace, the consent screen also asks which ones the assistant may use: only the workspace you are working in (the default), a list you tick, or all of them. "All my workspaces" includes workspaces you join later, and access to any workspace ends when you leave it.

Every tool call acts on one workspace. A connection granted a single workspace never has to name it. A connection granted several calls list_workspaces and passes the chosen id as the workspaceId argument of every other tool.

Tools

ToolScopeWhat it does
list_postsposts:readRecent posts with status and per-channel delivery outcomes
get_postposts:readOne post in full: variants, schedule, delivery attempts
get_scheduleposts:readScheduled posts inside a date window — "what's going out this week"
search_media_libraryposts:readFind images/videos in the workspace media library
list_inbox_itemsinbox:readMentions, comments, replies and DMs synced from connected channels
list_channelschannels:readConnected social accounts with platform and handle
get_connect_linkschannels:writeThe link to connect each social network to this workspace; see Connecting a channel through an assistant
get_analyticsanalytics:readWorkspace KPIs: published, scheduled, delivery success rate
create_draftposts:writeCreate a draft (never publishes — a human reviews it in the app)
reschedule_postposts:writeMove a scheduled post to a new time
suggest_optimal_timeai:generateAI-suggested best posting times for selected platforms
search_docs—Search Postify's public API docs (endpoints, error codes, webhooks, scopes); available to every connected assistant
publish_nowposts:writePublish a post to its live channels immediately (dangerous)
delete_postposts:writeSoft-delete a post, history preserved (dangerous)
list_workspaces—The workspaces this connection may use (id, name, your role); available to every connected assistant

Connecting a channel through an assistant

Ask the assistant to connect a network and it calls get_connect_links, then gives you a link. Open it in the browser where you are signed in to Postify:

  • For most networks the link goes straight to the network's own sign-in and approval page, then back to Postify.
  • For a network that has no such page (an app password, a bot token or a webhook URL), the link opens a short form in Postify's Channels page. You type the credential there, never into the chat.

The link holds no password or token. It connects whatever account you approve to the workspace your browser has open, and it is refused if that is not the workspace the assistant asked for. When you are done, the assistant calls list_channels to confirm the channel is connected. Networks marked coming soon cannot be connected yet.

Dangerous operations

publish_now and delete_post are blocked for all connected AI credentials by default. A workspace owner opts in with the "Dangerous AI operations" switch under Settings, then API Keys. Even with the toggle on, each call is a two-step: the first call returns CONFIRMATION_REQUIRED with a confirmToken; after you explicitly confirm, the client re-calls with the same arguments plus the token. Tokens expire after 10 minutes and are bound to the exact tool and arguments they were minted for.

Structured denials

A blocked tool call is not a transport error — it returns isError: true with machine-readable structuredContent the agent can act on, carrying a stable code and (where useful) a settingsUrl, a requiredScope, a confirmToken, and a docs link back to this page.

CodeWhen you get it, and what resolves it
SCOPE_MISSINGThe connection was never granted the scope this tool needs. Reconnect and approve the missing scope on the consent screen.
DANGEROUS_OPS_DISABLEDpublish_now or delete_post while the workspace toggle is off. The denial's settingsUrl deep-links an owner straight to the switch.
CONFIRMATION_REQUIREDA dangerous tool was called without a confirmToken. The denial carries a fresh token — confirm with the user, then re-call with the SAME arguments plus the token (valid 10 minutes).
QUOTA_EXCEEDEDThe workspace's monthly quota for the operation (posts, AI credits) is exhausted. Retrying is pointless until it resets.
WORKSPACE_REQUIREDThe connection was granted several workspaces and the call named none. The denial lists them (workspaces); re-call with one as workspaceId.
WORKSPACE_NOT_FOUNDThe workspaceId is not one this connection may use. The same answer is given for an id that does not exist at all.
NO_WORKSPACE_ACCESSYou no longer belong to any workspace this connection was granted. Reconnect to choose again.
TOOL_EXECUTION_FAILEDAnything else — the generic failure. Details never include third-party error bodies.

Managing connections

Connected clients — with their granted scopes and last-used time — are listed under Settings, then API Keys, then Connected AI apps. Disconnecting revokes consent and refresh tokens immediately; any access token the client still holds expires within the hour. Every tool call, allowed or denied, is written to the workspace audit trail.

On this page