Default model tools

episode_read

Read an episode

Reads an EPISODE (comp_...) as stitched transcript prose with inline navigation hints, visual evidence, segment manifest, speaker legend (per-speaker word share/talk_seconds — "who spoke how much" is answerable here), and duration/revision. The Program map reports each source-backed occurrence's current caption treatment and each Junction's current Cut, Crossfade, or Produced transition treatment. The Camera Program reports exact Episode-local explicit picture decisions—including source-linked synchronized versus continuous picture time—plus access-scoped inherited/automatic intervals the renderer currently selects, so `none` means no local override rather than necessarily base footage. The Picture Program reports bounded exact simultaneous-layout reauthoring segments and Episode-scoped evidence; its continuation also carries `picture_read_token`. Typed opener/outro occurrences include safe current `identity_customization` state. A parent Episode read also returns bounded derived-Clip titles and exact reopen handles, so a named existing Clip is found through its likely parent; docs and speaker tools do not list Clip titles. For Project content-evidence asks, transcript_search returns the windows this read takes as `window`. Also ACCEPTS a recording handle (src_...) and reads it as that recording's episode-of-one. All timestamps are EPISODE time unless a field ends in _source. Long transcripts are PAGINATED, in sequence via `page`. Every continuation (page or picture_page after 1) requires the `expected_revision` and `expected_program_digest` its hint prints (plus `picture_read_token` when the hint carries one); a missing or changed pin refuses, and the read restarts at page 1. The pins hold one Program revision and digest (and Picture read token), not the transcript: a retranscription between pages can pass them and show as changed words, and page 1 reflects the current transcript. Transcript words and times are approximate read-only semantic locators; a structural boundary requires source media evidence from a narrow episode_zoom or exact episode_sample_frames projection:"original" samples. Program and angle previews never authorize structural boundaries. This read opens nothing: opening is workspace_open, and saved reviewable Moments are review_points_place with exact Episode-time ranges and the revision returned here. A timestamp named in chat is neither an open nor a saved review point. Returns prose only, never word-level rows. Does not modify anything.

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": "episode_read",
  "title": "Read an episode",
  "description": "Reads an EPISODE (comp_...) as stitched transcript prose with inline navigation hints, visual evidence, segment manifest, speaker legend (per-speaker word share/talk_seconds — \"who spoke how much\" is answerable here), and duration/revision. The Program map reports each source-backed occurrence's current caption treatment and each Junction's current Cut, Crossfade, or Produced transition treatment. The Camera Program reports exact Episode-local explicit picture decisions—including source-linked synchronized versus continuous picture time—plus access-scoped inherited/automatic intervals the renderer currently selects, so `none` means no local override rather than necessarily base footage. The Picture Program reports bounded exact simultaneous-layout reauthoring segments and Episode-scoped evidence; its continuation also carries `picture_read_token`. Typed opener/outro occurrences include safe current `identity_customization` state. A parent Episode read also returns bounded derived-Clip titles and exact reopen handles, so a named existing Clip is found through its likely parent; docs and speaker tools do not list Clip titles. For Project content-evidence asks, transcript_search returns the windows this read takes as `window`. Also ACCEPTS a recording handle (src_...) and reads it as that recording's episode-of-one. All timestamps are EPISODE time unless a field ends in _source. Long transcripts are PAGINATED, in sequence via `page`. Every continuation (page or picture_page after 1) requires the `expected_revision` and `expected_program_digest` its hint prints (plus `picture_read_token` when the hint carries one); a missing or changed pin refuses, and the read restarts at page 1. The pins hold one Program revision and digest (and Picture read token), not the transcript: a retranscription between pages can pass them and show as changed words, and page 1 reflects the current transcript. Transcript words and times are approximate read-only semantic locators; a structural boundary requires source media evidence from a narrow episode_zoom or exact episode_sample_frames projection:\"original\" samples. Program and angle previews never authorize structural boundaries. This read opens nothing: opening is workspace_open, and saved reviewable Moments are review_points_place with exact Episode-time ranges and the revision returned here. A timestamp named in chat is neither an open nor a saved review point. Returns prose only, never word-level rows. Does not modify anything.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "episode_id": {
        "type": "string",
        "description": "The episode public ID, such as comp_...; a recording src_... handle is also accepted for a recording's episode-of-one."
      },
      "composition_id": {
        "type": "string",
        "description": "Backward-compatible alias for episode_id."
      },
      "window": {
        "type": "object",
        "description": "Optional EPISODE-time span to read for long episodes. Lines overlapping the window are returned; absent means the whole episode.",
        "properties": {
          "from": {
            "type": "number",
            "description": "Window start in episode seconds; absent means an open start."
          },
          "to": {
            "type": "number",
            "description": "Window end in episode seconds; absent means an open end."
          }
        }
      },
      "page": {
        "type": "integer",
        "description": "1-indexed page of the transcript prose (default 1). A long transcript is split into M pages so each stays under the host's tool-output size cap; the returned page's header says 'page N of M' and its footer says how to fetch the next. Composes with `window`: `window` picks the time range, `page` paginates that range's prose."
      },
      "picture_page": {
        "type": "integer",
        "minimum": 1,
        "description": "Independent 1-indexed page of bounded Picture Scene and Picture Evidence summaries. Continuations are the exact ones returned in Picture Program prose."
      },
      "expected_revision": {
        "type": "integer",
        "minimum": 0,
        "description": "Required on every continuation (page or picture_page after 1): the revision the previous page's continuation hint prints. A changed Episode refuses and the read restarts at page 1."
      },
      "expected_program_digest": {
        "type": "string",
        "pattern": "^[0-9a-f]{64}$",
        "description": "Required with expected_revision on every continuation: the Program digest the previous page's continuation hint prints. It also moves on a same-revision occurrence change such as align_span; a changed Program refuses and the read restarts at page 1."
      },
      "picture_read_token": {
        "type": "string",
        "pattern": "^[0-9a-f]{64}$",
        "description": "Required exact media-generation pin returned by Picture Program page 1 when following a Picture or transcript continuation that carries Picture content."
      }
    },
    "required": [],
    "additionalProperties": false,
    "anyOf": [
      {
        "required": [
          "episode_id"
        ]
      },
      {
        "required": [
          "composition_id"
        ]
      }
    ]
  },
  "annotations": {
    "title": "Read an episode",
    "readOnlyHint": true,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false
  },
  "securitySchemes": [
    {
      "type": "noauth"
    }
  ],
  "_meta": {
    "securitySchemes": [
      {
        "type": "noauth"
      }
    ]
  }
}

