Octopost: post to X from your agent
Octopost publishes one post (or a thread) to every connected network, handles each network's character limits and thread format, and can hold posts for human approval. It needs an Octopost account (plans from $29/month, 7 days for $1 at https://octopost.ink/pricing) and an API key from https://octopost.ink/dashboard/api-keys.
Setup (once)
Preferred: the MCP server, so the tools show up natively.
claude mcp add octopost --transport http https://octopost.ink/mcp --header "Authorization: Bearer $OCTOPOST_API_KEY"
Cursor, Codex, Gemini CLI and Windsurf configs: https://octopost.ink/docs/mcp.md
Without MCP, call the REST API at https://octopost.ink/api with Authorization: Bearer $OCTOPOST_API_KEY (reference: https://octopost.ink/docs/agents.md).
How to post well
- Check what is connected first. MCP:
list_accounts. REST:GET /api/accounts. Only target networks that are connected. - Ask before publishing on the user's behalf unless they already said "post it". When unsure, use the approval queue: MCP
queue_postwithneeds_approval: true. The user approves in the dashboard or withapprove_queued_post. - Fit the shortest network. X allows 280 characters, Bluesky 300, Threads 500, Mastodon usually 500, LinkedIn 3,000. For a post going everywhere, stay under 280 or write a thread.
- Threads: pass segments (MCP
create_post/queue_postwithsegments, RESTsegments: [{ "content": "..." }]). X, Bluesky, Threads and Mastodon get native threads; LinkedIn gets the joined text. - Links: X down-ranks link posts, and on Octopost an X post with a link uses 13 of the plan's monthly X units (a plain post uses 1). Put the link in the last segment of a thread, or leave X out for link-heavy posts.
- Timing:
schedule_postfor a specific time (ISO 8601 with timezone),queue_postto let the user's queue pick the next slot (interval and active hours are inget_queue_status). - After posting, report the post URLs returned per network. If a network failed, show its error and offer
retry_failed.
MCP tools
list_accounts, create_post, schedule_post, queue_post, approve_queued_post, get_queue_status, update_queue_settings, list_posts, get_post, update_post, reschedule_post, cancel_scheduled, delete_post, retry_failed, list_presets, get_guide.
Call get_guide for per-network rules before an unusual post (polls, media, content warnings on Mastodon).
Examples
- "Announce v2.0 everywhere":
list_accounts, draft under 280 chars, show it, thencreate_postto all connected networks. - "Queue these five tips for next week, I want to check them first": five
queue_postcalls withneeds_approval: true. - "Thread this blog post on Bluesky and Mastodon tomorrow at 9am ET": split into segments under 300 graphemes,
schedule_postwithsegmentsandscheduled_for.
