Skip to content

Squall Studio

by squallstudio.com · remote · no sign-in to list tools · v1.0.0 · published by com.squallstudio

Read, edit and generate AI microdrama scripts, shots, characters and video in Squall Studio

Deletes · 3Changes · 9

30 tools: 3 can delete or cancel things, 9 change things and 18 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http squall-studio https://squallstudio.com/api/mcp --header 'Authorization: <your-authorization>'

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

30 tools

Deletes or cancels 3Claude Code: deny
  • remove_shot_continuity_referenceDetach one continuity reference from a shot.No findings

    Why it is in this group

    • The name "remove_shot_continuity_reference" says "remove": a word for removing or ending something.
    • The description says "cannot be undone".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • title: Remove continuity reference
  • update_locationOverwrite fields on one location.No findings

    Why it is in this group

    • The name "update_location" says "update": a word for a change.
    • The description says "cannot be undone".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • title: Update location
  • update_shotOverwrite fields on one shot.No findings

    Why it is in this group

    • The name "update_shot" says "update": a word for a change.
    • The description says "cannot be undone".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • title: Update shot
Changes things 9Claude Code: ask
  • attach_shot_continuity_referenceAttach an image that already exists in this project to a shot as a continuity reference.No findings

    Why it is in this group

    • The name "attach_shot_continuity_reference" says "attach": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • title: Attach continuity reference
  • generate_character_imageGenerate a reference image for a character.No findings

    Why it is in this group

    • The name "generate_character_image" says "generate": a word for a change.
    Description, as the server wrote it
    Generate a reference image for a character. Spends credits. Returns a job id — poll it with get_job.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • title: Generate character image
  • generate_episode_musicGenerate a background music track for an episode.No findings

    Why it is in this group

    • The name "generate_episode_music" says "generate": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • title: Generate episode music
  • generate_location_imageGenerate a reference image for a location.No findings

    Why it is in this group

    • The name "generate_location_image" says "generate": a word for a change.
    Description, as the server wrote it
    Generate a reference image for a location. Spends credits. Returns a job id — poll it with get_job.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • title: Generate location image
  • generate_scriptWrite a full multi-episode script from a story premise.No findings

    Why it is in this group

    • The name "generate_script" says "generate": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • title: Generate script
  • generate_shot_background_imageGenerate an empty background plate for one short shot.No findings

    Why it is in this group

    • The name "generate_shot_background_image" says "generate": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • title: Generate background plate
  • generate_shot_clipGenerate a video clip for a single shot (episode_shots row).No findings

    Why it is in this group

    • The name "generate_shot_clip" says "generate": a word for a change.
    Description, as the server wrote it
    Generate a video clip for a single shot (episode_shots row). Spends credits. Returns a job id — poll it with get_job.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • title: Generate shot clip
  • update_shot_continuity_referenceSet or clear the guidance on one continuity reference already attached to a shot — the note telling the video model how to use that image.No findings

    Why it is in this group

    • The name "update_shot_continuity_reference" says "update": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • title: Update continuity reference
  • upload_shot_continuity_referenceAttach an image you produced locally to a shot as a continuity reference.No findings

    Why it is in this group

    • The name "upload_shot_continuity_reference" says "upload": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • title: Upload continuity reference
