Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
CRAFTSTORY_API_KEYYesYour CraftStory API key. Keys look like sk-cs-... and are found under Account -> API Access.
CRAFTSTORY_API_BASENoOptional 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_HTTPNoSet 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

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
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 video, for minimax-h3 in video_url, for audio clips in file; all are signed URLs valid for 7 days (call again for a fresh link). Also returns the parameters used and the credits charged.

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

NameDescription
talking_video_from_photoStep-by-step recipe: script -> voice -> audio clip -> CraftStory 2.0 video -> download.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.2/5.0

Scored across 11 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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.