App descriptor

{
  "name": "episode_read",
  "title": "Read an episode",
  "description": "Reads an EPISODE (comp_...) as stitched transcript prose with inline navigation hints, visual evidence, segment manifest, speaker legend (per-speaker word share/talk_seconds — \"who spoke how much\" is answerable here), and duration/revision. The Program map reports each source-backed occurrence's current caption treatment and each Junction's current Cut, Crossfade, or Produced transition treatment. The Camera Program reports exact Episode-local explicit picture decisions—including source-linked synchronized versus continuous picture time—plus access-scoped inherited/automatic intervals the renderer currently selects, so `none` means no local override rather than necessarily base footage. The Picture Program reports bounded exact simultaneous-layout reauthoring segments and Episode-scoped evidence; its continuation also carries `picture_read_token`. Typed opener/outro occurrences include safe current `identity_customization` state. A parent Episode read also returns bounded derived-Clip titles and exact reopen handles, so a named existing Clip is found through its likely parent; docs and speaker tools do not list Clip titles. For Project content-evidence asks, transcript_search returns the windows this read takes as `window`. Also ACCEPTS a recording handle (src_...) and reads it as that recording's episode-of-one. All timestamps are EPISODE time unless a field ends in _source. Long transcripts are PAGINATED, in sequence via `page`. Every continuation (page or picture_page after 1) requires the `expected_revision` and `expected_program_digest` its hint prints (plus `picture_read_token` when the hint carries one); a missing or changed pin refuses, and the read restarts at page 1. The pins hold one Program revision and digest (and Picture read token), not the transcript: a retranscription between pages can pass them and show as changed words, and page 1 reflects the current transcript. Transcript words and times are approximate read-only semantic locators; a structural boundary requires source media evidence from a narrow episode_zoom or exact episode_sample_frames projection:\"original\" samples. Program and angle previews never authorize structural boundaries. This read opens nothing: opening is workspace_open, and saved reviewable Moments are review_points_place with exact Episode-time ranges and the revision returned here. A timestamp named in chat is neither an open nor a saved review point. Returns prose only, never word-level rows. Does not modify anything.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "episode_id": {
        "type": "string",
        "description": "The episode public ID, such as comp_...; a recording src_... handle is also accepted for a recording's episode-of-one."
      },
      "composition_id": {
        "type": "string",
        "description": "Backward-compatible alias for episode_id."
      },
      "window": {
        "type": "object",
        "description": "Optional EPISODE-time span to read for long episodes. Lines overlapping the window are returned; absent means the whole episode.",
        "properties": {
          "from": {
            "type": "number",
            "description": "Window start in episode seconds; absent means an open start."
          },
          "to": {
            "type": "number",
            "description": "Window end in episode seconds; absent means an open end."
          }
        }
      },
      "page": {
        "type": "integer",
        "description": "1-indexed page of the transcript prose (default 1). A long transcript is split into M pages so each stays under the host's tool-output size cap; the returned page's header says 'page N of M' and its footer says how to fetch the next. Composes with `window`: `window` picks the time range, `page` paginates that range's prose."
      },
      "picture_page": {
        "type": "integer",
        "minimum": 1,
        "description": "Independent 1-indexed page of bounded Picture Scene and Picture Evidence summaries. Continuations are the exact ones returned in Picture Program prose."
      },
      "expected_revision": {
        "type": "integer",
        "minimum": 0,
        "description": "Required on every continuation (page or picture_page after 1): the revision the previous page's continuation hint prints. A changed Episode refuses and the read restarts at page 1."
      },
      "expected_program_digest": {
        "type": "string",
        "pattern": "^[0-9a-f]{64}$",
        "description": "Required with expected_revision on every continuation: the Program digest the previous page's continuation hint prints. It also moves on a same-revision occurrence change such as align_span; a changed Program refuses and the read restarts at page 1."
      },
      "picture_read_token": {
        "type": "string",
        "pattern": "^[0-9a-f]{64}$",
        "description": "Required exact media-generation pin returned by Picture Program page 1 when following a Picture or transcript continuation that carries Picture content."
      }
    },
    "required": [],
    "additionalProperties": false,
    "anyOf": [
      {
        "required": [
          "episode_id"
        ]
      },
      {
        "required": [
          "composition_id"
        ]
      }
    ]
  },
  "annotations": {
    "title": "Read an episode",
    "readOnlyHint": true,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false
  },
  "securitySchemes": [
    {
      "type": "noauth"
    }
  ],
  "_meta": {
    "securitySchemes": [
      {
        "type": "noauth"
      }
    ]
  }
}

