Servidor MCP

Squall Studio

com.squallstudio/squall-studio
Diseño y creatividad Medios y contenido Público y accesible MCP 2025-11-25

Qué hace este MCP

Creates and manages AI-generated microdrama projects, scripts, characters, locations, shot assets, video clips, music, and continuity references.

attach_shot_continuity_reference
Attach continuity reference
Attach an image that already exists in this project to a shot as a continuity reference. A continuity reference is fed into this shot's next clip generation as a layout, prop, wardrobe and screen-direction guide — it is NOT used as the shot's opening frame or exact composition. Attaching one changes nothing until the clip is generated again. Find asset ids with get_asset_library. A shot's own thumbnail is its clip's last frame, so attaching the previous scene's thumbnail is the cheapest way to carry continuity forward. To use an image that is not yet an asset here, use upload_shot_continuity_reference instead.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['shot_id', 'asset_id'], 'properties': {'shot_id': {'type': 'string', 'description': 'Shot id (episode_shots row) to attach the reference to.'}, 'asset_id': {'type': 'string', 'description': 'Id of an existing image asset in this project.'}, 'guidance': {'type': 'string', 'maxLength': 1000, 'description': 'How the video model should use this reference, e.g. which positions or props to match and what to ignore. Saved on the reference and sent with every later generation of the shot.'}}, 'additionalProperties': False}
generate_character_image
Generate character image
Generate a reference image for a character. Spends credits. Returns a job id — poll it with get_job.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['character_id', 'idempotency_key'], 'properties': {'user_notes': {'type': 'string', 'description': 'Extra direction for the image.'}, 'character_id': {'type': 'string', 'description': 'Character id.'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 200, 'minLength': 8, 'description': 'Stable key identifying this generation request. Reuse the SAME key when retrying the same request â\x80\x94 the original job is returned and no second charge is made. Use a NEW key when you deliberately want another generation.'}, 'character_look_id': {'type': 'string', 'description': 'Specific look; defaults to the base look.'}, 'reference_image_asset_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Existing asset ids to use as references.'}}, 'additionalProperties': False}
generate_episode_music
Generate episode music
Generate a background music track for an episode. Requires the episode to already have an assembled video. Spends credits. Returns a job id — poll it with get_job.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['episode_id', 'idempotency_key'], 'properties': {'episode_id': {'type': 'string', 'description': 'Episode id.'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 200, 'minLength': 8, 'description': 'Stable key identifying this generation request. Reuse the SAME key when retrying the same request â\x80\x94 the original job is returned and no second charge is made. Use a NEW key when you deliberately want another generation.'}}, 'additionalProperties': False}
generate_location_image
Generate location image
Generate a reference image for a location. Spends credits. Returns a job id — poll it with get_job.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['location_id', 'idempotency_key'], 'properties': {'user_notes': {'type': 'string'}, 'location_id': {'type': 'string', 'description': 'Location id.'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 200, 'minLength': 8, 'description': 'Stable key identifying this generation request. Reuse the SAME key when retrying the same request â\x80\x94 the original job is returned and no second charge is made. Use a NEW key when you deliberately want another generation.'}, 'reference_image_asset_ids': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}
generate_script
Generate script
Write a full multi-episode script from a story premise. This CREATES A NEW PROJECT — it does not edit an existing one, and it takes no project_id. While the job runs, job.output carries live progress (phase, completedEpisodes, totalEpisodes). On success the new project also has its characters, locations, episodes, shots and segments seeded, ready for the other tools. Spends credits. Returns a job id — poll it with get_job.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['story_idea', 'episode_length_seconds', 'idempotency_key'], 'properties': {'genre': {'type': 'string', 'default': 'Vertical Drama', 'minLength': 1, 'description': 'Genre label.'}, 'language': {'type': 'string', 'default': 'English', 'minLength': 1, 'description': 'Language to write in.'}, 'story_idea': {'type': 'string', 'minLength': 10, 'description': 'The story premise to write from.'}, 'screen_ratio': {'enum': ['9:16', '16:9', '1:1'], 'type': 'string', 'default': '9:16', 'description': 'Aspect ratio.'}, 'visual_style': {'enum': ['Realistic TV Drama', 'Cinematic Romance', '2D Anime', '3D Animated', 'Dark Thriller'], 'type': 'string', 'description': 'Visual style. Defaults to Realistic TV Drama.'}, 'episode_count': {'anyOf': [{'type': 'integer', 'maximum': 3, 'exclusiveMinimum': 0}, {'type': 'null'}], 'default': 3, 'description': 'How many episodes to write. null to let the model choose.'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 200, 'minLength': 8, 'description': 'Stable key identifying this generation request. Reuse the SAME key when retrying the same request â\x80\x94 the original job is returned and no second charge is made. Use a NEW key when you deliberately want another generation.'}, 'target_platform': {'enum': ['TikTok', 'Reels', 'YouTube Shorts'], 'type': 'string', 'default': 'TikTok', 'description': 'Platform the episodes are cut for.'}, 'episode_length_seconds': {'anyOf': [{'type': 'integer', 'maximum': 300, 'exclusiveMinimum': 0}, {'type': 'null'}], 'description': 'Target length of each episode, in seconds. null to let the model choose.'}}, 'additionalProperties': False}
generate_shot_background_image
Generate background plate
Generate an empty background plate for one short shot. Both reference inputs steer what the plate itself looks like — layout, prop identity, materials and lighting — and are unrelated to upload_shot_continuity_reference, which guides clip generation instead. Use reference_image_asset_ids for images already in this project (find them with get_asset_library) and reference_images_base64 to send bytes you produced locally, for example a frame lifted from an earlier scene so a prop matches what is already on screen. Uploaded bytes are used for this one generation and are not kept as project assets. The location's own reference images are always included on top of both. Spends credits. Returns a job id — poll it with get_job.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['shot_id', 'short_shot_number', 'idempotency_key'], 'properties': {'shot_id': {'type': 'string', 'description': 'Shot id.'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 200, 'minLength': 8, 'description': 'Stable key identifying this generation request. Reuse the SAME key when retrying the same request â\x80\x94 the original job is returned and no second charge is made. Use a NEW key when you deliberately want another generation.'}, 'short_shot_number': {'type': 'integer', 'description': 'Short shot number within the shot.'}, 'reference_images_base64': {'type': 'array', 'items': {'type': 'object', 'required': ['filename', 'image_base64'], 'properties': {'filename': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': 'File name to send it under, e.g. scene-1-radio-prop.jpg.'}, 'image_base64': {'type': 'string', 'maxLength': 34000000, 'minLength': 1, 'description': 'The image bytes, base64-encoded. No data: URI prefix.'}}, 'additionalProperties': False}, 'maxItems': 3, 'description': 'Images to send as bytes. PNG, JPEG and WebP only; the bytes are sniffed, so the filename extension alone will not get a non-image through. Keep them small â\x80\x94 a 720x1280 JPEG is roughly 40-130KB of base64.'}, 'reference_image_asset_ids': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}
generate_shot_clip
Generate shot clip
Generate a video clip for a single shot (episode_shots row). Spends credits. Returns a job id — poll it with get_job.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['shot_id', 'idempotency_key'], 'properties': {'model': {'type': 'string', 'description': 'Video model override.'}, 'shot_id': {'type': 'string', 'description': 'Shot id.'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 200, 'minLength': 8, 'description': 'Stable key identifying this generation request. Reuse the SAME key when retrying the same request â\x80\x94 the original job is returned and no second charge is made. Use a NEW key when you deliberately want another generation.'}, 'short_shot_number': {'type': 'integer', 'description': 'Target a specific short shot.'}}, 'additionalProperties': False}
get_asset_library
List assets
List generated assets available to a project.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['project_id'], 'properties': {'project_id': {'type': 'string', 'description': 'Project id.'}}, 'additionalProperties': False}
get_character
Get character
Get one character record.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['character_id'], 'properties': {'character_id': {'type': 'string', 'description': 'Character id.'}}, 'additionalProperties': False}
get_character_looks
List character looks
List a character's looks.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['character_id'], 'properties': {'character_id': {'type': 'string', 'description': 'Character id.'}}, 'additionalProperties': False}
get_episode
Get episode
Get one episode record.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['episode_id'], 'properties': {'episode_id': {'type': 'string', 'description': 'Episode id.'}}, 'additionalProperties': False}
get_episode_editor
Get full episode
Get the full episode tree in one call: project, episode, outline, script, segments, shots, characters, looks, locations and jobs. Prefer this over several narrower calls.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['project_id', 'episode_id'], 'properties': {'episode_id': {'type': 'string', 'description': 'Episode id.'}, 'project_id': {'type': 'string', 'description': 'Project id.'}}, 'additionalProperties': False}
get_episode_shots
List shots
List the shots in an episode.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['episode_id'], 'properties': {'episode_id': {'type': 'string', 'description': 'Episode id.'}}, 'additionalProperties': False}
get_job
Get job status
Get one generation job's status and output. Use this to poll a job returned by a generate_* tool.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['job_id'], 'properties': {'job_id': {'type': 'string', 'description': 'Job id.'}}, 'additionalProperties': False}
get_location
Get location
Get one location record.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['location_id'], 'properties': {'location_id': {'type': 'string', 'description': 'Location id.'}}, 'additionalProperties': False}
get_project
Get project
Get one project's summary and current workflow step.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['project_id'], 'properties': {'project_id': {'type': 'string', 'description': 'Project id.'}}, 'additionalProperties': False}
get_project_characters
List characters
List a project's characters.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['project_id'], 'properties': {'project_id': {'type': 'string', 'description': 'Project id.'}}, 'additionalProperties': False}
get_project_episodes
List episodes
List the episodes in a project.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['project_id'], 'properties': {'project_id': {'type': 'string', 'description': 'Project id.'}}, 'additionalProperties': False}
get_project_locations
List locations
List a project's locations.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['project_id'], 'properties': {'project_id': {'type': 'string', 'description': 'Project id.'}}, 'additionalProperties': False}
get_project_script
Get script
Get a project's full script package.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['project_id'], 'properties': {'project_id': {'type': 'string', 'description': 'Project id.'}}, 'additionalProperties': False}
get_scene_assets
Get scene
Get one scene with its shots, characters, locations and continuity references.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['project_id', 'episode_id', 'scene_number'], 'properties': {'episode_id': {'type': 'string', 'description': 'Episode id.'}, 'project_id': {'type': 'string', 'description': 'Project id.'}, 'scene_number': {'type': 'integer', 'description': 'Scene number.'}}, 'additionalProperties': False}
list_episode_segments
List segments
List the video segments in an episode.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['episode_id'], 'properties': {'episode_id': {'type': 'string', 'description': 'Episode id.'}}, 'additionalProperties': False}
list_project_jobs
List jobs
List generation jobs for a project, newest first.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['project_id'], 'properties': {'project_id': {'type': 'string', 'description': 'Project id.'}}, 'additionalProperties': False}
list_projects
List projects
List all projects owned by the authenticated user.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
list_shot_continuity_references
List continuity references
List the continuity reference images attached to one shot. get_scene_assets also returns these, but only for a whole scene — use this when you need the asset ids, for example to remove one or update its guidance. Each reference's saved guidance is in metadata.continuityGuidance.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['shot_id'], 'properties': {'shot_id': {'type': 'string', 'description': 'Shot id (episode_shots row).'}}, 'additionalProperties': False}
remove_shot_continuity_reference
Remove continuity reference
Detach one continuity reference from a shot. List them first with list_shot_continuity_references to get the asset id. This deletes the reference asset permanently and cannot be undone.
Destructivo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['shot_id', 'asset_id'], 'properties': {'shot_id': {'type': 'string', 'description': 'Shot id (episode_shots row) the reference is attached to.'}, 'asset_id': {'type': 'string', 'description': 'Id of the continuity reference to remove, from list_shot_continuity_references.'}}, 'additionalProperties': False}
update_location
Update location
Overwrite fields on one location. Read it first (get_project_locations or get_location), then send ONLY the fields you changed — omitted fields are left untouched. IMPORTANT: a location is usually shared by several scenes across episodes, so this edit changes every scene that uses it. Check where it is used first; if the change is meant for one scene only, it needs a NEW location rather than an edit to this one. Editing name, short_description, visual_prompt, user_prompt, visual_style, aspect_ratio or spatial_layout marks the location stale, because its existing generated image no longer matches the description — regenerate the image if you want them back in sync. Editing mood, location_type, recurring or appears_in_episodes does not affect the image and leaves the stale flag alone. spatial_layout is the set bible: the named zones of the set and the fixed zone and height of each prop. Scenes must draw their spatial_geometry zones from it instead of inventing labels, so correcting it here fixes prop placement for every scene at once. Keep descriptions consistent with the owning character's status and the project's tone. This writes immediately and cannot be undone.
Destructivo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['location_id', 'patch'], 'properties': {'patch': {'type': 'object', 'properties': {'mood': {'type': ['string', 'null']}, 'name': {'type': 'string', 'minLength': 1}, 'recurring': {'type': 'boolean'}, 'user_prompt': {'type': ['string', 'null']}, 'aspect_ratio': {'type': ['string', 'null']}, 'visual_style': {'type': ['string', 'null']}, 'location_type': {'type': ['string', 'null']}, 'visual_prompt': {'type': 'string', 'minLength': 1}, 'spatial_layout': {'anyOf': [{'type': 'object', 'required': ['layout_summary'], 'properties': {'props': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'zone', 'height', 'description'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'zone': {'type': 'string'}, 'height': {'type': 'string'}, 'movable': {'type': 'boolean', 'default': False}, 'key_prop': {'type': 'boolean'}, 'description': {'type': 'string'}, 'co_located_with': {'type': 'array', 'items': {'type': 'string'}, 'default': []}}, 'additionalProperties': False}, 'default': []}, 'zones': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'description'], 'properties': {'id': {'type': 'string'}, 'adjacent_to': {'type': 'array', 'items': {'type': 'string'}, 'default': []}, 'description': {'type': 'string'}}, 'additionalProperties': False}, 'default': []}, 'layout_summary': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'short_description': {'type': ['string', 'null']}, 'appears_in_episodes': {'type': 'array', 'items': {'type': 'integer', 'exclusiveMinimum': 0}}}, 'description': 'Fields to change. Send only what you are changing.', 'additionalProperties': False}, 'location_id': {'type': 'string', 'description': 'Location id to update.'}}, 'additionalProperties': False}
update_shot
Update shot
Overwrite fields on one shot. Read the shot first (get_episode_shots or get_episode_editor), decide the change yourself, then send ONLY the fields you changed — omitted fields are left untouched. To change dialogue, edit camera_setup.short_shots[].dialogue_covered; never send the deprecated `dialogue` field, which can duplicate or resurrect lines. This writes immediately and cannot be undone.
Destructivo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['shot_id', 'patch'], 'properties': {'patch': {'type': 'object', 'properties': {'title': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}]}, 'dialogue': {'type': 'array', 'items': {'type': 'object', 'required': ['character', 'line', 'emotion', 'delivery_note'], 'properties': {'line': {'type': 'string'}, 'emotion': {'type': 'string'}, 'line_id': {'type': 'string'}, 'character': {'type': 'string'}, 'delivery_note': {'type': 'string'}}, 'additionalProperties': False}}, 'location': {'type': ['string', 'null']}, 'shot_size': {'type': ['string', 'null']}, 'characters': {'type': 'array', 'items': {'type': 'string'}}, 'composition': {'type': ['string', 'null']}, 'script_text': {'type': 'string', 'minLength': 1}, 'time_of_day': {'type': ['string', 'null']}, 'camera_angle': {'type': ['string', 'null']}, 'camera_setup': {'anyOf': [{'type': 'object', 'required': ['shot_size', 'subject_movement', 'visual_purpose', 'short_shots'], 'properties': {'shot_size': {'type': 'string'}, 'short_shots': {'type': 'array', 'items': {'type': 'object', 'required': ['shot_number', 'duration_seconds', 'shot_size', 'action', 'subject_movement', 'dialogue_covered', 'visual_purpose'], 'properties': {'action': {'type': 'string'}, 'location': {'type': 'string'}, 'beat_type': {'enum': ['establishing', 'entrance', 'exit', 'movement', 'prop_interaction', 'insert', 'reveal', 'blocking', 'reaction', 'decision', 'dialogue', 'transition', 'cliffhanger'], 'type': 'string'}, 'end_state': {'type': ['string', 'null']}, 'shot_size': {'type': 'string'}, 'shot_number': {'type': 'number'}, 'start_state': {'type': ['string', 'null']}, 'visual_purpose': {'type': 'string'}, 'background_view': {'anyOf': [{'type': 'object', 'required': ['location_name', 'view_name', 'background_description', 'camera_facing', 'continuity_note'], 'properties': {'image_url': {'type': ['string', 'null']}, 'view_name': {'type': 'string'}, 'depth_layout': {'type': ['string', 'null']}, 'camera_facing': {'type': 'string'}, 'location_name': {'type': 'string'}, 'continuity_note': {'type': 'string'}, 'reference_usage': {'type': ['string', 'null']}, 'visible_anchors': {'type': 'array', 'items': {'type': 'string'}}, 'generated_asset_id': {'type': ['string', 'null']}, 'lighting_description': {'type': ['string', 'null']}, 'reference_description': {'type': ['string', 'null']}, 'background_description': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'dialogue_covered': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'$ref': '#/properties/patch/properties/dialogue/items'}]}}, 'duration_seconds': {'type': 'number'}, 'spatial_geometry': {'anyOf': [{'type': 'object', 'required': ['location_axis', 'subject_start_zone', 'subject_end_zone', 'subject_travel_direction', 'camera_zone', 'camera_facing_direction', 'camera_subject_relationship', 'background_visible_direction', 'consistency_note'], 'properties': {'camera_zone': {'type': 'string'}, 'location_axis': {'type': 'string'}, 'consistency_note': {'type': 'string'}, 'interaction_axis': {'type': 'string'}, 'subject_end_zone': {'type': 'string'}, 'subject_start_zone': {'type': 'string'}, 'camera_facing_direction': {'type': 'string'}, 'subject_travel_direction': {'type': 'string'}, 'camera_subject_relationship': {'type': 'string'}, 'background_visible_direction': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'subject_movement': {'type': 'string'}, 'camera_setup_detail': {'type': 'object', 'required': ['camera_position', 'camera_angle', 'camera_movement'], 'properties': {'camera_angle': {'type': 'string'}, 'camera_movement': {'type': 'string'}, 'camera_position': {'type': 'string'}, 'subject_orientation': {'type': 'string'}, 'subject_orientations': {'type': 'array', 'items': {'type': 'object', 'required': ['subject', 'orientation_to_camera'], 'properties': {'subject': {'type': 'string'}, 'looking_at': {'type': 'string'}, 'orientation_to_camera': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}, 'background_people_description': {'type': ['string', 'null']}, 'post_dialogue_visual_progression': {'type': ['string', 'null']}}, 'additionalProperties': False}}, 'visual_purpose': {'type': 'string'}, 'subject_movement': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'scene_purpose': {'type': ['string', 'null']}, 'scene_setting': {'type': ['string', 'null']}, 'subtitle_text': {'type': ['string', 'null']}, 'omit_subtitles': {'type': 'boolean'}, 'audio_direction': {'type': ['string', 'null']}, 'camera_movement': {'type': ['string', 'null']}, 'camera_direction': {'type': ['string', 'null']}, 'duration_seconds': {'type': 'integer', 'maximum': 60, 'minimum': 1}, 'source_scene_number': {'anyOf': [{'type': 'integer', 'minimum': 1}, {'type': 'null'}]}, 'referenced_location_ids': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid'}}, 'referenced_character_ids': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid'}}, 'referenced_character_look_ids': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid'}}}, 'description': 'Fields to change. Send only what you are changing. Edit dialogue via camera_setup.short_shots[].dialogue_covered, not the deprecated `dialogue`.', 'additionalProperties': False}, 'shot_id': {'type': 'string', 'description': 'Shot id (episode_shots row) to update.'}}, 'additionalProperties': False}
update_shot_continuity_reference
Update continuity reference
Set or clear the guidance on one continuity reference already attached to a shot — the note telling the video model how to use that image. List references first with list_shot_continuity_references to get the asset id. Like attaching, this changes nothing until the clip is generated again.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['shot_id', 'asset_id', 'guidance'], 'properties': {'shot_id': {'type': 'string', 'description': 'Shot id (episode_shots row) the reference is attached to.'}, 'asset_id': {'type': 'string', 'description': 'Id of the continuity reference to update, from list_shot_continuity_references.'}, 'guidance': {'anyOf': [{'type': 'string', 'maxLength': 1000}, {'type': 'null'}], 'description': 'How the video model should use this reference, e.g. which positions or props to match and what to ignore. Send null or an empty string to clear it.'}}, 'additionalProperties': False}
upload_shot_continuity_reference
Upload continuity reference
Attach an image you produced locally to a shot as a continuity reference. A continuity reference is fed into this shot's next clip generation as a layout, prop, wardrobe and screen-direction guide — it is NOT used as the shot's opening frame or exact composition. Attaching one changes nothing until the clip is generated again. Send the image as base64 — keep it small (a 720x1280 JPEG is roughly 40-130KB of base64). PNG, JPEG and WebP only; the bytes are sniffed, so the filename extension alone will not get a non-image through. If the image is already an asset in this project, use attach_shot_continuity_reference instead and send no bytes.
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['shot_id', 'image_base64', 'filename'], 'properties': {'shot_id': {'type': 'string', 'description': 'Shot id (episode_shots row) to attach the reference to.'}, 'filename': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': 'File name to store it under, e.g. scene-1-last-frame.jpg.'}, 'guidance': {'type': 'string', 'maxLength': 1000, 'description': 'How the video model should use this reference, e.g. which positions or props to match and what to ignore. Saved on the reference and sent with every later generation of the shot.'}, 'image_base64': {'type': 'string', 'maxLength': 34000000, 'minLength': 1, 'description': 'The image bytes, base64-encoded. No data: URI prefix.'}}, 'additionalProperties': False}
Modificado
update_shot
1 de October de 2026 a las 02:54
Modificado
update_location
29 de September de 2026 a las 03:03
Modificado
generate_script
29 de September de 2026 a las 03:03
Modificado
generate_script
27 de September de 2026 a las 02:53
Añadido
remove_shot_continuity_reference
17 de September de 2026 a las 12:37
Añadido
update_shot_continuity_reference
17 de September de 2026 a las 12:37
Añadido
attach_shot_continuity_reference
17 de September de 2026 a las 12:37
Añadido
upload_shot_continuity_reference
17 de September de 2026 a las 12:37
Añadido
update_location
17 de September de 2026 a las 12:37
Añadido
update_shot
17 de September de 2026 a las 12:37
Añadido
generate_episode_music
17 de September de 2026 a las 12:37
Añadido
generate_shot_background_image
17 de September de 2026 a las 12:37
Añadido
generate_location_image
17 de September de 2026 a las 12:37
Añadido
generate_character_image
17 de September de 2026 a las 12:37
Añadido
generate_shot_clip
17 de September de 2026 a las 12:37
Añadido
generate_script
17 de September de 2026 a las 12:37
Añadido
list_shot_continuity_references
17 de September de 2026 a las 12:37
Añadido
list_project_jobs
17 de September de 2026 a las 12:37
Añadido
get_job
17 de September de 2026 a las 12:37
Añadido
get_asset_library
17 de September de 2026 a las 12:37
Añadido
get_location
17 de September de 2026 a las 12:37
Añadido
get_project_locations
17 de September de 2026 a las 12:37
Añadido
get_character_looks
17 de September de 2026 a las 12:37
Añadido
get_character
17 de September de 2026 a las 12:37
Añadido
get_project_characters
17 de September de 2026 a las 12:37
Añadido
get_project_script
17 de September de 2026 a las 12:37
Añadido
get_scene_assets
17 de September de 2026 a las 12:37
Añadido
list_episode_segments
17 de September de 2026 a las 12:37
Añadido
get_episode_shots
17 de September de 2026 a las 12:37
Añadido
get_episode_editor
17 de September de 2026 a las 12:37