project_participants_mutate
Save participant recognition and reviews
Studio-owner operation for Project-scoped face recognition. enable requires explicit participant permission and expected_consent_revision from a fresh read; recording_ids selects up to eight historical Recordings, while enabled future intake is automatic. process selects further existing Recordings. review names/confirms only explicitly included displayed observation IDs and excludes the displayed examples that are not that person; it takes the exact review_context and either speaker_profile_id OR new_person_name, and project_participants_read reports the cached-descriptor regrouping that follows. reviewer_kind:delegated_agent_review records a review made under delegated authority, which is distinct from the owner personally inspecting the images. undo requires the current review_id and refuses to overwrite newer answers. disable stops use/work while retaining saved data. forget disables and removes this feature's Project descriptors, previews and associations; Recordings, voices, approved portraits and a host's confirmed face references remain. retry names a failed recording_id or job_id. review, undo, and update_matches accept match_scope with type episode plus episode_id, type recordings plus up to eight recording_ids, or type project. Omission retains the Project-wide default for existing clients. update_matches only uses cached descriptors and never analyzes original video; unavailable evidence is reported separately. Deferred Recordings retain reviewed facts while older automatic names are withheld. cancel_update with job_id stops a cached update and retains the saved answer; retry reuses that job scope. Every action requires a stable idempotency_key. Participant permission is explicit per Project: consent here gates only this Project's matching and enables no other Project, and a host's confirmed faces stay theirs whether it is on or off.
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": "project_participants_mutate",
"title": "Save participant recognition and reviews",
"description": "Studio-owner operation for Project-scoped face recognition. enable requires explicit participant permission and expected_consent_revision from a fresh read; recording_ids selects up to eight historical Recordings, while enabled future intake is automatic. process selects further existing Recordings. review names/confirms only explicitly included displayed observation IDs and excludes the displayed examples that are not that person; it takes the exact review_context and either speaker_profile_id OR new_person_name, and project_participants_read reports the cached-descriptor regrouping that follows. reviewer_kind:delegated_agent_review records a review made under delegated authority, which is distinct from the owner personally inspecting the images. undo requires the current review_id and refuses to overwrite newer answers. disable stops use/work while retaining saved data. forget disables and removes this feature's Project descriptors, previews and associations; Recordings, voices, approved portraits and a host's confirmed face references remain. retry names a failed recording_id or job_id. review, undo, and update_matches accept match_scope with type episode plus episode_id, type recordings plus up to eight recording_ids, or type project. Omission retains the Project-wide default for existing clients. update_matches only uses cached descriptors and never analyzes original video; unavailable evidence is reported separately. Deferred Recordings retain reviewed facts while older automatic names are withheld. cancel_update with job_id stops a cached update and retains the saved answer; retry reuses that job scope. Every action requires a stable idempotency_key. Participant permission is explicit per Project: consent here gates only this Project's matching and enables no other Project, and a host's confirmed faces stay theirs whether it is on or off.",
"inputSchema": {
"type": "object",
"properties": {
"project_id": {
"type": "string"
},
"idempotency_key": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"action": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"enable",
"process",
"review",
"undo",
"disable",
"forget",
"retry",
"update_matches",
"cancel_update"
]
},
"expected_consent_revision": {
"type": "integer",
"minimum": 0
},
"participant_permission": {
"type": "boolean"
},
"recording_ids": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 8,
"uniqueItems": true
},
"review_context": {
"type": "string"
},
"included_observation_ids": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 6,
"uniqueItems": true
},
"excluded_observation_ids": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 6,
"uniqueItems": true
},
"speaker_profile_id": {
"type": "string"
},
"new_person_name": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"reviewer_kind": {
"type": "string",
"enum": [
"owner_review",
"delegated_agent_review"
]
},
"match_scope": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"episode",
"project",
"recordings"
]
},
"episode_id": {
"type": "string"
},
"recording_ids": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 8,
"uniqueItems": true
}
},
"required": [
"type"
],
"additionalProperties": false
},
"review_id": {
"type": "string"
},
"job_id": {
"type": "string"
},
"recording_id": {
"type": "string"
}
},
"required": [
"type"
],
"additionalProperties": false
}
},
"required": [
"project_id",
"idempotency_key",
"action"
],
"additionalProperties": false
},
"annotations": {
"title": "Save participant recognition and reviews",
"readOnlyHint": false,
"destructiveHint": true,
"idempotentHint": true,
"openWorldHint": false
},
"securitySchemes": [
{
"type": "noauth"
}
],
"_meta": {
"securitySchemes": [
{
"type": "noauth"
}
],
"ui": {
"visibility": [
"model",
"app"
]
},
"openai/widgetAccessible": true
}
}App descriptor
{
"name": "project_participants_mutate",
"title": "Save participant recognition and reviews",
"description": "Studio-owner operation for Project-scoped face recognition. enable requires explicit participant permission and expected_consent_revision from a fresh read; recording_ids selects up to eight historical Recordings, while enabled future intake is automatic. process selects further existing Recordings. review names/confirms only explicitly included displayed observation IDs and excludes the displayed examples that are not that person; it takes the exact review_context and either speaker_profile_id OR new_person_name, and project_participants_read reports the cached-descriptor regrouping that follows. reviewer_kind:delegated_agent_review records a review made under delegated authority, which is distinct from the owner personally inspecting the images. undo requires the current review_id and refuses to overwrite newer answers. disable stops use/work while retaining saved data. forget disables and removes this feature's Project descriptors, previews and associations; Recordings, voices, approved portraits and a host's confirmed face references remain. retry names a failed recording_id or job_id. review, undo, and update_matches accept match_scope with type episode plus episode_id, type recordings plus up to eight recording_ids, or type project. Omission retains the Project-wide default for existing clients. update_matches only uses cached descriptors and never analyzes original video; unavailable evidence is reported separately. Deferred Recordings retain reviewed facts while older automatic names are withheld. cancel_update with job_id stops a cached update and retains the saved answer; retry reuses that job scope. Every action requires a stable idempotency_key. Participant permission is explicit per Project: consent here gates only this Project's matching and enables no other Project, and a host's confirmed faces stay theirs whether it is on or off.",
"inputSchema": {
"type": "object",
"properties": {
"project_id": {
"type": "string"
},
"idempotency_key": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"action": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"enable",
"process",
"review",
"undo",
"disable",
"forget",
"retry",
"update_matches",
"cancel_update"
]
},
"expected_consent_revision": {
"type": "integer",
"minimum": 0
},
"participant_permission": {
"type": "boolean"
},
"recording_ids": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 8,
"uniqueItems": true
},
"review_context": {
"type": "string"
},
"included_observation_ids": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 6,
"uniqueItems": true
},
"excluded_observation_ids": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 6,
"uniqueItems": true
},
"speaker_profile_id": {
"type": "string"
},
"new_person_name": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"reviewer_kind": {
"type": "string",
"enum": [
"owner_review",
"delegated_agent_review"
]
},
"match_scope": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"episode",
"project",
"recordings"
]
},
"episode_id": {
"type": "string"
},
"recording_ids": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 8,
"uniqueItems": true
}
},
"required": [
"type"
],
"additionalProperties": false
},
"review_id": {
"type": "string"
},
"job_id": {
"type": "string"
},
"recording_id": {
"type": "string"
}
},
"required": [
"type"
],
"additionalProperties": false
}
},
"required": [
"project_id",
"idempotency_key",
"action"
],
"additionalProperties": false
},
"annotations": {
"title": "Save participant recognition and reviews",
"readOnlyHint": false,
"destructiveHint": true,
"idempotentHint": true,
"openWorldHint": false
},
"securitySchemes": [
{
"type": "noauth"
}
],
"_meta": {
"securitySchemes": [
{
"type": "noauth"
}
],
"ui": {
"visibility": [
"model",
"app"
]
},
"openai/widgetAccessible": true
}
}Live Workspace descriptor
{
"name": "project_participants_mutate",
"title": "Save participant recognition and reviews",
"description": "Studio-owner operation for Project-scoped face recognition. enable requires explicit participant permission and expected_consent_revision from a fresh read; recording_ids selects up to eight historical Recordings, while enabled future intake is automatic. process selects further existing Recordings. review names/confirms only explicitly included displayed observation IDs and excludes the displayed examples that are not that person; it takes the exact review_context and either speaker_profile_id OR new_person_name, and project_participants_read reports the cached-descriptor regrouping that follows. reviewer_kind:delegated_agent_review records a review made under delegated authority, which is distinct from the owner personally inspecting the images. undo requires the current review_id and refuses to overwrite newer answers. disable stops use/work while retaining saved data. forget disables and removes this feature's Project descriptors, previews and associations; Recordings, voices, approved portraits and a host's confirmed face references remain. retry names a failed recording_id or job_id. review, undo, and update_matches accept match_scope with type episode plus episode_id, type recordings plus up to eight recording_ids, or type project. Omission retains the Project-wide default for existing clients. update_matches only uses cached descriptors and never analyzes original video; unavailable evidence is reported separately. Deferred Recordings retain reviewed facts while older automatic names are withheld. cancel_update with job_id stops a cached update and retains the saved answer; retry reuses that job scope. Every action requires a stable idempotency_key. Participant permission is explicit per Project: consent here gates only this Project's matching and enables no other Project, and a host's confirmed faces stay theirs whether it is on or off.",
"inputSchema": {
"type": "object",
"properties": {
"project_id": {
"type": "string"
},
"idempotency_key": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"action": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"enable",
"process",
"review",
"undo",
"disable",
"forget",
"retry",
"update_matches",
"cancel_update"
]
},
"expected_consent_revision": {
"type": "integer",
"minimum": 0
},
"participant_permission": {
"type": "boolean"
},
"recording_ids": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 8,
"uniqueItems": true
},
"review_context": {
"type": "string"
},
"included_observation_ids": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 6,
"uniqueItems": true
},
"excluded_observation_ids": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 6,
"uniqueItems": true
},
"speaker_profile_id": {
"type": "string"
},
"new_person_name": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"reviewer_kind": {
"type": "string",
"enum": [
"owner_review",
"delegated_agent_review"
]
},
"match_scope": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"episode",
"project",
"recordings"
]
},
"episode_id": {
"type": "string"
},
"recording_ids": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 8,
"uniqueItems": true
}
},
"required": [
"type"
],
"additionalProperties": false
},
"review_id": {
"type": "string"
},
"job_id": {
"type": "string"
},
"recording_id": {
"type": "string"
}
},
"required": [
"type"
],
"additionalProperties": false
}
},
"required": [
"project_id",
"idempotency_key",
"action"
],
"additionalProperties": false
},
"annotations": {
"title": "Save participant recognition and reviews",
"readOnlyHint": false,
"destructiveHint": true,
"idempotentHint": true,
"openWorldHint": false
},
"securitySchemes": [
{
"type": "noauth"
}
],
"_meta": {
"securitySchemes": [
{
"type": "noauth"
}
]
}
}Errors
[
"not_found",
"invalid_input",
"recognition_owner_required",
"recognition_review_stale",
"recognition_undo_stale",
"recognition_consent_changed",
"recognition_retry_changed"
]Examples
[]