CraftStory MCP Server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CRAFTSTORY_API_KEY | Yes | Your CraftStory API key. Keys look like sk-cs-... and are found under Account -> API Access. | |
| CRAFTSTORY_API_BASE | No | Optional CraftStory API base URL. Defaults to https://api.craftstory.com/api/v1. Must be https unless CRAFTSTORY_ALLOW_HTTP=1. | https://api.craftstory.com/api/v1 |
| CRAFTSTORY_ALLOW_HTTP | No | Set to 1 to allow a non-https CRAFTSTORY_API_BASE. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_modelsA | Catalogue of the video models behind this server with their status, modes, limits and credit prices. Two models today: craftstory-2 (a talking video of any length from one photo plus an audio clip; 8-15 min) and minimax-h3 (a clip of up to 15 s from one photo, either description-driven with generated sound or audio-driven with lip-sync; 1-3 min). Call this first when unsure which model fits, or to check that a model is not paused. |
| list_voicesA | Library voices (id, name, language, gender) usable as voice_id in create_audio_clip. With include_cloned=true also returns the account's own cloned voices, usable as voice_user_id. Voices are cloned in the CraftStory app, not via the API. |
| list_avatarsA | Custom avatars trained in the CraftStory app that craftstory-2 can generate with (pass an id as avatar_id). Each avatar may carry a default voice {id, voice_kind}: voice_kind 'user' means send it as voice_user_id, 'library' as voice_id in create_audio_clip. Pass avatar_id to list that avatar's scenes; a scene id can replace the photo (scene_id) in create_craftstory2_video. |
| create_audio_clipA | The soundtrack every video model takes as input. Either text (up to 2000 characters) plus exactly one voice (voice_id from list_voices, or voice_user_id for a cloned voice), or file_path to upload a local WAV/MP3/M4A recording. Returns the clip id; it is ready when wait_for_job(model='audio-clip') reports done (usually seconds). Longer scripts: create several clips and pass all ids to create_craftstory2_video in order. |
| preview_costA | Credits a craftstory-2 job would cost for the given audio clips and settings, without creating anything. Rate per second of audio: 480p 2.2 (2 with lipsync_mode=empty), 720p 3.3 (3 with empty); rounded up per job. MiniMax H3 is a flat 3.3 credits per billed second. |
| create_craftstory2_videoA | Start a craftstory-2 generation: a photo of a person (image_url or image_path, or a custom avatar scene via scene_id) speaks the given audio clips with lip-sync, gestures and natural motion; any length. resolution is WIDTH_HEIGHT (480_832 / 720_1280 portrait, 832_480 / 1280_720 landscape); 1080p is available afterwards via upscale_video. Credits are charged on create (see preview_cost) and refunded if the job fails. Returns the job id and initial status; generation takes 8-15 minutes, so call wait_for_job(model='craftstory-2') repeatedly until it reports done, then get_job_result for the video URL. |
| create_minimax_h3_videoA | Start a minimax-h3 generation from one photo. mode='basic': user_prompt (scene description) + requested_duration_s (5-15); the model animates the photo and generates the soundtrack itself. mode='reference': one audio_clip_id drives the clip with lip-sync (first 15 s billed); user_prompt is optional; up to 8 extra image / 3 video / 2 audio reference_files with reference_captions keep a product or background consistent. Output is 768 px on the short side, orientation follows the photo. Cost 3.3 credits per billed second, charged on create. Returns the job id; call wait_for_job(model='minimax-h3') until done (1-3 min). |
| get_job_statusA | Status of a video job or audio clip: status, status_percentage, status_failed, credits_refunded. Terminal states: done; failed*, rejected_* and not_pass_moderation (audio) are failures. Prefer wait_for_job, which polls for you. |
| get_job_resultA | Full record of a job. For craftstory-2 the video is in |
| wait_for_jobA | Polls a job's status every few seconds for up to timeout_s (default 45, max 55 - most MCP clients cut a tool call at 60 s) and returns as soon as it is terminal. If it returns state='running', call it again - craftstory-2 jobs take 8-15 minutes, minimax-h3 1-3 minutes, audio clips seconds. Reports progress notifications when the client supports them. |
| upscale_videoA | Creates a NEW job with the upscaled result; the original stays. craftstory-2: only 720p sources, resolution 1080_1920 (from 720_1280) or 1920_1080 (from 1280_720). minimax-h3: always 2x, no resolution needed. Costs 0.2 credits per second. Poll the returned id with wait_for_job. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| talking_video_from_photo | Step-by-step recipe: script -> voice -> audio clip -> CraftStory 2.0 video -> download. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 11 tools
Most tools are clearly distinct: the list_* tools target different resources, the two create_*_video tools map to different models, and preview_cost/upscale_video are unique. The only mild overlap is the job-tracking trio (get_job_status, get_job_result, wait_for_job), which all concern job state, though the descriptions clarify their roles and recommend wait_for_job.
Names are consistently snake_case and verb-first (list_*, create_*, get_*), with clear noun objects. Minor deviations: wait_for_job uses 'for' rather than a plain verb_noun form, and two create tools embed model names, but the convention remains predictable.
Eleven tools is well-scoped for a video-generation API spanning discovery, audio, generation, polling, and upscaling. Each tool has a clear, non-redundant role and none feel like filler.
The core workflow is fully covered: discover voices/avatars/models, create audio, preview cost, generate with either model, poll status, fetch results, and upscale. Gaps include no job cancellation, no listing/history of past jobs, and no account/credits balance check, but agents can work around these.