Skip to main content
Glama

create_series

Paid (casting images). The paid call (dry_run false) only after the customer said yes to the season plan: in series_interview the round 4 yes approves it (Episode 1 first and Just go), otherwise approve_season_plan. dry_run true charges nothing and comes first: it shows the casting price, and series_interview's round 4 needs it. A new paid series id is refused without the approved current revision of its season plan, at the plan's quality and its show type's format, and while the season scripts gate is on, without its approved scripts (approve_season_scripts; the round 4 yes's next says which). Casts fictional adults: lead a and lead b (lead_* fields) plus up to 6 recurring characters in cast, each with a face, a full body and a turnaround sheet (the body, and the sheet once it is made, go to the video model in every scene the character is in), and an empty plate per location. One-episode guests and background extras are not cast here: add them per episode in save_episode_script (guests, scene background). cast: [{name, gender, age, look (face and hair), outfit (head to shoes), body_type, palette (a wardrobe colour no one else wears), signature_prop?, voice_note?, function?, relationships: [{to: id or name, kind}]}]; an entry with id a or b adds those extras to a lead. Recurring characters get ids c to h. Photo cast (a real person, with consent): a lead entry (id a or b) or a recurring entry may also carry photos, 1 to 4 image_url values from this account's uploads (upload_image, get_uploads) showing the same one real adult, and photo_consent, required with photos: "i_am_this_person" (the customer is that person) or "i_have_their_permission" (the customer has that person's permission). The photos are copied into the series' own storage and are that character's face (no face is generated or priced); the full body and sheet are made from them and every scene sends them to the video model. Adults only, never a public figure or a celebrity: every call (dry_run too) checks the photos first. Without consent, or for photos that do not pass, the call returns cast_refused true, reason and say (post it as is): nothing is created or charged. locations: 1 to 8 (one place is a whole series), each a description or {name, description, setting interior|exterior, time day|dusk|night}; a place has one time of day in every take, the one its description names. Limits (characters): lead_a_look, lead_b_look and each look 300; outfit 200; body_type 80; palette 30; signature_prop and voice_note 80; function 40 (a few words, like "her best friend"); name 40; relationship kind 120; location description 300, location name 40. Keep every value short; the server cuts anything longer to fit (more than 8 locations keep the first 8) and lists each change in adjusted: show the customer the cast and locations as returned. Short lowercase id; micro_drama|sitcom; language: the dialogue language as an ISO 639-1 code (en, es, fr, de, it, pt, pt-BR, nl, pl, tr, ar, hi, id, zh, ko, ja, ru, and most others; series_interview's supported_languages has the full list); a language shows do not film is refused before anything is priced or made, with a question for the customer offering filmed languages; every line is written, voiced, checked and captioned in this language; quality 480p (12 credits/s) or 720p (24 credits/s) on the standard engine (wan-3.0-prime), or premium (seedance-2.5 at 480p, 60 credits/s: one call per scene with every line, native voices and lip sync; slower, about 10 min a scene; offered in series_interview round 1 as Picture, never for the $1 pilot or the $49 series) for every episode of the series. dry_run=true returns the exact casting credits (0 on a drama plan) and list credits and creates nothing. Casting runs in the background: poll get_series_overview until casting.status is ready and show the images for approval. style: photoreal (default, live-action) or anime (Japanese anime film look: cel shading, painterly backgrounds, one fixed character design per person); it applies to every casting image and every episode and cannot change later. Pass anime only when the customer asked for anime, manga or animation; otherwise photoreal. Calling again with identical values resumes casting and never pays twice. FIRST RUN: pass the Ep1 script (episode JSON) as episode_1 with dry_run true to get its craft_check and first_run price (casting plus Ep1 video, voices and storyboards) free; after the customer's one yes, call with dry_run false and the same episode_1: it is saved as Ep1, ready for make_episode. subtitle_language: leave empty for captions in the dialogue language; set it (he, ar, en, es...) when the customer wants the burned captions in another language than the dialogue (English dialogue with Hebrew subtitles): every spoken line then needs a "subtitle" field, the line translated into that language, and the captions show it timed to the spoken line. Change it later with set_subtitle_language.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "id": "<id>",
      "title": "<title>",
      "format": "<format>",
      "language": "<language>",
      "premise": "<premise>",
      "lead_a_name": "<lead_a_name>",
      "lead_a_look": "<lead_a_look>",
      "lead_a_gender": "<lead_a_gender>",
      "lead_b_name": "<lead_b_name>",
      "lead_b_look": "<lead_b_look>",
      "lead_b_gender": "<lead_b_gender>",
      "locations": "<locations>"
    },
    "name": "create_series"
  }
}

