{"serverId":"mcp-registry/top.toolboxes/subtitle-toolkit","tools":[{"name":"check_subtitle_timing","fixed":{"name":"check_subtitle_timing","description":"Audit subtitle readability and produce a report: reading speed (CPS), cue durations that are too short or too long, lines that are too wide, more than two lines, and overlapping cues. Returns a formatted report listing every flagged cue.","inputSchema":{"type":"object","required":["content"],"properties":{"content":{"type":"string","description":"The full subtitle file text."},"max_cps":{"type":"number","description":"Max characters per second. Default 20."},"max_line_length":{"type":"number","description":"Max characters per line. Default 42."},"max_duration_seconds":{"type":"number","description":"Maximum cue duration in seconds. Default 7."},"min_duration_seconds":{"type":"number","description":"Minimum cue duration in seconds. Default 0.833 (Netflix 5/6s)."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":229,"tokensAfter":229},{"name":"convert_subtitle","fixed":{"name":"convert_subtitle","description":"Convert subtitle text between formats. Reads SRT, WebVTT, ASS/SSA, YouTube SBV and TTML/DFXP; writes SRT, WebVTT, ASS, CSV or plain text. Format is auto-detected unless `from` is given.","inputSchema":{"type":"object","required":["content","to"],"properties":{"to":{"enum":["srt","vtt","ass","csv","text"],"type":"string","description":"Target format. `text` = plain transcript, one line per cue, no timecodes."},"from":{"enum":["auto","srt","vtt","ass","sbv","ttml"],"type":"string","description":"Source format (default \"auto\" = detect)."},"dedupe":{"type":"boolean","description":"Only for to=\"text\": collapse consecutive identical lines (rolling-caption transcripts repeat lines). Default false."},"content":{"type":"string","description":"The full subtitle file text."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":229,"tokensAfter":229},{"name":"merge_subtitles","fixed":{"name":"merge_subtitles","description":"Append one subtitle track after another (CD1 + CD2, or a second language track). The second track is offset so it starts after the last cue of the first, plus an optional gap.","inputSchema":{"type":"object","required":["content","append_content"],"properties":{"to":{"enum":["srt","vtt"],"type":"string","description":"Output format. Default: same as the input."},"content":{"type":"string","description":"The first subtitle file text."},"gap_seconds":{"type":"number","description":"Extra gap between the two tracks, in seconds. Default 0."},"append_content":{"type":"string","description":"The subtitle file text to append."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":187,"tokensAfter":187}],"toolsChanged":3,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}