clip_create_portrait_sibling
Create a portrait sibling clip
Creates a separate 9:16 portrait sibling from one current rendered 16:9 landscape Clip. Requires the landscape Clip's exact revision, draft_revision, and program_digest from episode_read. BitterClip copies only its source-backed editorial timing, captions, audio policy, transitions, and safely mappable music; the child starts as a draft with independently editable centered framing and no Render, Export, package, credit, or publication. It does not invent speaker geometry or silently carry landscape crop decisions; source-time geometry is set through episode_edit occurrence.reframe, before render_create. A 9:16 canvas over 16:9 footage keeps only a vertical slice of each frame; episode_framing_guidance reports, per visible person, whether their measured extent fits that crop window (fits | too_wide | uncertain | unknown). Local camera choices, overlays, identity/baked material, malformed music anchors, stale source state, or a non-landscape/unrendered source fail before a child exists. Retrying the identical idempotency key returns the same sibling.
Surface: Default model and app
Product release 185ad8f4adfa21ae055b5bd6f97968d9044480d1
Public contract commit d2ab41fab4088c07c0f6b924fa4f3c63481b936a
Public contract SHA-256 2365c73c2aef7b9f85e8434d8e29ea29f40824bc3a46a72a356155ea328757fc
Captured 2026-10-29T03:35:56.855Z. Review or improve this contract on GitHub.
These blocks show the complete MCP descriptors captured from serving Rails. Security schemes and resource URIs can differ by connected host.
Default model descriptor
{
"name": "clip_create_portrait_sibling",
"title": "Create a portrait sibling clip",
"description": "Creates a separate 9:16 portrait sibling from one current rendered 16:9 landscape Clip. Requires the landscape Clip's exact revision, draft_revision, and program_digest from episode_read. BitterClip copies only its source-backed editorial timing, captions, audio policy, transitions, and safely mappable music; the child starts as a draft with independently editable centered framing and no Render, Export, package, credit, or publication. It does not invent speaker geometry or silently carry landscape crop decisions; source-time geometry is set through episode_edit occurrence.reframe, before render_create. A 9:16 canvas over 16:9 footage keeps only a vertical slice of each frame; episode_framing_guidance reports, per visible person, whether their measured extent fits that crop window (fits | too_wide | uncertain | unknown). Local camera choices, overlays, identity/baked material, malformed music anchors, stale source state, or a non-landscape/unrendered source fail before a child exists. Retrying the identical idempotency key returns the same sibling.",
"inputSchema": {
"type": "object",
"properties": {
"source_clip_id": {
"type": "string",
"description": "Current derived landscape Clip public ID (comp_...); a top-level Episode or legacy Clip row is refused."
},
"expected_source_revision": {
"type": "integer",
"description": "Current integer revision from episode_read for source_clip_id."
},
"expected_source_draft_revision": {
"type": "string",
"description": "Current opaque draft_revision from episode_read for source_clip_id."
},
"expected_source_program_digest": {
"type": "string",
"description": "Current SHA-256 program_digest from episode_read for source_clip_id."
},
"title": {
"type": "string",
"description": "Optional title for the portrait sibling; derived from the landscape Clip when omitted."
},
"idempotency_key": {
"type": "string",
"description": "Caller-stable key for an exact safe retry."
}
},
"required": [
"source_clip_id",
"expected_source_revision",
"expected_source_draft_revision",
"expected_source_program_digest",
"idempotency_key"
],
"additionalProperties": false
},
"annotations": {
"title": "Create a portrait sibling clip",
"readOnlyHint": false,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false
},
"securitySchemes": [
{
"type": "noauth"
}
],
"_meta": {
"securitySchemes": [
{
"type": "noauth"
}
],
"ui": {
"visibility": [
"model",
"app"
]
},
"openai/widgetAccessible": true
}
}App descriptor
{
"name": "clip_create_portrait_sibling",
"title": "Create a portrait sibling clip",
"description": "Creates a separate 9:16 portrait sibling from one current rendered 16:9 landscape Clip. Requires the landscape Clip's exact revision, draft_revision, and program_digest from episode_read. BitterClip copies only its source-backed editorial timing, captions, audio policy, transitions, and safely mappable music; the child starts as a draft with independently editable centered framing and no Render, Export, package, credit, or publication. It does not invent speaker geometry or silently carry landscape crop decisions; source-time geometry is set through episode_edit occurrence.reframe, before render_create. A 9:16 canvas over 16:9 footage keeps only a vertical slice of each frame; episode_framing_guidance reports, per visible person, whether their measured extent fits that crop window (fits | too_wide | uncertain | unknown). Local camera choices, overlays, identity/baked material, malformed music anchors, stale source state, or a non-landscape/unrendered source fail before a child exists. Retrying the identical idempotency key returns the same sibling.",
"inputSchema": {
"type": "object",
"properties": {
"source_clip_id": {
"type": "string",
"description": "Current derived landscape Clip public ID (comp_...); a top-level Episode or legacy Clip row is refused."
},
"expected_source_revision": {
"type": "integer",
"description": "Current integer revision from episode_read for source_clip_id."
},
"expected_source_draft_revision": {
"type": "string",
"description": "Current opaque draft_revision from episode_read for source_clip_id."
},
"expected_source_program_digest": {
"type": "string",
"description": "Current SHA-256 program_digest from episode_read for source_clip_id."
},
"title": {
"type": "string",
"description": "Optional title for the portrait sibling; derived from the landscape Clip when omitted."
},
"idempotency_key": {
"type": "string",
"description": "Caller-stable key for an exact safe retry."
}
},
"required": [
"source_clip_id",
"expected_source_revision",
"expected_source_draft_revision",
"expected_source_program_digest",
"idempotency_key"
],
"additionalProperties": false
},
"annotations": {
"title": "Create a portrait sibling clip",
"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": {
"clip_id": {
"type": "string",
"description": "New independently editable portrait Clip (comp_...)."
},
"parent_episode_id": {
"type": [
"string",
"null"
],
"description": "Shared top-level Episode lineage, when present."
},
"source_clip_id": {
"type": "string"
},
"source_revision": {
"type": "integer"
},
"source_draft_revision": {
"type": "string"
},
"source_program_digest": {
"type": "string"
},
"revision": {
"type": "integer"
},
"draft_revision": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"draft"
]
},
"aspect_ratio": {
"type": "string",
"enum": [
"9:16"
]
},
"canvas": {
"type": "string",
"enum": [
"1080x1920@30"
]
},
"duration_seconds": {
"type": "number"
},
"occurrence_map": {
"type": "array",
"items": {
"type": "object"
},
"description": "Landscape Clip occurrence to portrait Clip occurrence mapping; composition decisions remain child-local."
},
"framing": {
"type": "object",
"description": "Truthful initial framing state and the next geometry-aware action."
},
"render_status": {
"type": "string",
"enum": [
"not_requested"
]
},
"receipt_id": {
"type": [
"string",
"null"
]
},
"already_applied": {
"type": "boolean"
},
"next_action": {
"type": "object"
},
"render_next_action": {
"type": "object"
},
"blockers": {
"type": "array",
"items": {
"type": "object"
}
}
},
"required": [],
"additionalProperties": false
}
}Live Workspace descriptor
{
"name": "clip_create_portrait_sibling",
"title": "Create a portrait sibling clip",
"description": "Creates a separate 9:16 portrait sibling from one current rendered 16:9 landscape Clip. Requires the landscape Clip's exact revision, draft_revision, and program_digest from episode_read. BitterClip copies only its source-backed editorial timing, captions, audio policy, transitions, and safely mappable music; the child starts as a draft with independently editable centered framing and no Render, Export, package, credit, or publication. It does not invent speaker geometry or silently carry landscape crop decisions; source-time geometry is set through episode_edit occurrence.reframe, before render_create. A 9:16 canvas over 16:9 footage keeps only a vertical slice of each frame; episode_framing_guidance reports, per visible person, whether their measured extent fits that crop window (fits | too_wide | uncertain | unknown). Local camera choices, overlays, identity/baked material, malformed music anchors, stale source state, or a non-landscape/unrendered source fail before a child exists. Retrying the identical idempotency key returns the same sibling.",
"inputSchema": {
"type": "object",
"properties": {
"source_clip_id": {
"type": "string",
"description": "Current derived landscape Clip public ID (comp_...); a top-level Episode or legacy Clip row is refused."
},
"expected_source_revision": {
"type": "integer",
"description": "Current integer revision from episode_read for source_clip_id."
},
"expected_source_draft_revision": {
"type": "string",
"description": "Current opaque draft_revision from episode_read for source_clip_id."
},
"expected_source_program_digest": {
"type": "string",
"description": "Current SHA-256 program_digest from episode_read for source_clip_id."
},
"title": {
"type": "string",
"description": "Optional title for the portrait sibling; derived from the landscape Clip when omitted."
},
"idempotency_key": {
"type": "string",
"description": "Caller-stable key for an exact safe retry."
}
},
"required": [
"source_clip_id",
"expected_source_revision",
"expected_source_draft_revision",
"expected_source_program_digest",
"idempotency_key"
],
"additionalProperties": false
},
"annotations": {
"title": "Create a portrait sibling clip",
"readOnlyHint": false,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false
},
"securitySchemes": [
{
"type": "noauth"
}
],
"_meta": {
"securitySchemes": [
{
"type": "noauth"
}
]
},
"outputSchema": {
"type": "object",
"properties": {
"clip_id": {
"type": "string",
"description": "New independently editable portrait Clip (comp_...)."
},
"parent_episode_id": {
"type": [
"string",
"null"
],
"description": "Shared top-level Episode lineage, when present."
},
"source_clip_id": {
"type": "string"
},
"source_revision": {
"type": "integer"
},
"source_draft_revision": {
"type": "string"
},
"source_program_digest": {
"type": "string"
},
"revision": {
"type": "integer"
},
"draft_revision": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"draft"
]
},
"aspect_ratio": {
"type": "string",
"enum": [
"9:16"
]
},
"canvas": {
"type": "string",
"enum": [
"1080x1920@30"
]
},
"duration_seconds": {
"type": "number"
},
"occurrence_map": {
"type": "array",
"items": {
"type": "object"
},
"description": "Landscape Clip occurrence to portrait Clip occurrence mapping; composition decisions remain child-local."
},
"framing": {
"type": "object",
"description": "Truthful initial framing state and the next geometry-aware action."
},
"render_status": {
"type": "string",
"enum": [
"not_requested"
]
},
"receipt_id": {
"type": [
"string",
"null"
]
},
"already_applied": {
"type": "boolean"
},
"next_action": {
"type": "object"
},
"render_next_action": {
"type": "object"
},
"blockers": {
"type": "array",
"items": {
"type": "object"
}
},
"workspace_binding": {
"type": "object",
"properties": {
"schema": {
"type": "string",
"enum": [
"bitterclip.workspace-binding.v2"
]
},
"mode": {
"type": "string",
"enum": [
"live_workspace"
]
},
"project_id": {
"type": "string"
},
"target_kind": {
"type": "string",
"enum": [
"episode",
"clip"
]
},
"target_id": {
"type": "string"
},
"revision": {
"type": "integer"
},
"draft_revision": {
"type": "string"
},
"workspace_url": {
"type": "string"
},
"output_id": {
"type": "string"
},
"output_status": {
"type": "string",
"enum": [
"missing",
"stale",
"rendering",
"ready",
"failed"
]
},
"output_revision": {
"type": "integer"
},
"parent_episode_id": {
"type": "string"
}
},
"required": [
"schema",
"mode",
"target_kind",
"target_id",
"revision",
"draft_revision",
"workspace_url",
"output_status"
],
"additionalProperties": false
}
},
"required": [],
"additionalProperties": false
}
}Errors
[
"composition_not_found",
"stale_composition_revision",
"idempotency_conflict",
"invalid_input",
"portrait_sibling_source_not_clip",
"portrait_sibling_source_not_landscape",
"portrait_sibling_source_empty",
"portrait_sibling_source_not_currently_rendered",
"portrait_sibling_source_invalid_lineage",
"portrait_sibling_overlays_unsupported",
"portrait_sibling_local_camera_program_unsupported",
"portrait_sibling_identity_unsupported",
"portrait_sibling_baked_material_unsupported",
"portrait_sibling_music_unsupported",
"music_asset_missing",
"music_asset_mismatch",
"music_anchor_unavailable",
"music_range_inverted",
"music_ranges_overlap",
"music_asset_too_short",
"music_trim_out_of_range",
"music_fades_too_long",
"music_presentation_map_unsupported",
"angle_interval_exceeds_recording"
]Examples
[]