Squall Studio
REMOTE · SQUALLSTUDIO.COM · SCANNED SEP 26
Read, edit and generate AI microdrama scripts, shots, characters and video in Squall Studio
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security57
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (update_shot). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability78
- AI-judged instruction clarity (excellent).Pass
- Tool/resource definitions use about 2789 tokens (~92/item across 30 items; 30 tools + 0 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management63
- Stability observed for 19 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage98
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 95% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 30 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the Squall Studio MCP server?
Squall Studio is a hosted endpoint at https://squallstudio.com/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · squallstudio.com
claude mcp add --transport http com-squallstudio-squall-studio 'https://squallstudio.com/api/mcp'
{
"mcpServers": {
"com-squallstudio-squall-studio": {
"url": "https://squallstudio.com/api/mcp"
}
}
} {
"servers": {
"com-squallstudio-squall-studio": {
"type": "http",
"url": "https://squallstudio.com/api/mcp"
}
}
} [mcp_servers.com-squallstudio-squall-studio] url = "https://squallstudio.com/api/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-squallstudio-squall-studio": {
"type": "remote",
"url": "https://squallstudio.com/api/mcp",
"enabled": true
}
}
} openclaw mcp add com-squallstudio-squall-studio --url 'https://squallstudio.com/api/mcp' --transport streamable-http
mcp_servers:
com-squallstudio-squall-studio:
url: "https://squallstudio.com/api/mcp" {
"McpServers": {
"com-squallstudio-squall-studio": {
"Transport": "http",
"Url": "https://squallstudio.com/api/mcp"
}
}
} assistant mcp add com-squallstudio-squall-studio -t streamable-http -u 'https://squallstudio.com/api/mcp'
{
"mcpServers": {
"com-squallstudio-squall-studio": {
"type": "http",
"url": "https://squallstudio.com/api/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 26 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 24 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.
- 22 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.
- 20 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.
- 16 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.
- 15 Sept 26 0
- Tool “list_shot_continuity_references” rewrote its description, which is the text the model reads security
- Schema quality: 2531 → 2789 ▼ functional
- New tool “update_shot_continuity_reference” functional
- “attach_shot_continuity_reference” added an optional parameter “guidance” cosmetic
- “upload_shot_continuity_reference” added an optional parameter “guidance” cosmetic
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 26 Sept 2026 · Probed https://squallstudio.com/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=squallstudio.com | CN=WR3,O=Google Trust Services,C=US | 30 Aug 2026 | 28 Nov 2026 | RSA 2048 | SHA256-RSA | f077ab361cf577ff0a8c495c147c55d9 |
| SANs: squallstudio.com | ||||||
| CN=WR3,O=Google Trust Services,C=US (CA) | CN=GTS Root R1,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | RSA 2048 | SHA256-RSA | 7ff005a91568d63abc22861684aa4b5a |
| CN=GTS Root R1,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 19 Jun 2020 | 28 Jan 2028 | RSA 4096 | SHA256-RSA | 77bd0d6cdb36f91aea210fc4f058d30d |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of squallstudio.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| squallstudio.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://squallstudio.com/api/mcp | Verified | 200 | |
| http (plaintext) | http://squallstudio.com/api/mcp | HTTPS enforced | 302 | https://squallstudio.com/api/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
attach_shot_continuity_reference Attach continuity reference ~219
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.
| Name | Type | Req | Description |
|---|---|---|---|
| asset_id | string | yes | Id of an existing image asset in this project. |
| guidance | string | – | 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. |
| shot_id | string | yes | Shot id (episode_shots row) to attach the reference to. |
No output schema declared.
No examples provided.
generate_character_image Generate character image ~141
Generate a reference image for a character. Spends credits. Returns a job id — poll it with get_job.
| Name | Type | Req | Description |
|---|---|---|---|
| character_id | string | yes | Character id. |
| character_look_id | string | – | Specific look; defaults to the base look. |
| idempotency_key | string | yes | Stable key identifying this generation request. Reuse the SAME key when retrying the same request — the original job is returned and no second charge is made. Use a NEW key when you deliberately want… |
| reference_image_asset_ids | array | – | Existing asset ids to use as references. |
| user_notes | string | – | Extra direction for the image. |
No output schema declared.
No examples provided.
generate_episode_music Generate episode music ~104
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.
| Name | Type | Req | Description |
|---|---|---|---|
| episode_id | string | yes | Episode id. |
| idempotency_key | string | yes | Stable key identifying this generation request. Reuse the SAME key when retrying the same request — the original job is returned and no second charge is made. Use a NEW key when you deliberately want… |
No output schema declared.
No examples provided.
generate_location_image Generate location image ~111
Generate a reference image for a location. Spends credits. Returns a job id — poll it with get_job.
| Name | Type | Req | Description |
|---|---|---|---|
| idempotency_key | string | yes | Stable key identifying this generation request. Reuse the SAME key when retrying the same request — the original job is returned and no second charge is made. Use a NEW key when you deliberately want… |
| location_id | string | yes | Location id. |
| reference_image_asset_ids | array | – | – |
| user_notes | string | – | – |
No output schema declared.
No examples provided.
generate_script Generate script ~258
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.
| Name | Type | Req | Description |
|---|---|---|---|
| episode_count | integer | – | How many episodes to write. |
| episode_length_seconds | integer | yes | Target length of each episode, in seconds. |
| genre | string | – | Genre label. |
| idempotency_key | string | yes | Stable key identifying this generation request. Reuse the SAME key when retrying the same request — the original job is returned and no second charge is made. Use a NEW key when you deliberately want… |
| language | string | – | Language to write in. |
| screen_ratio | string | – | Aspect ratio. |
| story_idea | string | yes | The story premise to write from. |
| target_platform | string | – | Platform the episodes are cut for. |
| visual_style | string | – | Visual style. Defaults to Realistic TV Drama. |
No output schema declared.
No examples provided.
generate_shot_background_image Generate background plate ~305
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.
| Name | Type | Req | Description |
|---|---|---|---|
| idempotency_key | string | yes | Stable key identifying this generation request. Reuse the SAME key when retrying the same request — the original job is returned and no second charge is made. Use a NEW key when you deliberately want… |
| reference_image_asset_ids | array | – | – |
| reference_images_base64 | array | – | 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 — a 720x1280 JPEG is roughly 40-130KB of bas… |
| short_shot_number | integer | yes | Short shot number within the shot. |
| shot_id | string | yes | Shot id. |
No output schema declared.
No examples provided.
generate_shot_clip Generate shot clip ~125
Generate a video clip for a single shot (episode_shots row). Spends credits. Returns a job id — poll it with get_job.
| Name | Type | Req | Description |
|---|---|---|---|
| idempotency_key | string | yes | Stable key identifying this generation request. Reuse the SAME key when retrying the same request — the original job is returned and no second charge is made. Use a NEW key when you deliberately want… |
| model | string | – | Video model override. |
| short_shot_number | integer | – | Target a specific short shot. |
| shot_id | string | yes | Shot id. |
No output schema declared.
No examples provided.
get_asset_library List assets ~27
List generated assets available to a project.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | Project id. |
No output schema declared.
No examples provided.
get_character Get character ~23
Get one character record.
| Name | Type | Req | Description |
|---|---|---|---|
| character_id | string | yes | Character id. |
No output schema declared.
No examples provided.
get_character_looks List character looks ~26
List a character's looks.
| Name | Type | Req | Description |
|---|---|---|---|
| character_id | string | yes | Character id. |
No output schema declared.
No examples provided.
get_episode Get episode ~23
Get one episode record.
| Name | Type | Req | Description |
|---|---|---|---|
| episode_id | string | yes | Episode id. |
No output schema declared.
No examples provided.
get_episode_editor Get full episode ~65
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.
| Name | Type | Req | Description |
|---|---|---|---|
| episode_id | string | yes | Episode id. |
| project_id | string | yes | Project id. |
No output schema declared.
No examples provided.
get_episode_shots List shots ~27
List the shots in an episode.
| Name | Type | Req | Description |
|---|---|---|---|
| episode_id | string | yes | Episode id. |
No output schema declared.
No examples provided.
get_job Get job status ~40
Get one generation job's status and output. Use this to poll a job returned by a generate_* tool.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | Job id. |
No output schema declared.
No examples provided.
get_location Get location ~23
Get one location record.
| Name | Type | Req | Description |
|---|---|---|---|
| location_id | string | yes | Location id. |
No output schema declared.
No examples provided.
get_project Get project ~27
Get one project's summary and current workflow step.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | Project id. |
No output schema declared.
No examples provided.
get_project_characters List characters ~25
List a project's characters.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | Project id. |
No output schema declared.
No examples provided.
get_project_episodes List episodes ~27
List the episodes in a project.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | Project id. |
No output schema declared.
No examples provided.
get_project_locations List locations ~24
List a project's locations.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | Project id. |
No output schema declared.
No examples provided.
get_project_script Get script ~26
Get a project's full script package.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | Project id. |
No output schema declared.
No examples provided.
get_scene_assets Get scene ~53
Get one scene with its shots, characters, locations and continuity references.
| Name | Type | Req | Description |
|---|---|---|---|
| episode_id | string | yes | Episode id. |
| project_id | string | yes | Project id. |
| scene_number | integer | yes | Scene number. |
No output schema declared.
No examples provided.
list_episode_segments List segments ~27
List the video segments in an episode.
| Name | Type | Req | Description |
|---|---|---|---|
| episode_id | string | yes | Episode id. |
No output schema declared.
No examples provided.
list_project_jobs List jobs ~29
List generation jobs for a project, newest first.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | Project id. |
No output schema declared.
No examples provided.
list_projects List projects ~17
List all projects owned by the authenticated user.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_shot_continuity_references List continuity references ~86
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.
| Name | Type | Req | Description |
|---|---|---|---|
| shot_id | string | yes | Shot id (episode_shots row). |
No output schema declared.
No examples provided.
remove_shot_continuity_reference Remove continuity reference ~97
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.
| Name | Type | Req | Description |
|---|---|---|---|
| asset_id | string | yes | Id of the continuity reference to remove, from list_shot_continuity_references. |
| shot_id | string | yes | Shot id (episode_shots row) the reference is attached to. |
No output schema declared.
No examples provided.
update_location Update location ~266
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.
| Name | Type | Req | Description |
|---|---|---|---|
| location_id | string | yes | Location id to update. |
| patch | object | yes | Fields to change. Send only what you are changing. |
No output schema declared.
No examples provided.
update_shot Update shot ~146
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.
| Name | Type | Req | Description |
|---|---|---|---|
| patch | object | yes | Fields to change. Send only what you are changing. Edit dialogue via camera_setup.short_shots[].dialogue_covered, not the deprecated `dialogue`. |
| shot_id | string | yes | Shot id (episode_shots row) to update. |
No output schema declared.
No examples provided.
update_shot_continuity_reference Update continuity reference ~154
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.
| Name | Type | Req | Description |
|---|---|---|---|
| asset_id | string | yes | Id of the continuity reference to update, from list_shot_continuity_references. |
| guidance | – | yes | 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. |
| shot_id | string | yes | Shot id (episode_shots row) the reference is attached to. |
No output schema declared.
No examples provided.
upload_shot_continuity_reference Upload continuity reference ~268
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.
| Name | Type | Req | Description |
|---|---|---|---|
| filename | string | yes | File name to store it under, e.g. scene-1-last-frame.jpg. |
| guidance | string | – | 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 | string | yes | The image bytes, base64-encoded. No data: URI prefix. |
| shot_id | string | yes | Shot id (episode_shots row) to attach the reference to. |
No output schema declared.
No examples provided.
What is the Squall Studio MCP server?
Squall Studio is an MCP server listed in the public MCP registry as com.squallstudio/squall-studio. Read, edit and generate AI microdrama scripts, shots, characters and video in Squall Studio. This page covers its hosted endpoint (https://squallstudio.com/api/mcp).
Is the Squall Studio MCP server safe to use?
Squall Studio scores 74 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Squall Studio MCP server expose?
Squall Studio exposes 30 tools: list_projects, get_project, get_project_episodes, get_episode, get_episode_editor, and 25 more. Their descriptions and schemas cost roughly 2,789 tokens of context every time the server is loaded.
Does the Squall Studio MCP server require authentication?
No. We connected to Squall Studio without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Squall Studio MCP server still maintained?
Squall Studio is still listed as active in the MCP registry. We last reached this channel on 26 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.