{"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":"A","score":92,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":23,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-09-22T18:59:15.000Z","license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-05T15:55:41.331Z","last_ok_at":"2026-11-05T15:55:41.331Z","latency_ms":103},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/powmcp/mcp-server-guide","website":"https://powmcp.com/apps/caption-file-check/","version":"0.3.3","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. WebVTT limitation: the parser drops payload-less cues; cue counts, indices, timing checks and comparisons cover retained cues only, not those omitted cues.","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. WebVTT limitation: the parser drops payload-less cues; cue counts, indices, timing checks and comparisons cover retained cues only, not those omitted cues.","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":92,"grade":"A","scanned_at":"2026-10-14T22:09:38.175Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-14T22:09:38.186Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 873ms"]},"poisoning":{"score":15,"max":15,"notes":["2 tool descriptions checked"]},"auth":{"score":10,"max":15,"notes":["open endpoint, read-only tools"]},"maintenance":{"score":15,"max":15,"notes":["last push 22 days ago"]},"identity":{"score":9,"max":10,"notes":["registry namespace matches repository owner","website matches verified namespace"]}},"findings":[],"inputs":{"probes":[{"url":"https://powmcp.com/caption-file-check/mcp","reachable":true,"authRequired":false,"latencyMs":873,"serverInfo":{"name":"caption-file-check","version":"0.3.2"}}],"packages":[],"repo":{"found":true,"owner":"powmcp","repo":"mcp-server-guide","archived":false,"pushedAt":"2026-09-22T18:59:15Z","stars":0,"forks":0,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/327670076?v=4","ownerCreatedAt":"2026-09-10T20:32:24Z","license":"MIT"},"icon":{"url":"https://powmcp.com/favicon.ico","source":"registry","width":256,"height":256},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-09-22T18:59:15.000Z","score":23}}}},"grade_history":[{"kind":"restore","fromGrade":"C","toGrade":"A","reason":"score 92","createdAt":"2026-10-14T22:09:38.979Z"}],"reviews":[]}