speakers_list
List remembered people
Lists the people BitterClip remembers for this account, with per-person recording/word/voiceprint counts, first/last-seen dates, and review flags. filter=assignment_exceptions without project_id returns the complete whole-account speaker-exception queue in one call; projects_list, project-title search, enumeration, or project-scoped fan-out cannot reconstruct it, because title filtering can omit in-scope projects whose names do not match a shorthand. Project-scoped reads cover a deliberately named subset of projects. The account queue begins with a complete contiguous short-answer block (its project, recording-group, and open-track header, and every numbered project group regardless of title); the later recording rows are an evidence appendix, not a new scope. It returns exact row-derived account and per-project totals, every open project and recording group, and no hidden tail; shared projects from other studios are excluded. With project_id, needs_review or assignment_exceptions reports recording-assignment exceptions separately from person-profile confirmation, including current owner-reviewed wrong/unsure tracks and other tracks still needing review. The exception queue is grouped by recording, deliberately omits per-track size because size alone cannot resolve identity or dismiss an exception, and marks every open row non-dismissible until an explicit review or verified correction resolves it. A known-wrong current label does not identify the replacement speaker; that track stays open. The result is one project-level exception queue: recording groups are evidence organization, not separate tasks, and every listed row remains in the queue. Generic provider labels are recording-local, so matching Speaker 1/2 text across recordings never proves one voice or merges track decisions. Absence from the queue never proves a label, person, recording, or project is settled. The readable result includes every open recording group; there is no hidden compact-list tail. Track size alone does not establish noise, crosstalk, non-person status, optionality, or safe-to-ignore state. Use this when the user asks who appears across recordings, who spoke how much, or which identities need review; transcripts do not reconstruct that answer. Ordinary people-list modes return stable spkr_... IDs for speakers_get/speakers_get_appearances follow-ups; the account assignment_exceptions mode instead returns complete ID-free queue prose. Read-only.
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": "speakers_list",
"title": "List remembered people",
"description": "Lists the people BitterClip remembers for this account, with per-person recording/word/voiceprint counts, first/last-seen dates, and review flags. filter=assignment_exceptions without project_id returns the complete whole-account speaker-exception queue in one call; projects_list, project-title search, enumeration, or project-scoped fan-out cannot reconstruct it, because title filtering can omit in-scope projects whose names do not match a shorthand. Project-scoped reads cover a deliberately named subset of projects. The account queue begins with a complete contiguous short-answer block (its project, recording-group, and open-track header, and every numbered project group regardless of title); the later recording rows are an evidence appendix, not a new scope. It returns exact row-derived account and per-project totals, every open project and recording group, and no hidden tail; shared projects from other studios are excluded. With project_id, needs_review or assignment_exceptions reports recording-assignment exceptions separately from person-profile confirmation, including current owner-reviewed wrong/unsure tracks and other tracks still needing review. The exception queue is grouped by recording, deliberately omits per-track size because size alone cannot resolve identity or dismiss an exception, and marks every open row non-dismissible until an explicit review or verified correction resolves it. A known-wrong current label does not identify the replacement speaker; that track stays open. The result is one project-level exception queue: recording groups are evidence organization, not separate tasks, and every listed row remains in the queue. Generic provider labels are recording-local, so matching Speaker 1/2 text across recordings never proves one voice or merges track decisions. Absence from the queue never proves a label, person, recording, or project is settled. The readable result includes every open recording group; there is no hidden compact-list tail. Track size alone does not establish noise, crosstalk, non-person status, optionality, or safe-to-ignore state. Use this when the user asks who appears across recordings, who spoke how much, or which identities need review; transcripts do not reconstruct that answer. Ordinary people-list modes return stable spkr_... IDs for speakers_get/speakers_get_appearances follow-ups; the account assignment_exceptions mode instead returns complete ID-free queue prose. Read-only.",
"inputSchema": {
"type": "object",
"properties": {
"filter": {
"type": "string",
"enum": [
"assignment_exceptions",
"needs_review",
"needs_photo_review",
"possible_duplicates",
"no_voice",
"recent",
"merged"
],
"description": "Optional people filter. Defaults to recent. assignment_exceptions without project_id returns the complete current-account recording-assignment queue and ignores the people limit; with project_id, assignment_exceptions and needs_review select people attached to track exceptions while also reporting unbound exceptions."
},
"project_id": {
"type": "string",
"description": "Optional project public ID to limit results to people seen or configured in one project."
},
"limit": {
"type": "integer",
"description": "Maximum people to return. Default 20, maximum 50. The complete assignment_exceptions account queue is never truncated by this people limit."
}
},
"required": [],
"additionalProperties": false
},
"annotations": {
"title": "List remembered people",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false
},
"securitySchemes": [
{
"type": "noauth"
}
],
"_meta": {
"securitySchemes": [
{
"type": "noauth"
}
],
"ui": {
"visibility": [
"model",
"app"
]
},
"openai/widgetAccessible": true
}
}App descriptor
{
"name": "speakers_list",
"title": "List remembered people",
"description": "Lists the people BitterClip remembers for this account, with per-person recording/word/voiceprint counts, first/last-seen dates, and review flags. filter=assignment_exceptions without project_id returns the complete whole-account speaker-exception queue in one call; projects_list, project-title search, enumeration, or project-scoped fan-out cannot reconstruct it, because title filtering can omit in-scope projects whose names do not match a shorthand. Project-scoped reads cover a deliberately named subset of projects. The account queue begins with a complete contiguous short-answer block (its project, recording-group, and open-track header, and every numbered project group regardless of title); the later recording rows are an evidence appendix, not a new scope. It returns exact row-derived account and per-project totals, every open project and recording group, and no hidden tail; shared projects from other studios are excluded. With project_id, needs_review or assignment_exceptions reports recording-assignment exceptions separately from person-profile confirmation, including current owner-reviewed wrong/unsure tracks and other tracks still needing review. The exception queue is grouped by recording, deliberately omits per-track size because size alone cannot resolve identity or dismiss an exception, and marks every open row non-dismissible until an explicit review or verified correction resolves it. A known-wrong current label does not identify the replacement speaker; that track stays open. The result is one project-level exception queue: recording groups are evidence organization, not separate tasks, and every listed row remains in the queue. Generic provider labels are recording-local, so matching Speaker 1/2 text across recordings never proves one voice or merges track decisions. Absence from the queue never proves a label, person, recording, or project is settled. The readable result includes every open recording group; there is no hidden compact-list tail. Track size alone does not establish noise, crosstalk, non-person status, optionality, or safe-to-ignore state. Use this when the user asks who appears across recordings, who spoke how much, or which identities need review; transcripts do not reconstruct that answer. Ordinary people-list modes return stable spkr_... IDs for speakers_get/speakers_get_appearances follow-ups; the account assignment_exceptions mode instead returns complete ID-free queue prose. Read-only.",
"inputSchema": {
"type": "object",
"properties": {
"filter": {
"type": "string",
"enum": [
"assignment_exceptions",
"needs_review",
"needs_photo_review",
"possible_duplicates",
"no_voice",
"recent",
"merged"
],
"description": "Optional people filter. Defaults to recent. assignment_exceptions without project_id returns the complete current-account recording-assignment queue and ignores the people limit; with project_id, assignment_exceptions and needs_review select people attached to track exceptions while also reporting unbound exceptions."
},
"project_id": {
"type": "string",
"description": "Optional project public ID to limit results to people seen or configured in one project."
},
"limit": {
"type": "integer",
"description": "Maximum people to return. Default 20, maximum 50. The complete assignment_exceptions account queue is never truncated by this people limit."
}
},
"required": [],
"additionalProperties": false
},
"annotations": {
"title": "List remembered people",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false
},
"securitySchemes": [
{
"type": "noauth"
}
],
"_meta": {
"securitySchemes": [
{
"type": "noauth"
}
],
"ui": {
"visibility": [
"model",
"app"
]
},
"openai/widgetAccessible": true
}
}Live Workspace descriptor
{
"name": "speakers_list",
"title": "List remembered people",
"description": "Lists the people BitterClip remembers for this account, with per-person recording/word/voiceprint counts, first/last-seen dates, and review flags. filter=assignment_exceptions without project_id returns the complete whole-account speaker-exception queue in one call; projects_list, project-title search, enumeration, or project-scoped fan-out cannot reconstruct it, because title filtering can omit in-scope projects whose names do not match a shorthand. Project-scoped reads cover a deliberately named subset of projects. The account queue begins with a complete contiguous short-answer block (its project, recording-group, and open-track header, and every numbered project group regardless of title); the later recording rows are an evidence appendix, not a new scope. It returns exact row-derived account and per-project totals, every open project and recording group, and no hidden tail; shared projects from other studios are excluded. With project_id, needs_review or assignment_exceptions reports recording-assignment exceptions separately from person-profile confirmation, including current owner-reviewed wrong/unsure tracks and other tracks still needing review. The exception queue is grouped by recording, deliberately omits per-track size because size alone cannot resolve identity or dismiss an exception, and marks every open row non-dismissible until an explicit review or verified correction resolves it. A known-wrong current label does not identify the replacement speaker; that track stays open. The result is one project-level exception queue: recording groups are evidence organization, not separate tasks, and every listed row remains in the queue. Generic provider labels are recording-local, so matching Speaker 1/2 text across recordings never proves one voice or merges track decisions. Absence from the queue never proves a label, person, recording, or project is settled. The readable result includes every open recording group; there is no hidden compact-list tail. Track size alone does not establish noise, crosstalk, non-person status, optionality, or safe-to-ignore state. Use this when the user asks who appears across recordings, who spoke how much, or which identities need review; transcripts do not reconstruct that answer. Ordinary people-list modes return stable spkr_... IDs for speakers_get/speakers_get_appearances follow-ups; the account assignment_exceptions mode instead returns complete ID-free queue prose. Read-only.",
"inputSchema": {
"type": "object",
"properties": {
"filter": {
"type": "string",
"enum": [
"assignment_exceptions",
"needs_review",
"needs_photo_review",
"possible_duplicates",
"no_voice",
"recent",
"merged"
],
"description": "Optional people filter. Defaults to recent. assignment_exceptions without project_id returns the complete current-account recording-assignment queue and ignores the people limit; with project_id, assignment_exceptions and needs_review select people attached to track exceptions while also reporting unbound exceptions."
},
"project_id": {
"type": "string",
"description": "Optional project public ID to limit results to people seen or configured in one project."
},
"limit": {
"type": "integer",
"description": "Maximum people to return. Default 20, maximum 50. The complete assignment_exceptions account queue is never truncated by this people limit."
}
},
"required": [],
"additionalProperties": false
},
"annotations": {
"title": "List remembered people",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false
},
"securitySchemes": [
{
"type": "noauth"
}
],
"_meta": {
"securitySchemes": [
{
"type": "noauth"
}
]
}
}Errors
[
"project_not_found",
"invalid_input"
]Examples
[]