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