production_review_save · Gateway release 0.8.3
Record agent observations of the exact frame/take/output; distinguish inspected video, stills and heard sound. choose_draft_frame requires the exact current previewFingerprint and inspected stills, and selects a working frame for continuity/Video while creator review stays unchanged. choose_draft_take chooses retained completed footage for a working cut. Evidence never becomes verified human approval. Cut notes/checks and finding resolution are distinct; replacement does not resolve a finding. Final approval stays a Studio decision.
Required scopes: account:read, production:write. Changes saved state or requests work; review the operation’s effects.
Availability depends on runtime configuration and the permissions granted to this connection. Use live MCP discovery as the authority.
Input
{
"type": "object",
"additionalProperties": false,
"properties": {
"productionId": {
"type": "string",
"pattern": "^[a-fA-F0-9]{24}$",
"description": "ID of the saved Production whose asset context must remain pinned."
},
"operationId": {
"type": "string",
"pattern": "^[a-zA-Z0-9-]{16,64}$",
"description": "Persist a client-generated UUID before this mutation. Repeat identical inputs and this same ID after interruption; a new ID is a new request."
},
"expectedVersion": {
"type": "integer",
"minimum": 1,
"description": "Copy the current version from the latest workflow read. Refresh after a conflict; never increment or guess it."
},
"target": {
"type": "string",
"enum": [
"frame",
"take",
"cut"
]
},
"action": {
"type": "string",
"enum": [
"observe",
"choose_draft_frame",
"choose_draft_take",
"cut_action"
]
},
"evidence": {
"type": "object",
"additionalProperties": false,
"properties": {
"picture": {
"type": "string",
"enum": [
"video_inspected",
"stills_only",
"not_inspected"
]
},
"sound": {
"type": "string",
"enum": [
"heard",
"not_inspected"
]
},
"observations": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"atSeconds": {
"type": "number",
"minimum": 0,
"maximum": 3600
},
"reportedUserInstruction": {
"type": "string",
"maxLength": 2000
}
},
"required": [
"picture",
"sound",
"observations"
]
},
"previewFingerprint": {
"type": "string",
"pattern": "^[a-f0-9]{64}$",
"description": "Copy the exact receipt returned by previewing this image for the current brief. Do not fabricate it or reuse a stale preview."
},
"shotNodeId": {
"type": "string",
"pattern": "^[a-fA-F0-9]{24}$"
},
"sheetId": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"renderId": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"assetId": {
"type": "string",
"pattern": "^[a-fA-F0-9]{24}$",
"description": "ID of an already saved and linked Media record returned by this workflow."
},
"jobId": {
"type": "string",
"pattern": "^[a-fA-F0-9]{24}$",
"description": "Opaque original job ID returned by generation/admission. Poll or recover it instead of starting another job."
},
"expectedReviewRevision": {
"type": "integer",
"minimum": 0
},
"outputSha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"cutAction": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "cut-check",
"type": "string"
},
"index": {
"type": "integer",
"minimum": 0,
"maximum": 99
},
"status": {
"type": "string",
"enum": [
"pass",
"needs_work",
"not_checked"
]
},
"dimensions": {
"type": "object",
"additionalProperties": false,
"properties": {
"pose": {
"type": "string",
"enum": [
"pass",
"needs_work",
"not_checked"
]
},
"layout": {
"type": "string",
"enum": [
"pass",
"needs_work",
"not_checked"
]
},
"camera": {
"type": "string",
"enum": [
"pass",
"needs_work",
"not_checked"
]
},
"identity": {
"type": "string",
"enum": [
"pass",
"needs_work",
"not_checked"
]
},
"exposure": {
"type": "string",
"enum": [
"pass",
"needs_work",
"not_checked"
]
},
"sound": {
"type": "string",
"enum": [
"pass",
"needs_work",
"not_checked"
]
}
},
"required": []
},
"note": {
"type": "string",
"maxLength": 2000
}
},
"required": [
"type",
"index",
"status",
"dimensions",
"note"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "add-finding",
"type": "string"
},
"category": {
"type": "string",
"enum": [
"continuity",
"picture",
"sound",
"timing",
"script"
]
},
"shotNodeId": {
"type": "string",
"pattern": "^[a-fA-F0-9]{24}$"
},
"frame": {
"type": "integer",
"minimum": 0
},
"expected": {
"type": "string",
"maxLength": 2000
},
"observed": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"blocking": {
"type": "boolean"
}
},
"required": [
"type",
"category",
"expected",
"observed",
"blocking"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "resolve-finding",
"type": "string"
},
"findingId": {
"type": "string",
"pattern": "^[a-fA-F0-9]{24}$"
},
"resolution": {
"type": "string",
"minLength": 1,
"maxLength": 2000
}
},
"required": [
"type",
"findingId",
"resolution"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "upsert-cue",
"type": "string"
},
"cue": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "string",
"pattern": "^[a-fA-F0-9]{24}$"
},
"category": {
"type": "string",
"enum": [
"dialogue",
"sound",
"action",
"camera"
]
},
"startFrame": {
"type": "integer",
"minimum": 0
},
"frameCount": {
"type": "integer",
"minimum": 1
},
"text": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"status": {
"type": "string",
"enum": [
"proposed",
"confirmed"
]
}
},
"required": [
"category",
"startFrame",
"frameCount",
"text",
"status"
]
}
},
"required": [
"type",
"cue"
]
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"const": "delete-cue",
"type": "string"
},
"cueId": {
"type": "string",
"pattern": "^[a-fA-F0-9]{24}$"
}
},
"required": [
"type",
"cueId"
]
}
]
}
},
"required": [
"productionId",
"operationId",
"expectedVersion",
"target",
"action",
"evidence"
]
}
Declared output — partial envelope
This is a partial versioned envelope, not the complete Production receipt. Read the operation’s returned progress and retained result; queued work is not completed media.{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"schemaVersion": {
"type": "string",
"const": "1"
}
},
"required": [
"schemaVersion"
],
"additionalProperties": {}
}
