read_captions
Start caption/subtitle tweaks here, then use edit_captions for wording, grouping, emphasis, presets, style, layout or translation. Read saved topology-v2 caption tracks and their native items, never raw ASR or a freshly generated plan. On a legacy/v1 timeline this tool rejects without reading caption contents or changing data: call edit_captions {"action":"refresh"} first to convert its SAVED captions to v2, then read again. No legacy Program/Cue fallback or implicit migration exists.
Returns topologyVersion:2, timelineId, inputRevision, revision, global CC settings, compact tracks, captionTrackSummary, availableSources and paginated items/renderedItems. Each item owns exactly one caption trackId. captionTrackSummary labels C1/C2 identify caption tracks; availableSources labels V1/A1 identify MEDIA tracks and list their real ids, itemIds and assetIds. Do not use a media source id as a caption track id. Source-less/manual items have binding:null and never auto-bind.
items contain id (also the cardId for high-level edits), trackId, from, durationInFrames and data:{lines,appearanceOverride,authoredFields,binding,hidden,...}. Lines include timed tokens; token.from is relative to its Card, while Card from/duration are absolute timeline frames. Negative saved token offsets are valid. renderedItems contain effective inherited appearance and geometry, not duplicate text/tokens. All projections omit renderer source, renderer property definitions and track reconciliation internals. Renderer flags indicate omitted code; inspect it explicitly with edit_captions {action:"renderer",cardId:"..."} or sourceId for a track. Original and translated tracks have independent text, pagination, appearance and visibility, linked to the same source media clocks; translated word timing is aligned/estimated, not measured speech.
Use the returned revision for Card edits and batch; every successful edit returns the next revision. Call edits sequentially. Native edits include edit_captions set_card_text, set_card_style, set_card_layout, set_card_span_style, set_card_tokens, split_card and merge_cards. Track-wide style/layout/template select the caption trackId. To move a Card use track_items {operation:"move",itemIds:[""],trackId:""}; to delete a caption track use {operation:"delete-track",trackId:"..."}. Use create-track/update-track/create-item/update-item instead of full upserts: these compact read projections are not complete storage rows.
To add requested languages, use edit_captions translate {languageCode:"zh",mode:"bilingual"}, then translate {languageCode:"ja",mode:"bilingual"}. Each call preserves the original and existing language tracks. If the original already is one requested language, keep it and translate only missing languages rather than adding a duplicate. Do not fabricate translated rows. Use set_card_text for caption wording/spelling and template to discover published ordinary/animated presets. Caption edits do not require changing shared source transcription.
Reads are bounded to 32,000 UTF-8 bytes and paginated by caption item in timeline order. limit defaults to 50 (maximum 100); the byte budget may return fewer complete Cards. Continue using nextOffset plus the returned revision, not offset+limit. Text and timing are never silently truncated. Use words:true only when resolved word details are needed. cardId selects one exact id or unambiguous prefix. atFrame selects Cards covering that exact frame; fromFrame/toFrame use a half-open range. Reading never starts transcription, generation, translation, reconciliation or migration.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "read_captions"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| json | No | Optional JSON: {"cardId":"<native item id>","words":true}, {"atFrame":4806}, {"fromFrame":4806,"toFrame":4830}, or {"limit":50,"offset":50,"revision":"..."}. Native item/token ids and frame ranges are returned directly; legacy Program ids are not accepted. | |
| projectId | No | Project for this call (full ID or unambiguous prefix). Explicit-timeline calls never change the target of later calls; legacy project selection applies otherwise. | |
| timelineId | No |