# render_create

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

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

Render an Episode or Clip to downloadable media. Multi-segment highlight/reel/shareable-video creation uses episode_create; a single-range Clip uses clip_create. Render only the exact creator result, never a list/search result: pass its target_type, target_id, and revision as required expected_revision. Ordinary make/cut/create language is explicit private-render intent unless the user asks for draft-only, review first, or do not 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: after committed render-affecting edits, render the final revision once under the same exceptions. Never infer this from list/search recency or mere Output existence. 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.

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": "render_create",
  "title": "Render an episode or clip",
  "description": "Render an Episode or Clip to downloadable media. Multi-segment highlight/reel/shareable-video creation uses episode_create; a single-range Clip uses clip_create. Render only the exact creator result, never a list/search result: pass its target_type, target_id, and revision as required expected_revision. Ordinary make/cut/create language is explicit private-render intent unless the user asks for draft-only, review first, or do not 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: after committed render-affecting edits, render the final revision once under the same exceptions. Never infer this from list/search recency or mere Output existence. 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.",
  "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": {
    "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": "render_create",
  "title": "Render an episode or clip",
  "description": "Render an Episode or Clip to downloadable media. Multi-segment highlight/reel/shareable-video creation uses episode_create; a single-range Clip uses clip_create. Render only the exact creator result, never a list/search result: pass its target_type, target_id, and revision as required expected_revision. Ordinary make/cut/create language is explicit private-render intent unless the user asks for draft-only, review first, or do not 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: after committed render-affecting edits, render the final revision once under the same exceptions. Never infer this from list/search recency or mere Output existence. 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.",
  "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": {
    "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 instruction; when present, wait at least poll.after_seconds before calling the named tool 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. Retain it with the 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

```json
{
  "name": "render_create",
  "title": "Render an episode or clip",
  "description": "Render an Episode or Clip to downloadable media. Multi-segment highlight/reel/shareable-video creation uses episode_create; a single-range Clip uses clip_create. Render only the exact creator result, never a list/search result: pass its target_type, target_id, and revision as required expected_revision. Ordinary make/cut/create language is explicit private-render intent unless the user asks for draft-only, review first, or do not 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: after committed render-affecting edits, render the final revision once under the same exceptions. Never infer this from list/search recency or mere Output existence. 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.",
  "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": {
    "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 instruction; when present, wait at least poll.after_seconds before calling the named tool 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. Retain it with the 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

```json
[
  "composition_not_found",
  "stale_composition_revision",
  "music_presentation_map_unsupported",
  "angle_interval_exceeds_recording",
  "proof_clip_mismatch",
  "invalid_input",
  "billing_required"
]
```

## Examples

```json
[]
```
