Default model tools

recordings_visual_identity_decide

Answer a visible-person identity check

Records one source-current human answer about the exact visible person marked in one Recording frame. Yes confirms only the displayed face-to-person proposal; Someone else records the rejected proposed person and one separately selected displayed candidate atomically; Not sure is neutral; Not a person rejects only that exact detection. This never confirms or renames an audio speaker track, changes captions, chooses a Thumbnail, approves a Speaker photo, trusts a face reference, stores a reusable face template, or changes recognition consent. A non-neutral answer queues a bounded person-evidence generation so affected automatic Thumbnail evidence can be reconsidered without overwriting a manual Thumbnail.

Surface: Default model and app

Product release eb8538f4a297f331d0399351c1e175bffcd212d2
Public contract commit 20688e11af473a363145ed880d5019c90a7ec1e2
Public contract SHA-256 87a94b85a84dc19245fc03f9b544c70d64bd9f5e08585dcccb38157cace5700d
Captured 2026-10-04T11:55:45.577Z. 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": "recordings_visual_identity_decide",
  "title": "Answer a visible-person identity check",
  "description": "Records one source-current human answer about the exact visible person marked in one Recording frame. Yes confirms only the displayed face-to-person proposal; Someone else records the rejected proposed person and one separately selected displayed candidate atomically; Not sure is neutral; Not a person rejects only that exact detection. This never confirms or renames an audio speaker track, changes captions, chooses a Thumbnail, approves a Speaker photo, trusts a face reference, stores a reusable face template, or changes recognition consent. A non-neutral answer queues a bounded person-evidence generation so affected automatic Thumbnail evidence can be reconsidered without overwriting a manual Thumbnail.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "recording_id": {
        "type": "string",
        "description": "Recording public ID that owns the exact current visual question."
      },
      "visual_identity_question_id": {
        "type": "string",
        "description": "Opaque source-current question ID returned inside recording speaker evidence."
      },
      "decision": {
        "type": "string",
        "enum": [
          "confirmed",
          "identified",
          "someone_else",
          "not_sure",
          "not_a_person"
        ],
        "description": "Exact visual answer. The UI presents these as Yes, Use the selected person, Someone else, Not sure, and Not a person."
      },
      "selected_speaker_profile_id": {
        "type": "string",
        "description": "Required for identified or someone_else; must be one of the canonical scoped candidates displayed with this exact question."
      },
      "new_person_name": {
        "type": "string",
        "maxLength": 120,
        "description": "A new visible person’s name, instead of a selected profile. Creates a project-local person without assigning a voice or approving memory."
      },
      "question_context": {
        "type": "string",
        "description": "The opaque displayed question_context, unchanged; it preserves exact-image and proposal meaning across background publication."
      },
      "reason": {
        "type": "string",
        "description": "Optional short human context retained with the decision receipt."
      },
      "supersedes_decision_id": {
        "type": "string",
        "description": "Optional current decision ID when deliberately appending a correction to the same exact question."
      },
      "idempotency_key": {
        "type": "string",
        "description": "Caller-stable retry key for this exact answer."
      }
    },
    "required": [
      "recording_id",
      "visual_identity_question_id",
      "decision",
      "idempotency_key"
    ],
    "additionalProperties": false
  },
  "annotations": {
    "title": "Answer a visible-person identity check",
    "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": "recordings_visual_identity_decide",
  "title": "Answer a visible-person identity check",
  "description": "Records one source-current human answer about the exact visible person marked in one Recording frame. Yes confirms only the displayed face-to-person proposal; Someone else records the rejected proposed person and one separately selected displayed candidate atomically; Not sure is neutral; Not a person rejects only that exact detection. This never confirms or renames an audio speaker track, changes captions, chooses a Thumbnail, approves a Speaker photo, trusts a face reference, stores a reusable face template, or changes recognition consent. A non-neutral answer queues a bounded person-evidence generation so affected automatic Thumbnail evidence can be reconsidered without overwriting a manual Thumbnail.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "recording_id": {
        "type": "string",
        "description": "Recording public ID that owns the exact current visual question."
      },
      "visual_identity_question_id": {
        "type": "string",
        "description": "Opaque source-current question ID returned inside recording speaker evidence."
      },
      "decision": {
        "type": "string",
        "enum": [
          "confirmed",
          "identified",
          "someone_else",
          "not_sure",
          "not_a_person"
        ],
        "description": "Exact visual answer. The UI presents these as Yes, Use the selected person, Someone else, Not sure, and Not a person."
      },
      "selected_speaker_profile_id": {
        "type": "string",
        "description": "Required for identified or someone_else; must be one of the canonical scoped candidates displayed with this exact question."
      },
      "new_person_name": {
        "type": "string",
        "maxLength": 120,
        "description": "A new visible person’s name, instead of a selected profile. Creates a project-local person without assigning a voice or approving memory."
      },
      "question_context": {
        "type": "string",
        "description": "The opaque displayed question_context, unchanged; it preserves exact-image and proposal meaning across background publication."
      },
      "reason": {
        "type": "string",
        "description": "Optional short human context retained with the decision receipt."
      },
      "supersedes_decision_id": {
        "type": "string",
        "description": "Optional current decision ID when deliberately appending a correction to the same exact question."
      },
      "idempotency_key": {
        "type": "string",
        "description": "Caller-stable retry key for this exact answer."
      }
    },
    "required": [
      "recording_id",
      "visual_identity_question_id",
      "decision",
      "idempotency_key"
    ],
    "additionalProperties": false
  },
  "annotations": {
    "title": "Answer a visible-person identity check",
    "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": {
      "schema": {
        "type": "string"
      },
      "recording_id": {
        "type": "string"
      },
      "already_applied": {
        "type": "boolean"
      },
      "decision": {
        "type": "object"
      },
      "speaker_evidence": {
        "type": "object",
        "description": "Refreshed bounded speaker evidence and remaining visual identity questions."
      },
      "speaker_model_context": {
        "type": "object",
        "description": "Compact speaker identity context shared with the model; the full speaker evidence stays in result metadata."
      }
    },
    "required": [],
    "additionalProperties": false
  }
}

