# identity_apply_to_project

Canonical HTML page: https://bitterclip.com/docs/assistants/tools/identity_apply_to_project

Surface: default model and app

Product release: 1dce717408a55fac1047e7d779177fa3ef8ede51
Public contract commit: 1ce47f7857ae3d9b6933fe83d5c33de3ae5efc64
Public contract SHA-256: 241d47d25e4b4c1dae9d2263793874d06fc4ba7bc3c78d4cf2bc63fbb32ed7dc
Descriptor SHA-256: 885d46f3ca3939dec2ace0cd6e93611c8b3f741f2d8f7a82e0adfe1452cc9a9e
Captured: 2026-09-24T16:39:30.100Z
Source: https://app.bitterclip.com/api/v1/mcp_descriptors.json

Model-visible Signature apply for saving authored or selected Brand Studio defaults. Saves project defaults as account-library refs for NEW highlight reels; future episode_create calls can then trust identity:"project_default" when the user asks for their branding. Use it after an Identity scene preview is intentionally good enough to save the authored scene as the project's default opener or outro. Accepts opener/outro preset strings or structured slot objects, materializes them into the account identity library, imports alternates into the library without storing project alternates, validates enabled packs through the frozen identity resolver, writes an apply receipt, prewarms opener/outro sources through the existing identity moment bake path, and broadcasts the update to open editors. On first apply, callers must pass enabled/enabled_for_reels:true to turn identity on; omitting both flags saves the pack disabled. Set uses_title only for title-enabled openers/outros; static assets should leave it false so opener_title produces the typed ignored warning. Pass cut_style_id:"none" (or a cut_style style_id of "none") for normal cuts with no branded seam layer.

The JSON blocks below are the exact MCP descriptor projections served by Rails for the named profiles at capture time. Security schemes and resource URIs may vary by connected host.

## Default model descriptor

```json
{
  "name": "identity_apply_to_project",
  "title": "Apply Brand Studio identity to project",
  "description": "Model-visible Signature apply for saving authored or selected Brand Studio defaults. Saves project defaults as account-library refs for NEW highlight reels; future episode_create calls can then trust identity:\"project_default\" when the user asks for their branding. Use it after an Identity scene preview is intentionally good enough to save the authored scene as the project's default opener or outro. Accepts opener/outro preset strings or structured slot objects, materializes them into the account identity library, imports alternates into the library without storing project alternates, validates enabled packs through the frozen identity resolver, writes an apply receipt, prewarms opener/outro sources through the existing identity moment bake path, and broadcasts the update to open editors. On first apply, callers must pass enabled/enabled_for_reels:true to turn identity on; omitting both flags saves the pack disabled. Set uses_title only for title-enabled openers/outros; static assets should leave it false so opener_title produces the typed ignored warning. Pass cut_style_id:\"none\" (or a cut_style style_id of \"none\") for normal cuts with no branded seam layer.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "project_id": {
        "type": "string",
        "description": "Project public ID."
      },
      "brand_id": {
        "type": "string",
        "description": "Identity brand id. Defaults to the current project identity or BitterClip."
      },
      "opener_preset_id": {
        "type": [
          "string",
          "object",
          "null"
        ],
        "description": "Source-backed opener preset id or structured opener slot {preset_id, params, gain_db}.",
        "properties": {
          "preset_id": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "params": {
            "type": "object"
          },
          "gain_db": {
            "type": "number"
          },
          "uses_title": {
            "type": "boolean",
            "description": "When true, new reels may fill this opener's title slot from episode_create opener_title."
          }
        }
      },
      "cut_style_id": {
        "type": [
          "string",
          "null"
        ],
        "description": "Duration-neutral cut style id. Pass none/null for normal cuts with no branded seam layer."
      },
      "cut_style": {
        "type": [
          "object",
          "null"
        ],
        "description": "Optional duration-neutral cut style payload. Used by Brand Studio controls for intensity/density without changing segment durations. Use style_id:none/null to clear the slot.",
        "properties": {
          "style_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "intensity": {
            "type": "string"
          },
          "density": {
            "type": "string"
          }
        }
      },
      "outro_preset_id": {
        "type": [
          "string",
          "object",
          "null"
        ],
        "description": "Source-backed outro preset id or structured outro slot {preset_id, params, gain_db}.",
        "properties": {
          "preset_id": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "params": {
            "type": "object"
          },
          "gain_db": {
            "type": "number"
          },
          "uses_title": {
            "type": "boolean",
            "description": "Reserved for title-capable source-backed slots; default false."
          }
        }
      },
      "music_bed": {
        "type": "object",
        "description": "Music-bed slot. Pass enabled:false for no bed, or library_entry_id for an account-owned bed. Fades and ducking are optional; omitted values keep the current setting or the server defaults (400ms in, 1200ms out, 0dB duck).",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "library_entry_id": {
            "type": "string"
          },
          "span": {
            "type": "string",
            "enum": [
              "content_only",
              "content_and_outro"
            ]
          },
          "fit": {
            "type": "string",
            "enum": [
              "trim",
              "loop"
            ]
          },
          "gain_db": {
            "type": "number"
          },
          "duck_db": {
            "type": "number"
          },
          "fade_in_ms": {
            "type": "integer",
            "description": "Fade-in length in milliseconds."
          },
          "fade_out_ms": {
            "type": "integer",
            "description": "Fade-out length in milliseconds."
          }
        }
      },
      "alternates": {
        "type": "object",
        "description": "Additive library entries by role. Supported keys: opener, outro, cut_style/cut_effect, music_bed. Opener/outro/cut_style entries are added to the account library; project defaults remain explicit refs only."
      },
      "star_alternate": {
        "type": "object",
        "description": "Promote a saved account-library entry to the project role default without mutating existing compositions. Shape: {role, library_entry_id}, {role, index}, or {role, alternate}.",
        "properties": {
          "role": {
            "type": "string",
            "enum": [
              "opener",
              "outro",
              "cut_style",
              "cut_effect",
              "music_bed"
            ]
          },
          "index": {
            "type": "integer"
          },
          "alternate": {
            "type": "object"
          },
          "library_entry_id": {
            "type": "string"
          }
        }
      },
      "enabled": {
        "type": "boolean",
        "description": "Whether the identity pack is enabled for future reels. Required to be true on first apply when the caller intends to turn identity on; omitted first apply defaults false."
      },
      "enabled_for_reels": {
        "type": "boolean",
        "description": "Alias for enabled, matching Brand Studio UI language. Required to be true on first apply when the caller intends to turn identity on; omitted first apply defaults false."
      },
      "prewarm": {
        "type": "boolean",
        "description": "Whether to enqueue opener/outro source-backed prewarm. Defaults true."
      }
    },
    "required": [
      "project_id"
    ],
    "additionalProperties": false
  },
  "annotations": {
    "readOnlyHint": false,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false
  },
  "securitySchemes": [
    {
      "type": "noauth"
    }
  ],
  "_meta": {
    "securitySchemes": [
      {
        "type": "noauth"
      }
    ],
    "ui": {
      "visibility": [
        "model",
        "app"
      ]
    },
    "openai/widgetAccessible": true
  }
}
```

