{"name":"com.powmcp/caption-file-check","slug":"powmcp-caption-file-check","title":"Caption File Check","description":"Parse WebVTT, SRT, or TTML for conformance, timing, overlaps, line length, and reading speed.","url":"https://mcp.market/server/powmcp-caption-file-check","rating":null,"grade":"C","score":69,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":8,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":6,"ok":6,"last_checked_at":"2026-09-20T20:45:34.820Z","last_ok_at":"2026-09-20T20:45:34.820Z","latency_ms":765},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":null,"website":"https://powmcp.com/apps/caption-file-check/","version":"0.3.2","remotes":[{"type":"streamable-http","url":"https://powmcp.com/caption-file-check/mcp"}],"packages":[],"tools":[{"name":"caption_check","description":"Preflight one caption or subtitle file before delivery. Attach a WebVTT (.vtt), SRT (.srt), or TTML/IMSC (.ttml/.xml) caption file in chat or give a publicly fetchable URL and it downloads the artifact under an SSRF-guarded, 2 MB-capped fetch, detects the format by content and the byte encoding and BOM, then parses it with the real spec engine (the WebVTT spec parser, a dedicated SRT parser, or the imscJS TTML/IMSC profile engine) and returns deterministic evidence: pass/fail, cue count, structural spec and IMSC profile-conformance errors, overlapping / negative / out-of-order / empty cues, per-line length, and per-cue and summary reading speed (CPS) against a named platform profile (netflix-adult-20, netflix-children-17, youtube, ebu-tt). It reports only source-file conformance, timing, encoding, and reading-speed facts against a dated profile. It does not judge translation quality, transcription accuracy, or synchronization against the video. An arbitrary XML or text file that is not a caption track returns an explicit unsupported-format error. Fetching and parsing a full-length track can take up to 60 seconds.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"minLength":1,"maxLength":2048,"pattern":"^https?://","type":"string","description":"A publicly fetchable HTTP(S) URL of a WebVTT, SRT, or TTML/IMSC caption file, detected by content not extension. Provide either this or an attached file, never both. Query strings are allowed but never logged. Pasted caption bodies, data URLs, FTP/SFTP, and URLs needing credentials, headers, or cookies are not supported.\n\nSTRICT RULE: Caption check failed — provide either a caption URL or an attached caption file, not both\nSTRICT RULE: Caption check failed — provide a public caption URL or attach the caption file"},"file":{"type":"object","required":["download_url","file_id"],"properties":{"download_url":{"type":"string","description":"Temporary authorized download URL supplied by ChatGPT; fetch it only while handling this tool call"},"file_id":{"type":"string","description":"ChatGPT file id for the attached file"},"mime_type":{"type":"string","description":"MIME type when ChatGPT knows it"},"file_name":{"type":"string","description":"Original file name when ChatGPT knows it"}},"description":"A caption file attached in chat (WebVTT, SRT, or TTML/IMSC), detected by content not extension. Provide either this or url, never both.","additionalProperties":false},"profile":{"anyOf":[{"const":"netflix-adult-20","type":"string","description":"Named reading-speed profile to judge CPS and line length against. netflix-adult-20 (default, 20 CPS) and netflix-children-17 (17 CPS) are spec-backed; youtube and ebu-tt are advisory ~17 CPS heuristics."},{"const":"netflix-children-17","type":"string","description":"Named reading-speed profile to judge CPS and line length against. netflix-adult-20 (default, 20 CPS) and netflix-children-17 (17 CPS) are spec-backed; youtube and ebu-tt are advisory ~17 CPS heuristics."},{"const":"youtube","type":"string","description":"Named reading-speed profile to judge CPS and line length against. netflix-adult-20 (default, 20 CPS) and netflix-children-17 (17 CPS) are spec-backed; youtube and ebu-tt are advisory ~17 CPS heuristics."},{"const":"ebu-tt","type":"string","description":"Named reading-speed profile to judge CPS and line length against. netflix-adult-20 (default, 20 CPS) and netflix-children-17 (17 CPS) are spec-backed; youtube and ebu-tt are advisory ~17 CPS heuristics."}],"description":"Named reading-speed profile to judge CPS and line length against. netflix-adult-20 (default, 20 CPS) and netflix-children-17 (17 CPS) are spec-backed; youtube and ebu-tt are advisory ~17 CPS heuristics."}},"additionalProperties":false}},{"name":"caption_compare","description":"Compare exactly two caption or subtitle files under identical bounded checks: an original versus its translated track, before versus after a timing fix, or a format migration. Attach two WebVTT, SRT, or TTML/IMSC caption files in chat or give two publicly fetchable URLs and it runs the same SSRF-guarded, 2 MB-capped preflight as caption_check on each, then aligns them by cue index and reports side-by-side pass status, detected-format and encoding differences, the cue-count delta, timing drift and overlap differences, reading-speed (CPS) regressions, structural-error deltas, and a winner only when the measured checks separate the two. Use caption_check for a single file. It reports only source-file conformance, timing, encoding, and reading-speed facts against a dated profile: never translation quality, transcription accuracy, or sync against the video. Fetching and parsing two live files can take up to 60 seconds.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"urls":{"minItems":2,"maxItems":2,"type":"array","items":{"minLength":1,"maxLength":2048,"pattern":"^https?://","type":"string","description":"A publicly fetchable HTTP(S) WebVTT, SRT, or TTML/IMSC caption URL, detected by content."},"description":"Exactly two public caption URLs to compare, in the order they should appear side by side (for example original then translated). Provide either this or files, never both.\n\nSTRICT RULE: Caption compare failed — provide either two caption URLs or two attached caption files, not both\nSTRICT RULE: Caption compare failed — provide two public caption URLs or attach two caption files"},"files":{"minItems":2,"maxItems":2,"type":"array","items":{"type":"object","required":["download_url","file_id"],"properties":{"download_url":{"type":"string","description":"Temporary authorized download URL supplied by ChatGPT; fetch it only while handling this tool call"},"file_id":{"type":"string","description":"ChatGPT file id for the attached file"},"mime_type":{"type":"string","description":"MIME type when ChatGPT knows it"},"file_name":{"type":"string","description":"Original file name when ChatGPT knows it"}},"description":"A caption file attached in chat (WebVTT, SRT, or TTML/IMSC), detected by content.","additionalProperties":false},"description":"Exactly two caption files attached in chat to compare, in the order they should appear side by side (for example original then translated). Provide either this or urls, never both."},"profile":{"anyOf":[{"const":"netflix-adult-20","type":"string","description":"Named reading-speed profile applied to both tracks. netflix-adult-20 (default), netflix-children-17, youtube, ebu-tt."},{"const":"netflix-children-17","type":"string","description":"Named reading-speed profile applied to both tracks. netflix-adult-20 (default), netflix-children-17, youtube, ebu-tt."},{"const":"youtube","type":"string","description":"Named reading-speed profile applied to both tracks. netflix-adult-20 (default), netflix-children-17, youtube, ebu-tt."},{"const":"ebu-tt","type":"string","description":"Named reading-speed profile applied to both tracks. netflix-adult-20 (default), netflix-children-17, youtube, ebu-tt."}],"description":"Named reading-speed profile applied to both tracks. netflix-adult-20 (default), netflix-children-17, youtube, ebu-tt."}},"description":"STRICT RULE: Caption compare failed — the two caption files are the same; provide two distinct caption files.","additionalProperties":false}}],"scan":{"score":69,"grade":"C","scanned_at":"2026-09-19T20:28:40.724Z","report":{"scannerVersion":"0.1.5","scannedAt":"2026-09-19T20:28:40.625Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 468ms"]},"poisoning":{"score":15,"max":15,"notes":["2 tool descriptions checked"]},"auth":{"score":10,"max":15,"notes":["open endpoint, read-only tools"]},"maintenance":{"score":3,"max":15,"notes":["no repository listed"]},"identity":{"score":4,"max":10,"notes":["verified namespace with website, no repo"]}},"findings":[{"id":"maint.no-repo","severity":"low","component":"maintenance","title":"No source repository listed"}],"inputs":{"probes":[{"url":"https://powmcp.com/caption-file-check/mcp","reachable":true,"authRequired":false,"latencyMs":468,"serverInfo":{"name":"caption-file-check","version":"0.3.2"}}],"packages":[],"repo":{"found":false},"icon":{"url":"https://powmcp.com/favicon.ico","source":"registry","width":256,"height":256},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[],"reviews":[]}