prepare_post
shallowpro.aicut/aicut · Verify this server
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, and `succeeded` is not that. An episode reports `succeeded` while its `story.stage` is still `ready_to_render`, where the only file it has is the raw stitched scene preview - no captions, no music, no title card. The post uses the episode's latest RENDER, so an episode that has not rendered is REFUSED here (409 `episode_not_rendered`): call `render_story_video`, wait for `story.stage: "rendered"`, then prepare. Do not read `succeeded` on an episode and post it. IF THE USER IS LOOKING AT A RENDERED CARD, DO NOT ASK THEM TO CONFIRM IN CHAT. In claude.ai, Claude Desktop or the mobile apps, call `review_post` with the id this returns and then STOP - it opens a card showing the actual video, the account it is going to, and the caption, visibility and disclosure controls, and the person confirms there. Reciting `account_limits` at them and asking 'public or friends-only?' is the thing that card replaces. WHY IT IS TWO STEPS: on TikTok this call asks the platform what the user's own account currently allows and returns it as `account_limits` - which privacy levels that account may use, and whether it has comments, duet or stitch switched 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, and `account_limits` says so (`source: aicut_api_limits`) - do not present it as what the channel allows. FIELDS ARE PER PLATFORM and a field belonging to another one is refused, not ignored. TikTok: `privacy_level` (required) plus the interaction and disclosure switches. YouTube: `title` (required) and `privacy_level` (required, one of public/unlisted/private), optional `tags` and `category_id` - and `caption` is the DESCRIPTION, up to 5000 characters. Instagram: `caption` only. The caption is sent exactly as given - it is refused, never trimmed. On TikTok `privacy_level` must be one the account allows; `publish_post` refuses one it does not rather than quietly posting at a different visibility. `is_your_brand` and `is_branded_content` are TikTok's commercial-disclosure declarations (promoting the user's own business; a paid partnership). Both default to false. Only set one if the USER told you to - a disclosure they did not make must not be sent for them. `schedule_at` stages a post for later (ISO-8601, at least 10 minutes ahead, at most a year). It is only an intent here - `publish_post` is what commits it, and that is where a full window can refuse it. ASK THE USER FOR A TIME rather than inventing one, and tell them what scheduling means on their platform: on TikTok and Instagram the post waits in aicut, on YouTube the video is uploaded immediately as private and YouTube publishes it at that time. You can only post videos this aicut account generated, to a social account this same user has connected. The video is named by its aicut id and the file is resolved on the server - there is no way to post a video from a URL, and asking for one is not a limitation to work around. REFUSALS you act on: 403 `insufficient_scope` = THE USER'S CONNECTION CANNOT POST, and this is the common one. Publishing needs the `social:publish` permission, which a connection approved before aicut added it never carries, so a connection that generates videos perfectly well can still be refused here. It is not an outage, not a bad `video_id` or `account_id`, and not something a retry, a different account or a different video fixes. Tell the user, in these terms: aicut can post, but this connection was never given permission to; they disconnect aicut at https://www.aicut.pro/account/settings#connections, connect it again in the app they are using, and approve "Post your videos to your connected social accounts" on the aicut consent screen. Say that disconnecting stops the connection at once, so generating will not work either until they have reconnected - it is a minute of downtime, not a background task. Then STOP; nothing here works again until they have done it. OUTPUT: this returns JSON for you to read. When you report back to the user, give them the media URL plus a one-line summary. Do not paste the raw JSON, job ids, or internal field names into the conversation.
1 trials · measured 27 days ago
prepare_post scores 100.0/100 on Vouch's measured behaviour index, from 1 real invocation trials against pro.aicut/aicut, measured 11 Sept 2026 under methodology v0.2.0. Every measured component scored 100.
Component breakdown
| Component | Weight | Value |
|---|---|---|
| Reliability | 35% | not applicable |
| Schema integrity | 25% | 100.0 |
| Failure behaviour | 15% | not applicable |
| Latency | 15% | not applicable |
| Concurrency | 10% | not applicable |
Tool details
- Transport
- remote
- Credential class
- gated
- Input schema
- not declared
- Output schema
- not declared
- Side-effect classification
- unclassified
Score history
| Day | Score | Tier | Methodology |
|---|---|---|---|
| 2026-09-11 | 100.0 | shallow | v0.2.0 |
Probe evidence
| Probe | Outcomes |
|---|---|
| schema_integrity | pass: 1 |
Raw request/response logs are not archived yet — the outcome counts above are drawn directly from every recorded trial.
Embed this score
Available for every tool, scored or not — not a verification perk. Always links back to this page.
[](https://vouch.tools/tools/99a8d24b-2828-4f63-93c7-c0e1f1791228)