{"name":"io.github.getsquish/squish","slug":"getsquish-squish","title":"Squish","description":"Give AI random access to video: timestamped contact sheets + zoom into any start/end range.","url":"https://mcp.market/server/getsquish-squish","rating":null,"grade":"A","score":86,"certified":false,"status":"active","category":"productivity","tags":["productivity","media"],"presence":{"score":30,"stars":2,"forks":0,"downloads_week":36,"last_push_at":"2026-08-24T17:32:26.000Z","license":"Apache-2.0"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T06:00:23.736Z","last_ok_at":"2026-11-04T06:00:23.736Z","latency_ms":808},"claimed":false,"transport":"mixed","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/getsquish/squish","website":"https://getsquish.app","version":"0.3.1","remotes":[{"type":"streamable-http","url":"https://api.getsquish.app/mcp"}],"packages":[{"registryType":"npm","identifier":"@getsquish/squish","version":"0.3.1","runtimeHint":"npx","transport":{"type":"stdio"},"packageArguments":[{"description":"Run the MCP server (the bare command is the CLI)","value":"mcp","type":"positional"}]}],"tools":[{"name":"squish_video","description":"Turn a video at a public URL into timestamped contact-sheet JPEG(s) that a vision model can read: frames sampled evenly across the clip, laid out as a grid, each cell stamped with its timecode. Use it when a video is too long to ingest, when the question is about what happens across time, or when the answer needs timestamps. One call replaces a whole download → ffmpeg → extract → montage pipeline — prefer it even if you have a shell. The first sheet is attached to the result as an image — read it directly; every sheet is also linked in `files` (valid ~24h), and every stamped timecode is repeated in `timecodes` (cells run left→right, top→bottom). Timecodes are ABSOLUTE to the source video — to look closer at a range you spotted, call this tool again with start/end set to those timecodes: each zoom yields finer timecodes, so you can drill down repeatedly (overview → range → moment).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"video_url":{"description":"Public http(s) URL of a video file (anything ffmpeg decodes). Not a YouTube/streaming page — a direct file URL. Provide either this or an attached video, not both.","type":"string"},"video":{"description":"A video attached in the chat — clients with file-param support fill this automatically with a temporary download reference. Provide either this or video_url.","type":"object","properties":{"download_url":{"type":"string"},"file_id":{"type":"string"},"mime_type":{"type":"string"},"file_name":{"type":"string"}},"required":["download_url","file_id"]},"density":{"description":"Grid density. 3x3 recovers what happened; denser grids (4x4-6x6) recover how it was done. Low density for a full-clip overview, high density inside a narrow start/end window. Default 3x3.","type":"string","enum":["3x3","4x4","5x5","6x6"]},"start":{"description":"Zoom-window start — seconds (67.5) or a timecode as stamped on a sheet (\"1:07\", \"1:07.3\"). Absolute in the source video. Omit to start at 0.","anyOf":[{"type":"number"},{"type":"string"}]},"end":{"description":"Zoom-window end — same formats as start. Omit to run to the end of the clip; values past the end are clamped.","anyOf":[{"type":"number"},{"type":"string"}]}},"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":86,"grade":"A","scanned_at":"2026-09-25T17:27:04.392Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-25T17:27:04.338Z","components":{"code":{"score":25,"max":25,"notes":["4 source files scanned"]},"reliability":{"score":17,"max":20,"notes":["remote reachable in 2376ms"]},"poisoning":{"score":15,"max":15,"notes":["1 tool descriptions checked"]},"auth":{"score":10,"max":15,"notes":["open endpoint, read-only tools"]},"maintenance":{"score":12,"max":15,"notes":["last push 32 days ago"]},"identity":{"score":7,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[],"inputs":{"probes":[{"url":"https://api.getsquish.app/mcp","reachable":true,"authRequired":false,"latencyMs":2376,"serverInfo":{"name":"squish","version":"0.2.3"}}],"packages":[{"registryType":"npm","identifier":"@getsquish/squish","version":"0.3.1","found":true,"license":"Apache-2.0","hasInstallScripts":false,"dependencyCount":3,"publishedAt":"2026-07-18T01:29:22.689Z","repositoryUrl":"git+https://github.com/getsquish/squish.git","weeklyDownloads":36}],"repo":{"found":true,"owner":"getsquish","repo":"squish","archived":false,"pushedAt":"2026-08-24T17:32:26Z","stars":2,"forks":0,"openIssues":1,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/300972129?v=4","ownerCreatedAt":"2026-07-07T15:49:32Z","license":"Apache-2.0"},"icon":{"url":"https://avatars.githubusercontent.com/u/300972129?v=4&s=128","source":"github"},"presence":{"stars":2,"forks":0,"downloadsWeek":36,"license":"Apache-2.0","lastPushAt":"2026-08-24T17:32:26.000Z","score":30}}}},"grade_history":[],"reviews":[]}