# Octopost [Health: Active]

**Category:** 🌐 Social Media  
**Repository:** https://octopost.ink/  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/octopost

## Description
Hosted MCP server for social posting. Your agent can create, schedule and queue posts to X, Bluesky, LinkedIn, Threads, Mastodon, Instagram, Facebook and more, with an approval queue so you review before anything publishes. API key auth. Plans from $29/mo.

## Tools
Capabilities this server exposes over MCP:

- **create_post** — Create and publish a post to one or more social media platforms immediately.

Octopost handles formatting, auth and uploads. Which networks work today is in the server instructions (and get_guide topic "platforms").

PLATFORM CONTENT LIMITS (checked before anything is published: if the text or any segment is too long for one of the networks, the call fails with the count and nothing goes out):
- Twitter/X: 280 chars (URLs count as 23 chars). Can't mix video with images.
- Bluesky: 300 graphemes. Octopost auto-generates link facets.
- LinkedIn: 3,000 chars.
- Threads: 500 chars.
- Mastodon: ~500 chars (varies by server; checked when publishing).

TIPS:
- If a platform fails, the post still succeeds on other platforms — check the response for per-platform results.
- A slow publish (Threads with media can take minutes) answers after ~20 s with status "publishing" and carries on: check it with get_post. Pass an idempotency_key; if a call times out with no postId, retry with the same key (you get the original post, never a second).
- Use cross_link_enabled + primary_platform to post to one platform first, then share the link on others.
- Polls are supported on Twitter (2-4 options, 5 min to 7 day duration) and Mastodon.

APPROVAL: if the account requires approval for every post (an owner setting), create_post saves the post as pending_approval instead of publishing and the result says so. Tell the user to approve it from the email Octopost sends; don't approve it yourself. To ask for a review yourself, use queue_post or schedule_post with needs_approval=true.
- **schedule_post** — Schedule a post for future publishing. The Octopost scheduler will publish it at the specified time automatically.

The post is saved as a draft until the scheduled time, then published to all specified platforms.

Same platform limits and same options as create_post, which documents them in full. Options are saved with the post and applied when it publishes.

Set needs_approval=true to hold it for a person to approve first (same flow as queue_post).
- **list_posts** — List posts, newest first: content preview, platforms, status, scheduled time and each network's link. Filter with status. Results are paged: when next_cursor is set, call again with cursor = next_cursor for the next page. Call get_post for one post's full details.
- **list_accounts** — List all connected social media accounts. ALWAYS call this before create_post to see which platforms the user has connected.

Returns each account's platform, handle, id, and whether it is the platform's default (used when a post names no account). A platform can have several accounts: pass "accounts" to create_post / queue_post / schedule_post to pick one. Only connected platforms can be posted to. Not every network is live yet: check the network status in the server instructions before promising a post.
- **get_post** — Get everything about one post: status, full text, thread segments, per-network variants, media (with alt text), queue status and position, which account posts on each network, per-network results with links, and the last error. Use it to check whether a post went out everywhere.
- **get_guide** — Get a comprehensive guide on using Octopost effectively. Returns platform limits, best practices, content tips, and feature documentation. Call this if you need help with:
- What platforms are supported and their limits
- How to format content for cross-platform posting
- Media/image/video requirements per platform
- Scheduling and content calendar tips
- How threads work on supported platforms
- **update_post** — Update a post's content, platforms, scheduled time, attached media, or thread reply segments. Only works on unpublished posts (drafts, scheduled, queued, and pending).

Any field you omit is preserved as-is. Pass `media_urls: []` to clear all attached media; pass new media_urls or video_url to replace it. For already-published posts, you'll need to delete and re-create.
- **delete_post** — Delete a post from Octopost. For published posts, also attempts to delete from each platform via their APIs.

Platform deletion support:
- Twitter: Full API deletion supported.
- Bluesky: Full API deletion supported (deleteRecord).
- LinkedIn: Full API deletion supported.
- Mastodon: Full API deletion supported.
- Threads: API deletion not supported — returns the post URL so the user can delete manually.

The post is ALWAYS removed from Octopost's database regardless of platform deletion results.
- **retry_failed** — Retry publishing to platforms that failed on a previous post. Only retries platforms that had errors — already-successful platforms are not re-published.

Call get_post first to see which platforms failed and why. You can retry all failed platforms or specify specific ones.

Common failure reasons: expired tokens (user needs to re-connect), rate limits (wait and retry), network errors (usually transient).
- **cancel_scheduled** — Cancel a scheduled post, converting it to a draft. The post is kept in Octopost but will NOT be published at the scheduled time.

