# Brix36 (remote · api.brix36.com)

Films and music videos. You're the star. No subscription.

- Trust score: 83/100 (high trust)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `api.brix36.com`: 83/100 (this document), [markdown](https://verifymcp.io/servers/com-brix36-brix36/api.md), [page](https://verifymcp.io/servers/com-brix36-brix36/api)

## Channel facts

- Endpoint: `https://api.brix36.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.2.0`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 11/100
  - TLS not yet verified: we couldn't open a connection to check the certificate.
  - Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS not yet verified: we couldn't read the response headers to check for it.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but we couldn't connect to verify it.
- **Schema Quality & AI Usability**: 0/100
  - Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 0/100
  - Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Tool Safety**: 0/100
  - Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Capabilities**: 0/100
  - Capabilities not yet verified: we couldn't read the endpoint's capabilities.

**Unverified: 5 categories.** Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

## Install

### How do I install the Brix36 MCP server?

Brix36 is a hosted endpoint at https://api.brix36.com/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.

### Claude

```bash
claude mcp add --transport http com-brix36-brix36 'https://api.brix36.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "com-brix36-brix36": {
      "url": "https://api.brix36.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-brix36-brix36": {
      "type": "http",
      "url": "https://api.brix36.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.com-brix36-brix36]
url = "https://api.brix36.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-brix36-brix36": {
      "type": "remote",
      "url": "https://api.brix36.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-brix36-brix36 --url 'https://api.brix36.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-brix36-brix36:
    url: "https://api.brix36.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "com-brix36-brix36": {
      "Transport": "http",
      "Url": "https://api.brix36.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-brix36-brix36 -t streamable-http -u 'https://api.brix36.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "com-brix36-brix36": {
      "type": "http",
      "url": "https://api.brix36.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 83, 0)

- [security regression] Endpoint reachability: reachable → unreachable
- [security regression] Stability: 0.80 → unverified
- [security regression] HSTS header: fail → unverified
- [security regression] Tool safety: pass → unverified
- [security regression] Authorization: pass → unverified
- [security regression] TLS certificate: pass → unverified
- [security regression] Transport: pass → fail
- [functional regression] Capabilities: pass → unverified
- [functional regression] Schema quality: 0 → unverified
- [functional regression] Tool coverage: 100 → unverified

### 2026-11-04 (score 83, +1)

- [functional] This server's schema is too large to store in full, so we cannot compare its tools day to day

### 2026-11-03 (score 82, 0)

- [functional] This server's schema is too large to store in full, so we cannot compare its tools day to day

### 2026-11-02 (score 82, +1)

- [functional] This server's schema is too large to store in full, so we cannot compare its tools day to day

### 2026-11-01 (score 81, 0)

- [functional regression] Tool coverage: 81% → 76%
- [functional] This server's schema is too large to store in full, so we cannot compare its tools day to day

### 2026-10-31 (score 81, 0)

- [functional] This server's schema is too large to store in full, so we cannot compare its tools day to day

### 2026-10-30 (score 81, +1)

- [functional] This server's schema is too large to store in full, so we cannot compare its tools day to day

### 2026-10-29 (score 80, 0)

- [functional] This server's schema is too large to store in full, so we cannot compare its tools day to day

## MCP tools (118)

### `studio_video_plan` (~433 tokens)

Plan a music video or film and get its price (one approval)

Creates or updates a film or music-video project, saves its script or storyboard, and returns a price quote without charging. Film input contains the finished script, language, cast and visualWorld. Music input contains sections, visualWorld and optional songUnderstanding. start identifies a new project; projectId identifies an existing one. A music project without a song returns state needs_song and its projectId; planning can continue on that project after its song upload. The result contains the project, saved plan and quote. Identical operationId and input retries return the same project and quote. Rendering is separate and requires the customer's approval of the quoted price.

Input parameters:

- `boosters` (object): Optional motion-graphics overlay pack for the finished video, film or advert: mode 'auto' (automatic captions, titles and end card), 'off' (no motion overlay), or 'custom' with optional styleId (for…
- `film` (object): Film only: the finished script, language, cast and visualWorld (same fields as studio_film_script_write). expectedRevisionId may be omitted for a new film.
- `filmScenes` (object)
- `music` (object): Music only: what to save on the board once the song is on the project.
- `operationId` (string, required): Stable operation identifier shared by this quote and its confirmation.
- `projectId` (string): Continue this existing project instead of starting a new one.
- `scope` (string, required): 'whole' for the whole song, 'ticked' for the sections currently ticked on the board.
- `start` (object): Start a new video (same fields as studio_video_start). Omit when continuing an existing projectId.
- `stillQuality` (string): Picture quality for the pictures. Default high.
- `stillShotIds` (array): Optional customer-selected stableShotIds from studio_sections_read. Absence selects every shot without a picture. Other shots may have separate later quotes and financial approvals.

### `studio_artists_list` (~145 tokens)

List the customer's artists, A to Z

Lists the customer's artists alphabetically, with IDs, names, identity kind, screened photo count, face-check status and whether the real-person video model can use them. Artist IDs also identify Film cast members. Fictional characters need no photo or likeness consent; real-person artists retain the app's consent flow. Free, read-only pagination, up to 50 artists per page.

Input parameters:

- `cursor` (string): The previous page’s nextCursor; absent on the first page.
- `limit` (integer): Number of results, default 20 and maximum 50.
- `query` (string): Optional case-insensitive artist name fragment. Pagination binds nextCursor to the same query.

### `studio_projects_list` (~120 tokens)

List the customer's videos, newest first

Lists the customer's videos newest first, optionally filtered by artistId. Returns projectId, title, artist, status, picture, last-change time and nextCursor. Free and read-only, up to 50 projects per page.

Input parameters:

- `artistId` (string): Optional artist ID from studio_artists_list or studio_video_start. Absence lists every accessible artist’s videos.
- `cursor` (string): The previous page’s nextCursor; absent on the first page.
- `limit` (integer): Number of results, default 20 and maximum 50.

### `studio_model_catalogue` (~133 tokens)

Browse Brix36 models and options

Returns the current Brix36 model catalogue, including profiles, settings, media limits, availability reasons, recommended choices and qualified starting prices in credits and GBP minor units including VAT. Starting prices are distinct from generation quotes. Pagination uses nextCursor with the same kind. No generation or charge.

Input parameters:

- `cursor` (string): Opaque nextCursor from the catalogue, bound to the same kind and catalogue version. Absence starts a fresh page.
- `kind` (string): Optional media-kind filter; absence includes all kinds.
- `limit` (integer): Maximum items to return, 1–50. Default 20.

### `studio_video_start` (~429 tokens)

Start a music video or film for this customer

Creates a Music or Film project in the customer's catalogue. Accepts an existing artist name or a new fictional name with createArtist:true. Fictional characters require no photo or likeness consent; real-person creation retains the app consent flow. Music requires songTitle; Film requires title or songTitle and no song. Identical retries return the same project. Returns project identifiers for song upload or Film script import. No generation or charge.

Input parameters:

- `artistId` (string): Exact artist ID from studio_artists_list, disambiguating artists with the same name. ID and artistName must match.
- `artistName` (string, required): The existing artist or invented character starring in it. Required: an existing name from studio_artists_list (case and spacing do not matter), or the customer's chosen new fictional name with create…
- `boosters` (object): Optional motion-graphics overlay pack for the finished video, film or advert: mode 'auto' (automatic captions, titles and end card), 'off' (no motion overlay), or 'custom' with optional styleId (for…
- `createArtist` (boolean): True creates a new fictional_character under an unmatched artistName. Fictional characters need no photo or likeness consent. Real-person creation uses the existing app consent flow. Existing names a…
- `durationMs` (integer): The song length in milliseconds, if the customer's AI knows it.
- `kind` (string, required): The requested video kind: music is a music video for a song; film is a short film with scenes, dialogue and optional music.
- `songTitle` (string): The song this video is for. Required for a music video; optional for a film, which needs no song. Shown to the customer and used for the catalogue entry.
- `title` (string): What to call the video. Defaults to the song title. A film without a songTitle needs this.

### `studio_song_attach` (~64 tokens)

Upload a song in the chat

Returns a song upload widget and a one-time fallback uploadUrl for an existing project. File bytes go directly to Brix36. Repeated calls return the same fallback link or the existing song attachment. No charge.

Input parameters:

- `projectId` (string, required): From studio_video_start.

Output parameters:

- `code` (string)
- `expiresAt` (string)
- `instructions` (string)
- `issues` (array)
- `mediaOrigin` (string)
- `message` (string)
- `next` (string)
- `note` (string)
- `outcomeUnknown` (boolean)
- `projectId` (string)
- `purpose`
- `uploadUrl` (string)
- `view`

### `studio_songs_list` (~125 tokens)

List artist songs

List one artist songs using the app canonical grouping, including their available project versions. Returns a bounded songs page and nextCursor. Each song projectId identifies the project holding that song version. Free; this does not upload or generate audio.

Input parameters:

- `artistId` (string, required): Artist ID returned by studio_artists_list or studio_artist_read. Also identifies this artist when casting a Film.
- `cursor` (string): Opaque previous-page nextCursor; absent for the first page.
- `limit` (integer): Maximum items to return, 1–50. Default 20.

### `studio_song_status` (~84 tokens)

Read song upload and analysis

Read the currently attached song and its technical analysis for a project. Returns the song attachment, latest upload job status, analysis ID, measured duration, tempo, sections and existing themes when available. Absent analysis stays pending. Free; this never starts transcription, reasoning or a storyboard.

Input parameters:

- `projectId` (string, required): Project ID returned by studio_projects_list or studio_video_start.

### `studio_artist_photo` (~68 tokens)

Upload the artist photo in the chat

Returns an artist-photo upload widget and a one-time fallback uploadUrl. File bytes go directly to Brix36. Repeated calls return the same link or report an existing photo. No charge.

Input parameters:

- `projectId` (string, required): The video whose artist needs the photo, from studio_video_start.

Output parameters:

- `artistId` (string)
- `code` (string)
- `expiresAt` (string)
- `instructions` (string)
- `issues` (array)
- `mediaOrigin` (string)
- `message` (string)
- `next` (string)
- `note` (string)
- `outcomeUnknown` (boolean)
- `projectId` (string)
- `purpose`
- `uploadUrl` (string)
- `view`

### `studio_media_upload_widget` (~102 tokens)

Upload a file in chat

Opens a file picker for a song, artist photo or image/video reference on the specified project. The customer selects the file; bytes go directly to Brix36. No paid work.

Input parameters:

- `projectId` (string, required): The project receiving the file. Required for song, Artist DNA (artist is derived from the project) and reference attachment; no project is selected implicitly.
- `purpose` (string, required): The customer file role; this never selects a paid generation.

Output parameters:

- `allowedMimeTypes` (array)
- `code` (string)
- `issues` (array)
- `maxBytes` (integer)
- `mediaOrigin` (string)
- `message` (string)
- `outcomeUnknown` (boolean)
- `projectId` (string)
- `purpose`
- `view`

### `studio_media_upload_url` (~199 tokens)

Prepare a signed file upload

Creates an HTTPS POST upload capability bound to the user, project, role, exact file metadata and SHA-256, expiring in 15 minutes. Returns uploadUrl, uploadToken, method and expiresAt. The upload accepts raw bytes with the declared MIME Content-Type; attachment status is confirmed separately. No file bytes pass through MCP and no generation credits are spent.

Input parameters:

- `contentHash` (string, required): SHA-256 of the exact file bytes. The signed capability binds these bytes and cannot attach another file.
- `mimeType` (string, required): The file MIME type.
- `name` (string, required): File name, not a local path.
- `projectId` (string, required): The project receiving the file. Required for song, Artist DNA (artist is derived from the project) and reference attachment; no project is selected implicitly.
- `purpose` (string, required): The customer file role; this never selects a paid generation.
- `size` (integer, required)

### `studio_media_confirm` (~61 tokens)

Confirm the uploaded file

Returns pending or accepted attachment status and assetId for the exact owned uploadToken. Reconciles the existing upload without creating a second attachment, generating media or spending credits.

Input parameters:

- `uploadToken` (string, required): The signed uploadToken returned by studio_media_upload_url.

### `studio_media_import_url` (~191 tokens)

Import public HTTPS media

Import a public HTTPS song, artist photo or reference into the same private attachment pipeline as an upload. projectId is optional in the schema but required to attach media: omission returns guidance to select a project, never another user project. Refuses private/loopback destinations, unsafe redirects, DNS rebinding, invalid file types, oversized downloads and slow sources. Song/photo replacement rules remain unchanged. Identical reference bytes in the same project replay the existing asset. Returns assetId and status; no provider or language model is called.

Input parameters:

- `projectId` (string): The project receiving the file. Required for song, Artist DNA (artist is derived from the project) and reference attachment; no project is selected implicitly.
- `purpose` (string, required): The customer file role; this never selects a paid generation.
- `url` (string, required): A direct public HTTPS media URL, port 443, without user credentials.

### `studio_sections_read` (~68 tokens)

Read the storyboard sections and their lines

Returns the project's 30-second storyboard sections, including indexes, times, names, inclusion, pictures, action, Performance/Story type and lyric line IDs with lip-sync settings. These indexes and IDs identify inputs to section-edit tools. Free and read-only.

Input parameters:

- `projectId` (string, required)

### `studio_storyboard_write` (~99 tokens)

Write the storyboard sections the customer drafted

Updates the supplied existing 30-second storyboard sections with what, type and included fields. The server owns section indexes, count, names, timing and pictures. All supplied edits succeed together or the prior board is restored with a refusal identifying the failed section. No generation or credit charge.

Input parameters:

- `projectId` (string, required)
- `sections` (array, required): The drafted sections. Each names the index it changes and any of what, type, included.

### `studio_sections_update` (~124 tokens)

Change one section: tick, Performance/Story, or What happens

Updates included, type and/or what for one existing 30-second storyboard section. Omitted fields remain unchanged. Timing, names and pictures are outside this operation. No generation or charge.

Input parameters:

- `included` (boolean): The tick. False leaves this section out of the generation.
- `index` (integer, required)
- `projectId` (string, required)
- `revisionId` (string): The revisionId returned by the read. Required by the hosted writer.
- `type` (string): Performance or Story.
- `what` (string): "What happens" in this section.

### `studio_sections_set_line_sync` (~183 tokens)

Set whether the artist mouths one line

Sets lip-sync for one existing lyric line identified by section index and stable line ID. sync:true means the artist mouths the line. Defaults are true for the artist's own words and false for guest/ad-lib lines. No generation or charge.

Input parameters:

- `expectedStartMs` (integer): Exact startMs from the read; a precondition, never a retiming. Required by the hosted writer.
- `expectedText` (string): Exact line text from the read; a precondition, never an edit. Required by the hosted writer.
- `lineId` (string, required): The line id from studio_sections_read.
- `projectId` (string, required)
- `revisionId` (string): The revisionId returned by the read. Required by the hosted writer.
- `sectionIndex` (integer, required)
- `sync` (boolean, required): True when the artist mouths this line.

### `studio_film_script_write` (~260 tokens)

Import a finished Film script

Imports finished screenplay-style Film text, with SCENE headings, NAME: dialogue and optional visualWorld. Preserves scenes, dialogue and speaker names, caps Film at five minutes and reports uncast speakers. Identical retries return the same plan. A visualWorld is required for quoting. No Brix36 planning model or credit charge.

Input parameters:

- `cast` (array): Optional: artist names to cast, in slot order. Names must be the customer's own artists.
- `expectedRevisionId` (string|null, required): The revisionId from studio_sections_read, or null only when no storyboard exists.
- `language` (string, required): The selected Film language. The host validates its actual model capability; text is not translated.
- `projectId` (string, required): From studio_video_start with kind 'film'.
- `script` (string, required): The finished script, exactly as written. Its language is preserved as-is.
- `visualWorld` (object): Board-wide visual facts. Optional characters, vehicles, locations, props and never are arrays of up to 12 non-empty strings, each at most 300 characters. Combined rendered fields are limited to 2,400…

### `studio_storyboard_redo_request` (~69 tokens)

Request a picture redo

Validates a widget-selected stableShotId against the current visible storyboard and returns a request to price that picture change. No approval, generation or spending.

Input parameters:

- `projectId` (string, required): Current storyboard project.
- `stableShotId` (string, required): The shot whose picture the customer tapped.

### `studio_storyboard_preview` (~79 tokens)

Preview the storyboard

Returns the stored storyboard as 30-second section cards with lines and numbered shots. Each shot includes stableShotId and a signed stillUrl valid for about a day, or null if no picture exists. Supported hosts also receive an interactive preview. Free and read-only.

Input parameters:

- `projectId` (string, required): Project id from the Brix36 library.

Output parameters:

- `code` (string)
- `issues` (array)
- `mediaOrigin` (string)
- `message` (string)
- `outcomeUnknown` (boolean)
- `projectId` (string)
- `revisionId` (string|null)
- `sections` (array)
- `view`

### `studio_video_preview` (~61 tokens)

Play the finished video

Returns current edit status and signed playback links for an existing finished master or selected range files, including finished results beside unfinished edits. Supported hosts receive players. No generation or credit charge.

Input parameters:

- `projectId` (string, required): Project id from the Brix36 library.

Output parameters:

- `artistId` (string)
- `artistNeedsPhoto` (boolean)
- `artistPhotoReason` (string)
- `code` (string)
- `issue` (string)
- `issues` (array)
- `mediaOrigin` (string)
- `message` (string)
- `ordered` (boolean)
- `outcomeUnknown` (boolean)
- `projectId` (string)
- `sections` (object)
- `state` (string)
- `video` (object)
- `view`

### `studio_video_export` (~60 tokens)

Get a video download link

Returns signed download links for existing finished Music video or Film results and selected range files, including results beside unfinished edits. No public publishing, render, payment or extra export charge.

Input parameters:

- `projectId` (string, required): Project id from the Brix36 library.

### `studio_generation_quote` (~308 tokens)

Price a generation (nothing is charged)

Prices missing storyboard pictures plus the exact video price for one run without spending credits. Returns totalCredits, totalGbpInclVat, balance, shortfall, signed quoteToken, operationId, revisionId and priceVersion. engineRecommendations contains server-ranked choices, current selections and quoted alternatives; section engine selection returns a revised quote. Film filmScenes can quote one scene preview at a time (renderOnly:true), or remake named/missing scenes and assemble all saved clips (renderOnly:false). After each preview confirm, check the result, and quote the next scene. Film quotes include per-character, per-scene speech, motion and lip-sync routes, or historical_unavailable when prior evidence is absent. Chat-mode confirmation uses these exact quote fields. The saved financial approval covers pictures and video; requested picture changes have separate quotes. No checkout or approval-page URL is created. Existing app approvals and issued codes remain supported.

Input parameters:

- `filmScenes` (object)
- `operationId` (string, required): Stable operation identifier shared by this quote and its confirmation.
- `projectId` (string, required)
- `scope` (string, required): 'whole' for the whole song, 'ticked' for the sections currently ticked on the board.
- `stillQuality` (string): Picture quality for the pictures. Default high.
- `stillShotIds` (array): Optional customer-selected stableShotIds from studio_sections_read. Absence selects every shot without a picture. Other shots may have separate later quotes and financial approvals.

### `studio_generation_status` (~170 tokens)

Where an approved generation has got to

Waits up to 45 seconds for an active rendering stage to finish, then returns its current state and continuation data. Reads a saved whole-job or picture-only operation by its original projectId and operationId. Returns approval and generation state, next-step data, balance or shortfall where applicable, and any fresh unapproved quote. Whole-job states include making_pictures, pictures_ready, video_waiting_for_payment, starting_video, making_video and failed. Picture-only approval covers only its quoted pictures. Video retains the original financial approval and applicable readiness gates; likeness not_required needs no likeness verdict. This free read does not advance stages or charge credits.

Input parameters:

- `operationId` (string, required): The original operationId from studio_generation_quote or studio_storyboard_stills_quote.
- `projectId` (string, required)

### `studio_generation_wait` (~114 tokens)

Wait for rendering and the finished video link

Waits up to 45 seconds for active picture generation or the finished video. projectId identifies the video; optional operationId identifies its original picture/video approval. A pending response is a nonterminal timeout containing the exact nextCall for another bounded wait. A completed video response contains video.url. Free and read-only; no generation, approval, quote, payment or credit change.

Input parameters:

- `operationId` (string): Original operationId, when waiting on the picture stage or a combined generation.
- `projectId` (string, required)

### `studio_storyboard_picture_changes_prepare` (~165 tokens)

Prepare selected storyboard picture changes

Prices requested picture changes by original projectId/operationId, a new requestId and selected stableShotIds. New approvals produce separate picture-only quotes containing operationId, quoteToken, revisionId, modelId, mode, priceVersion and totalCredits. Identical requestId retries return the original quotes. Historical approvals can complete their previously approved paid picture changes. No charge for quoting.

Input parameters:

- `operationId` (string, required): The operationId of the customer's approval (from studio_generation_quote).
- `projectId` (string, required)
- `requestId` (string, required): New identifier for this picture-change request. Identical retries retain the original requestId.
- `stableShotIds` (array, required): The shots to redo or make, as stableShotIds from studio_storyboard_preview.

### `studio_generation_confirm` (~387 tokens)

Start a generation the customer approved

Spends Brix36 credits and starts the quoted work under the customer's financial approval. In chat mode, stage:pictures records one approval for pictures and video using the original operationId, quoteToken, priceVersion, quotedCredits and revisionId. Insufficient balance returns balance, shortfall and creditsInformationUrl without a checkout. Stage:video uses the current picture revision and the same financial approval, subject to the existing readiness gates. Identical stage and argument retries reconcile the same operation. New authorizations retain pause/cap, OAuth studio.spend, account and exact-quote checks. The response waits up to 45 seconds for the started stage and includes current progress, a finished video link when available, or the free status-call arguments for work still rendering. Existing page-approved operations and confirmationToken codes remain supported.

Input parameters:

- `confirmationToken` (string): Brix36-issued code for an existing app-approved operation. New chat approvals are bound by the chat-stage quote fields.
- `modelId` (string): Optional with an approved quote (the approved model is used). Otherwise the id of the model the customer chose, from that quote's models list.
- `operationId` (string, required): The same id used for this operation at quote time.
- `priceVersion` (string): Exact version of the combined quote the customer approved.
- `projectId` (string, required)
- `quoteToken` (string, required): The exact opaque quoteToken returned by studio_generation_quote.
- `quotedCredits` (integer): Exact totalCredits approved by the customer; bound to the quoted price.
- `revisionId` (string): For pictures, the quoted revisionId; for video, the current picture revision with applicable readiness checks satisfied.
- `stage` (string): Chat mode: pictures records one financial approval and starts pictures; video starts video under that same approval and the current readiness gates. Each retry retains its original stage.

### `studio_ai_sharing_choose` (~136 tokens)

Record the AI-sharing answer

Records the person's own answer to the AI-sharing question after a creation tool returned ai_processing_choice_required. allowed true means Allow and false means Not now. Consent counts only as that explicit reply; it is never inferred from the request to create and never supplied on the person's behalf. supersedes is the sequence that refusal returned (null when it was unset). Returns the stored answer; nothing is created or charged.

Input parameters:

- `allowed` (boolean, required): The person's explicit answer: true for Allow, false for Not now.
- `supersedes` (integer|null): The sequence from the ai_processing_choice_required refusal; null when it was unset.

### `studio_video_status` (~90 tokens)

How this video is going, and the finished video link

Waits up to 45 seconds while rendering, then returns draft, storyboard_ready, making, ready or needs_attention state, section progress counts, the studio's explanation and video.url when finished, with selected range labels, extent and original file links. Excluded sections are counted separately from failures. Provider fallback remains within the quoted price. No new work or charge.

Input parameters:

- `projectId` (string, required)

### `studio_storyboard_stills_quote` (~278 tokens)

Price the storyboard pictures

Prices selected storyboard pictures without spending. Supports missing pictures or new_version for exactly one existing picture, bound to the current revision, quality and stableShotIds. lookTest:true selects the saved bounded key-look set. Returns a signed picture-only quote and exact confirmation fields. Missing operationId is derived by the server; new_version uses a stable op_ ID. Chat approval and existing issued confirmation codes are supported. Short balance returns credit information only. This quote covers no video or planning model.

Input parameters:

- `lookTest` (boolean): For missing mode, true selects the approved storyboard’s saved key-look set. In this mode stableShotIds and operationId are absent.
- `mode` (string, required): missing prepares selected shots without pictures; new_version buys another picture for exactly one shot that already has one.
- `operationId` (string): Stable operationId from the picture quote. A new_version operation uses op_ followed by 10–120 letters, digits, underscores or dashes.
- `projectId` (string, required): The music-video or Film project id.
- `quality` (string, required): The customer’s explicit picture quality; high is the app’s best-picture option.
- `revisionId` (string, required): Exact storyboard revisionId from studio_sections_read. Identical retries retain the originally quoted revision.
- `stableShotIds` (array)

### `studio_storyboard_stills_confirm` (~302 tokens)

Make the confirmed storyboard pictures

Spends Brix36 credits for exactly the approved quoted pictures. Chat mode requires the quote's unchanged projectId, revisionId, mode, operationId, quoteToken, modelId, priceVersion and quotedCredits. Insufficient balance returns balance, shortfall and creditsInformationUrl without a checkout. Durable purchase/job reconciliation makes identical retries safe, including after expiry. Legacy confirmationToken remains supported. No video authorization or planning-model call.

Input parameters:

- `confirmationToken` (string): Brix36-issued confirmation code for these pictures and credits.
- `mode` (string, required): missing prepares selected shots without pictures; new_version buys another picture for exactly one shot that already has one.
- `modelId` (string, required): The exact modelId label returned with that still quote.
- `operationId` (string, required): Stable operationId from the picture quote. A new_version operation uses op_ followed by 10–120 letters, digits, underscores or dashes.
- `priceVersion` (string): Chat mode: exact priceVersion from the picture quote the customer approved.
- `projectId` (string, required): The music-video or Film project id.
- `quoteToken` (string, required): The exact opaque quoteToken returned by studio_storyboard_stills_quote.
- `quotedCredits` (integer): Chat mode: exact creditAmount shown to and approved by the customer.
- `revisionId` (string, required): Exact storyboard revisionId from studio_sections_read. Identical retries retain the originally quoted revision.

### `studio_storyboard_approve` (~93 tokens)

Approve the customer’s storyboard

Records the customer's storyboard approval for the exact current revisionId using the app's approval service. Changed revisions are refused. Directed-board and existing purchase guards remain enforced. No credits are spent and no media is generated.

Input parameters:

- `projectId` (string, required): The music-video or Film project id.
- `revisionId` (string, required): Exact storyboard revisionId from studio_sections_read. Identical retries retain the originally quoted revision.

### `studio_storyboard_readiness` (~149 tokens)

Check storyboard picture readiness

Returns readyForVideo, shotsMissingStills, public likenessGate, look-test state and reviewStills for the exact project and revision. Each review binding identifies a saved stableShotId/stillAssetId. A likenessGate of not_required needs no likeness verdict; an absent look test needs no look acceptance. Required likeness verdicts and acceptance of the saved look set are recorded separately. Video uses the original approved price and the existing readiness gates. No state change, provider call or charge.

Input parameters:

- `projectId` (string, required): The music-video or Film project id.
- `revisionId` (string, required): Exact storyboard revisionId from studio_sections_read. Identical retries retain the originally quoted revision.

### `studio_storyboard_likeness_record` (~177 tokens)

Record the customer’s likeness verdict

Record the customer’s confirmed or rejected likeness verdict for one exact saved picture. Requires the revision, shot and still asset the customer reviewed. Changes no picture and spends no credits.

Input parameters:

- `expectedStillAssetId` (string, required): For record_likeness: the exact saved stillAssetId reviewed by the customer, binding the verdict to that picture.
- `projectId` (string, required): The music-video or Film project id.
- `revisionId` (string, required): Exact storyboard revisionId from studio_sections_read. Identical retries retain the originally quoted revision.
- `stableShotId` (string, required): For record_likeness: the exact stableShotId shown to the customer.
- `verdict` (string, required): For record_likeness: confirmed means the customer said this picture carries the right likeness; rejected means the customer said replace it.

### `studio_storyboard_look_accept` (~141 tokens)

Record the customer’s look acceptance

Record the customer’s acceptance of the complete saved key-look picture set. Supply the exact revision and shot/asset pairs reviewed. Changes no picture and spends no credits.

Input parameters:

- `expectedStills` (array, required): For accept_look: the complete saved lookTest.stableShotIds set paired with the stillAssetIds reviewed by the customer. Corresponds to readiness.reviewStills entries with lookSelected:true, with one s…
- `projectId` (string, required): The music-video or Film project id.
- `revisionId` (string, required): Exact storyboard revisionId from studio_sections_read. Identical retries retain the originally quoted revision.

### `studio_song_understanding_write` (~454 tokens)

Save customer-authored song understanding

Saves finished song understanding against the current analysisId, assetId and understandingRevision. Accepts lyrics/description, language, themes and required words/lines arrays in the timed-transcription shape; empty arrays represent unavailable genuine timing. Source text alone supplies no lip-sync timing or voice ownership. voiceAnswer represents the customer's all_me, other_voices or skipped decision. Preserves measured audio facts and returns canonical understanding with a new revision. Stale input is refused. No transcription/planning model or credit charge.

Input parameters:

- `description` (string): Customer-approved song meaning/description. Absence retains the existing value; an empty string clears it.
- `expectedAnalysisId` (string, required): Current analysisId from studio_song_status.
- `expectedAssetId` (string, required): Current assetId from studio_song_status analysis: the existing uploaded master, not a new or remote audio source.
- `expectedUnderstandingRevision` (string, required): Opaque current understandingRevision from studio_song_status.
- `language` (string|null): Customer-supplied language, null when unknown. Absence retains the existing language.
- `lines` (array, required): TimedLine text/startMs/endMs, requiring supplied timed words. An empty array leaves section line-sync empty; prose alone supplies no timing.
- `lyrics` (string): Customer-supplied source lyrics with original line breaks. Absence retains existing lyrics; an empty string clears them.
- `projectId` (string, required): Project whose currently uploaded master song is being described.
- `themes` (array): Optional song themes. Absence retains existing themes; [] clears them.
- `voiceAnswer` (object): The customer’s voice-answer decision. Absence leaves ownership unconfirmed. Shape: {answer: "all_me"} | {answer: "skipped"} | {answer: "other_voices", spans: list of {startMs: integer, endMs: integer…
- `words` (array, required): Existing TimedWord shape: text/startMs/endMs. Genuine customer-supplied master timing only; [] when unknown. IDs are assigned by the canonical app normalizer.

### `studio_list_skills` (~123 tokens)

Find Brix36 creative skills

Searches Brix36 creative skills and style cards by keyword, medium or family. Returns summaries rather than full bodies, plus resource URIs and nextCursor. No Brix36 language-model call.

Input parameters:

- `cursor` (string): Opaque previous-page nextCursor; absent for the first page.
- `family` (string): Catalogue family returned by a previous result.
- `limit` (integer): Maximum items to return, 1–50. Default 20.
- `medium` (string)
- `query` (string): Words to match in the approved catalogue.

### `studio_get_skill` (~55 tokens)

Read a Brix36 creative skill

Returns one Brix36 creative skill, style card or writing guide by catalogue ID, including full body, version, hash and resource URI. Read-only.

Input parameters:

- `id` (string, required): Exact id returned by studio_list_skills.

### `studio_motion_create` (~337 tokens)

Create Motion Graphics

Saves a ready server-rendered Motion scene and returns its exact paid-render quote plus an optional free first-frame preview. Supports lyric video, beat-reactive visualiser, kinetic titles, photo-motion poster, promo cards, the 6 music/lyric/visualiser templates (lyric_video, audio_visualiser, living_cover, kinetic_type, club_tunnel, organic_landscape) across 7 genre looks (pop, hiphop_drill, rnb, house_edm, rock, country_acoustic, afrobeats), and all 24 popular motion styles (styleId). Uses owned audio and picture asset IDs; saved song timing supplies lyric cues and the saved scene can be edited. No AI video model or paid render is called. requestId identifies the saved document across retries. Each returned quote has its own identity; rendering requires explicit customer approval bound to that quote.

Input parameters:

- `approvedAlignmentId` (string)
- `artistId` (string)
- `artistName` (string)
- `aspect` (string, required)
- `audioAssetId` (string)
- `durationSeconds` (number, required)
- `expectedArtistRevision` (integer)
- `family` (string, required)
- `imageAssetId` (string)
- `intensity` (string)
- `lookId` (string)
- `lyrics` (string)
- `projectId` (string, required)
- `requestId` (string, required)
- `style` (string)
- `styleId` (string)
- `templateId` (string)
- `title` (string)
- `trimStartSeconds` (number)

### `studio_motion_quote` (~72 tokens)

Quote Motion render

Returns the server price in credits and GBP including VAT, bound to the exact revision, output, source and runtime. A paid render requires one explicit customer approval of this exact price. Edits invalidate prior quotes. No debit or render.

Input parameters:

- `projectId` (string, required)
- `revisionId` (string, required)

### `studio_motion_confirm` (~152 tokens)

Render approved Motion scene

Starts the exact paid server render after the customer explicitly approves its quoted price. Chat approval returns operationId, quoteToken, revisionId, inputDigest and quotedCredits unchanged from the quote. Existing Brix36 confirmationToken codes remain supported as a separate flow. The server enforces spending permission, account policy and exact quote bindings. Identical retries reconcile the original operation. Annotations do not attest to consent or guarantee a host confirmation screen.

Input parameters:

- `confirmationToken` (string)
- `inputDigest` (string)
- `operationId` (string, required)
- `projectId` (string, required)
- `quoteToken` (string, required)
- `quotedCredits` (integer)
- `revisionId` (string)

### `studio_motion_wait` (~74 tokens)

Wait for Motion video link

Waits up to 40 seconds for the original Motion operation, then returns its finished video.url and downloadUrl or a nonterminal pending response with an exact nextCall. Each status read checks current access. No generation, approval or credit change.

Input parameters:

- `operationId` (string, required)
- `projectId` (string, required)

### `studio_motion_catalogue` (~93 tokens)

Browse Motion Graphics catalogue

List available Motion Graphics templates (lyric_video, audio_visualiser, living_cover, kinetic_type, club_tunnel, organic_landscape), 7 genre looks (pop, hiphop_drill, rnb, house_edm, rock, country_acoustic, afrobeats), and all 24 popular motion styles with preview video URLs and input requirements. Read-only discovery.

Input parameters:

- `aspect` (string)

### `studio_account_read` (~48 tokens)

Read Brix36 account

Read the connected customer account and its current catalogue memberships. Returns user details and up to 50 catalogues with roles. The connection determines identity; no account or workspace argument is accepted. Free.

### `studio_credits_balance_read` (~60 tokens)

Read Brix36 credit balance

Read the connected customer wallet. Returns productionBalance, sandboxBalance, spendableBalance, status, reviewReason and sandboxSpendingEnabled from the app ledger. A review_required wallet cannot spend. Free; purchases remain in the Brix36 app.

### `studio_credit_usage_list` (~88 tokens)

List Brix36 credit activity

Lists the connected customer's purchases, spends, refunds and adjustments newest first. Returns signed amounts, source, time, accessible projectTitle and nextCursor. Pagination preserves the cursor value. No wallet changes.

Input parameters:

- `cursor` (string): Opaque previous-page nextCursor; absent for the first page.
- `limit` (integer): Maximum items to return, 1–50. Default 20.

### `studio_account_links_read` (~116 tokens)

Open Brix36 account or project controls

Returns verified native-app navigation and privacy/support links. No IDs selects account controls; accessible artistId/projectId adds the corresponding artist or project screens and appOnlyActions with reasons. Each ID is checked against viewer access. App-only workflows retain existing consent and spend controls. No purchase, paid work or account deletion.

Input parameters:

- `artistId` (string): Optional Artist DNA ID whose app controls to open; current viewer access is required.
- `projectId` (string): Optional project whose app screens to open; current viewer access is required.

### `studio_ready_made_stars_list` (~56 tokens)

Browse Brix36 ready-made characters

Lists the same free fictional character portraits offered by the Brix36 app, with each current star ID, name, description and versioned preview image. Read-only; creates no artist, image, generation or charge.

### `studio_artist_ready_made_choose` (~141 tokens)

Choose a free ready-made character

Saves one Brix36 ready-made fictional portrait on an existing artist using the same service as the app. Requires artist permission and a current starId from the ready-made star list. Returns the saved reference pack and whether it was newly created; choosing the same star retains the existing pack. No image generation or credit charge. Current generation readiness is read separately from the artist list.

Input parameters:

- `artistId` (string, required): Artist ID returned by studio_artists_list or studio_artist_read. Also identifies this artist when casting a Film.
- `starId` (string, required): Current star ID returned by studio_ready_made_stars_list; not an image URL.

### `studio_artist_create` (~252 tokens)

Create Brix36 artist

Creates an artist through the app service and returns profile and revision. Name is required; photos use dedicated upload/reference tools. catalogueArtistId optionally selects a manageable catalogue through an existing artist. Creation has no replay receipt; the artist list exposes persisted results after an uncertain response. No generation or charge.

Input parameters:

- `bio` (string): Artist biography; an empty string clears it.
- `catalogueArtistId` (string): Optional existing artist identifying the catalogue for creation. Not needed for a single-catalogue account.
- `genres` (array): Artist genres. An empty array clears the list.
- `identityKind` (string): Factual identity of the new artist. Real person by default. Adding a real face photo follows the app real-person rules.
- `influences` (array): Artist influences. An empty array clears the list.
- `location` (string): Artist location; an empty string clears it.
- `name` (string, required): New artist name.
- `primaryLanguage` (string): Artist primary language; an empty string clears it.
- `recurringThemes` (array): Artist recurring themes. An empty array clears the list.
- `visualKeywords` (array): Artist visual keywords. An empty array clears the list.

### `studio_artist_read` (~71 tokens)

Read Brix36 artist

Returns one artist's profile, current revision and Artist DNA summary, including genres, visual notes and identity readiness. The revision binds profile and cover edits. Read-only.

Input parameters:

- `artistId` (string, required): Artist ID returned by studio_artists_list or studio_artist_read. Also identifies this artist when casting a Film.

### `studio_artist_update` (~103 tokens)

Update Brix36 artist

Updates supplied artist profile fields with expectedRevision from the current profile. Returns the updated profile and revision; conflicting edits are refused. Photos, voices, identity kind and Film casting have separate operations.

Input parameters:

- `artistId` (string, required): Artist ID returned by studio_artists_list or studio_artist_read. Also identifies this artist when casting a Film.
- `expectedRevision` (integer, required): Current revision from the latest read. Stale revisions are refused.
- `patch` (object, required)

### `studio_artist_delete` (~118 tokens)

Delete Brix36 artist

Permanently erases an artist and their projects, storyboards, references and identity photos. Requires catalogue-owner access, the customer's deletion request and their exact current artist name as confirmation. In-flight work or payments prevent deletion. Returns artist=deleted and queued purge counts; external erasure is asynchronous.

Input parameters:

- `artistId` (string, required): Artist ID returned by studio_artists_list or studio_artist_read. Also identifies this artist when casting a Film.
- `confirmation` (string, required): Artist exact current name, supplied by the customer after they request permanent deletion.

### `studio_artist_actor_read` (~72 tokens)

Use artist as Film actor

Returns an existing artist's Film castId, identity readiness and Film creation link. castId equals artistId. No duplicate actor or artist-flag change is created.

Input parameters:

- `artistId` (string, required): Artist ID returned by studio_artists_list or studio_artist_read. Also identifies this artist when casting a Film.

### `studio_artist_dna_read` (~92 tokens)

Read Artist DNA and photo status

Returns identity summary, published photo pack, pending screening, approved creative facts and up to 20 recent social-scan statuses. Pending or held photos retain their status. The app link identifies consent and scan controls. No scan, language model or image generation starts.

Input parameters:

- `artistId` (string, required): Artist ID returned by studio_artists_list or studio_artist_read. Also identifies this artist when casting a Film.

### `studio_artist_dna_write` (~148 tokens)

Save artist creative facts

Saves customer-authored or approved creative facts as a new published Artist DNA version, preserving facts pinned by older projects. baseVersionId identifies the current version, or null when absent. Returns versionId and facts. Facts apply at once and need no pin. Requires manager permission; no language model or credit charge.

Input parameters:

- `artistId` (string, required): Artist ID returned by studio_artists_list or studio_artist_read. Also identifies this artist when casting a Film.
- `baseVersionId` (string|null, required): Current versionId from the last Artist DNA read, or explicit null when no version exists.
- `facts` (array, required): Full replacement set; an empty array clears the artist creative facts.

### `studio_artist_reference_add` (~172 tokens)

Add existing artist photo

Adds a customer photograph to Artist DNA through screened identity-reference services. Inline input accepts canonical base64, MIME type and angle up to 512 KiB. Larger files have dedicated upload/app paths. Validates and deduplicates bytes under existing face-source/publication rules. Returns pack and created flag. No image generation.

Input parameters:

- `angle` (string, required): Camera angle shown in this existing photo.
- `artistId` (string, required): Artist ID returned by studio_artists_list or studio_artist_read. Also identifies this artist when casting a Film.
- `bytesBase64` (string, required): Canonical base64 file bytes without a data URL prefix, up to 512 KiB decoded. Larger files have an app upload-link path.
- `mimeType` (string, required): Actual photo MIME type; the app also checks bytes.

### `studio_artist_reference_delete` (~99 tokens)

Remove artist photo

Remove one identity reference photo using the app service. Requires artist-level permission and the customer choosing this specific photo. Returns the updated identity pack. This can affect future likeness generation; older pinned projects keep their existing rules.

Input parameters:

- `artistId` (string, required): Artist ID returned by studio_artists_list or studio_artist_read. Also identifies this artist when casting a Film.
- `referenceId` (string, required): Identity reference ID from studio_artist_dna_read.

### `studio_artist_cover_set` (~118 tokens)

Choose artist cover photo

Sets an existing passed DNA photograph as the artist cover; referenceId:null restores automatic cover selection. Requires artist permission and expectedRevision from the current profile. Returns profile and revision; creates no image.

Input parameters:

- `artistId` (string, required): Artist ID returned by studio_artists_list or studio_artist_read. Also identifies this artist when casting a Film.
- `expectedRevision` (integer, required): Current revision from the latest read. Stale revisions are refused.
- `referenceId` (string|null, required): Passed current DNA photo ID, or null for automatic cover.

### `studio_song_reuse` (~134 tokens)

Reuse an uploaded song

Attaches existing customer audio from an accessible source project to an empty target through the durable upload/analysis path. sourceAttachmentId identifies the saved song attachment. Returns attachment/asset/job IDs or already_attached for identical audio. Repeats return the existing result; different current audio refuses replacement. No arbitrary URL fetch, generated audio or language-model call.

Input parameters:

- `projectId` (string, required): Project ID returned by studio_projects_list or studio_video_start.
- `sourceAttachmentId` (string, required): Source audio attachment ID from studio_song_status.
- `sourceProjectId` (string, required): Readable source project already holding the song.

### `studio_references_list` (~130 tokens)

List video and Film references

Browse customer image/video references across their accessible projects, or filter one project. Returns up to 50 references with projectId, attachmentId, signed contentUrl, scope, analysis status and a small preview of existing facts, plus nextCursor. Shot references affect only bound shots. Nothing is analysed by this tool.

Input parameters:

- `cursor` (string): Opaque previous-page nextCursor; absent for the first page.
- `limit` (integer): Maximum items to return, 1–50. Default 20.
- `projectId` (string): Project ID returned by studio_projects_list or studio_video_start.

### `studio_reference_notes_list` (~116 tokens)

Read reference creative notes

Returns a paginated list of existing approved, proposed or rejected reference notes for a project, optionally filtered by attachment. No server interpretation starts.

Input parameters:

- `attachmentId` (string): Attachment ID returned by studio_references_list or studio_song_status.
- `cursor` (string): Opaque previous-page nextCursor; absent for the first page.
- `limit` (integer): Maximum items to return, 1–50. Default 20.
- `projectId` (string, required): Project ID returned by studio_projects_list or studio_video_start.

### `studio_reference_upload_link` (~70 tokens)

Open reference upload screen

Returns the app reference-upload screen for an editable project, including for files over the 512 KiB inline limit. Uploaded results appear in the project's reference list. No upload or generation occurs in this read.

Input parameters:

- `projectId` (string, required): Project ID returned by studio_projects_list or studio_video_start.

### `studio_reference_add` (~230 tokens)

Add customer reference file

Stores and screens an image/video reference through the app attachment service. Inline files are limited to 512 KiB; larger files have an app upload-link path. Returns attachment and signed preview. scope:project applies to the project; scope:shot supports later shot binding. The reference list exposes persisted results after uncertain replies. No language model or generation-credit charge.

Input parameters:

- `bytesBase64` (string, required): Canonical base64 file bytes without a data URL prefix, up to 512 KiB decoded. Larger files have an app upload-link path.
- `intendedAtMs` (integer): Optional song position for a shot-scoped image; this records intent and does not bind a shot.
- `kind` (string, required): Existing reference media kind.
- `mimeType` (string, required): Actual MIME type. It must match the kind and file bytes.
- `name` (string, required): File display name, for example wardrobe.webp.
- `projectId` (string, required): Project ID returned by studio_projects_list or studio_video_start.
- `scope` (string): Whole project by default; shot is supported only for an image.

### `studio_reference_note_add` (~144 tokens)

Add assistant-authored reference note

Save one concrete creative instruction about a customer reference already on this project. The connected assistant does the interpretation with the customer; Brix36 validates and stores the finished sentence through the existing app fact service. Returns an approved user-authored fact. Duplicate category/sentence on the same attachment is reused. Free; no server language model is called.

Input parameters:

- `attachmentId` (string, required): Attachment ID returned by studio_references_list or studio_song_status.
- `category` (string, required): App reference fact category.
- `projectId` (string, required): Project ID returned by studio_projects_list or studio_video_start.
- `statement` (string, required): One customer-approved instruction grounded in the uploaded reference.

### `studio_reference_note_update` (~126 tokens)

Review or rewrite reference note

Approve, reject or rewrite one reference note using the app service. Rewriting records the sentence as user-authored; omitted fields stay unchanged. Returns the updated fact. Requires permission to edit its project and the customer choosing the change. No server interpretation or paid work starts.

Input parameters:

- `factId` (string, required): Fact ID returned by studio_reference_notes_list.
- `projectId` (string, required): Project ID returned by studio_projects_list or studio_video_start.
- `statement` (string): Replacement sentence approved by the customer.
- `status` (string): Customer review choice for this fact.

### `studio_reference_delete` (~101 tokens)

Remove customer reference

Remove an existing image/video reference attachment from a project using the app service. Requires editor permission and the customer choosing this reference. The app removes its dependent notes and applies existing reference binding rules. Returns deleted=true; it does not delete another project reference or a song.

Input parameters:

- `attachmentId` (string, required): Attachment ID returned by studio_references_list or studio_song_status.
- `projectId` (string, required): Project ID returned by studio_projects_list or studio_video_start.

### `studio_releases_list` (~128 tokens)

List artist release collections

Lists an artist's album, EP and single collections with projectIds, status, artwork, year, verified app project-creation links and nextCursor. Free and read-only. MCP project creation currently creates standalone releases; collection project creation uses the app.

Input parameters:

- `artistId` (string, required): Artist ID returned by studio_artists_list or studio_artist_read. Also identifies this artist when casting a Film.
- `cursor` (string): Opaque previous-page nextCursor; absent for the first page.
- `limit` (integer): Maximum items to return, 1–50. Default 20.

### `studio_release_create` (~148 tokens)

Create artist release collection

Creates an album, EP or single collection with title, type, year and artwork preset. Returns release summary and app project-creation links. Creation has no replay receipt; the artist's release list exposes saved title/type/year after an uncertain response. No language model, generation or charge.

Input parameters:

- `artistId` (string, required): Artist ID returned by studio_artists_list or studio_artist_read. Also identifies this artist when casting a Film.
- `artwork` (string, required): Existing app artwork preset.
- `title` (string, required): Collection title, such as an album name.
- `type` (string, required): Existing app release collection type.
- `year` (integer, required): Four-digit release year accepted by the app.

### `studio_project_rename` (~103 tokens)

Rename Brix36 project

Renames a video or Film using expectedRevision, title and optional songTitle. Returns updated project and revision. No generation or charge.

Input parameters:

- `expectedRevision` (integer, required): Current revision from the latest read. Stale revisions are refused.
- `projectId` (string, required): Project ID returned by studio_projects_list or studio_video_start.
- `songTitle` (string): Optional song catalogue title; absence leaves it unchanged.
- `title` (string, required): New project title.

### `studio_project_delete` (~83 tokens)

Delete Brix36 project

Archive one video or Film using the app project deletion service after the customer requests deletion. Requires editor permission. In-flight orders, paid work awaiting consumption and open/review-required checkouts refuse deletion. Returns deleted=true. This is separate from permanently erasing an artist or account.

Input parameters:

- `projectId` (string, required): Project ID returned by studio_projects_list or studio_video_start.

### `studio_artist_reference_pack_quote` (~206 tokens)

Price an artist's missing reference pack

Prices the artist's missing reference views (photo_pack) or invented look (look) with the same signed price the Brix36 app shows. Charges nothing. Returns creditAmount, operationId, quoteToken, priceVersion and approvalExpiresAt. Approval of the exact credits takes place in this chat; no link is created. When nothing can be offered, says so without claiming their references are complete. Creating an artist stays free.

Input parameters:

- `artistId` (string, required): The artist, from studio_artists_list or studio_artist_create.
- `inspirationAssetIds` (array): Look only, optional: up to four owned inspiration photos. Send the same list to quote and confirm.
- `kind` (string, required): photo_pack: missing views from their existing photo. look: an invented look for an artist with no customer photo.
- `lookDescription` (string): Look only: the look to make, up to 1000 characters. Send the same text to quote and confirm.

### `studio_artist_reference_pack_confirm` (~288 tokens)

Buy the approved artist reference pack

Places the one quoted reference-pack purchase only after the customer has explicitly approved the exact credits in this chat. Takes the exact operationId, quoteToken, quotedCredits and priceVersion from the quote (and the same look inputs); an existing Brix36 approval code is accepted as confirmationToken instead. Identical retries return the first outcome and never charge twice. status still_checking keeps the original operation; an identical later call returns its outcome without a new price.

Input parameters:

- `artistId` (string, required): The artist, from studio_artists_list or studio_artist_create.
- `confirmationToken` (string): Optional: an existing Brix36 approval code instead of in-chat consent.
- `inspirationAssetIds` (array): Look only, optional: up to four owned inspiration photos. Send the same list to quote and confirm.
- `kind` (string, required): photo_pack: missing views from their existing photo. look: an invented look for an artist with no customer photo.
- `lookDescription` (string): Look only: the look to make, up to 1000 characters. Send the same text to quote and confirm.
- `operationId` (string, required): Exact quoted operation ID.
- `priceVersion` (string): The priceVersion returned by the quote.
- `quoteToken` (string, required): Exact signed quote.
- `quotedCredits` (integer): The exact credits the customer approved in chat.

### `studio_film_read` (~190 tokens)

Read the Film, cast and dialogue

Returns saved Film scenes, dialogue, cast, voice assignments, planning state and savedPlan.revision. Add include:['languages'] for supportedLanguages and nativeSpeechLanguages (the video model's own speech), and include:['artists'] for every artist who can join the cast; leave include out for the project view. nativeSpeechEngines holds model-specific evidence. Saved per-scene voice choices determine routing; absent saved voices use native speech. Audio-off prices are unavailable for speaking scenes. operationId reads prior plan progress without starting or settling work.

Input parameters:

- `include` (array): Optional extras: 'languages' adds supportedLanguages and nativeSpeechLanguages; 'artists' adds availableArtists. Omit for the project view.
- `operationId` (string): Stable operation identifier. Identical retries retain the original identifier; new work has a distinct identifier.
- `projectId` (string, required): The Film project id.

### `studio_film_scenes_write` (~270 tokens)

Save finished Film scenes

Saves finished Film scenes, visualWorld, camera directions and dialogue against the current revision. Scenes form 30-second cards, with at most six spoken lines per card and five minutes per Film. Identical operationId/input retries return the saved result. visualWorld is required for quoting. No Brix36 planning model, media generation or credit charge.

Input parameters:

- `castIds` (array, required)
- `expectedRevisionId` (string|null, required): The exact revisionId from studio_sections_read; null only for a Film with no storyboard.
- `language` (string, required): The selected supported Film language; studio_film_read with include:['languages'] lists them. Text is preserved, never translated.
- `operationId` (string, required): Stable operation identifier. Identical retries retain the original identifier; new work has a distinct identifier.
- `projectId` (string, required): A project created by studio_video_start with kind film.
- `scenes` (array, required)
- `visualWorld` (object): Board-wide visual facts. Optional characters, vehicles, locations, props and never are arrays of up to 12 non-empty strings, each at most 300 characters. Combined rendered fields are limited to 2,400…

### `studio_artist_voices_list` (~140 tokens)

Find a character’s voice

Searches the voice library's ready-made voices. Returns offered opaque IDs, names, descriptions, selected voice, current revision and nextCursor. lib: voices use Brix36's account; acct: voices belong to connected personal accounts and are currently unavailable for Film. No speech generation or credit charge.

Input parameters:

- `artistId` (string, required): The cast artist whose speaking voice this operation concerns.
- `cursor` (string): Opaque previous-page nextCursor; absent for the first page.
- `limit` (integer): Maximum items to return, 1–50. Default 20.
- `search` (string): Voice name or traits to search for.

### `studio_artist_voice_choose` (~175 tokens)

Assign an offered character voice

Assigns an offered ready-made voice from the voice library through a durable revision-bound operation. voiceId is an opaque catalogue ID and expectedRevision is the current voice revision, or null when no voice exists. May add a shared library voice; creates no speech and debits no credits. Film speech requires its separate quoted financial approval. Identical operation retries retain identity.

Input parameters:

- `artistId` (string, required): The cast artist id.
- `expectedRevision` (integer|null, required): The revision from studio_artist_voices_list, or null when no saved voice exists.
- `operationId` (string, required): Stable operation identifier. Identical retries retain the original identifier; new work has a distinct identifier.
- `voiceId` (string, required): An offered lib:<owner>:<voice> or acct:<voice> ID. Film supports lib: voices.

### `studio_artist_voice_status` (~92 tokens)

Recover a character voice request

Returns pending, unknown, refused or succeeded for an earlier owned voice operation, with saved voice/revision on success. Unknown provider effects remain unresolved. This read does not repeat provider work or synthesize speech.

Input parameters:

- `artistId` (string, required): The artist id from the original request.
- `operationId` (string, required): Stable operation identifier. Identical retries retain the original identifier; new work has a distinct identifier.

### `studio_storyboard_prepare` (~206 tokens)

Prepare the saved storyboard’s visual world

Validates and saves visualWorld for an existing Music or Film storyboard at expectedRevisionId. Preserves scenes, dialogue, timing, stable shot IDs, cast, identity choices and references. Returns ready synchronously for a valid world, or needs_visual_world with saved-scene context and schema when absent. An already-valid saved world returns ready without a new revision. No planning model, queue, generation provider or credit use.

Input parameters:

- `expectedRevisionId` (string, required): Exact current authored storyboard revision. Current saved state is available through storyboard reads after uncertain replies.
- `projectId` (string, required): Existing music-video or Film project.
- `visualWorld` (object): Board-wide visual facts. Optional characters, vehicles, locations, props and never are arrays of up to 12 non-empty strings, each at most 300 characters. Combined rendered fields are limited to 2,400…

### `studio_storyboard_context` (~98 tokens)

Read the song and fixed storyboard format

Returns current song analysis, brief, approved Artist DNA, references, exact shot timings and storyboard for a Music project. Includes audioAnalysisId, expectedRevisionId, fixed skeleton, approved evidence and submission schema for direction and visualWorld. No planning model or other work starts.

Input parameters:

- `projectId` (string, required): Music-video project to read.
- `targetShotCount` (integer): Optional first-board shot count, shared with studio_storyboard_submit.

### `studio_storyboard_submit` (~242 tokens)

Save a finished storyboard

Validates and saves a finished Music storyboard with one DirectedShot per fixed shot order, exact expectedRevisionId/audioAnalysisId, optional treatment and visualWorld. Creates an immutable revision while preserving server-owned timing. visualWorld is required for quoting. No model, queue, provider or credit use.

Input parameters:

- `audioAnalysisId` (string, required): Exact current song analysis id returned by the context.
- `expectedRevisionId` (string|null, required): Exact current revision id, or null only for the first storyboard.
- `projectId` (string, required): Existing music-video project id.
- `shots` (array, required): Finished direction, exactly one entry per server-owned shot order.
- `targetShotCount` (integer): Optional first-board shot count used when reading the context. Existing timing is preserved.
- `treatment` (object)
- `visualWorld` (object): Board-wide visual facts. Optional characters, vehicles, locations, props and never are arrays of up to 12 non-empty strings, each at most 300 characters. Combined rendered fields are limited to 2,400…

### `studio_storyboard_edit_prompt` (~258 tokens)

Save a finished video, section or still prompt

Saves finished prompt text and existing uploaded references as an immutable storyboard revision. Whole/section scope writes shared sectionDirection; shot/still scope writes frame description and optional motion/camera. References replace targeted bindings; [] clears and omission inherits. Requires the current revision. No pictures, video, planning model or credit charge.

Input parameters:

- `camera` (string): Finished camera movement for a shot/still.
- `expectedRevisionId` (string, required): Exact current storyboard revision from studio_storyboard_context.
- `motion` (string): Finished subject movement for a shot/still.
- `projectId` (string, required): Project identified by the current storyboard read.
- `prompt` (string): Finished prompt, at most 4,000 characters for shot/still or 2,000 for whole/section. The server fits saved direction to the selected engine.
- `referenceAttachmentIds` (array): Replacement reference bindings for the targeted shots. [] clears; omitted inherits.
- `scope` (string, required): Whole/section saves a shared sectionDirection; shot/still edits the visible frame prompt.
- `sectionIndex` (integer): Current section index, required for section scope.
- `shotId` (string): Current stable shot id, required for shot or still scope.

### `studio_section_engines` (~163 tokens)

Read the app’s quoted engine choices for a section

Returns engine options for one section of an existing generation quote identified by costEstimateId or quoteToken. Film sectionIndex is the saved zero-based scene.index. Includes availability, requirements, selection, server Recommended marker, allocated_final_total section share, availableProfiles and finalVideoCredits. Option selection_total is a whole alternative video quote total, excluding pictures. No selection change or spending.

Input parameters:

- `costEstimateId` (string, required): Exact costEstimateId returned by studio_generate_quote or studio_section_engine_select.
- `expectedRevisionId` (string, required): Exact current storyboard revision from studio_storyboard_context.
- `projectId` (string, required): Project identified by the quote.
- `sectionIndex` (integer, required): Music section index, or the exact saved Film scene.index, to show options for.

### `studio_section_engine_select` (~271 tokens)

Choose one section’s engine or generation profile and receive its quote

Selects an available modelName or generation profile for one quoted section and returns a revised signed quote with costEstimateId. Film uses saved scene.index. modelName:null restores the server-ranked Recommended choice; omitted modelName preserves explicit selections. profile {aspect,resolution} is constrained to availableProfiles. Other sections retain their choices; outputs fit the project canvas without cropping. The revised quote has its own price and approval binding. operationId identifies identical selection retries. Film speech data reports the actual per-scene routes or historical_unavailable. No credits are spent and no generation starts.

Input parameters:

- `costEstimateId` (string, required): Exact estimate returned by the preceding quote.
- `expectedRevisionId` (string, required): Exact current storyboard revision from studio_storyboard_context.
- `modelName` (string|null): Available modelName from studio_section_engines; null restores Recommended and absence retains explicit selections during a profile change. Profiles are constrained to returned availableProfiles.
- `operationId` (string, required): Client-generated identity for a selection quote. Identical retries share the identity; different selections have distinct identities.
- `profile` (object)
- `projectId` (string, required): Project identified by the quote.
- `sectionIndex` (integer, required): Music section index, or the exact saved Film scene.index, whose new generation uses this engine.

### `studio_artist_voice_read` (~68 tokens)

Read the artist’s own voice

Read the artist’s saved speaking voice and revision, with a private sample link when available. A recorded voice is already selected for this artist’s Film dialogue. No voice is created, no speech is generated and no credits are spent.

Input parameters:

- `artistId` (string, required): The existing cast artist.

### `studio_artist_voice_record` (~184 tokens)

Use my voice for this artist

Creates and selects an artist's own speaking voice from an owned confirmed audio sampleAssetId, typically 30–120 seconds. App recording validation, durable operation, provider admission and daily spend guards apply. Setup cost is included in the artist's first Film quote; this call debits no customer credits. Identical operation/input retries reconcile the saved effect. Unconfigured cloning refuses before provider work. This voice is for Film dialogue, not song singing.

Input parameters:

- `artistId` (string, required): The existing cast artist.
- `expectedRevision` (integer|null, required): The current voice revision from studio_artist_voice_read; null only when no voice exists.
- `operationId` (string, required): Stable operation identity. Identical retries retain the original identifier and arguments; new work has a distinct identifier.
- `sampleAssetId` (string, required): Confirmed audio assetId returned by the upload/import path.

### `studio_picture_use_upload` (~123 tokens)

Use my uploaded picture

Sets an owned uploaded photograph as a shot's original picture, bound to attachment contentHash and confirmed rights. Creates a canonical revision and retains earlier versions. Identical argument retries reconcile the same operation. No generation or credit charge.

Input parameters:

- `attachmentId` (string, required): Owned image attachment.
- `expectedContentHash` (string, required)
- `projectId` (string, required): The current owned project.
- `revisionId` (string, required): The exact current storyboard revision.
- `rightsConfirmed` (boolean, required)
- `shotId` (string, required): The stable shot ID from that board.

### `studio_project_palette_write` (~89 tokens)

Choose project colours

Save 0–5 unique uppercase #RRGGBB colours as exact project creative direction. An empty list clears the selection. Existing work remains in history; stale revision and active work refuse safely.

Input parameters:

- `creatorPalette` (array, required)
- `expectedRevision` (integer, required): Current project revision. A stale revision returns revision_conflict.
- `projectId` (string, required): The current owned project.

### `studio_shot_video_references_read` (~76 tokens)

Read shot video references

Read the actual owned driving-video references for a shot. These are distinct from extracted reference pictures. No paid work.

Input parameters:

- `projectId` (string, required): The current owned project.
- `revisionId` (string, required): The exact current storyboard revision.
- `shotId` (string, required): The stable shot ID from that board.

### `studio_shot_video_references_write` (~149 tokens)

Choose shot video references

Binds up to three owned uploaded 1–15 second original clips as shot motion/composition references. Measures bytes and creates one canonical revision. Stricter model limits or unsupported driving-video inputs refuse before payment. Clips remain video references rather than sampled pictures. Empty attachmentIds clears the selection; identical retries reconcile the same write.

Input parameters:

- `attachmentIds` (array, required)
- `expectedRevisionId` (string, required): The exact current storyboard revision.
- `projectId` (string, required): The current owned project.
- `revisionId` (string, required): The exact current storyboard revision.
- `rightsConfirmed` (boolean, required)
- `shotId` (string, required): The stable shot ID from that board.

### `studio_creative_result` (~83 tokens)

Read the finished creative result

Returns an owned completed creative result by operationId with image.url or video.url, downloadUrl and gallery-widget data. Links are private and signed; another read refreshes expired links. The original source is retained. No processing or charge is repeated.

Input parameters:

- `operationId` (string, required): Quoted operation ID.
- `projectId` (string, required): The current owned project.

Output parameters:

- `assetId` (string)
- `code` (string)
- `contentHash` (string)
- `downloadUrl` (string)
- `image` (object)
- `issues` (array)
- `items` (array)
- `kind`
- `mediaOrigin` (string)
- `message` (string)
- `mimeType` (string)
- `note` (string)
- `outcomeUnknown` (boolean)
- `projectId` (string)
- `result` (object)
- `resultId` (string)
- `url` (string)
- `video` (object)
- `view`

### `studio_copy_save` (~124 tokens)

Save my AI’s text variations

Saves finished customer-authored headline/caption drafts and supporting source facts as a free text version. Identical source/revision/result inputs return the saved version. No Brix36 language-model request, publishing or credit charge.

Input parameters:

- `expectedRevision` (integer, required): Current project revision. A stale revision returns revision_conflict.
- `finishedAssetId` (string): Optional completed master the text accompanies.
- `projectId` (string, required): The current owned project.
- `result` (object, required)
- `sourceText` (string, required): Exact customer-supplied source facts supporting the draft.

### `studio_copy_read` (~46 tokens)

Read saved text variations

Read an owned saved customer-AI text version without generating or charging.

Input parameters:

- `copyId` (string, required): Saved copy version.
- `projectId` (string, required): The current owned project.

### `studio_image_quote` (~121 tokens)

Price a picture

Prices one standalone picture from a text prompt and optional owned uploads, using the same pricing as the Brix36 create box. Returns the exact credits and price with draftId and quoteId. Nothing is generated or charged.

Input parameters:

- `attachmentIds` (array): Optional owned uploaded pictures that guide the result.
- `draftId` (string): Stable draft ID for this picture. Optional when pricing; the price returns one. Reusing it with changed details reprices the same draft.
- `prompt` (string, required): What the picture should show, in the customer's words.

### `studio_image_confirm` (~95 tokens)

Make the approved picture

Spends Brix36 credits and starts one picture under the customer's financial approval of the exact quoted draftId and quoteId. Identical retries return the same operation without another charge.

Input parameters:

- `confirmationToken` (string): Customer-issued approval code, when the customer has one.
- `draftId` (string, required): Exact draftId returned with the picture price.
- `quoteId` (string, required): Exact quoteId returned with the picture price.

### `studio_image_result` (~71 tokens)

Read the finished picture

Returns the owned picture for an approved quoteId with image.url, downloadUrl and gallery-widget data once ready, or its current progress. Links are private and signed; another read refreshes them. No processing or charge is repeated.

Input parameters:

- `quoteId` (string, required): Exact quoteId returned with the picture price.

### `studio_project_dna_pin` (~64 tokens)

Pin current Artist DNA to a project

Pin this artist’s currently published DNA to this project once, within its existing pin window. Read project state after a lost response before retrying. No generation or charge.

Input parameters:

- `projectId` (string, required): Project ID returned by studio_projects_list or studio_video_start.

### `studio_project_artist_presence_set` (~67 tokens)

Set whether the artist appears in a video

Set featured or not_featured for this project. Featured requires pinned DNA; the existing directed-storyboard rules still apply. No generation or charge.

Input parameters:

- `artistPresence` (string, required)
- `projectId` (string, required): Project ID returned by studio_projects_list or studio_video_start.

### `studio_film_set_speech_voice` (~195 tokens)

Set a Film character’s scene voice

Set the saved-character or native speech voice choice for one character in one scene. Uses expectedRevision, the current saved Film plan revision, and a stable operationId; identical operationId/input retries reconcile the same edit. No model call or credit charge.

Input parameters:

- `artistId` (string, required): A speaking cast character in this Film.
- `expectedRevision` (integer, required): The savedPlan.revision from studio_film_read.
- `operationId` (string, required): Stable operation identifier. Identical retries retain the original identifier; new work has a distinct identifier.
- `projectId` (string, required): The Film project id.
- `sceneIndex` (integer, required): The saved scene index from studio_film_read.
- `useCharacterVoice` (boolean, required): The customer’s voice choice for this scene and character: true selects the saved voice; false selects native video-model speech.
- `voiceDescription` (string): Optional native voice direction.

### `studio_film_direction_set` (~148 tokens)

Set Film direction and reference pictures

Replace one scene’s direction and reference pictures. A null sceneIndex with empty text binds whole-Film references. Uses expectedRevision, the current saved Film plan revision, and a stable operationId; identical operationId/input retries reconcile the same edit. No model call or credit charge.

Input parameters:

- `expectedRevision` (integer, required): The savedPlan.revision from studio_film_read.
- `operationId` (string, required): Stable operation identifier. Identical retries retain the original identifier; new work has a distinct identifier.
- `projectId` (string, required): The Film project id.
- `referenceAttachmentIds` (array, required)
- `sceneIndex` (integer|null, required)
- `text` (string, required)

### `studio_film_assign_actor` (~162 tokens)

Assign a Film dialogue actor

Assign one available artist to one saved dialogue line. Uses expectedRevision, the current saved Film plan revision, and a stable operationId; identical operationId/input retries reconcile the same edit. No model call or credit charge.

Input parameters:

- `artistId` (string, required): An available artist in this project’s workspace.
- `expectedRevision` (integer, required): The savedPlan.revision from studio_film_read.
- `lineId` (string, required): The saved dialogue line id from studio_film_read.
- `operationId` (string, required): Stable operation identifier. Identical retries retain the original identifier; new work has a distinct identifier.
- `projectId` (string, required): The Film project id.
- `sceneIndex` (integer, required): The saved scene index from studio_film_read.

### `studio_film_add_line` (~143 tokens)

Add a Film dialogue line

Add one finished dialogue line to a scene and return its lineId. Uses expectedRevision, the current saved Film plan revision, and a stable operationId; identical operationId/input retries reconcile the same edit. No model call or credit charge.

Input parameters:

- `expectedRevision` (integer, required): The savedPlan.revision from studio_film_read.
- `operationId` (string, required): Stable operation identifier. Identical retries retain the original identifier; new work has a distinct identifier.
- `projectId` (string, required): The Film project id.
- `sceneIndex` (integer, required): The saved scene index from studio_film_read.
- `text` (string, required): The finished dialogue line.

### `studio_film_edit_line` (~157 tokens)

Replace a Film dialogue line

Replace the text of one saved dialogue line. Uses expectedRevision, the current saved Film plan revision, and a stable operationId; identical operationId/input retries reconcile the same edit. No model call or credit charge.

Input parameters:

- `expectedRevision` (integer, required): The savedPlan.revision from studio_film_read.
- `lineId` (string, required): The saved dialogue line id from studio_film_read.
- `operationId` (string, required): Stable operation identifier. Identical retries retain the original identifier; new work has a distinct identifier.
- `projectId` (string, required): The Film project id.
- `sceneIndex` (integer, required): The saved scene index from studio_film_read.
- `text` (string, required): The finished replacement dialogue line.

### `studio_film_remove_line` (~142 tokens)

Remove a Film dialogue line

Remove one saved dialogue line. Uses expectedRevision, the current saved Film plan revision, and a stable operationId; identical operationId/input retries reconcile the same edit. No model call or credit charge.

Input parameters:

- `expectedRevision` (integer, required): The savedPlan.revision from studio_film_read.
- `lineId` (string, required): The saved dialogue line id from studio_film_read.
- `operationId` (string, required): Stable operation identifier. Identical retries retain the original identifier; new work has a distinct identifier.
- `projectId` (string, required): The Film project id.
- `sceneIndex` (integer, required): The saved scene index from studio_film_read.

### `studio_film_toggle_camera` (~147 tokens)

Toggle a Film speaker’s visibility

Toggle whether one dialogue line’s speaker is on camera. Uses expectedRevision, the current saved Film plan revision, and a stable operationId; identical operationId/input retries reconcile the same edit. No model call or credit charge.

Input parameters:

- `expectedRevision` (integer, required): The savedPlan.revision from studio_film_read.
- `lineId` (string, required): The saved dialogue line id from studio_film_read.
- `operationId` (string, required): Stable operation identifier. Identical retries retain the original identifier; new work has a distinct identifier.
- `projectId` (string, required): The Film project id.
- `sceneIndex` (integer, required): The saved scene index from studio_film_read.

### `studio_film_toggle_sound` (~118 tokens)

Toggle a Film sound layer

Toggle one Film music, background or effects layer. Uses expectedRevision, the current saved Film plan revision, and a stable operationId; identical operationId/input retries reconcile the same edit. No model call or credit charge.

Input parameters:

- `expectedRevision` (integer, required): The savedPlan.revision from studio_film_read.
- `layer` (string, required)
- `operationId` (string, required): Stable operation identifier. Identical retries retain the original identifier; new work has a distinct identifier.
- `projectId` (string, required): The Film project id.

### `studio_film_set_lip_sync` (~138 tokens)

Set Film scene lip sync

Set the lip-sync choice for one saved scene. Uses expectedRevision, the current saved Film plan revision, and a stable operationId; identical operationId/input retries reconcile the same edit. No model call or credit charge.

Input parameters:

- `choice` (null|string, required)
- `expectedRevision` (integer, required): The savedPlan.revision from studio_film_read.
- `operationId` (string, required): Stable operation identifier. Identical retries retain the original identifier; new work has a distinct identifier.
- `projectId` (string, required): The Film project id.
- `sceneId` (string, required): The stableSceneId from studio_film_read.

### `studio_film_set_duration` (~184 tokens)

Set Film scene duration

Set one scene’s duration, normalized to 4–30 seconds; later scenes move to follow it. Uses expectedRevision, the current saved Film plan revision, and a stable operationId; identical operationId/input retries reconcile the same edit. No model call or credit charge.

Input parameters:

- `durationMs` (integer, required): How long this scene lasts, in milliseconds. Brought onto the 4-30 second range, in whole seconds; later scenes move to follow it and the quote prices the new length.
- `expectedRevision` (integer, required): The savedPlan.revision from studio_film_read.
- `operationId` (string, required): Stable operation identifier. Identical retries retain the original identifier; new work has a distinct identifier.
- `projectId` (string, required): The Film project id.
- `sceneIndex` (integer, required): The saved scene index from studio_film_read.

### `studio_film_set_shot_direction` (~170 tokens)

Set a Film shot’s engine and direction

Set one storyboard shot’s video engine, camera movement, lens, lighting or look; unnamed controls keep their saved values. Uses expectedRevision, the current saved Film plan revision, and a stable operationId; identical operationId/input retries reconcile the same edit. No model call or credit charge.

Input parameters:

- `direction` (object, required): Only the controls to change; the others keep their saved values.
- `expectedRevision` (integer, required): The savedPlan.revision from studio_film_read.
- `operationId` (string, required): Stable operation identifier. Identical retries retain the original identifier; new work has a distinct identifier.
- `projectId` (string, required): The Film project id.
- `stableShotId` (string, required): The storyboard stableShotId for the scene, from studio_storyboard_readiness.

### `studio_motion_read` (~45 tokens)

Read Motion scene

Read the exact authored scene and revision, including editable lyric cue timing, text and owned media layers.

Input parameters:

- `documentId` (string, required)
- `projectId` (string, required)

### `studio_motion_update` (~115 tokens)

Save Motion scene

Saves typed MotionSceneV1 with exact words, cue frame ranges and owned asset IDs. Accepts typed layers and approved fonts; HTML, JS, CSS and URLs are not scene inputs. First save creates an opaque documentId with expectedRevision 0; edits bind the current expectedRevision. Conflicts preserve the newer saved version. No Brix36 language model is called.

Input parameters:

- `documentId` (string)
- `expectedRevision` (integer)
- `projectId` (string, required)
- `scene` (object, required)

### `studio_motion_preview` (~66 tokens)

Preview Motion first frame

Generate a free bounded first-frame image of this exact saved revision, maximum 640px long side. No LLM, render debit or full free movie. Preview is not an approval or a priced render.

Input parameters:

- `projectId` (string, required)
- `revisionId` (string, required)

### `studio_motion_status` (~62 tokens)

Read Motion render status

Read the original durable operation after pending, timeout or unknown outcome. Successful work includes playback and download links. Reconcile means the existing effect is being checked; no replacement render is started.

Input parameters:

- `operationId` (string, required)
- `projectId` (string, required)

### `studio_motion_result` (~52 tokens)

Get Motion result

Read the finished owned asset with video.url and authenticated playback/download links. Source media remain preserved. Pending work is not a completed result.

Input parameters:

- `operationId` (string, required)
- `projectId` (string, required)

### `studio_motion_use` (~68 tokens)

Use Motion result

Add the exact finished Motion result to project media through normal attachment screening, preserving original assets, movie orders and expected project revision. This does not replace or regenerate a paid movie.

Input parameters:

- `expectedRevision` (integer, required)
- `operationId` (string, required)
- `projectId` (string, required)

### `studio_motion_restore` (~78 tokens)

Restore a Motion version

Restores a saved scene as a new revision with optimistic version checking. Original versions and media remain intact. Prior quotes become stale; further paid rendering requires a quote for the restored revision.

Input parameters:

- `documentId` (string, required)
- `expectedRevision` (integer, required)
- `projectId` (string, required)
- `revisionId` (string, required)

### `studio_ai_editor_plan` (~193 tokens)

Plan AI Editor rough cut

Plans a sentence-end rough cut and beat-aligned timeline from clip transcripts, word timestamps, caption segments, silence windows and beat markers. Prevents mid-sentence cuts, adds natural breathing room at sentence boundaries, and returns an audio mix plan targeting -16 LUFS with ducking. Free deterministic planning; no credits are charged.

Input parameters:

- `aspectRatio` (string)
- `beats` (array)
- `beatsMs` (array)
- `clips` (array, required)
- `fps` (integer)
- `maxBeatSnapShiftMs` (number)
- `musicDuckDb` (number)
- `pauseFloorMs` (number)
- `pauseSettleMs` (number)
- `preset` (string)
- `projectId` (string)
- `targetDurationMs` (number)
- `targetIntegratedLufs` (number)
- `title` (string)

### `studio_ai_editor_export` (~191 tokens)

Export AI Editor timeline

Exports a sentence-end rough-cut timeline to Final Cut Pro XML (fcpxml), Premiere Pro XML (premiere_xml), CMX 3600 EDL (edl) or structured JSON (json) for non-linear editing. Free deterministic export; no credits are charged.

Input parameters:

- `aspectRatio` (string)
- `beats` (array)
- `beatsMs` (array)
- `clips` (array, required)
- `format` (string, required)
- `fps` (integer)
- `maxBeatSnapShiftMs` (number)
- `musicDuckDb` (number)
- `pauseFloorMs` (number)
- `pauseSettleMs` (number)
- `preset` (string)
- `projectId` (string)
- `targetDurationMs` (number)
- `targetIntegratedLufs` (number)
- `title` (string)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-brix36-brix36/api#diagnostics

## Score history

- 2026-11-05: 83
- 2026-11-04: 83
- 2026-11-03: 82
- 2026-11-02: 82
- 2026-11-01: 81
- 2026-10-31: 81
- 2026-10-30: 81
- 2026-10-29: 80
- 2026-10-28: 80
- 2026-10-27: 79
- 2026-10-26: 79
- 2026-10-25: 78
- 2026-10-24: 78
- 2026-10-23: 77
- 2026-10-22: 77
- 2026-10-21: 76
- 2026-10-20: 76
- 2026-10-19: 76
- 2026-10-18: 75
- 2026-10-17: 75
- 2026-10-16: 74
- 2026-10-15: 74
- 2026-10-14: 73
- 2026-10-13: 73
- 2026-10-12: 72
- 2026-10-11: 72
- 2026-10-10: 37
- 2026-10-07: 37
- 2026-10-06: 37

## Common questions

### What is the Brix36 MCP server?

Brix36 is an MCP server listed in the public MCP registry as com.brix36/brix36. Films and music videos. You're the star. No subscription. This page covers its hosted endpoint (https://api.brix36.com/mcp).

### Is the Brix36 MCP server safe to use?

Brix36 scores 83 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 Brix36 MCP server expose?

Brix36 exposes 118 tools: studio_video_plan, studio_artists_list, studio_projects_list, studio_model_catalogue, studio_video_start, and 113 more. Their descriptions and schemas cost roughly 16,827 tokens of context every time the server is loaded.

### Does the Brix36 MCP server require authentication?

Its publisher declares no required credentials for Brix36. We have not been able to confirm that against the live endpoint, and a server can require authorisation without declaring it here.

### Is the Brix36 MCP server still maintained?

Brix36 is still listed in the MCP registry, though our most recent checks did not reach this channel. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://api.brix36.com/mcp
- Website: https://brix36.com/connect
- Changelog RSS feed: https://verifymcp.io/servers/com-brix36-brix36/api.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-brix36-brix36/api.json
- HTML version of this page: https://verifymcp.io/servers/com-brix36-brix36/api
