Squall Studio
Qué hace este MCP
Creates and manages AI-generated microdrama projects, scripts, characters, locations, shot assets, video clips, music, and continuity references.
Herramientas
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}
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}
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}
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}
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}
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}
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}
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}
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}
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}
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}
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}
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}
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}
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}
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}
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}
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}
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}
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}
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}
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}
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}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
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}
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}
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}
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}
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}
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}
Cambios recientes en herramientas
Servidores MCP similares
MiOffice — AI-Powered Workspace Studio
Provides browser-based tools for processing PDFs, images, video, and audio, including generation, enhancement, conversion, transc…
BlitzReels Video Editor
Creates and edits short-form videos, including timelines, captions, transitions, AI-generated visuals, music, voiceovers, sound e…
Morpha
Enables creating, animating, and exporting layered short-form video projects.
switch
Enables management and exploration of an account-scoped library of AI-generated images and videos.
framesail
Creates long-form YouTube videos through script generation, storyboarding, visual assets, voiceover, music, scene composition, an…
Magnific
Provides image enhancement and design tools, AI image and audio generation, text-to-speech, creation management, and reusable cre…
Uwear
Supports AI fashion photoshoot production with garments, outfits, avatars, locations, art direction, image generation, backdrops,…
Creative Claw
Generates and edits branded images, video, audio, speech, and 3D-related creative assets, with media processing and reusable them…