Give it a new time later with reschedule_post. To publish it right away instead, call publish_draft.
- **reschedule_post** — Change the scheduled time of a post. The new time must be in the future. Works on both scheduled posts and drafts (effectively scheduling a draft).

The post will be published at the new time by Octopost's scheduler (checks every 60 seconds).
- **list_presets** — List publishing presets: saved platform combinations (system presets plus the user's own) with their cross-link settings. The create tools take platforms, not a preset name, so pass a preset's `platforms` (and cross-link fields) to create_post / schedule_post / queue_post. Platforms Octopost doesn't support are left out of the list, and presets with none left are skipped.
- **queue_post** — Add a post to your publishing queue. It will be published automatically during your active hours. Posts require platforms to be specified.

HUMAN APPROVAL: set needs_approval=true when a person should review the post first (anything the user hasn't seen word for word). The post is held as "pending" and nothing is published until a person approves it. Octopost emails the account owner and any approvers one-tap Approve / Reject / Edit links (batched, within about 5 minutes) and shows it in the dashboard. After queueing, tell the user: "It's waiting for your approval; check your email." You can't approve your own posts. The account owner can also set auto-approve rules, in which case the result says the post was auto-approved.

The queue publishes posts in FIFO order (oldest first) at regular intervals during active hours (default: every 4 hours, 9am-8pm). Great for evergreen content and maintaining a regular posting cadence.

Same platform limits and same options as create_post, which documents them in full.
- **approve_queued_post** — Approve a post that is waiting for approval. Approval is meant for a person: by default this tool refuses, and the post has to be approved from the email Octopost sent or the dashboard. It only works when the account owner turned on "Let agents approve posts made by a different agent" in Settings, and never for a post your own key or connection made. Only call it when the user explicitly asked you to approve that specific post. If it refuses, tell the user the post is waiting for them and to check their email. Once approved, a queue post publishes in its queue slot and a scheduled post at its time.
- **get_queue_status** — See your queue: how many posts are ready, how many need approval, when the next one publishes, and your queue settings.
- **update_queue_settings** — Change your queue settings: how often to post, active hours, timezone, or pause/resume the queue.

Defaults: publish every 4 hours, active 9am-8pm, timezone America/New_York. The queue only publishes during active hours. The exact minute within each interval is randomized so posts look natural.
- **get_analytics** — How published posts did: likes, reposts, replies, quotes and (on X) views.

Two modes:
- With post_id: that post's numbers per network, plus snapshots taken about 1 hour, 24 hours and 7 days after it went live.
- Without post_id: a summary of posts published between from and to (default: the last 30 days): totals per network and the top posts by engagement (likes + reposts + replies + quotes).

Which networks report what: X gives likes, reposts, replies, quotes, bookmarks and views. Bluesky gives likes, reposts, replies and quotes. Mastodon gives likes (favourites), reposts (boosts) and replies. Threads and LinkedIn are not available yet. Octopost reads the numbers on its own for 30 days after a post goes live, so they can be a few hours old; each network's result says when it was read. Pass refresh: true to read fresh numbers first (allowed once every 10 minutes).
- **publish_draft** — Publish a post that's already saved in Octopost right now: a draft, a scheduled post (it goes out now instead of at its time) or a queued post (it skips the queue). Uses the post's own text, networks, media and thread segments. Returns per-network results like create_post (or status "publishing" if slow; see get_post).

Posts waiting for human approval (pending) can't be published this way; a person approves them first. For a post that already went out and failed on some networks, use retry_failed.
- **preview_post** — Dry run: what would happen if you sent this post, without saving or posting anything. Returns ok (would it go out), problems (fix these first) and warnings, character counts per network and part the way each network counts (X: links 23, emoji/CJK 2; Bluesky: graphemes), X units it would use vs what's left this month, media checks per network (counts, video, missing alt text), which connected account each network would post as, and guardrails (this connection's daily limit, same text posted recently, blocked terms that would hold it for approval).

Takes the same arguments as create_post. Call it before a create_post / schedule_post / queue_post you're unsure about.
- **get_usage** — How much of the plan is used: X post units this month (used, limit, remaining, when it resets; a post with a link costs 13 units, a plain post 1), and connected accounts vs the plan's limit. A null limit means unlimited. Check it before a batch of X posts so you don't hit the cap part way.
- **reject_queued_post** — Take a queued post out of the queue and turn it back into a draft, with an optional note saying why (shown with the post). Nothing is published or deleted; edit it with update_post and queue it again, or delete it with delete_post. A post waiting for approval (pending) is for a person to approve or reject, so this refuses it; to withdraw a post you made, delete it.
- **reorder_queue** — Set the order queued posts publish in. The posts you list go first, in that order; queued posts you leave out keep their current order after them. Pending-approval posts can be listed too: their place applies once approved. Call list_posts with status "queued" to see the queue.
- **split_thread** — Split long text into thread parts that fit every network you name, breaking at paragraphs, then sentences, then words. Counts the way each network does (X: links are 23, emoji 2; Bluesky: graphemes). Nothing is saved or posted. Pass the result straight to create_post / schedule_post / queue_post as content + segments.
- **create_upload** — Attach a file from your machine (screenshot, photo, video): this returns a one-time upload_url, good for 15 minutes and one file. Send the raw bytes to it, e.g. curl -T ./shot.png "<upload_url>" (PUT; no auth header needed). The response has media_url: pass it in media_urls (as the URL, or {url, alt} with alt text) on create_post / schedule_post / queue_post / update_post.

Accepts JPEG, PNG, GIF, WebP, MP4, MOV, WebM (checked from the file's bytes). Size limit depends on the plan (max_bytes in the response). Files already on a public URL don't need this: pass the URL directly.
- **list_feeds** — List the RSS/Atom feeds this account turns into posts: each feed's networks, template, mode ("hold" = every new item waits for a person to approve it, "queue" = new items join the posting queue), how often it is checked, when it was last checked, any error, and how many items it has seen and posted.
- **add_feed** — Turn an RSS or Atom feed (a blog, a newsletter, a changelog) into posts. Octopost reads the feed right away (a site address works too if the page links its feed) and then checks it every 30 minutes by default. Each new item becomes a post from the template.

The first check posts only the feed's latest item, so adding a feed never floods the account. By default (mode "hold") every new item waits for a person to approve it: Octopost emails the owner Approve / Reject / Edit links, so tell the user to check their email. With mode "queue" new items join the posting queue and publish in queue slots. A feed makes at most 10 posts a day; the same text to the same network within 7 days is skipped; a blocked term holds the post. Posts are shortened to fit each network (the excerpt first, then the title; the link is kept whole).
- **remove_feed** — Stop turning a feed into posts and forget which items it has seen. Posts the feed already made (published, queued or waiting for approval) are kept; delete those separately with delete_post if needed. Get the feed id from list_feeds.
- **set_evergreen** — Mark a post evergreen (or not). When the posting queue runs empty, Octopost posts an evergreen post again in the empty queue slot, picking the one that has rested longest. The same post goes out at most once every 30 days, and never while the same text is on (or going to) the same network within those 30 days, so X's rule against repeating a recent post is respected. A draft or scheduled post can be marked now and becomes eligible once it has been published. Only works while the queue is on (update_queue_settings).

## Claude Desktop Quick Installation
No confirmed install details yet, so no config is published. Follow the setup steps in the repository above.

## Documentation

## What Octopost MCP server does

The Octopost MCP server connects AI agents with a hosted social posting service. It supports creating, scheduling, and queueing posts for multiple networks, including X, Bluesky, LinkedIn, Threads, Mastodon, Instagram, and Facebook. The service is listed in the 🌐 Social Media category and is intended for workflows where an agent prepares or manages content across more than one platform.

A review step is built into the publishing workflow. Posts can remain in an approval queue so a person can check them before anything is published. This makes the service relevant for teams that want agent-assisted content preparation while keeping final publishing under human control.

## How it works

An agent connects to the hosted Octopost service through MCP and authenticates with an API key. It can then use Octopost to create posts, arrange them for later publication, or place them in a queue. The approval queue provides an intermediate state between preparing content and publishing it.

The available description does not specify the exact MCP transport, request schemas, tool names, or platform-specific differences. Developers should consult the service documentation for those implementation details before building a client workflow.

## Setup and configuration

Octopost uses API key authentication. Because the service is hosted, setup details should be obtained from Octopost rather than inferred from a local repository.

Plans are described as starting at $29 per month.

## Tools and capabilities

The Octopost MCP server is described as supporting these social publishing actions:

- Create posts for supported social networks.
- Schedule posts for later publication.
- Queue posts for review or publishing.
- Hold posts in an approval queue before they go live.
- Work with X, Bluesky, LinkedIn, Threads, Mastodon, Instagram, Facebook, and additional supported networks.

Platform coverage beyond the named networks should be verified with the provider.

## Limitations and notes

API key authentication is required, and the service has paid plans starting at $29 per month. The description does not confirm analytics, media handling, editing after scheduling, account-management features, rate limits, or supported MCP clients. Those capabilities should not be assumed when evaluating the service for a production workflow.

_Full upstream README: https://allmcps.com/mcp/octopost/readme_

