{"name":"io.github.dunfred/videoctx","slug":"dunfred-videoctx","title":"videoctx","description":"Read videos like images: index once locally, query the text layer, fetch frames on demand.","url":"https://mcp.market/server/dunfred-videoctx","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":32,"stars":1,"forks":0,"downloads_week":819,"last_push_at":"2026-10-22T11:34:21.000Z","license":"Apache-2.0"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/dunfred/videoctx","website":null,"version":"0.1.5","remotes":[],"packages":[{"registryType":"pypi","identifier":"videoctx","version":"0.1.5","runtimeHint":"uvx","transport":{"type":"stdio"},"packageArguments":[{"value":"mcp","type":"positional"}]}],"tools":[{"name":"find_moments","description":"Semantic visual search: find the moments that best match a natural language description (e.g. 'a red car at night'), using local CLIP embeddings. Returns the top matches as timestamped thumbnails: use the timestamps to zoom in with get_frames. Requires embeddings built once with `videoctx embed <index>`; cheaper and more targeted than survey_video when you know what you are looking for.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_frames","description":"Frames evenly spaced across [start_s, end_s]. Frames are expensive: use the narrowest range the question allows, and raise max_frames (up to 8) only when a sparse sample missed the moment. Set detail='high' (2x resolution, ~4x token cost) when small text, colors, patterns, or fine object details matter.","write_action":false,"price_micros":0,"input_schema":null},{"name":"index_video","description":"Index a video file for querying (shots, keyframes, speech transcript). Runs locally; takes roughly 10-20% of the video's duration. Idempotent - returns immediately if the video is already indexed. The other tools auto-index too, so calling this first is only needed to control when the wait happens.","write_action":false,"price_micros":0,"input_schema":null},{"name":"survey_video","description":"One small thumbnail per shot across the whole video (subsampled to at most 24), each labeled with its timestamp. Cheap visual sweep for locating the relevant moment before zooming in with get_frames.","write_action":false,"price_micros":0,"input_schema":null},{"name":"transcript_search","description":"Case-insensitive search over the transcript. Returns matching segments with surrounding context and timestamps: use the timestamps to target get_frames.","write_action":false,"price_micros":0,"input_schema":null},{"name":"video_overview","description":"The cheap text layer of a video: shot list with timestamps and visual captions (when present), interleaved with the speech transcript. Read this before fetching any frames: it answers most questions by itself.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-10-25T09:24:08.290Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-25T09:24:08.257Z","components":{"code":{"score":25,"max":25,"notes":["87 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 3 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"videoctx","version":"0.1.5","found":true,"weeklyDownloads":819,"license":"Apache-2.0","dependencyCount":13,"publishedAt":"2026-10-22T11:35:08.637534Z"}],"repo":{"found":true,"owner":"dunfred","repo":"videoctx","archived":false,"pushedAt":"2026-10-22T11:34:21Z","stars":1,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/43072903?v=4","ownerCreatedAt":"2018-09-07T16:00:35Z","license":"Apache-2.0"},"icon":{"url":"https://avatars.githubusercontent.com/u/43072903?v=4&s=128","source":"github"},"presence":{"stars":1,"forks":0,"downloadsWeek":819,"license":"Apache-2.0","lastPushAt":"2026-10-22T11:34:21.000Z","score":32}}}},"grade_history":[],"reviews":[]}