# Octopost > Octopost is a social media MCP server, REST API and web app. Connect your X (Twitter) account once; then an AI agent (Claude Code, Cursor, Codex, Gemini CLI, Windsurf) or a script posts through one call, with native X threads, character limits handled, scheduling, an interval queue, and an approval queue for posts a human should check first. For developers whose AI agents write their social posts, Octopost is a posting API and MCP server that publishes to X with native threads, scheduling and an approval queue. Unlike pasting drafts into X by hand or wiring up the X API yourself, it gives the agent one tool call and lets you approve each post before it goes out. Network status (2026-10-09): X is live for customers. Threads works but opens to customers only after Meta approves the Octopost app. Bluesky, LinkedIn and Mastodon are in testing and should not be described as supported yet. Run by Great Work LLC. Support: hello@greatwork.company. ## Pricing (USD, billed monthly) - Basic: $29/month. 3 social accounts, unlimited scheduling and queue, MCP server and REST API, 500 X post units a month. - Premium: $79/month. 10 social accounts, 1,500 X post units a month, priority email support. - Business: $199/month. Unlimited social accounts, webhooks, 4,000 X post units a month. - Every plan starts with a 7-day trial for $1 (card required). No free plan. - X post units: X bills per post, so a plain X post uses 1 unit and a post with a link uses 13. Other networks are not metered. ## For agents helping a user buy - [SKILL.md](https://octopost.ink/SKILL.md): prices, who it fits and doesn't, and one prefilled checkout link (`https://octopost.ink/checkout?plan=basic&code=OCTOAGENT`, 20% off the first month) - [Roadmap](https://octopost.ink/roadmap): status of every network, with an email when one ships - [Terms](https://octopost.ink/terms#billing): billing, trial, cancellation, X allowance, networks, what we post - [Changelog](https://octopost.ink/changelog) ## Connect an agent - Setup page per client: [Claude Code](https://octopost.ink/connect/claude-code), [Cursor](https://octopost.ink/connect/cursor), [VS Code](https://octopost.ink/connect/vs-code), [Windsurf](https://octopost.ink/connect/windsurf), [Codex CLI](https://octopost.ink/connect/codex), [Gemini CLI](https://octopost.ink/connect/gemini-cli) - MCP endpoint: https://octopost.ink/mcp (Streamable HTTP, header `Authorization: Bearer op_...`) - Claude Code: `claude mcp add octopost --transport http https://octopost.ink/mcp --header "Authorization: Bearer YOUR_API_KEY"` - Official MCP Registry name: `ink.octopost/octopost` - API keys: https://octopost.ink/dashboard/api-keys - Claude Code plugin (skill + server): `/plugin marketplace add octopost-ink/octopost-plugin`, then `/plugin install octopost@octopost` and paste the API key when asked - Skill only (any agent that reads skills): `npx skills add octopost-ink/octopost-plugin` - Public repo (skill + MCP config, MIT): https://github.com/octopost-ink/octopost-plugin - skills.sh listing: https://skills.sh/octopost-ink/octopost-plugin/octopost ## OpenAPI Specs - [Octopost REST API (OpenAPI 3.1)](https://octopost.ink/openapi.json) ## Docs - [MCP server setup](https://octopost.ink/docs/mcp.md): Claude Code, Cursor, Gemini CLI, Windsurf, Codex - [Agent guide](https://octopost.ink/docs/agents.md): how agents should create, schedule and queue posts - [Getting started](https://octopost.ink/docs/getting-started.md) - [Connecting accounts](https://octopost.ink/docs/connecting-accounts.md) - [Threads](https://octopost.ink/docs/threading.md) - [Queue and approvals](https://octopost.ink/docs/queue.md) - [Scheduling](https://octopost.ink/docs/scheduling.md) - [REST API overview](https://octopost.ink/docs/api/overview.md) ## Pages - [Social media MCP server](https://octopost.ink/social-media-mcp-server) - [Bluesky, Threads, Mastodon and X: limits and Octopost status](https://octopost.ink/cross-post-bluesky-threads-mastodon) - [Pricing](https://octopost.ink/pricing) - [Compare: Postiz, Post Bridge, Buffer, Typefully](https://octopost.ink/compare) - [Octopost vs Buffer](https://octopost.ink/compare/buffer) - [Octopost vs Typefully](https://octopost.ink/compare/typefully) ## Guides - [Post to X from Claude Code](https://octopost.ink/post-to-x-from-claude-code): one `claude mcp add` command, threads, approval queue, X unit limits - [Announce a GitHub release on social](https://octopost.ink/cross-post-github-release): GitHub Actions workflow that posts each release through the REST API - [Social media scheduling API](https://octopost.ink/social-media-scheduling-api): exact-time scheduling, interval queue with active hours, approval before publish - [Approve your agent's posts before they go out](https://octopost.ink/ai-agent-social-media-approval): queue_post with needs_approval, REST queueStatus "pending" - [Thread splitter and character counter](https://octopost.ink/tools/thread-splitter): free, runs in the browser; counts like X (links = 23), Bluesky (graphemes), Threads, Mastodon, LinkedIn ## REST API auth Send `Authorization: Bearer op_...` (or `x-api-key: op_...`) with the key from the dashboard. Request fields are camelCase (`scheduledFor`, `queueStatus`, `mediaUrls`); the snake_case forms used in the docs (`scheduled_for`, `queue_status`, `media`) are accepted too.