Live Workspace descriptor

{
  "name": "episode_read",
  "title": "Read an episode",
  "description": "Reads an EPISODE (comp_...) as stitched transcript prose with inline navigation hints, visual evidence, segment manifest, speaker legend (per-speaker word share/talk_seconds — \"who spoke how much\" is answerable here), and duration/revision. The Program map reports each source-backed occurrence's current caption treatment and each Junction's current Cut, Crossfade, or Produced transition treatment. The Camera Program reports exact Episode-local explicit picture decisions—including source-linked synchronized versus continuous picture time—plus access-scoped inherited/automatic intervals the renderer currently selects, so `none` means no local override rather than necessarily base footage. The Picture Program reports bounded exact simultaneous-layout reauthoring segments and Episode-scoped evidence; its continuation also carries `picture_read_token`. Typed opener/outro occurrences include safe current `identity_customization` state. A parent Episode read also returns bounded derived-Clip titles and exact reopen handles, so a named existing Clip is found through its likely parent; docs and speaker tools do not list Clip titles. For Project content-evidence asks, transcript_search returns the windows this read takes as `window`. Also ACCEPTS a recording handle (src_...) and reads it as that recording's episode-of-one. All timestamps are EPISODE time unless a field ends in _source. Long transcripts are PAGINATED, in sequence via `page`. Every continuation (page or picture_page after 1) requires the `expected_revision` and `expected_program_digest` its hint prints (plus `picture_read_token` when the hint carries one); a missing or changed pin refuses, and the read restarts at page 1. The pins hold one Program revision and digest (and Picture read token), not the transcript: a retranscription between pages can pass them and show as changed words, and page 1 reflects the current transcript. Transcript words and times are approximate read-only semantic locators; a structural boundary requires source media evidence from a narrow episode_zoom or exact episode_sample_frames projection:\"original\" samples. Program and angle previews never authorize structural boundaries. This read opens nothing: opening is workspace_get_link, and saved reviewable Moments are review_points_place with exact Episode-time ranges and the revision returned here. A timestamp named in chat is neither an open nor a saved review point. Returns prose only, never word-level rows. Does not modify anything.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "episode_id": {
        "type": "string",
        "description": "The episode public ID, such as comp_...; a recording src_... handle is also accepted for a recording's episode-of-one."
      },
      "composition_id": {
        "type": "string",
        "description": "Backward-compatible alias for episode_id."
      },
      "window": {
        "type": "object",
        "description": "Optional EPISODE-time span to read for long episodes. Lines overlapping the window are returned; absent means the whole episode.",
        "properties": {
          "from": {
            "type": "number",
            "description": "Window start in episode seconds; absent means an open start."
          },
          "to": {
            "type": "number",
            "description": "Window end in episode seconds; absent means an open end."
          }
        }
      },
      "page": {
        "type": "integer",
        "description": "1-indexed page of the transcript prose (default 1). A long transcript is split into M pages so each stays under the host's tool-output size cap; the returned page's header says 'page N of M' and its footer says how to fetch the next. Composes with `window`: `window` picks the time range, `page` paginates that range's prose."
      },
      "picture_page": {
        "type": "integer",
        "minimum": 1,
        "description": "Independent 1-indexed page of bounded Picture Scene and Picture Evidence summaries. Continuations are the exact ones returned in Picture Program prose."
      },
      "expected_revision": {
        "type": "integer",
        "minimum": 0,
        "description": "Required on every continuation (page or picture_page after 1): the revision the previous page's continuation hint prints. A changed Episode refuses and the read restarts at page 1."
      },
      "expected_program_digest": {
        "type": "string",
        "pattern": "^[0-9a-f]{64}$",
        "description": "Required with expected_revision on every continuation: the Program digest the previous page's continuation hint prints. It also moves on a same-revision occurrence change such as align_span; a changed Program refuses and the read restarts at page 1."
      },
      "picture_read_token": {
        "type": "string",
        "pattern": "^[0-9a-f]{64}$",
        "description": "Required exact media-generation pin returned by Picture Program page 1 when following a Picture or transcript continuation that carries Picture content."
      }
    },
    "required": [],
    "additionalProperties": false,
    "anyOf": [
      {
        "required": [
          "episode_id"
        ]
      },
      {
        "required": [
          "composition_id"
        ]
      }
    ]
  },
  "annotations": {
    "title": "Read an episode",
    "readOnlyHint": true,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false
  },
  "securitySchemes": [
    {
      "type": "noauth"
    }
  ],
  "_meta": {
    "securitySchemes": [
      {
        "type": "noauth"
      }
    ]
  }
}

Errors

[
  "composition_not_found",
  "stale_composition_revision",
  "stale_program_digest",
  "stale_picture_read",
  "invalid_input"
]

Examples

[
  {
    "label": "See a whole episode before clipping it",
    "input": {
      "episode_id": "comp_..."
    }
  }
]