## App descriptor

```json
{
  "name": "identity_apply_to_project",
  "title": "Apply Brand Studio identity to project",
  "description": "Model-visible Signature apply for saving authored or selected Brand Studio defaults. Saves project defaults as account-library refs for NEW highlight reels; future episode_create calls can then trust identity:\"project_default\" when the user asks for their branding. Use it after an Identity scene preview is intentionally good enough to save the authored scene as the project's default opener or outro. Accepts opener/outro preset strings or structured slot objects, materializes them into the account identity library, imports alternates into the library without storing project alternates, validates enabled packs through the frozen identity resolver, writes an apply receipt, prewarms opener/outro sources through the existing identity moment bake path, and broadcasts the update to open editors. On first apply, callers must pass enabled/enabled_for_reels:true to turn identity on; omitting both flags saves the pack disabled. Set uses_title only for title-enabled openers/outros; static assets should leave it false so opener_title produces the typed ignored warning. Pass cut_style_id:\"none\" (or a cut_style style_id of \"none\") for normal cuts with no branded seam layer.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "project_id": {
        "type": "string",
        "description": "Project public ID."
      },
      "brand_id": {
        "type": "string",
        "description": "Identity brand id. Defaults to the current project identity or BitterClip."
      },
      "opener_preset_id": {
        "type": [
          "string",
          "object",
          "null"
        ],
        "description": "Source-backed opener preset id or structured opener slot {preset_id, params, gain_db}.",
        "properties": {
          "preset_id": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "params": {
            "type": "object"
          },
          "gain_db": {
            "type": "number"
          },
          "uses_title": {
            "type": "boolean",
            "description": "When true, new reels may fill this opener's title slot from episode_create opener_title."
          }
        }
      },
      "cut_style_id": {
        "type": [
          "string",
          "null"
        ],
        "description": "Duration-neutral cut style id. Pass none/null for normal cuts with no branded seam layer."
      },
      "cut_style": {
        "type": [
          "object",
          "null"
        ],
        "description": "Optional duration-neutral cut style payload. Used by Brand Studio controls for intensity/density without changing segment durations. Use style_id:none/null to clear the slot.",
        "properties": {
          "style_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "intensity": {
            "type": "string"
          },
          "density": {
            "type": "string"
          }
        }
      },
      "outro_preset_id": {
        "type": [
          "string",
          "object",
          "null"
        ],
        "description": "Source-backed outro preset id or structured outro slot {preset_id, params, gain_db}.",
        "properties": {
          "preset_id": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "params": {
            "type": "object"
          },
          "gain_db": {
            "type": "number"
          },
          "uses_title": {
            "type": "boolean",
            "description": "Reserved for title-capable source-backed slots; default false."
          }
        }
      },
      "music_bed": {
        "type": "object",
        "description": "Music-bed slot. Pass enabled:false for no bed, or library_entry_id for an account-owned bed. Fades and ducking are optional; omitted values keep the current setting or the server defaults (400ms in, 1200ms out, 0dB duck).",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "library_entry_id": {
            "type": "string"
          },
          "span": {
            "type": "string",
            "enum": [
              "content_only",
              "content_and_outro"
            ]
          },
          "fit": {
            "type": "string",
            "enum": [
              "trim",
              "loop"
            ]
          },
          "gain_db": {
            "type": "number"
          },
          "duck_db": {
            "type": "number"
          },
          "fade_in_ms": {
            "type": "integer",
            "description": "Fade-in length in milliseconds."
          },
          "fade_out_ms": {
            "type": "integer",
            "description": "Fade-out length in milliseconds."
          }
        }
      },
      "alternates": {
        "type": "object",
        "description": "Additive library entries by role. Supported keys: opener, outro, cut_style/cut_effect, music_bed. Opener/outro/cut_style entries are added to the account library; project defaults remain explicit refs only."
      },
      "star_alternate": {
        "type": "object",
        "description": "Promote a saved account-library entry to the project role default without mutating existing compositions. Shape: {role, library_entry_id}, {role, index}, or {role, alternate}.",
        "properties": {
          "role": {
            "type": "string",
            "enum": [
              "opener",
              "outro",
              "cut_style",
              "cut_effect",
              "music_bed"
            ]
          },
          "index": {
            "type": "integer"
          },
          "alternate": {
            "type": "object"
          },
          "library_entry_id": {
            "type": "string"
          }
        }
      },
      "enabled": {
        "type": "boolean",
        "description": "Whether the identity pack is enabled for future reels. Required to be true on first apply when the caller intends to turn identity on; omitted first apply defaults false."
      },
      "enabled_for_reels": {
        "type": "boolean",
        "description": "Alias for enabled, matching Brand Studio UI language. Required to be true on first apply when the caller intends to turn identity on; omitted first apply defaults false."
      },
      "prewarm": {
        "type": "boolean",
        "description": "Whether to enqueue opener/outro source-backed prewarm. Defaults true."
      }
    },
    "required": [
      "project_id"
    ],
    "additionalProperties": false
  },
  "annotations": {
    "readOnlyHint": false,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false
  },
  "securitySchemes": [
    {
      "type": "noauth"
    }
  ],
  "_meta": {
    "securitySchemes": [
      {
        "type": "noauth"
      }
    ],
    "ui": {
      "visibility": [
        "model",
        "app"
      ]
    },
    "openai/widgetAccessible": true
  },
  "outputSchema": {
    "type": "object",
    "properties": {
      "applied": {
        "type": "boolean"
      },
      "receipt": {
        "type": "object"
      },
      "prewarm": {
        "type": "object"
      },
      "brand_identity": {
        "type": "object"
      },
      "blockers": {
        "type": "array",
        "items": {
          "type": "object"
        }
      }
    },
    "required": [],
    "additionalProperties": false
  }
}
```

