episodes_list
List episodes
Lists or finds top-level EPISODES, the unit of work: the front door for browse, latest/open, project recaps or coaching prep. `query` matches episode, project, recording, or speaker names across fields ("mike john" finds the Mike & John Show; "me" usually means the studio owner). Rows carry `match_reason`, a dense indexed description, and `episode_shape`/`latest_open_hint` separating ready full-length episodes from short drafts; `order:"latest"` sorts newest first for "latest episode" asks, and project-scoped lists default to chronological order for recaps. Returns row-carrying prose only, with each exact `episode_id` in brackets for the next tool call. Project content evidence comes from transcript_search windows; opening is workspace_open (focus_range focuses transiently without saving), and saved ranges are review_points_place. Raw recordings are a drawer (recordings_list); excludes render outputs and derived clips. 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": "episodes_list",
"title": "List episodes",
"description": "Lists or finds top-level EPISODES, the unit of work: the front door for browse, latest/open, project recaps or coaching prep. `query` matches episode, project, recording, or speaker names across fields (\"mike john\" finds the Mike & John Show; \"me\" usually means the studio owner). Rows carry `match_reason`, a dense indexed description, and `episode_shape`/`latest_open_hint` separating ready full-length episodes from short drafts; `order:\"latest\"` sorts newest first for \"latest episode\" asks, and project-scoped lists default to chronological order for recaps. Returns row-carrying prose only, with each exact `episode_id` in brackets for the next tool call. Project content evidence comes from transcript_search windows; opening is workspace_open (focus_range focuses transiently without saving), and saved ranges are review_points_place. Raw recordings are a drawer (recordings_list); excludes render outputs and derived clips. Read-only.",
"inputSchema": {
"type": "object",
"properties": {
"project_id": {
"type": "string",
"description": "Optional project public ID — scope the list to a single project's episodes."
},
"query": {
"type": "string",
"description": "Optional case-insensitive filter across episode title, project title, segment recording/source titles, and speaker names; it finds a named episode before a read."
},
"order": {
"type": "string",
"description": "Optional order: `latest` for newest-first latest/last/refresher tasks, or `chronological` for oldest-to-newest project recaps. Project-scoped default is chronological; account-wide default is latest."
},
"limit": {
"type": "integer",
"description": "Optional maximum number of recent episodes to return ('last few' is 3 unless the user names another count)."
}
},
"required": [],
"additionalProperties": false
},
"annotations": {
"title": "List episodes",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false
},
"securitySchemes": [
{
"type": "noauth"
}
],
"_meta": {
"securitySchemes": [
{
"type": "noauth"
}
]
}
}App descriptor
{
"name": "episodes_list",
"title": "List episodes",
"description": "Lists or finds top-level EPISODES, the unit of work: the front door for browse, latest/open, project recaps or coaching prep. `query` matches episode, project, recording, or speaker names across fields (\"mike john\" finds the Mike & John Show; \"me\" usually means the studio owner). Rows carry `match_reason`, a dense indexed description, and `episode_shape`/`latest_open_hint` separating ready full-length episodes from short drafts; `order:\"latest\"` sorts newest first for \"latest episode\" asks, and project-scoped lists default to chronological order for recaps. Returns row-carrying prose only, with each exact `episode_id` in brackets for the next tool call. Project content evidence comes from transcript_search windows; opening is workspace_open (focus_range focuses transiently without saving), and saved ranges are review_points_place. Raw recordings are a drawer (recordings_list); excludes render outputs and derived clips. Read-only.",
"inputSchema": {
"type": "object",
"properties": {
"project_id": {
"type": "string",
"description": "Optional project public ID — scope the list to a single project's episodes."
},
"query": {
"type": "string",
"description": "Optional case-insensitive filter across episode title, project title, segment recording/source titles, and speaker names; it finds a named episode before a read."
},
"order": {
"type": "string",
"description": "Optional order: `latest` for newest-first latest/last/refresher tasks, or `chronological` for oldest-to-newest project recaps. Project-scoped default is chronological; account-wide default is latest."
},
"limit": {
"type": "integer",
"description": "Optional maximum number of recent episodes to return ('last few' is 3 unless the user names another count)."
}
},
"required": [],
"additionalProperties": false
},
"annotations": {
"title": "List episodes",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false
},
"securitySchemes": [
{
"type": "noauth"
}
],
"_meta": {
"securitySchemes": [
{
"type": "noauth"
}
]
}
}Live Workspace descriptor
{
"name": "episodes_list",
"title": "List episodes",
"description": "Lists or finds top-level EPISODES, the unit of work: the front door for browse, latest/open, project recaps or coaching prep. `query` matches episode, project, recording, or speaker names across fields (\"mike john\" finds the Mike & John Show; \"me\" usually means the studio owner). Rows carry `match_reason`, a dense indexed description, and `episode_shape`/`latest_open_hint` separating ready full-length episodes from short drafts; `order:\"latest\"` sorts newest first for \"latest episode\" asks, and project-scoped lists default to chronological order for recaps. Returns row-carrying prose only, with each exact `episode_id` in brackets for the next tool call. Project content evidence comes from transcript_search windows; opening is workspace_get_link (focus_range focuses transiently without saving), and saved ranges are review_points_place. Raw recordings are a drawer (recordings_list); excludes render outputs and derived clips. Read-only.",
"inputSchema": {
"type": "object",
"properties": {
"project_id": {
"type": "string",
"description": "Optional project public ID — scope the list to a single project's episodes."
},
"query": {
"type": "string",
"description": "Optional case-insensitive filter across episode title, project title, segment recording/source titles, and speaker names; it finds a named episode before a read."
},
"order": {
"type": "string",
"description": "Optional order: `latest` for newest-first latest/last/refresher tasks, or `chronological` for oldest-to-newest project recaps. Project-scoped default is chronological; account-wide default is latest."
},
"limit": {
"type": "integer",
"description": "Optional maximum number of recent episodes to return ('last few' is 3 unless the user names another count)."
}
},
"required": [],
"additionalProperties": false
},
"annotations": {
"title": "List episodes",
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false
},
"securitySchemes": [
{
"type": "noauth"
}
],
"_meta": {
"securitySchemes": [
{
"type": "noauth"
}
]
}
}Errors
[
"project_not_found",
"invalid_input"
]Examples
[
{
"label": "Find a named episode",
"input": {
"query": "Visual Analysis Prototype and Coaching Workflows"
}
},
{
"label": "List recent episodes",
"input": {}
},
{
"label": "List a project's episodes",
"input": {
"project_id": "proj_..."
}
},
{
"label": "Find latest session in a project",
"input": {
"project_id": "proj_...",
"order": "latest",
"limit": 3
}
}
]