All servers · Audio & speech · Video
aicut
pro.aicut/aicut · v1.3.0
Has write/delete toolsInstruction-like text in descriptionsTools changed (7 days)
Measured by MCP Station
| Last check | Reachable |
|---|---|
| Checked at | — |
| Check success 7 / 30 days | — |
| First-try success 30 days | — |
| Median response | — |
| Lookups 30 days | — |
| Authentication | No auth |
| MCP version | 2025-06-18 |
| Rank score | — |
| Declared risk | Has destructive tools (destructiveHint) |
| Capabilities declared | prompts, resources, tools |
| Tool definitions | 61 tools · with description 100% · input schema is an object 100% · read/destructive hints 100% |
Instruction-like text was found in publish_post. This is a pattern match, not a verdict. What we look for
Description written by the publisher, not verified
Generate AI videos, images, audio and staged AI Video Story episodes, and publish them to social.
Connect
streamable-http · https://mcp.aicut.pro/mcp
claude mcp add --transport http aicut https://mcp.aicut.pro/mcp{
"mcpServers": {
"aicut": {
"url": "https://mcp.aicut.pro/mcp"
}
}
}Tools as reported by the server
get_balanceReturns the signed-in aicut account's token balance and plan tier. WHEN: before the first priced ask of a session, when the user asks what they have left, or after a generation fails for lack of tokens. `top_up_url` (the balance cannot pay for the cheapest generation, or a quote says `sufficient_ballist_modelsReturns the AI video, image and audio models this API can generate with: each model's exact parameters (names, allowed values, limits, defaults), the media inputs it takes and its pricing. WHEN: call this, NARROWED and never as the whole catalog, before the first `generate_video`, `generate_image` oget_recipeReturns a step-by-step recipe as text: `story-episode` (an AI Video Story episode), `starter-video`, `starter-image`, `starter-audio` (a first generation), `fake-text` and `image-story` (write the script), `niche-run` (a niche from `list_niches`), `talking-avatar` (a picture speaks a script), `motiogenerate_videowrite/deleteStarts an AI video on the signed-in account, opens the aicut card and returns the job id at once; it does NOT wait. WHEN: the user asks for a video. Call `list_models` first this session (an unpublished combination is rejected); see `get_recipe` `starter-video`. CONSENT: a real person's picture onlyget_videoReturns the current state of one video generation: a SINGLE, IMMEDIATE read that waits for nothing. WHEN: only when you need one job's raw fields now (what it cost, whether it was refunded, why it failed). It is not how you wait (`wait_for_generation` is) and not how you show a video (the create alrdelete_videowrite/deleteDeletes ONE video from the signed-in account's library: any of its own videos, in any state (finished, failed or still generating), exactly like the delete button in the web app. WHEN: the user asks to remove a video or tidy up after a failed one (a story episode whose writer failed, `story.stage: "list_videosReturns the signed-in account's videos, newest first, one page at a time (pass `cursor` from the previous `next_cursor` while `has_more` is true). WHEN: the user asks what they have made, or you need a video from an earlier session. It is the whole library, including videos made in the web app and wupscale_imagewrite/deleteIncreases an existing image's resolution and returns the new job's id immediately (it does NOT wait). Same image, more pixels. WHEN: the user asks to upscale, enhance, sharpen or increase the resolution of a picture they have, including one an earlier `generate_image` returned. It is not how you chaedit_videowrite/deleteThe SAME clip with the prompt's changes applied; camera, timing and motion stay. Returns the new job's id. WHEN: restyle or recast footage ('make it snow', 'put them in suits'). Read `get_recipe` `restyle` first. THE CARD: this call already opened the aicut card: do not call `show_generation` for thlist_reshot_templatesFree. Reshot gallery clips: who is where, when. `id` is a `reshot_video` `template`.reshot_videowrite/deleteRemakes a clip with the user's subject. Read `get_recipe` `reshot` first. CONSENT: a real person's picture only with their permission, never a public figure or celebrity. THE CARD: this call already opened the aicut card: do not call `show_generation` for this job. WAIT: `wait_for_generation` (thisupscale_videowrite/deleteIncreases an existing video's resolution (2x, 3x or 4x) and returns the new job's id immediately. It does NOT wait for the result and does not change the content: same shot, more pixels. WHEN: the user asks to upscale, enhance, sharpen or increase the resolution of a video they already have. It is nextend_videowrite/deleteGenerates a NEW segment that continues an existing video from its final frame and returns the new job's id immediately; the result is the original clip with the new segment joined on. WHEN: the user asks to extend, continue or lengthen a video, or wants to see what happens next in a clip they have.motion_controlwrite/deleteTakes a picture of a character and a reference video and generates a video of THAT character performing the reference's motion (a dance, a walk, a gesture). Returns the new job's id immediately. WHEN: the user wants their character to dance, copy a move or perform a clip's motion. The clip suppliesgenerate_lipsyncwrite/deleteTakes a picture of a person and an audio file and generates a video of THAT person speaking or singing the audio, lip-synced. Returns the new job's id immediately; the result is exactly as long as the audio. WHEN: the user wants a talking avatar, a presenter or a voiceover on a face. The picture supupload_media_widgetOPENS A FILE PICKER IN THIS CONVERSATION: the user chooses videos or photos from their computer and they land on their aicut account for every tool. CALL IT IMMEDIATELY, WITHOUT ASKING ANYTHING FIRST, the moment the user refers to a video or image file on their machine ('upscale the clip in my Downlupload_mediaPuts a VIDEO OR IMAGE FILE FROM THE USER'S OWN MACHINE onto their aicut account so the generation tools can use it (every other tool takes a URL). It returns an upload target in two forms, a ready-to-run `curl_template` for you and a `browser_upload_url` for the user; then you call `confirm_upload`.list_uploadsRecent uploads (app and MCP), last used first: `url`, `kind`, size. Free. WHEN: the user answered after `upload_media_widget`, or means an earlier upload. A `link` (TikTok post): `import_link` it.show_uploadsA card of the user's recent uploads as a numbered grid. WHEN: they pick from earlier uploads. Say one line (answer by number) and stop; upload n is `uploads[n-1]`. Never draw them yourself. Free.import_linkTurns a TikTok link into a 3-30 s clip on the account and returns its `url`, which any video input takes. WHEN: the user gives a TikTok link as a clip to use. Free (one daily media allowance slot); up to 20 s.confirm_uploadChecks the file uploaded to an `upload_media` target and makes it usable. Returns the media `url` to pass to other tools, the file's size, its `kind` (`video` or `image`), its measured `width` and `height` and, for a video, `duration_seconds`. WHEN: right after the bytes moved (the curl printed a 2xgenerate_imagewrite/deleteGenerates an AI image on the signed-in aicut account and puts the aicut card in front of the user. It waits for the image server-side for as long as one request safely can (about 24 seconds), so it usually returns the finished image with its `url` directly. WHEN: the user asks for an image. Call `liget_imageReturns the current state of one image generation: a SINGLE, IMMEDIATE read that waits for nothing. WHEN: only when you need one job's raw fields now (what it cost, whether it was refunded, why it failed). It is not how you wait (`wait_for_generation` is) or show an image (`generate_image` already olist_imagesReturns the signed-in account's images, newest first, one page at a time (pass `cursor` from the previous `next_cursor` while `has_more` is true). WHEN: the user asks what they have made, or you need an image from an earlier session, for example to pass its `url` into `generate_video` as a start fragenerate_audiowrite/deleteStarts an audio generation on the signed-in aicut account (speech, music, a song with vocals or a sound effect, chosen by `model`) and returns its job id at once; it does NOT wait for the audio. WHEN: the user asks for one of those. Call `list_models` with `type: "audio"` first: each model takes DIFget_audioReturns the current state of one audio generation: a SINGLE, IMMEDIATE read that waits for nothing. WHEN: only when you need one job's raw fields now (what it cost, whether it was refunded, why it failed). It is not how you wait (`wait_for_generation` is) or show a clip (`generate_audio` already opelist_audioReturns the signed-in account's audio generations, newest first, one page at a time (pass `cursor` from the previous `next_cursor` while `has_more` is true). WHEN: the user asks what they have made, or you need a voice-over, track or sound effect from an earlier session. It is the account's top-levelist_voicesThe WHOLE voice catalogue: every voice aicut can speak with, across ElevenLabs (platform stock AND this account's cloned and custom voices) and OpenAI. Free, instant. EVERY VOICE ID COMES FROM HERE: `generate_audio`'s `voice`, `generate_fake_text_video`'s `voice_left` / `voice_right` and `generate_iwait_for_generationWaits up to 15 seconds for an aicut generation to reach a terminal state, WITHOUT opening a card, and returns the compact status. SEVERAL ITEMS: quote each, ask once with the total, start them all (images with `wait: false`, distinct `idempotency_key`s or none), then make ONE call with `ids` (1 to 6show_generationShows an EARLIER aicut generation to the user again, in the aicut card: the video, image or audio itself, with what it cost and when it was made. WHEN: the user asks to see something they already have (from earlier in this conversation, or found with `list_videos` / `list_images` / `list_audio`): thanalyze_videoStarts an AI analysis of an existing video and returns the new analysis's id immediately (it does NOT wait). It reads the video and describes it in detail (what happens, who is in it, the on-screen text, the pacing and cuts) as free-form text, plus the platform's own metadata (title, author, view coimage_to_promptReturns `prompt`: a text prompt that would generate an image like the given one (the web app's "copy prompt from image"); pass it to `generate_image`. Takes an image url, an `upload_media` url or a generated image's url; another account's aicut image is rejected. Spends NO tokens; counts against theget_analysisReturns the current state of one video analysis on the signed-in account, and its result once finished. WHEN: after `analyze_video`; poll every 5-10 seconds until `status` is `succeeded` or `failed`. While it is not terminal the response carries `poll_after_seconds`: wait that long rather than pickilist_analysesReturns the signed-in account's video analyses, newest first, one page at a time (pass `cursor` from the previous `next_cursor` while `has_more` is true). WHEN: the user asks what they have analysed, or before starting a new one (an analysis of the same video and window may already exist). It includlist_charactersReturns the characters saved on this aicut account, newest first, one page at a time: `kind: "uploaded"` entries the user made from their own photos and `kind: "cast_member"` entries generated as AI Video Story cast. Each carries an id, a display name, a portrait `image_url` where one exists and, folist_seriesLists aicut's AI Video Story series (niches): episodic short-video formats that generate a whole multi-scene episode from one idea. BROWSING IS `browse_series`' JOB: when the USER is choosing a series ('what series do you have'), call `browse_series` FIRST (a series is chosen BY EYE). THIS TOOL IS Tlist_series_ideasReturns ONE series' CURATED preset ideas (the authored cards the webapp shows on its idea step). Free, instant, creates nothing. THIS IS NOT THE DEFAULT WAY TO GET AN IDEA: invent three of your own, one line each, and sharpen them with the user in chat; call this only when the user asks what the SERlist_nichesLists aicut's trend-template niches: one-shot video formats made from a few answers (and sometimes a picture), each at one price. AI Video Story series are `list_series`, not these. WITHOUT `slug`: the cards (`slug`, `name`, `description`, `suits`, `not_for`, `price`, `agent_supported`). Shortlist 3generate_from_nichewrite/deleteRuns ONE niche on the signed-in account: starts the video, puts the aicut card in front of the user and returns the new job's id immediately. It does NOT wait for the video. WHEN: the user wants one of the formats `list_niches` lists. Read that niche in full first: `slug` and `revision` come from itbrowse_seriesPUTS THE SERIES CATALOGUE ON SCREEN as a grid of previews the user can look at and pick from, right in this conversation: each tile shows that series' 9:16 still, plays its demo clip in place, and choosing one (select a tile, then confirm) posts the choice into the chat as a message from the user. Flist_trendsLists the AI-generated short-form videos aicut tracks as TRENDS: real TikTok videos, each in a published trend cluster (a niche: object-head drama, fruit drama, talking objects). It is aicut's own vetted /trends feed. Free, instant, creates nothing. EACH ROW: `id` (for `get_recreate_brief`), `url`,get_recreate_briefFor making a NEW, original video in a trend's format, never a copy of it, its script or its characters: returns ONE trend video's public row, the NICHE it belongs to (the published cluster, with the premise a human wrote), a written `brief` you can hand to a create call as its idea, and `next_steps`generate_castWrites the CAST for an AI Video Story series (named characters, each with a role and a one-line description) as a DRAFT for the user to read. FREE: it spends no tokens, generates no portraits and saves nothing to the character library. WHEN: as soon as the episode idea is settled, on a series whosegenerate_cast_portraitswrite/deleteBUYS the portraits for a cast draft: one image generation per member that still needs a face, at the chosen image model's rate, then saves every member to the user's character library. The cast's paid step (the webapp's 'Generate cast' button). WHEN: the user has READ the draft from `generate_cast`,regenerate_cast_portraitwrite/deleteRedraws ONE cast member's portrait (the same character, a new image) and attaches it to that member: ONE image generation, not a new cast. WHEN: the user dislikes a member's face, or a portrait FAILED (the story create refuses a cast with a failed portrait and names this). `character_id` is the membdescribe_cast_memberwrite/deleteCHANGES ONE cast member into a different character: you pass a new one-line visual description, aicut rewrites the member's stored look from it and draws ONE new portrait (the rest of the roster is untouched). It is the tool for 'make the husband smaller and a white strawberry': NOT `regenerate_castgenerate_story_videowrite/deleteStarts an AI Video Story EPISODE (stage 1 of 3): the engine writes the multi-scene episode from your idea, draws the OPENING PICTURE OF EVERY SCENE, and PARKS for the user to look at them before any video generates. Returns immediately. Say 'the opening picture of each scene' to the user, never 'staregenerate_story_framewrite/deleteRedraws ONE scene's opening picture of an episode parked at frames review (`story.stage: "frames_review"`), from the scene's own text, cast and continuity references. There is no prompt argument. WHEN: the user dislikes THE PICTURE itself (hands, framing, a face that came out wrong, a failed lane).change_story_scenewrite/deleteCHANGES WHAT HAPPENS IN ONE SCENE of an episode parked at frames review and redraws its opening picture from the change. You pass a PLAIN SENTENCE ('the kid should look super sad', 'move it outside at night'); aicut rewrites that scene's setting / people / action text from it and draws the new picturemove_story_scenewrite/deleteREMOVES one scene from an AI Video Story episode parked at frames review. The scene's VIDEO is never generated or charged, so the fire quote and charge drop by exactly that scene's price. Free: it spends nothing (the scene's start frame was already charged at create and is not given back). WHEN: thefire_story_videowrite/deleteFIRES a parked AI Video Story episode (stage 2 of 3): generates every kept scene's VIDEO from its reviewed picture. The paid step after review; nothing renders yet. WHEN: `story.stage` is `frames_review`, the user has looked at the pictures and any redraws are done; cut scenes first with `remove_storender_story_videowrite/deleteRENDERS an AI Video Story episode into its final delivered file (stage 3 of 3), after the scene videos are done. It is composed SERVER-side from the stored episode (scenes, captions, music, title card, watermark policy); you pass only the episode id. WHEN: `get_video` shows `succeeded` or `story.stagenerate_fake_text_videowrite/deleteCREATES a fake-text video: a phone chat conversation that types itself out over a gameplay or green-screen background, every line read aloud in the voice you pick for that side. YOU WRITE THE SCRIPT: there is no writer behind this endpoint, and the `messages` array you send IS the conversation, in tgenerate_image_storywrite/deleteCREATES an AI image story: a narrated script turned into a sequence of AI-generated images, read aloud with captions over it. Suited to facts, history, horror, storytime and explainers. YOU WRITE THE SCRIPT, AND ONLY THE SCRIPT: the `text` you send is the narration that is spoken, verbatim, in thatlist_image_story_stylesLists aicut's authored image-story STYLES: named looks (a character, a rendering treatment, an art direction) that every scene of the video is drawn in. Free, instant, creates nothing. OPTIONAL, NOT THE DEFAULT: most image stories use aicut's ordinary photorealistic look, which is also the cheapest;list_social_accountsReturns the social accounts this aicut user has connected for publishing, with the id `prepare_post` takes, plus `connect_url`. WHEN: before any posting attempt, and whenever the user asks where they can post. Each entry carries its `platform` (tiktok, youtube or instagram) and `schedule_custody` (`import_videoPuts a video NOT made on aicut (an upload, or a public https MP4/MOV link) on this account as a finished video; returns the `id` for `prepare_post`. Free. A local file: upload it, pass the `confirm_upload` url. A link costs one ingest slot. Only import what the user may post. IDEMPOTENCY: a reused `prepare_postStages 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_vipublish_postwrite/deleteSends a post staged by `prepare_post`, or schedules it. Irreversible: the post goes out under the user's own name and cannot be taken down from aicut. It is for a post the user has confirmed: either in chat, after a question that named the account, the text, the visibility and any scheduled time (aget_post_statusReturns what the PLATFORM says happened to a post, plus `post_id` once it is live and `fail_reason` when it is not. Statuses: `prepared` (staged, nothing sent), `scheduled` (due at `scheduled_at`; `schedule_custody` says whether aicut or the platform holds it), `submitted` (handed to aicut's YouTubereview_postOPENS THE PUBLISH CARD RIGHT HERE for a post `prepare_post` has already staged: the user watches the actual video, sees the destination account, edits the caption, picks the visibility, sets the commercial disclosure themselves, ticks a box saying they want it posted and confirms twice. NOTHING IS P
Tool changes
- 2026-10-24: get_balance, list_models, get_recipe, generate_video, get_video, delete_video, list_videos, upscale_image, edit_video, list_reshot_templates, reshot_video, upscale_video
- 2026-10-23: get_balance, list_models, get_recipe, generate_video, get_video, delete_video, list_videos, upscale_image, edit_video, list_reshot_templates, reshot_video, upscale_video
- 2026-10-22: get_balance, list_models, get_recipe, generate_video, get_video, delete_video, list_videos, upscale_image, edit_video, list_reshot_templates, reshot_video, upscale_video
- 2026-10-21: get_balance, list_models, get_recipe, generate_video, get_video, delete_video, list_videos, upscale_image, edit_video, list_reshot_templates, reshot_video, upscale_video
- 2026-10-20: get_balance, list_models, get_recipe, generate_video, get_video, delete_video, list_videos, upscale_image, edit_video, list_reshot_templates, reshot_video, upscale_video
- 2026-10-19: get_balance, list_models, get_recipe, generate_video, get_video, delete_video, list_videos, upscale_image, edit_video, upscale_video, extend_video, motion_control
- 2026-10-17: get_balance, list_models, get_recipe, generate_video, get_video, delete_video, list_videos, upscale_image, edit_video, upscale_video, extend_video, motion_control
- 2026-10-16: get_balance, list_models, get_recipe, generate_video, get_video, delete_video, list_videos, upscale_image, edit_video, upscale_video, extend_video, motion_control
Repository · Website · JSON · Text for agents · Registry updated 2026-09-01