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 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": "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

[]