Content Tools
Library media and Instagram posts, published only after the person approves.
Every tool here except confirm_post takes workspaceId. Publishing, changing and cancelling take two steps: prepare_post, prepare_post_update or cancel_scheduled_post returns a preview, and confirm_post runs it after the person approves. A view-only seat can read but not prepare, publish, change or cancel. A demo workspace answers so in the preview. See Publish an Instagram post.
list_media
Images and videos in the workspace Library that a post can use, newest first: mediaId, kind, title, description and tags. Posts can only use these; new media is uploaded in Betterness One.
| Parameter | Notes |
|---|---|
kind | image or video |
q | Search in titles, descriptions and tags |
limit | 1 to 50 (default 20) |
offset | Skip this many, for the next page (default 0) |
Permission: content:draft
list_posts
The workspace's Instagram posts made with Quick Create, newest scheduled first: postId, status (scheduled, publishing, published, failed, cancelled), type, caption, time, account, permalink once published, and the error when it failed.
| Parameter | Notes |
|---|---|
status | Only this status |
limit | 1 to 50 (default 20) |
from, to | Scheduled in this period: dates (YYYY-MM-DD, UTC, to inclusive) or ISO 8601 times |
postIds | Only these posts, up to 50 |
Permission: content:draft
get_post
One post in full, as the Calendar's post drawer shows it: status, whether it can still change (editable: scheduled or failed), type, the whole caption, its media (Library mediaIds when it was made through the MCP), cover, link, collaborators, account, time and time zone, permalink, and the error when it failed.
| Parameter | Notes |
|---|---|
postId | Required. From list_posts or get_calendar |
Permission: content:draft
prepare_post
Prepares an Instagram post (feed, story or reel) from Library media, to publish now or later. Nothing is posted. It checks the media, account and post as Quick Create does and returns a preview with a pendingId. Stories and reels take one media; a reel needs a video.
| Parameter | Notes |
|---|---|
mediaIds | Required. 1 to 10 mediaIds from list_media, in order. Several make a carousel. |
caption | Up to 2,200 characters |
postType | feed (default), story or reel |
scheduledAt | ISO 8601 with an offset, e.g. 2026-11-02T18:00:00-03:00. Omit to publish right after confirming. |
timezone | IANA time zone the time is meant in. Default: the time zone in your settings. |
coverMediaId | A Library image as the cover of a reel or a feed video |
link | A link (http or https) kept with the post, as in the composer |
collaborators | Up to 3 Instagram usernames to invite |
accountId | The Instagram account id, only when the workspace has more than one |
Permission: content:publish
prepare_post_update
Prepares a change to a scheduled or failed post: edit it, reschedule it, or retry a failed one. Give only what changes; the rest stays. Nothing changes yet. It runs the same checks as prepare_post and returns the post before and after with a pendingId. A failed post whose time has passed is retried right after confirming, unless you give a new time. If the post changes in Betterness One before you confirm, the change is refused: prepare it again.
| Parameter | Notes |
|---|---|
postId | Required. From list_posts, get_post or get_calendar |
mediaIds | New media, 1 to 10 mediaIds, in order |
caption | New caption |
postType | feed, story or reel |
scheduledAt | New time, ISO 8601 with an offset |
publishNow | true to publish right after confirming |
timezone | IANA time zone |
coverMediaId, removeCover | A new cover, or true to remove it |
link, removeLink | A new link, or true to remove it |
collaborators | Up to 3 usernames; an empty list removes them |
Permission: content:publish
cancel_scheduled_post
Prepares cancelling a scheduled or failed post before it is published. Nothing is cancelled yet: it returns the post with a pendingId for confirm_post. A post already publishing or published cannot be cancelled.
| Parameter | Notes |
|---|---|
postId | Required. From list_posts, get_post or get_calendar |
Permission: content:publish
confirm_post
Runs what the person approved: publishes or schedules the post from prepare_post, applies the change from prepare_post_update, or cancels the post from cancel_scheduled_post. Call it only after the person saw the preview and said yes. The same pendingId again returns the first result and never acts twice. A pendingId lasts 10 minutes and works only for the connection or key that prepared it.
| Parameter | Notes |
|---|---|
pendingId | Required. From the approved preview |
Permission: content:publish