## Live Workspace descriptor

```json
{
  "name": "identity_apply_to_project",
  "title": "Apply Brand Studio identity to project",
  "description": "Model-visible Signature apply for saving authored or selected Brand Studio defaults. Saves project defaults as account-library refs for NEW highlight reels; future episode_create calls can then trust identity:\"project_default\" when the user asks for their branding. Use it after an Identity scene preview is intentionally good enough to save the authored scene as the project's default opener or outro. Accepts opener/outro preset strings or structured slot objects, materializes them into the account identity library, imports alternates into the library without storing project alternates, validates enabled packs through the frozen identity resolver, writes an apply receipt, prewarms opener/outro sources through the existing identity moment bake path, and broadcasts the update to open editors. On first apply, callers must pass enabled/enabled_for_reels:true to turn identity on; omitting both flags saves the pack disabled. Set uses_title only for title-enabled openers/outros; static assets should leave it false so opener_title produces the typed ignored warning. Pass cut_style_id:\"none\" (or a cut_style style_id of \"none\") for normal cuts with no branded seam layer.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "project_id": {
        "type": "string",
        "description": "Project public ID."
      },
      "brand_id": {
        "type": "string",
        "description": "Identity brand id. Defaults to the current project identity or BitterClip."
      },
      "opener_preset_id": {
        "type": [
          "string",
          "object",
          "null"
        ],
        "description": "Source-backed opener preset id or structured opener slot {preset_id, params, gain_db}.",
        "properties": {
          "preset_id": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "params": {
            "type": "object"
          },
          "gain_db": {
            "type": "number"
          },
          "uses_title": {
            "type": "boolean",
            "description": "When true, new reels may fill this opener's title slot from episode_create opener_title."
          }
        }
      },
      "cut_style_id": {
        "type": [
          "string",
          "null"
        ],
        "description": "Duration-neutral cut style id. Pass none/null for normal cuts with no branded seam layer."
      },
      "cut_style": {
        "type": [
          "object",
          "null"
        ],
        "description": "Optional duration-neutral cut style payload. Used by Brand Studio controls for intensity/density without changing segment durations. Use style_id:none/null to clear the slot.",
        "properties": {
          "style_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "intensity": {
            "type": "string"
          },
          "density": {
            "type": "string"
          }
        }
      },
      "outro_preset_id": {
        "type": [
          "string",
          "object",
          "null"
        ],
        "description": "Source-backed outro preset id or structured outro slot {preset_id, params, gain_db}.",
        "properties": {
          "preset_id": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "params": {
            "type": "object"
          },
          "gain_db": {
            "type": "number"
          },
          "uses_title": {
            "type": "boolean",
            "description": "Reserved for title-capable source-backed slots; default false."
          }
        }
      },
      "music_bed": {
        "type": "object",
        "description": "Music-bed slot. Pass enabled:false for no bed, or library_entry_id for an account-owned bed. Fades and ducking are optional; omitted values keep the current setting or the server defaults (400ms in, 1200ms out, 0dB duck).",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "library_entry_id": {
            "type": "string"
          },
          "span": {
            "type": "string",
            "enum": [
              "content_only",
              "content_and_outro"
            ]
          },
          "fit": {
            "type": "string",
            "enum": [
              "trim",
              "loop"
            ]
          },
          "gain_db": {
            "type": "number"
          },
          "duck_db": {
            "type": "number"
          },
          "fade_in_ms": {
            "type": "integer",
            "description": "Fade-in length in milliseconds."
          },
          "fade_out_ms": {
            "type": "integer",
            "description": "Fade-out length in milliseconds."
          }
        }
      },
      "alternates": {
        "type": "object",
        "description": "Additive library entries by role. Supported keys: opener, outro, cut_style/cut_effect, music_bed. Opener/outro/cut_style entries are added to the account library; project defaults remain explicit refs only."
      },
      "star_alternate": {
        "type": "object",
        "description": "Promote a saved account-library entry to the project role default without mutating existing compositions. Shape: {role, library_entry_id}, {role, index}, or {role, alternate}.",
        "properties": {
          "role": {
            "type": "string",
            "enum": [
              "opener",
              "outro",
              "cut_style",
              "cut_effect",
              "music_bed"
            ]
          },
          "index": {
            "type": "integer"
          },
          "alternate": {
            "type": "object"
          },
          "library_entry_id": {
            "type": "string"
          }
        }
      },
      "enabled": {
        "type": "boolean",
        "description": "Whether the identity pack is enabled for future reels. Required to be true on first apply when the caller intends to turn identity on; omitted first apply defaults false."
      },
      "enabled_for_reels": {
        "type": "boolean",
        "description": "Alias for enabled, matching Brand Studio UI language. Required to be true on first apply when the caller intends to turn identity on; omitted first apply defaults false."
      },
      "prewarm": {
        "type": "boolean",
        "description": "Whether to enqueue opener/outro source-backed prewarm. Defaults true."
      }
    },
    "required": [
      "project_id"
    ],
    "additionalProperties": false
  },
  "annotations": {
    "readOnlyHint": false,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false
  },
  "securitySchemes": [
    {
      "type": "noauth"
    }
  ],
  "_meta": {
    "securitySchemes": [
      {
        "type": "noauth"
      }
    ]
  },
  "outputSchema": {
    "type": "object",
    "properties": {
      "applied": {
        "type": "boolean"
      },
      "receipt": {
        "type": "object"
      },
      "prewarm": {
        "type": "object"
      },
      "brand_identity": {
        "type": "object"
      },
      "blockers": {
        "type": "array",
        "items": {
          "type": "object"
        }
      }
    },
    "required": [],
    "additionalProperties": false
  }
}
```

## Errors

```json
[
  "project_not_found",
  "invalid_input",
  "identity_music_bed_not_found"
]
```

## Examples

```json
[]
```
