Antwork MCP Server
Reference documentation for the Antwork Model Context Protocol server — setup, OAuth scopes, the full tool catalog, links into the web app, and troubleshooting.
https://api.antwork.io/mcpOverview
The Antwork MCP server lets your AI assistant draft, schedule, publish, and analyze social media posts on your behalf. It speaks the open Model Context Protocol standard, so any MCP-aware client (claude.ai, Claude Code, Cursor, ChatGPT, Windsurf, custom agents) can connect with the same single URL.
What you can do once connected
- Draft posts on-brand using the voice matched from each account's own history.
- Schedule or publish to LinkedIn, X, Threads, Facebook, Instagram, YouTube, TikTok, Pinterest, and Bluesky.
- Read lifetime metrics for any published post, and its day-by-day engagement history.
- Manage drafts, scheduled posts, and the media library.
- Connect social accounts and check their health (disconnecting is done in the web app).
https://api.antwork.io/mcpOne URL serves every user — there are no per-tenant subdomains. Authentication happens via OAuth on first tool call (see Authentication).
Quick start
Every supported MCP client follows the same shape: register the server URL, then approve OAuth in your browser when prompted. The exact install affordance differs per client.
Pick your client for step-by-step setup:
- Claude
- ChatGPT
- Claude Code
- Codex
- OpenClaw
- Hermes Agent
- Grok
- Meta Muse
- Claude Duet
- Grok Bot
- OpenAI dots
- n8n
- Make
- Cursor
- VS Code
- Gemini CLI
- Antigravity
- Perplexity
- Mistral Vibe
- Gemini
ChatGPT needs no server URL: open Antwork in the ChatGPT plugin directory and click Connect.
Using a coding agent we don't list? Let it set itself up.
For agents that can edit their own setup, like Claude Code, Codex or Cursor: copy this prompt into the agent. It installs https://api.antwork.io/mcp, walks you through the sign-in, and verifies the connection before it reports back. ChatGPT and Claude can't set themselves up this way. Pick them above.
Connect from scripts, CI and the Agent SDK
The usual sign-in opens a browser for the consent screen. Clients that run headless (Claude Code driven by the Agent SDK, a CI job, codex exec) have no browser, so they authenticate with an Antwork API key instead, sent as the bearer token. Same tools, same scopes.
Create a key with the scopes you need and export it as ANTWORK_API_KEY. It is shown once. Create an API key
Claude Code
claude mcp add --transport http antwork https://api.antwork.io/mcp \
--header "Authorization: Bearer $ANTWORK_API_KEY"Codex
Codex reads the token from the environment variable named in bearer_token_env_var, so the key never sits in the file.
[mcp_servers.antwork]
url = "https://api.antwork.io/mcp"
bearer_token_env_var = "ANTWORK_API_KEY"Claude Agent SDK
mcpServers: {
antwork: {
type: "http",
url: "https://api.antwork.io/mcp",
headers: { Authorization: `Bearer ${process.env.ANTWORK_API_KEY}` },
},
},
allowedTools: ["mcp__antwork__*"],mcp_servers={
"antwork": {
"type": "http",
"url": "https://api.antwork.io/mcp",
"headers": {"Authorization": f"Bearer {os.environ['ANTWORK_API_KEY']}"},
}
},
allowed_tools=["mcp__antwork__*"],read, write, publish, media), and each tool checks them like an OAuth token. Revoking the key, or disabling the account, cuts access within a minute. Keep it in a secret store, never in a repository.Links into Antwork
Antwork draws nothing inside the chat. Tools answer in text, and every post they return carries three links into the Antwork web composer, so any client can open it:
editUrlopens the post in the composer.mediaUrlopens it with the media picker open, to upload a file from your device or pick one from your library.settingsUrlopens it with its platform settings open, such as the TikTok audience or the Pinterest board.
list_media returns libraryUrl, the Media page, and list_posts with group_by_day returns calendarUrl, the Calendar page. Signed out, a link asks you to sign in first and then opens where it points.
Attaching images and videos
How a file reaches Antwork depends on where you chat. Every route ends in your workspace's media library, and one add_media call can attach the file to every post you name.
- In the composer: open the post's
mediaUrl, which your AI gets with every post. It opens the post in the Antwork composer with the media picker open, so you can upload from your device or pick from your library. This works in any client, including Claude on the web, desktop and mobile. - Claude with code execution: attach the file to the chat and ask Claude to add it to your posts. Claude uploads it from its sandbox in one request, which needs network access to
api.antwork.io. On claude.ai, add that domain under Settings → Capabilities. - ChatGPT: attach the file to the chat and ask to add it. ChatGPT hands the file to Antwork directly.
- Claude Code, Codex and other terminal clients: name the file on disk. The client uploads it directly in one request, up to 1 GB for video and PDF.
- Anywhere: upload on the Media page at antwork.io, then ask your AI to attach it from your library.
api.antwork.io is Antwork's own API, so allowing it opens nothing else to the sandbox. Each upload address works once, for one file, for 10 minutes, and its response says which posts the file was attached to. If you'd rather not allow it, the post's mediaUrl opens the composer, where you add the file yourself.Limits & quotas
Antwork's own ceilings (the connected-account allowance, the daily and queue limits per account, upload sizes and what each post status means) are on the limits page. What each network accepts is on the platform specifications.
The one limit specific to this surface: an access token lasts 5 minutes and a refresh token 30 days, renewed on use and revocable at any time through /oauth/revoke.
Something look wrong? Tell us which.