Only reads 18Claude Code: allow
  • get_asset_libraryList generated assets available to a project.No findings

    Why it is in this group

    • The name "get_asset_library" says "get": a word for reading.
    Description, as the server wrote it
    List generated assets available to a project.

    Annotations the server declares

    • readOnlyHint: true
    • title: List assets
  • get_characterGet one character record.No findings

    Why it is in this group

    • The name "get_character" says "get": a word for reading.
    Description, as the server wrote it
    Get one character record.

    Annotations the server declares

    • readOnlyHint: true
    • title: Get character
  • get_character_looksList a character's looks.No findings

    Why it is in this group

    • The name "get_character_looks" says "get": a word for reading.
    Description, as the server wrote it
    List a character's looks.

    Annotations the server declares

    • readOnlyHint: true
    • title: List character looks
  • get_episodeGet one episode record.No findings

    Why it is in this group

    • The name "get_episode" says "get": a word for reading.
    Description, as the server wrote it
    Get one episode record.

    Annotations the server declares

    • readOnlyHint: true
    • title: Get episode
  • get_episode_editorGet the full episode tree in one call: project, episode, outline, script, segments, shots, characters, looks, locations and jobs.No findings

    Why it is in this group

    • The name "get_episode_editor" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • title: Get full episode
  • get_episode_shotsList the shots in an episode.No findings

    Why it is in this group

    • The name "get_episode_shots" says "get": a word for reading.
    Description, as the server wrote it
    List the shots in an episode.

    Annotations the server declares

    • readOnlyHint: true
    • title: List shots
  • get_jobGet one generation job's status and output.No findings

    Why it is in this group

    • The name "get_job" says "get": a word for reading.
    Description, as the server wrote it
    Get one generation job's status and output. Use this to poll a job returned by a generate_* tool.

    Annotations the server declares

    • readOnlyHint: true
    • title: Get job status
  • get_locationGet one location record.No findings

    Why it is in this group

    • The name "get_location" says "get": a word for reading.
    Description, as the server wrote it
    Get one location record.

    Annotations the server declares

    • readOnlyHint: true
    • title: Get location
  • get_projectGet one project's summary and current workflow step.No findings

    Why it is in this group

    • The name "get_project" says "get": a word for reading.
    Description, as the server wrote it
    Get one project's summary and current workflow step.

    Annotations the server declares

    • readOnlyHint: true
    • title: Get project
  • get_project_charactersList a project's characters.No findings

    Why it is in this group

    • The name "get_project_characters" says "get": a word for reading.
    Description, as the server wrote it
    List a project's characters.

    Annotations the server declares

    • readOnlyHint: true
    • title: List characters
  • get_project_episodesList the episodes in a project.No findings

    Why it is in this group

    • The name "get_project_episodes" says "get": a word for reading.
    Description, as the server wrote it
    List the episodes in a project.

    Annotations the server declares

    • readOnlyHint: true
    • title: List episodes
  • get_project_locationsList a project's locations.No findings

    Why it is in this group

    • The name "get_project_locations" says "get": a word for reading.
    Description, as the server wrote it
    List a project's locations.

    Annotations the server declares

    • readOnlyHint: true
    • title: List locations
  • get_project_scriptGet a project's full script package.No findings

    Why it is in this group

    • The name "get_project_script" says "get": a word for reading.
    Description, as the server wrote it
    Get a project's full script package.

    Annotations the server declares

    • readOnlyHint: true
    • title: Get script
  • get_scene_assetsGet one scene with its shots, characters, locations and continuity references.No findings

    Why it is in this group

    • The name "get_scene_assets" says "get": a word for reading.
    Description, as the server wrote it
    Get one scene with its shots, characters, locations and continuity references.

    Annotations the server declares

    • readOnlyHint: true
    • title: Get scene
  • list_episode_segmentsList the video segments in an episode.No findings

    Why it is in this group

    • The name "list_episode_segments" says "list": a word for reading.
    Description, as the server wrote it
    List the video segments in an episode.

    Annotations the server declares

    • readOnlyHint: true
    • title: List segments
  • list_project_jobsList generation jobs for a project, newest first.No findings

    Why it is in this group

    • The name "list_project_jobs" says "list": a word for reading.
    Description, as the server wrote it
    List generation jobs for a project, newest first.

    Annotations the server declares

    • readOnlyHint: true
    • title: List jobs
  • list_projectsList all projects owned by the authenticated user.No findings

    Why it is in this group

    • The name "list_projects" says "list": a word for reading.
    Description, as the server wrote it
    List all projects owned by the authenticated user.

    Annotations the server declares

    • readOnlyHint: true
    • title: List projects
  • list_shot_continuity_referencesList the continuity reference images attached to one shot.No findings

    Why it is in this group

    • The name "list_shot_continuity_references" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • title: List continuity references

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http squall-studio https://squallstudio.com/api/mcp --header 'Authorization: <your-authorization>'

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__squall-studio__list_projects",
      "mcp__squall-studio__get_project",
      "mcp__squall-studio__get_project_episodes",
      "mcp__squall-studio__get_episode",
      "mcp__squall-studio__get_episode_editor",
      "mcp__squall-studio__get_episode_shots",
      "mcp__squall-studio__list_episode_segments",
      "mcp__squall-studio__get_scene_assets",
      "mcp__squall-studio__get_project_script",
      "mcp__squall-studio__get_project_characters",
      "mcp__squall-studio__get_character",
      "mcp__squall-studio__get_character_looks",
      "mcp__squall-studio__get_project_locations",
      "mcp__squall-studio__get_location",
      "mcp__squall-studio__get_asset_library",
      "mcp__squall-studio__get_job",
      "mcp__squall-studio__list_project_jobs",
      "mcp__squall-studio__list_shot_continuity_references"
    ],
    "ask": [
      "mcp__squall-studio__generate_script",
      "mcp__squall-studio__generate_shot_clip",
      "mcp__squall-studio__generate_character_image",
      "mcp__squall-studio__generate_location_image",
      "mcp__squall-studio__generate_shot_background_image",
      "mcp__squall-studio__generate_episode_music",
      "mcp__squall-studio__upload_shot_continuity_reference",
      "mcp__squall-studio__attach_shot_continuity_reference",
      "mcp__squall-studio__update_shot_continuity_reference"
    ],
    "deny": [
      "mcp__squall-studio__update_shot",
      "mcp__squall-studio__update_location",
      "mcp__squall-studio__remove_shot_continuity_reference"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as squall-studio. Review it before you use it.