# recordings_get_person_detections

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

Surface: app-only

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

Read raw person-detection evidence for one source-time window of a recording. Returns detector boxes normalized to the recording's display frame, each with its score, whether it was accepted or retained as sub-threshold, an optional track-continuity id, a tracker-ambiguity flag, and an inferred speaker attribution carrying the basis that justified it (face_anchor: a reviewed face sat inside this box at this instant; track_propagated: carried along a track from an anchor elsewhere in it; appearance_reassociation: re-established across a track boundary by relative appearance ranking; escalation_arbitrated: committed by the reviewed escalation lane; voice_turn_binding: the person layer bound this stretch of the track to the voice speaking while it held the picture). This is unreviewed machine output, not identity: a track id is continuity, and an unattributed box is honestly unassigned. Reviewed, human-scoped subject geometry stays in recordings_get_speaker_evidence.

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.

## App descriptor

```json
{
  "name": "recordings_get_person_detections",
  "title": "Get recording person detections",
  "description": "Read raw person-detection evidence for one source-time window of a recording. Returns detector boxes normalized to the recording's display frame, each with its score, whether it was accepted or retained as sub-threshold, an optional track-continuity id, a tracker-ambiguity flag, and an inferred speaker attribution carrying the basis that justified it (face_anchor: a reviewed face sat inside this box at this instant; track_propagated: carried along a track from an anchor elsewhere in it; appearance_reassociation: re-established across a track boundary by relative appearance ranking; escalation_arbitrated: committed by the reviewed escalation lane; voice_turn_binding: the person layer bound this stretch of the track to the voice speaking while it held the picture). This is unreviewed machine output, not identity: a track id is continuity, and an unattributed box is honestly unassigned. Reviewed, human-scoped subject geometry stays in recordings_get_speaker_evidence.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "recording_id": {
        "type": "string",
        "description": "Recording public ID."
      },
      "window_start_seconds": {
        "type": "number",
        "description": "Window start on the recording's source-time axis."
      },
      "window_end_seconds": {
        "type": "number",
        "description": "Window end on the recording's source-time axis. Spans are clamped; the served window is reported back."
      },
      "limit": {
        "type": "integer",
        "description": "Maximum detections to return for the window."
      }
    },
    "required": [
      "recording_id"
    ],
    "additionalProperties": false
  },
  "annotations": {
    "readOnlyHint": true,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false
  },
  "securitySchemes": [
    {
      "type": "noauth"
    }
  ],
  "_meta": {
    "securitySchemes": [
      {
        "type": "noauth"
      }
    ],
    "ui": {
      "visibility": [
        "app"
      ]
    },
    "openai/widgetAccessible": true,
    "openai/visibility": "private"
  },
  "outputSchema": {
    "type": "object",
    "properties": {
      "recording_id": {
        "type": "string"
      },
      "person_detections": {
        "type": "object"
      }
    },
    "required": [],
    "additionalProperties": false
  }
}
```

## Errors

```json
[
  "recording_not_found",
  "invalid_input"
]
```

## Examples

```json
[]
```
