Skip to main content
Glama

Create a project

generate_script
Destructive

SPENDS the organization's wallet by default, behind the same gates the human passes (the org's quota, the daily free-action cap and the wallet): with production.auto_produce=true (the default) the whole production line runs without further calls. Creates a NEW project from an idea and launches it — the creation→edition crossing (a project is a conversation that starts from an idea). By default the same production line the human's button runs takes the piece to the final video: script → studio build → final render; publishing is not part of it. The script (first station) is written and charged BEFORE any wallet check; the studio build and the final render check the wallet and stop the line with waitingForFunds when it does not cover them — the script stays paid. With auto_produce=false the line stops after the script, so the piece can be edited before production. Returns the project id and the cast as pinned (cast.voice / cast.face with id and @handle); the project status reports progress until finalVideoUrl is set (typically 20-60 min). Requires write. creative_referent: a referent id from the catalogue of formats. Premium formats (requiresSpendConfirmation) also need production.confirm_spend=true.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
castNoWho narrates and who appears, in THREE ways that combine: (a) a name from the catalogue of voices and presenters, by `id` or `@handle` (`voice` / `face`) — a name that does not resolve is an error, not a silent fallback; (b) the wanted presenter DESCRIBED in `describe_face`, which casting resolves to the closest face of the catalogue — with enough detail (features, or two of gender/age/ethnicity) it can GENERATE a new one for this piece, which costs money and needs `production.confirm_spend=true`; (c) nothing, and casting decides by ear. `on_camera` puts the presenter on screen. A named `face` wins over `describe_face`.
titleNoOptional project title (else derived from the idea).
sourceNoThe creator's OWN material. `kind=script` + `respect=strict`: the piece narrates the text verbatim (word-level control from the start); `kind=content`: an article or notes the Director adapts (`respect` guided|adaptive). Without it the Director writes from `prompt_seed`.
materialNoThe creator's own uploaded files that belong to this piece (footage, photos, a recorded voice). Each item names one file of the personal library by its `assetId`: the id alone, or an object with `asset_id` and a `purpose` (what the file is for in the piece). The files are stored with the piece; the answer says what the piece does with them (`direction`), and they are not part of the price. While a file is still being verified, the `handle` of its upload is accepted in place of the id, and the request is answered as not ready; a file that is not in the caller's library is answered as not usable.
productionNoThe production settings; without them, the platform defaults apply.
prompt_seedNoThe request, in the creator's words. A single idea is enough; a full brief is honored whole: title, thesis, structure and timing, how the piece opens and closes, what it may claim and from which sources, its look and sound, what to avoid, text that appears on screen. The writers and the direction receive it complete, up to 16000 characters; a longer request is rejected, and long reference material travels in `source`. Sources named by URL are read as primary material; when the request states that facts come only from them, nothing outside those sites is used.
target_languageNoISO-639-1 of the piece (en, es, pt, …). Default en.
creative_referentYesThe format referent id from Vixdeo's catalogue of formats.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / production / properties / target_duration_sec / description
      Previous value: -"Exact target length in seconds, inside the duration_profile's range (e.g. 300 for «five minutes» in watch_standard). Without it the profile's own target governs."New value: +"Exact target length in seconds (e.g. 210 for «3:30»). It governs the duration profile: if it falls outside the profile's range, the profile whose range contains it governs and the response says so (`durationProfileSource: target_duration_sec`, `durationProfileDisplaced` names the profile it replaced). Without a profile it picks the one that contains it. Without it the profile's own target governs."
  2. Changed2 schema fields changed
    • changedInput schema / properties / prompt_seed / description
      Previous value: -"The idea, in the creator's words (topic, angle, what the viewer takes away)."New value: +"The request, in the creator's words. A single idea is enough; a full brief is honored whole: title, thesis, structure and timing, how the piece opens and closes, what it may claim and from which sources, its look and sound, what to avoid, text that appears on screen. The writers and the direction receive it complete, up to 16000 characters; a longer request is rejected, and long reference material travels in `source`. Sources named by URL are read as primary material; when the request states that facts come only from them, nothing outside those sites is used."
    • addedInput schema / properties / prompt_seed / maxLength
      Added value: +16000
  3. Changed1 schema field changed
    • addedInput schema / properties / material
      Added value: +{
      +  "description": "The creator's own uploaded files that belong to this piece (footage, photos, a recorded voice). Each item names one file of the personal library by its `assetId`: the id alone, or an object with `asset_id` and a `purpose` (what the file is for in the piece). The files are stored with the piece; the answer says what the piece does with them (`direction`), and they are not part of the price. While a file is still being verified, the `handle` of its upload is accepted in place of the id, and the request is answered as not ready; a file that is not in the caller's library is answered as not usable.",
      +  "items": {
      +    "anyOf": [
      +      {
      +        "description": "The `assetId` of a file of the personal library.",
      +        "type": "string"
      +      },
      +      {
      +        "properties": {
      +          "asset_id": {
      +            "description": "The `assetId` of a file of the personal library.",
      +            "type": "string"
      +          },
      +          "purpose": {
      +            "description": "What the file is for in the piece, e.g. 'the interview that closes the piece'.",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "asset_id"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  "type": "array"
      +}
  4. Changed15 schema fields changed
    • changedInput schema / properties / cast / description
      Previous value: -"Who narrates and who appears. THREE ways, and you can mix them: (a) name someone from `list_cast` by `id` or `@handle` (`voice` / `face`) — a name that does not resolve is an error, never a silent fallback; (b) DESCRIBE the presenter you want in `describe_face` and casting picks the closest face from the catalogue — with enough detail (features, or two of gender/age/ethnicity) it can GENERATE a new one for this piece, which costs money and needs `production.confirm_spend=true`; (c) say nothing and the casting decides by ear. `on_camera` puts the presenter on screen. A named `face` wins over `describe_face`."New value: +"Who narrates and who appears, in THREE ways that combine: (a) a name from the catalogue of voices and presenters, by `id` or `@handle` (`voice` / `face`) — a name that does not resolve is an error, not a silent fallback; (b) the wanted presenter DESCRIBED in `describe_face`, which casting resolves to the closest face of the catalogue — with enough detail (features, or two of gender/age/ethnicity) it can GENERATE a new one for this piece, which costs money and needs `production.confirm_spend=true`; (c) nothing, and casting decides by ear. `on_camera` puts the presenter on screen. A named `face` wins over `describe_face`."
    • changedInput schema / properties / cast / properties / describe_face / description
      Previous value: -"The presenter you want, in words, when no catalogue handle fits. Casting resolves it against the catalogue and may generate."New value: +"The wanted presenter, in words, for when no catalogue handle fits. Casting resolves it against the catalogue and may generate one."
    • changedInput schema / properties / cast / properties / face / description
      Previous value: -"Presenter `id` or `@handle` from `list_cast`."New value: +"A presenter `id` or `@handle` from the catalogue of nameable presenters."
    • changedInput schema / properties / cast / properties / voice / description
      Previous value: -"Voice `id` or `@handle` from `list_cast`."New value: +"A voice `id` or `@handle` from the catalogue of nameable voices."
    • changedInput schema / properties / creative_referent / description
      Previous value: -"The format/style referent id (see `list_referents`)."New value: +"The format referent id from Vixdeo's catalogue of formats."
    • changedInput schema / properties / production / description
      Previous value: -"How to produce it. Omit for the platform defaults."New value: +"The production settings; without them, the platform defaults apply."
    • changedInput schema / properties / production / properties / auto_produce / description
      Previous value: -"Run the whole line to the final video (default true)."New value: +"Whether the whole line runs to the final video (default true)."
    • changedInput schema / properties / production / properties / confirm_spend / description
      Previous value: -"Required true for formats that declare `requiresSpendConfirmation` (the wallet must also cover the band: otherwise `insufficient-funds-for-estimate` and no project is created)."New value: +"True confirms the spend of a format that declares `requiresSpendConfirmation`; the wallet also has to cover the band, otherwise the answer is `insufficient-funds-for-estimate` and no project is created."
    • changedInput schema / properties / production / properties / confirmed_request_ref / description
      Previous value: -"Alternative to `confirm_spend`: the `economics.requestRef` that `estimate` returned for THIS exact request — an informed confirmation. A ref of another request is rejected (`spend-not-confirmed`)."New value: +"Alternative to `confirm_spend`: the `economics.requestRef` of the price quote for THIS exact request — an informed confirmation. A ref of another request is rejected (`spend-not-confirmed`)."
    • changedInput schema / properties / production / properties / duration_profile / description
      Previous value: -"Target length profile (see `list_referents.durationProfiles` for seconds)."New value: +"Target length profile (`durationProfiles` in the catalogue of formats gives the seconds)."
    • changedInput schema / properties / production / properties / period_rigor / description
      Previous value: -"What to do when the era check finds an anachronism in a GENERATED shot (a modern helmet in 1906): `note` records it and mounts the shot; `rebuy` buys the shot again ONCE, telling the generator what to avoid, within the piece's recomposition cap. Omit it and the budget tier decides (premium rebuys; standard and economy note)."New value: +"What happens when the era check finds an anachronism in a GENERATED shot (a modern helmet in 1906): `note` records it and mounts the shot; `rebuy` buys the shot again ONCE, telling the generator what to leave out, within the piece's recomposition cap. Without it the budget tier decides (premium rebuys; standard and economy note)."
    • changedInput schema / properties / production / properties / subtitle_language / description
      Previous value: -"Language of the SUBTITLES (BCP-47: `es`, `pt-BR`…). Its OWN axis, independent of `target_language`: omit it and the subtitles follow the piece; declare it and the piece is narrated in one language and read in another (measured: 21 live projects declare the two on purpose)."New value: +"Language of the SUBTITLES (BCP-47: `es`, `pt-BR`…), its OWN axis, independent of `target_language`: without it the subtitles follow the piece; with it the piece is narrated in one language and read in another (measured: 21 live projects declare the two on purpose)."
    • changedInput schema / properties / production / properties / writing_profile / description
      Previous value: -"How the script is written — see `list_referents.writingProfiles` for each profile's meaning and the measured cost/time ratio per format. Default `estandar`."New value: +"How the script is written (`writingProfiles` in the catalogue of formats gives each profile's meaning and the measured cost/time ratio per format). Default `estandar`."
    • changedInput schema / properties / prompt_seed / description
      Previous value: -"The idea, in your own words (topic, angle, what the viewer should take away)."New value: +"The idea, in the creator's words (topic, angle, what the viewer takes away)."
    • changedInput schema / properties / source / description
      Previous value: -"Your OWN material. `kind=script` + `respect=strict`: the piece narrates your text verbatim (you keep word-level control from the start); `kind=content`: an article/notes the Director adapts (`respect` guided|adaptive). Omit to let the Director write from `prompt_seed`."New value: +"The creator's OWN material. `kind=script` + `respect=strict`: the piece narrates the text verbatim (word-level control from the start); `kind=content`: an article or notes the Director adapts (`respect` guided|adaptive). Without it the Director writes from `prompt_seed`."
  5. First observed

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources