Docs

MCP Server

MCP Tools

MCP Tools

MCP Tools

The MCP server exposes nineteen tools. All operate on the account tied to your API key.

Removing a post is reversible — cancel_post and delete_post soft-delete, and restore_post brings it back. Publishing is not: publish_now and retry_post send immediately.

schedule_post

Create a post for one or more connected platforms.

when is required and has no default — omitting it is an error, not an instruction to publish. Publishing is irreversible, so it is never what you get by leaving a field out.

Parameter Type Required Notes
content string yes Post text, ≤ 10,000 characters.
when string yes "draft" (saves only — publishes nothing, exempt from the monthly limit), "now" (immediate, irreversible), "next_slot", or a future ISO-8601 timestamp.
platforms string[] yes One or more of x, linkedin, linkedin_page, facebook, instagram, pinterest, youtube, tiktok, bluesky, mastodon.
media_ids integer[] no Media library ids to attach.
scheduled_at string no Deprecated, accepted for one more release — same as passing the timestamp in when, and ignored when when is given.

Returns the new post_id, status, platforms, and scheduled_at.

Targeting can also be done by account_ids or group_ids instead of platforms — the three are mutually exclusive. Per-account caption overrides go in platform_content, and platform-native fields in platform_options.

update_post

Change a draft or scheduled post: its content, schedule, target channels, attached media, per-account captions, or platform options. Only the fields you pass are changed.

Parameter Type Required Notes
post_id integer yes Id of the draft or scheduled post.
content string no New shared text.
scheduled_at string no New publish time, ISO 8601.
account_ids integer[] no Retarget. Mutually exclusive with group_ids and platforms.
media_ids integer[] no Replace the attached media.
platform_content object[] no Per-account caption overrides.
platform_options object[] no Per-account native settings, e.g. YouTube {title, privacy}.

get_post

Fetch one post: its status, derived outcome, and per-channel publish result including the error message for any channel that failed. Also finds cancelled and deleted posts, which come back with a deleted_at and an outcome of deleted.

Parameter Type Required Notes
post_id integer yes Id of the post.

get_accounts

List all connected social accounts and their status. No parameters. Returns each account's id, platform, account_name, username, and is_active.

get_groups

List your channel groups and the account ids each contains. No parameters. Use a group_id from here to target a whole group with schedule_post or update_post.

get_capabilities

The MCP twin of GET /api/capabilities, for agents that only have this server configured. Returns which platforms are live for you, the exact platform_options schema each accepts (key, type, allowed values, default), per-platform media rules, and upload size limits.

Parameter Type Required Notes
platform string no Limit to one platform. Omit for everything available.

Call this before passing platform_options. An option key outside the schema is dropped silently and the call still returns success — so a guessed key publishes the default instead of what you asked for. A platform with no native options comes back as an explicit {}, never a missing key.

get_queue_slots

The next open slots in the posting schedule, so you can offer a human real times ("Tue 9:00 AM or Wed 1:00 PM?") before writing anything. Read-only — it reserves nothing. Pair it with when: "next_slot" on schedule_post.

Parameter Type Required Notes
count integer no How many slots to return.

list_posts

List posts, newest-scheduled first. Defaults to status="scheduled" — the upcoming queue.

Parameter Type Required Notes
status string no scheduled (default), draft, published, failed, or all.
limit integer no Default 10, max 50.

Use status="draft" to find posts created with schedule_post when="draft" — they do not appear in the default queue view.

list_scheduled

List upcoming scheduled posts. list_posts supersedes this and can filter by status.

Parameter Type Required Notes
limit integer no Default 10, max 50.

publish_now

Publish an existing draft, scheduled or failed post immediately. Returns straight away — publishing runs in the background, so call get_post afterwards for the per-channel outcome.

Parameter Type Required Notes
post_id integer yes Id of a draft, scheduled or failed post.

retry_post

Retry only the channels that failed, leaving channels that already published untouched. Works on a partial outcome too — a post can be published overall while one channel failed.

Parameter Type Required Notes
post_id integer yes Id of a post with one or more failures.

duplicate_post

Copy a post's content, first comment, channels and media into a new draft. Nothing is scheduled or sent. Channels disconnected since the original was written are dropped from the copy and reported in dropped_account_ids.

Parameter Type Required Notes
post_id integer yes Id of the source.

cancel_post

Cancel a scheduled post before it publishes. Only posts in the scheduled state can be cancelled — use delete_post for any other state. Soft delete: recoverable with restore_post.

Parameter Type Required Notes
post_id integer yes Id of the scheduled post.

delete_post

Delete a post in any state. Soft delete, so restore_post undoes it, and a deleted post never publishes. Deleting a post that already published does not remove it from the social platform — only from Schedule & Chill.

Parameter Type Required Notes
post_id integer yes Id of the post.

restore_post

Restore a post removed by delete_post or cancel_post. A post whose scheduled time has already passed is restored as a draft rather than re-armed, so restoring never publishes anything by itself.

Parameter Type Required Notes
post_id integer yes Id of the deleted post.

get_stats

Return posting statistics: total, published, scheduled, draft, and failed post counts, plus media and connected-account totals. No parameters.

get_analytics

Engagement analytics for published posts over a date window: reach, impressions, likes/comments/shares, engagement rate, per-channel and per-platform breakdowns, a daily timeline, and top posts. Defaults to the last 7 days in your own timezone.

Parameter Type Required Notes
from string no YYYY-MM-DD in your timezone. Default 7 days ago.
to string no YYYY-MM-DD in your timezone. Default today.
account_ids integer[] no Limit to these channels. Omit for all, including disconnected.
group_id integer no Limit to a channel group. Ignored when account_ids is given.
top_posts_limit integer no Default 5, max 20.

Metrics are collected on a schedule after a post goes out, so a post published minutes ago has none yet. When that happens the response carries a note saying so, rather than letting a fresh post read as zero engagement.

browse_media

Search and browse the media library. Returns media items with ids you can attach to schedule_post.

Parameter Type Required Notes
search string no Match filename.
type string no image or video.
folder string no Filter by folder.
limit integer no Default 10, max 50.

upload_media

Upload a media file by downloading it from a public URL. Returns a media_id to attach to posts.

Parameter Type Required Notes
url string yes Public URL of the image or video.
filename string yes Original filename with extension, e.g. launch.png.
folder string no Folder to organize the media.
tags string[] no Optional tags.