render_create
Render an episode or clip
Renders an Episode or Clip to downloadable media. Multi-segment highlight/reel/shareable-video creation uses episode_create; a single-range Clip uses clip_create. It renders the exact creator result, not a list/search result: that result's target_type, target_id, and revision as required expected_revision. Use this for ordinary make/cut/create requests, which carry explicit private-render intent, unless the user asks for draft-only, review first, or no render. Exact-result feedback inherits one private render only when a prior ready-Output receipt or pre-edit render_status proves that exact target has a current ready Output; the final revision after committed render-affecting edits then renders once, under the same exceptions. List/search recency or mere Output existence does not establish that intent. Publishing remains separately explicit; inherited private render intent never grants publication. First-use intro/outro blocks with new text may take a few minutes to prepare; the render waits and starts automatically once ready. It has no idempotency_key; the server reuses a current in-flight or ready render for the same exact revision/settings. An Episode that uses an effect or look the released renderer can't draw yet, such as placed photos, is refused with effect_unavailable before anything is charged or queued; details.effects names each, and next_action either changes a look back to the plain fade or is retry_after_renderer_update.
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": "render_create",
"title": "Render an episode or clip",
"description": "Renders an Episode or Clip to downloadable media. Multi-segment highlight/reel/shareable-video creation uses episode_create; a single-range Clip uses clip_create. It renders the exact creator result, not a list/search result: that result's target_type, target_id, and revision as required expected_revision. Use this for ordinary make/cut/create requests, which carry explicit private-render intent, unless the user asks for draft-only, review first, or no render. Exact-result feedback inherits one private render only when a prior ready-Output receipt or pre-edit render_status proves that exact target has a current ready Output; the final revision after committed render-affecting edits then renders once, under the same exceptions. List/search recency or mere Output existence does not establish that intent. Publishing remains separately explicit; inherited private render intent never grants publication. First-use intro/outro blocks with new text may take a few minutes to prepare; the render waits and starts automatically once ready. It has no idempotency_key; the server reuses a current in-flight or ready render for the same exact revision/settings. An Episode that uses an effect or look the released renderer can't draw yet, such as placed photos, is refused with effect_unavailable before anything is charged or queued; details.effects names each, and next_action either changes a look back to the plain fade or is retry_after_renderer_update.",
"inputSchema": {
"type": "object",
"properties": {
"target_type": {
"type": "string",
"enum": [
"episode",
"clip"
],
"description": "Object type to render."
},
"target_id": {
"type": "string",
"description": "Episode or clip public ID."
},
"format": {
"type": "string",
"enum": [
"mp4"
],
"description": "Currently mp4."
},
"aspect_ratio": {
"type": "string",
"enum": [
"9:16",
"16:9",
"1:1"
],
"description": "Optional render aspect ratio."
},
"expected_revision": {
"type": "integer",
"minimum": 0,
"description": "Required exact structural revision returned by the creator (episode_create or clip_create), an edit, or a fresh episode_read. Missing or stale custody is rejected before billing or render work."
},
"expected_render_plan_hash": {
"type": "string",
"pattern": "^[0-9a-f]{64}$",
"description": "Optional exact picture fingerprint from a canvas-presented episode_sample_frames result. A mismatch is rejected before billing, queueing, or reuse of older media."
},
"title": {
"type": "string",
"description": "Optional title to apply to this render."
}
},
"required": [
"target_type",
"target_id",
"expected_revision"
],
"additionalProperties": false
},
"annotations": {
"title": "Render an episode or 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": "render_create",
"title": "Render an episode or clip",
"description": "Renders an Episode or Clip to downloadable media. Multi-segment highlight/reel/shareable-video creation uses episode_create; a single-range Clip uses clip_create. It renders the exact creator result, not a list/search result: that result's target_type, target_id, and revision as required expected_revision. Use this for ordinary make/cut/create requests, which carry explicit private-render intent, unless the user asks for draft-only, review first, or no render. Exact-result feedback inherits one private render only when a prior ready-Output receipt or pre-edit render_status proves that exact target has a current ready Output; the final revision after committed render-affecting edits then renders once, under the same exceptions. List/search recency or mere Output existence does not establish that intent. Publishing remains separately explicit; inherited private render intent never grants publication. First-use intro/outro blocks with new text may take a few minutes to prepare; the render waits and starts automatically once ready. It has no idempotency_key; the server reuses a current in-flight or ready render for the same exact revision/settings. An Episode that uses an effect or look the released renderer can't draw yet, such as placed photos, is refused with effect_unavailable before anything is charged or queued; details.effects names each, and next_action either changes a look back to the plain fade or is retry_after_renderer_update.",
"inputSchema": {
"type": "object",
"properties": {
"target_type": {
"type": "string",
"enum": [
"episode",
"clip"
],
"description": "Object type to render."
},
"target_id": {
"type": "string",
"description": "Episode or clip public ID."
},
"format": {
"type": "string",
"enum": [
"mp4"
],
"description": "Currently mp4."
},
"aspect_ratio": {
"type": "string",
"enum": [
"9:16",
"16:9",
"1:1"
],
"description": "Optional render aspect ratio."
},
"expected_revision": {
"type": "integer",
"minimum": 0,
"description": "Required exact structural revision returned by the creator (episode_create or clip_create), an edit, or a fresh episode_read. Missing or stale custody is rejected before billing or render work."
},
"expected_render_plan_hash": {
"type": "string",
"pattern": "^[0-9a-f]{64}$",
"description": "Optional exact picture fingerprint from a canvas-presented episode_sample_frames result. A mismatch is rejected before billing, queueing, or reuse of older media."
},
"title": {
"type": "string",
"description": "Optional title to apply to this render."
}
},
"required": [
"target_type",
"target_id",
"expected_revision"
],
"additionalProperties": false
},
"annotations": {
"title": "Render an episode or 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": {
"render_id": {
"type": [
"string",
"null"
]
},
"target_type": {
"type": "string"
},
"target_id": {
"type": "string"
},
"title": {
"type": "string",
"description": "Current title of the exact render target."
},
"episode_id": {
"type": "string",
"description": "Present when target_type is episode."
},
"clip_id": {
"type": "string",
"description": "Present when target_type is clip."
},
"revision": {
"type": "integer",
"description": "Authoritative current structural revision for exact Render custody and any render_create recovery."
},
"status": {
"type": "string"
},
"progress": {
"type": "number"
},
"render_phase": {
"type": [
"string",
"null"
]
},
"segment_count": {
"type": "integer"
},
"duration_seconds": {
"type": [
"number",
"null"
]
},
"span_summary": {
"type": "object"
},
"render_plan_hash": {
"type": "string",
"pattern": "^[0-9a-f]{64}$",
"description": "Exact current picture fingerprint queued, reused, or reported by this render request."
},
"media": {
"type": "object"
},
"render_generation": {
"type": [
"string",
"null"
],
"pattern": "^[0-9a-f]{64}$",
"description": "Opaque immutable identity of the exact ready MP4/poster generation. It is not render_id."
},
"exact_export_id": {
"type": [
"string",
"null"
],
"pattern": "^rxpt_[a-z0-9]+$",
"description": "Immutable retained Export identity for an Episode or Clip."
},
"export_id": {
"type": [
"string",
"null"
],
"pattern": "^rxpt_[a-z0-9]+$",
"description": "Immutable retained exact Export matching this completed render; null for imported playback without render evidence. Its absence does not prevent basic playback."
},
"download_available": {
"type": "boolean",
"description": "True only when a current private Download capability is present, including verified imported playback."
},
"download_url": {
"type": [
"string",
"null"
],
"description": "Private current Download capability when available."
},
"expires_at": {
"type": [
"string",
"null"
],
"description": "Expiry of the returned private Download capability."
},
"skipped": {
"type": "boolean"
},
"poll": {
"type": "object",
"description": "Model-visible polling cadence; when present, poll.after_seconds is the minimum wait before the named tool is called again."
},
"next_action": {
"type": "object"
},
"blockers": {
"type": "array",
"items": {
"type": "object"
}
},
"dialogue_seam_review": {
"type": "object",
"description": "Exact-render, measurement-only evidence when this call reuses an already-current MP4."
},
"picture_program_render_receipt": {
"type": "object",
"description": "Bounded authoritative receipt for a simultaneous Picture Program already materialized when this call reuses an exact ready MP4. Absent while queued or when no Picture Program was rendered."
},
"error": {
"type": [
"object",
"null"
]
},
"render_error": {
"type": [
"object",
"null"
],
"description": "Last public render failure, retained while a retry is in flight."
},
"last_error": {
"type": [
"object",
"null"
],
"description": "Compatibility-explicit alias of render_error."
},
"render_error_history": {
"type": "array",
"items": {
"type": "object"
},
"description": "At most the three most recent public render failures."
},
"render_request_id": {
"type": [
"string",
"null"
],
"pattern": "^rrq_[a-z0-9]+$",
"description": "Exact admitted customer render request when known; it identifies this result for recovery after navigation or a newer revision."
},
"render_attempt": {
"type": [
"integer",
"null"
]
},
"render_attempt_started_at": {
"type": [
"string",
"null"
]
},
"receipt_id": {
"type": [
"string",
"null"
]
}
},
"required": [],
"additionalProperties": false
}
}Live Workspace descriptor
{
"name": "render_create",
"title": "Render an episode or clip",
"description": "Renders an Episode or Clip to downloadable media. Multi-segment highlight/reel/shareable-video creation uses episode_create; a single-range Clip uses clip_create. It renders the exact creator result, not a list/search result: that result's target_type, target_id, and revision as required expected_revision. Use this for ordinary make/cut/create requests, which carry explicit private-render intent, unless the user asks for draft-only, review first, or no render. Exact-result feedback inherits one private render only when a prior ready-Output receipt or pre-edit render_status proves that exact target has a current ready Output; the final revision after committed render-affecting edits then renders once, under the same exceptions. List/search recency or mere Output existence does not establish that intent. Publishing remains separately explicit; inherited private render intent never grants publication. First-use intro/outro blocks with new text may take a few minutes to prepare; the render waits and starts automatically once ready. It has no idempotency_key; the server reuses a current in-flight or ready render for the same exact revision/settings. An Episode that uses an effect or look the released renderer can't draw yet, such as placed photos, is refused with effect_unavailable before anything is charged or queued; details.effects names each, and next_action either changes a look back to the plain fade or is retry_after_renderer_update.",
"inputSchema": {
"type": "object",
"properties": {
"target_type": {
"type": "string",
"enum": [
"episode",
"clip"
],
"description": "Object type to render."
},
"target_id": {
"type": "string",
"description": "Episode or clip public ID."
},
"format": {
"type": "string",
"enum": [
"mp4"
],
"description": "Currently mp4."
},
"aspect_ratio": {
"type": "string",
"enum": [
"9:16",
"16:9",
"1:1"
],
"description": "Optional render aspect ratio."
},
"expected_revision": {
"type": "integer",
"minimum": 0,
"description": "Required exact structural revision returned by the creator (episode_create or clip_create), an edit, or a fresh episode_read. Missing or stale custody is rejected before billing or render work."
},
"expected_render_plan_hash": {
"type": "string",
"pattern": "^[0-9a-f]{64}$",
"description": "Optional exact picture fingerprint from a canvas-presented episode_sample_frames result. A mismatch is rejected before billing, queueing, or reuse of older media."
},
"title": {
"type": "string",
"description": "Optional title to apply to this render."
}
},
"required": [
"target_type",
"target_id",
"expected_revision"
],
"additionalProperties": false
},
"annotations": {
"title": "Render an episode or clip",
"readOnlyHint": false,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false
},
"securitySchemes": [
{
"type": "noauth"
}
],
"_meta": {
"securitySchemes": [
{
"type": "noauth"
}
]
},
"outputSchema": {
"type": "object",
"properties": {
"render_id": {
"type": [
"string",
"null"
]
},
"target_type": {
"type": "string"
},
"target_id": {
"type": "string"
},
"title": {
"type": "string",
"description": "Current title of the exact render target."
},
"episode_id": {
"type": "string",
"description": "Present when target_type is episode."
},
"clip_id": {
"type": "string",
"description": "Present when target_type is clip."
},
"revision": {
"type": "integer",
"description": "Authoritative current structural revision for exact Render custody and any render_create recovery."
},
"status": {
"type": "string"
},
"progress": {
"type": "number"
},
"render_phase": {
"type": [
"string",
"null"
]
},
"segment_count": {
"type": "integer"
},
"duration_seconds": {
"type": [
"number",
"null"
]
},
"span_summary": {
"type": "object"
},
"render_plan_hash": {
"type": "string",
"pattern": "^[0-9a-f]{64}$",
"description": "Exact current picture fingerprint queued, reused, or reported by this render request."
},
"media": {
"type": "object"
},
"render_generation": {
"type": [
"string",
"null"
],
"pattern": "^[0-9a-f]{64}$",
"description": "Opaque immutable identity of the exact ready MP4/poster generation. It is not render_id."
},
"exact_export_id": {
"type": [
"string",
"null"
],
"pattern": "^rxpt_[a-z0-9]+$",
"description": "Immutable retained Export identity for an Episode or Clip."
},
"export_id": {
"type": [
"string",
"null"
],
"pattern": "^rxpt_[a-z0-9]+$",
"description": "Immutable retained exact Export matching this completed render; null for imported playback without render evidence. Its absence does not prevent basic playback."
},
"download_available": {
"type": "boolean",
"description": "True only when a current private Download capability is present, including verified imported playback."
},
"download_url": {
"type": [
"string",
"null"
],
"description": "Private current Download capability when available."
},
"expires_at": {
"type": [
"string",
"null"
],
"description": "Expiry of the returned private Download capability."
},
"skipped": {
"type": "boolean"
},
"poll": {
"type": "object",
"description": "Model-visible polling cadence; when present, poll.after_seconds is the minimum wait before the named tool is called again."
},
"next_action": {
"type": "object"
},
"blockers": {
"type": "array",
"items": {
"type": "object"
}
},
"dialogue_seam_review": {
"type": "object",
"description": "Exact-render, measurement-only evidence when this call reuses an already-current MP4."
},
"picture_program_render_receipt": {
"type": "object",
"description": "Bounded authoritative receipt for a simultaneous Picture Program already materialized when this call reuses an exact ready MP4. Absent while queued or when no Picture Program was rendered."
},
"error": {
"type": [
"object",
"null"
]
},
"render_error": {
"type": [
"object",
"null"
],
"description": "Last public render failure, retained while a retry is in flight."
},
"last_error": {
"type": [
"object",
"null"
],
"description": "Compatibility-explicit alias of render_error."
},
"render_error_history": {
"type": "array",
"items": {
"type": "object"
},
"description": "At most the three most recent public render failures."
},
"render_request_id": {
"type": [
"string",
"null"
],
"pattern": "^rrq_[a-z0-9]+$",
"description": "Exact admitted customer render request when known; it identifies this result for recovery after navigation or a newer revision."
},
"render_attempt": {
"type": [
"integer",
"null"
]
},
"render_attempt_started_at": {
"type": [
"string",
"null"
]
},
"receipt_id": {
"type": [
"string",
"null"
]
},
"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",
"music_presentation_map_unsupported",
"angle_interval_exceeds_recording",
"proof_clip_mismatch",
"effect_unavailable",
"invalid_input",
"billing_required"
]Examples
[]