Live Workspace descriptor

{
  "name": "recordings_visual_identity_decide",
  "title": "Answer a visible-person identity check",
  "description": "Records one source-current human answer about the exact visible person marked in one Recording frame. Yes confirms only the displayed face-to-person proposal; Someone else records the rejected proposed person and one separately selected displayed candidate atomically; Not sure is neutral; Not a person rejects only that exact detection. This never confirms or renames an audio speaker track, changes captions, chooses a Thumbnail, approves a Speaker photo, trusts a face reference, stores a reusable face template, or changes recognition consent. A non-neutral answer queues a bounded person-evidence generation so affected automatic Thumbnail evidence can be reconsidered without overwriting a manual Thumbnail.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "recording_id": {
        "type": "string",
        "description": "Recording public ID that owns the exact current visual question."
      },
      "visual_identity_question_id": {
        "type": "string",
        "description": "Opaque source-current question ID returned inside recording speaker evidence."
      },
      "decision": {
        "type": "string",
        "enum": [
          "confirmed",
          "identified",
          "someone_else",
          "not_sure",
          "not_a_person"
        ],
        "description": "Exact visual answer. The UI presents these as Yes, Use the selected person, Someone else, Not sure, and Not a person."
      },
      "selected_speaker_profile_id": {
        "type": "string",
        "description": "Required for identified or someone_else; must be one of the canonical scoped candidates displayed with this exact question."
      },
      "new_person_name": {
        "type": "string",
        "maxLength": 120,
        "description": "A new visible person’s name, instead of a selected profile. Creates a project-local person without assigning a voice or approving memory."
      },
      "question_context": {
        "type": "string",
        "description": "The opaque displayed question_context, unchanged; it preserves exact-image and proposal meaning across background publication."
      },
      "reason": {
        "type": "string",
        "description": "Optional short human context retained with the decision receipt."
      },
      "supersedes_decision_id": {
        "type": "string",
        "description": "Optional current decision ID when deliberately appending a correction to the same exact question."
      },
      "idempotency_key": {
        "type": "string",
        "description": "Caller-stable retry key for this exact answer."
      }
    },
    "required": [
      "recording_id",
      "visual_identity_question_id",
      "decision",
      "idempotency_key"
    ],
    "additionalProperties": false
  },
  "annotations": {
    "title": "Answer a visible-person identity check",
    "readOnlyHint": false,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false
  },
  "securitySchemes": [
    {
      "type": "noauth"
    }
  ],
  "_meta": {
    "securitySchemes": [
      {
        "type": "noauth"
      }
    ]
  },
  "outputSchema": {
    "type": "object",
    "properties": {
      "schema": {
        "type": "string"
      },
      "recording_id": {
        "type": "string"
      },
      "already_applied": {
        "type": "boolean"
      },
      "decision": {
        "type": "object"
      },
      "speaker_evidence": {
        "type": "object",
        "description": "Refreshed bounded speaker evidence and remaining visual identity questions."
      },
      "speaker_model_context": {
        "type": "object",
        "description": "Compact speaker identity context shared with the model; the full speaker evidence stays in result metadata."
      },
      "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

[
  "recording_not_found",
  "invalid_input",
  "visual_identity_actor_required",
  "visual_identity_question_stale",
  "visual_identity_question_already_answered",
  "visual_identity_supersession_stale",
  "visual_identity_candidate_not_shown",
  "idempotency_conflict"
]

Examples

[]