Skip to main content
Glama

Prepare a social post

prepare_post

Stages a post of one of this account's finished videos to one of its connected TikTok, YouTube or Instagram accounts and returns the post id publish_post takes. NOTHING IS PUBLISHED BY THIS CALL. WHEN: after list_social_accounts gave you an account id and you have a finished video's id (list_videos / get_video, status succeeded). AN AI VIDEO STORY EPISODE MUST BE RENDERED FIRST: it reports succeeded at story.stage: "ready_to_render", where its only file is the raw stitched preview, and an unrendered episode is REFUSED (409 episode_not_rendered): call render_story_video, wait for story.stage: "rendered", then prepare. IF THE USER IS LOOKING AT A RENDERED CARD, DO NOT ASK THEM TO CONFIRM IN CHAT: call review_post with the id this returns and STOP. The card shows the actual video, the destination account and the caption, visibility and disclosure controls, and the person confirms there; reciting account_limits and asking 'public or friends-only?' is what it replaces. WHY TWO STEPS: on TikTok this call asks the platform what the user's own account allows and returns it as account_limits (the privacy levels it may use; whether comments, duet or stitch are off): show the user those options, get their choice, and only then call publish_post. A prepared post expires after 30 minutes because those limits can change. On YouTube and Instagram nothing is asked of the platform (account_limits says source: aicut_api_limits): do not present it as what the channel allows. FIELDS ARE PER PLATFORM (each field says which; another platform's is refused). Instagram: trial_graduation_strategy makes a trial reel. The caption is sent exactly as given (refused, never trimmed). is_your_brand and is_branded_content are TikTok's commercial-disclosure declarations (the user's own business; a paid partnership). Both default to false: set one only if the USER told you to, because a disclosure they did not make must not be sent for them. schedule_at stages a post for later (ISO-8601, 10 minutes to a year ahead); publish_post commits it. ASK THE USER FOR A TIME rather than inventing one, and say what scheduling means on their platform (the account's schedule_custody). You can only post a video on this aicut account (by id, never a url: import_video brings an outside clip in), to a social account this same user connected. REFUSALS you act on: 403 insufficient_scope = THE USER'S CONNECTION CANNOT POST (it was approved before aicut added the social:publish permission), so a connection that generates videos fine can still be refused here. It is not an outage and not a bad video_id or account_id; a retry, another account or another video cannot fix it. Tell the user to disconnect aicut at https://www.aicut.pro/account/settings#connections, connect it again and approve "Post your videos to your connected social accounts" (generating stops working until they have reconnected), then STOP.

Input Schema

NameRequiredDescriptionDefault
tagsNoYouTube only: up to 30 tags, 500 characters in total.
titleNoYouTube only, required: the title, up to 100 characters.
captionYesThe post text exactly as given: up to 2200 characters; on YouTube the DESCRIPTION, up to 5000.
platformYesThe platform to post to; it must match the `platform` of the account id (the platforms number accounts independently).
video_idYesThe id of a FINISHED (episode: RENDERED) video on this account, or an `import_video` id.
account_idYesThe connected account's `id` from `list_social_accounts`.
allow_duetNoTikTok only. Default true.
category_idNoYouTube only: the category id. Default 24 (Entertainment).
schedule_atNoISO-8601. Omit to publish when `publish_post` is called.
allow_stitchNoTikTok only. Default true.
is_your_brandNoTikTok disclosure: the user's own business. Default false; set only if the user said so.
privacy_levelNoTikTok: one of `account_limits.privacy_level_options` (PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, SELF_ONLY): ask the user. YouTube: public, unlisted or private. Required on both.
allow_commentsNoTikTok only. Default true.
is_branded_contentNoTikTok disclosure: a paid partnership. Default false; set only if the user said so.
trial_graduation_strategyNoInstagram only: post a trial reel, shown to non-followers first. SS_PERFORMANCE: shared to followers if it performs well; MANUAL: a trial until shared in the Instagram app. Set only if the user asked for a trial or test reel.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes far beyond the annotations (which only say non-read-only, non-destructive, non-idempotent): discloses the 30-minute expiry and why, the per-platform `account_limits` behavior (TikTok queries the platform vs YouTube/Instagram returning `aicut_api_limits`), and the actionable 403 `insufficient_scope` and 409 `episode_not_rendered` refusals with remediation. This is the kind of behavioral context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the most important fact (nothing is published) and the routing rule before the detail, and nearly every sentence carries decision-relevant information. It is still a dense single-paragraph wall with capitalized emphasis throughout, and a few lines duplicate the schema, so it is efficient but not maximally tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 15-parameter, multi-platform staging tool with no output schema, the description covers every decision point an agent needs: prerequisites, render gating, platform-specific fields, scheduling semantics, and actionable error handling. Nothing essential to calling it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema is already detailed, but the description adds real semantics beyond it: fields are per-platform and a foreign platform's field is refused, the caption is sent exactly as given (never trimmed), and `schedule_at` only stages while `publish_post` commits. Some overlap exists (the disclosure-defaults guidance largely restates the schema), which keeps it from a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (stages/prepares) and resource (a post of a finished video to a connected social account), and immediately distinguishes itself from the sibling that actually publishes (`publish_post`). The "NOTHING IS PUBLISHED BY THIS CALL" line removes any ambiguity about what the tool does versus its downstream sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit WHEN clause names the prerequisite tools (`list_social_accounts`, `list_videos`/`get_video` with `status: succeeded`) and the render prerequisite (`render_story_video` then wait for `story.stage: rendered`). It also names the alternative path — if the user is on a rendered card, call `review_post` instead and stop — which is exactly the sibling routing an agent needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Directories

Listed in ChatGPT · aicut

Last observed