Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,551Letters: 14Defects: 1,323counted 2 min ago
teppi

Server definition

Hash
sha256:45e181af57e390c1423df4518f02a0bb35e737bbbb5a6ab54d95e1640ad3e529
What it is
What a remote MCP server returned when asked what it offers: 1 tools

The blob, as servednamed by its sha256

{ "instructions": "Squish gives AI random access to video. squish_video turns a public video URL (video_url) into timestamped contact sheets — image grids where every cell is stamped with its ABSOLUTE timecode. The navigation loop: (1) call with just video_url for a 3x3 overview; (2) read the returned sheet and note the timecodes around what you are looking for; (3) call again with start/end set to those timecodes — a denser grid (4x4-6x6) inside a narrow window resolves finer moments; (4) repeat until the moment is pinned.\n\nTimecodes stay absolute to the source video at every zoom depth. No audio is read — sheets carry visuals only. Anonymous calls ride a small daily free lane; a quota refusal returns a structured error — relay its hint to the user. One video processes at a time on this endpoint. Sheet URLs in `files` expire after ~24h; the `timecodes` field mirrors every stamped label (cells run left→right, top→bottom).", "tools": [ { "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).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "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.", "enum": [ "3x3", "4x4", "5x5", "6x6" ], "type": "string" }, "end": { "anyOf": [ { "type": "number" }, { "type": "string" } ], "description": "Zoom-window end — same formats as start. Omit to run to the end of the clip; values past the end are clamped." }, "start": { "anyOf": [ { "type": "number" }, { "type": "string" } ], "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." }, "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.", "properties": { "download_url": { "type": "string" }, "file_id": { "type": "string" }, "file_name": { "type": "string" }, "mime_type": { "type": "string" } }, "required": [ "download_url", "file_id" ], "type": "object" }, "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" } }, "type": "object" }, "name": "squish_video", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "contract": { "description": "Always \"squish-mcp-http-v0\".", "type": "string" }, "credits_charged": { "description": "Keyed calls only.", "type": "number" }, "credits_remaining": { "description": "Keyed calls only.", "type": "number" }, "duration": { "description": "Source video duration, seconds.", "type": "number" }, "files": { "description": "Sheet URLs, valid ~24h (sheet_ttl_hours).", "items": { "type": "string" }, "type": "array" }, "frames": { "description": "Frames sampled across the clip or window.", "type": "number" }, "free_jobs_remaining_today": { "description": "Anonymous calls only.", "type": "number" }, "input": { "description": "Echo of the source — the URL for URL calls; file_name/file_id for attachments (never the temporary download_url).", "type": "string" }, "job_id": { "type": "string" }, "layout": { "description": "Where each cell sits on each sheet, in sheet pixels — same order as files, index-aligned with timecodes (cells[n] is the frame stamped timecodes[n]). Published because it cannot be derived: gutters, an outer margin and the branding band mean the grid does not fill the image, so dividing width/height by columns and rows is wrong. Crop by these rectangles to show a single frame. IMPORTANT: these describe the full-resolution sheets at files[], NOT the inline image block — that preview is re-encoded down a size ladder to fit the result budget, so it is often smaller. To crop the inline preview instead, scale every rectangle by (its decoded width / layout[0].width).", "items": { "additionalProperties": false, "properties": { "cells": { "items": { "additionalProperties": false, "properties": { "blank": { "description": "True when that frame could not be read and the cell was left black. Present on EVERY cell — a missing field means a server older than this contract, not a healthy sheet. Blankness is NOT detectable from the image: every cell is painted black before drawing, so a night shot or a cut to black is pixel-identical to a failed read.", "type": "boolean" }, "h": { "type": "number" }, "w": { "type": "number" }, "x": { "type": "number" }, "y": { "type": "number" } }, "required": [ "x", "y", "w", "h", "blank" ], "type": "object" }, "type": "array" }, "height": { "type": "number" }, "width": { "type": "number" } }, "required": [ "width", "height", "cells" ], "type": "object" }, "type": "array" }, "sheet_ttl_hours": { "type": "number" }, "sheets": { "description": "Number of contact sheets produced.", "type": "number" }, "timecodes": { "description": "Per-sheet stamped timecodes, cells left→right then top→bottom — mirrors every label burned into the sheets. Absolute to the source video at every zoom depth.", "items": { "items": { "type": "string" }, "type": "array" }, "type": "array" }, "warnings": { "items": { "type": "string" }, "type": "array" }, "window": { "additionalProperties": false, "description": "The resolved zoom window in absolute seconds — present only when start/end were given.", "properties": { "end": { "type": "number" }, "start": { "type": "number" } }, "required": [ "start", "end" ], "type": "object" } }, "required": [ "input", "duration", "frames", "sheets", "files", "sheet_ttl_hours", "warnings", "timecodes", "layout", "job_id", "contract" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:45e181af57e390c1423df4518f02a0bb35e737bbbb5a6ab54d95e1640ad3e529 | sha256sum