Input Schema

NameRequiredDescriptionDefault
idYes
castNo
styleNophotoreal
titleYes
formatYes
dry_runNo
premiseYes
privateNo
qualityNo720p
languageYes
episode_1No
locationsYes
lead_a_lookYes
lead_a_nameYes
lead_b_lookYes
lead_b_nameYes
lead_a_genderYes
lead_b_genderYes
subtitle_languageNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / quality / enum
      Previous value: -[
      -  "480p",
      -  "720p"
      -]New value: +[
      +  "480p",
      +  "720p",
      +  "premium"
      +]
  2. Changed1 schema field changed
    • addedInput schema / properties / subtitle_language
      Added value: +{
      +  "default": "",
      +  "title": "Subtitle Language",
      +  "type": "string"
      +}
  3. Changed1 schema field changed
    • addedInput schema / properties / style
      Added value: +{
      +  "default": "photoreal",
      +  "enum": [
      +    "photoreal",
      +    "anime"
      +  ],
      +  "title": "Style",
      +  "type": "string"
      +}
  4. Changed3 schema fields changed
    • addedInput schema / properties / cast
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "additionalProperties": true,
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Cast"
      +}
    • addedInput schema / properties / locations / items / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "additionalProperties": true,
      +    "type": "object"
      +  }
      +]
    • removedInput schema / properties / locations / items / type
      Removed value: -"string"
  5. Changed1 schema field changed
    • addedInput schema / properties / episode_1
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Episode 1"
      +}
  6. Changed2 schema fields changed
    • addedInput schema / properties / dry_run
      Added value: +{
      +  "default": false,
      +  "title": "Dry Run",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / quality
      Added value: +{
      +  "default": "720p",
      +  "enum": [
      +    "480p",
      +    "720p"
      +  ],
      +  "title": "Quality",
      +  "type": "string"
      +}
  7. Added

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-read-only, non-destructive, open-world write, and the description adds substantial context beyond that: credit rates per quality tier, background polling via get_series_overview, idempotent re-calls that never double-charge, and refusal paths returning cast_refused with a verbatim message. That is real value, but the prose is so dense and interleaved that an agent can easily miss a gating rule, and the returned object shape is barely described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The content is substantive but delivered as one long run-on block of dense parenthetical prose with no headings or bullets, mixing pricing, gating, character limits, and subtitles together. For a 19-parameter tool this is closer to under-structured than over-long, but as presented it is hard to scan and rules are easy to lose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must carry return behaviour, and it does describe key returns: exact casting credits and list credits from dry_run, the adjusted list of truncated values, cast_refused with reason and say, and the polling status. It does not describe the full returned series object, but for a tool of this complexity it is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage across 19 parameters, the description carries the full burden and mostly does: it spells out cast entry structure (name, gender, age, look, outfit, body_type, palette, signature_prop, voice_note, function, relationships, photos, photo_consent), the location string-or-object shape with interior/exterior and day/dusk/night, style, quality tiers, language ISO codes, and subtitle_language semantics. It omits title, premise, private, and the lead_*_gender fields entirely, leaving gaps an agent must guess at.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description makes clear this creates a paid series with AI casting images, and it repeatedly names sibling tools it hands off to (series_interview, approve_season_plan, approve_season_scripts, save_episode_script), so the agent can distinguish it from neighbours. The opening fragment 'Paid (casting images)' is not a clean verb+resource statement, which keeps it just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It is explicit about ordering and preconditions: dry_run true comes first and charges nothing, the paid call only after the customer's yes via series_interview round 4 or approve_season_plan, and gated further when the season scripts gate is on. It also names the correct alternatives for things not done here (guests and background extras go to save_episode_script), so no inference is needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources