Server definition
- Hash
- sha256:bb7e6d37061aa1605b49aa56ac1c6982133b244c591f37390a2159e44ee1228e
- What it is
- What a remote MCP server returned when asked what it offers: 5 tools
The blob, as servednamed by its sha256
{
"instructions": "Keptbits turns long videos into short vertical clips with captions burned in.\n\nHow it is priced, which is the thing most often got wrong: one token is one clip. It is NOT minutes of footage, not video length, and not a per-minute rate. A three-hour episode and a ten-minute one cost the same for the same number of clips. The user chooses how many clips a run makes and pays one token for each. Never tell the user their balance is in minutes or that it depends on how long their video is.\n\nRe-exporting a clip they already have, in a different caption style or aspect ratio, is free and costs no token.\n\nCall get_account for the real balance rather than estimating one. Ask how many clips they want before calling create_clips, since it spends tokens. A run takes several minutes; return the job id and poll check_job rather than waiting.\n\nIf a tool comes back with an unknown-tool error, re-list the tools instead of guessing a name — the tool set has changed before.",
"tools": [
{
"description": "Progress of a clip run, and the finished clips once it is done.",
"inputSchema": {
"properties": {
"job_id": {
"type": "string"
}
},
"required": [
"job_id"
],
"type": "object"
},
"name": "check_job",
"outputSchema": {
"properties": {
"clips": {
"description": "Empty until the run is done",
"items": {
"properties": {
"end_s": {
"type": "number"
},
"id": {
"type": "string"
},
"score": {
"type": "number"
},
"start_s": {
"description": "Where the clip starts in the source",
"type": "number"
},
"title": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"created_at": {
"type": "string"
},
"error": {
"description": "Why it stopped, when it did",
"type": [
"string",
"null"
]
},
"finished_at": {
"type": [
"string",
"null"
]
},
"id": {
"type": "string"
},
"message": {
"description": "What the run is doing, in words",
"type": "string"
},
"open": {
"type": "string"
},
"progress": {
"description": "0 to 1",
"type": "number"
},
"stage": {
"description": "source, transcript, scoring or render",
"type": "string"
},
"status": {
"description": "queued, running, done, error or cancelled",
"type": "string"
}
},
"required": [
"id",
"status",
"clips"
],
"type": "object"
}
},
{
"description": "Start finding and rendering short vertical clips from a video. Give either source_id (from list_sources) or youtube_url. This costs one token per clip, so ask the user how many they want if they have not said, and set clip_count to that number. It returns a job_id immediately — rendering takes several minutes — then poll check_job.",
"inputSchema": {
"properties": {
"aspect": {
"description": "Default 9:16",
"enum": [
"9:16",
"1:1",
"16:9"
],
"type": "string"
},
"caption_style": {
"description": "Caption preset name. Default bold",
"type": "string"
},
"clip_count": {
"description": "How many clips to make, 1 to 100. One token each, and the user chooses freely — if the balance will not cover the number you first tried, call this again with a smaller one rather than reporting that the run cannot be made. Default 5",
"type": "number"
},
"source_id": {
"description": "A source already on the account",
"type": "string"
},
"target_length": {
"description": "Seconds per clip, 15 to 180. Default 30",
"type": "number"
},
"window_end": {
"description": "Read until this second. 0 means the end",
"type": "number"
},
"window_start": {
"description": "Read from this second of the source",
"type": "number"
},
"youtube_url": {
"description": "Link to a single YouTube video",
"type": "string"
}
},
"type": "object"
},
"name": "create_clips",
"outputSchema": {
"properties": {
"job_id": {
"description": "Pass this to check_job",
"type": "string"
},
"note": {
"type": "string"
},
"open": {
"description": "Where the user can watch this run in their browser",
"type": "string"
},
"status": {
"description": "queued when the run has just been accepted",
"type": "string"
}
},
"required": [
"job_id",
"status"
],
"type": "object"
}
},
{
"description": "The signed-in Keptbits account: its plan and what that plan allows. Check this before starting a run, so the run asks for something the account can actually have.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "get_account",
"outputSchema": {
"properties": {
"caption_styles": {
"description": "Caption styles allowed. null means all of them",
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
},
"clips_per_run": {
"description": "Most clips one run may ask for. null means no limit",
"type": [
"number",
"null"
]
},
"editor": {
"type": "boolean"
},
"effects": {
"description": "Whether silences, transitions and colour grading may be used",
"type": "boolean"
},
"max_clip_seconds": {
"description": "Longest a clip may be. null means any length",
"type": [
"number",
"null"
]
},
"note": {
"type": "string"
},
"plan": {
"description": "free or pro",
"type": "string"
},
"watermark": {
"description": "Whether clips come out watermarked",
"type": "boolean"
}
},
"required": [
"plan",
"clips_per_run",
"max_clip_seconds"
],
"type": "object"
}
},
{
"description": "Clips made on this account recently, newest first.",
"inputSchema": {
"properties": {
"limit": {
"description": "1 to 25, default 10",
"type": "number"
}
},
"type": "object"
},
"name": "list_clips",
"outputSchema": {
"items": {
"properties": {
"created_at": {
"type": "string"
},
"end_s": {
"type": "number"
},
"id": {
"type": "string"
},
"open": {
"description": "Where the user can watch and download it",
"type": "string"
},
"reason": {
"description": "Why this moment was picked",
"type": "string"
},
"score": {
"description": "How strongly it scored, 0 to 1",
"type": "number"
},
"start_s": {
"type": "number"
},
"tag": {
"type": "string"
},
"title": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
}
},
{
"description": "Videos already uploaded or linked on this account, newest first. Use it to find the source_id for making clips.",
"inputSchema": {
"properties": {
"limit": {
"description": "1 to 25, default 10",
"type": "number"
}
},
"type": "object"
},
"name": "list_sources",
"outputSchema": {
"items": {
"properties": {
"created_at": {
"type": "string"
},
"duration": {
"description": "Length in seconds",
"type": "number"
},
"id": {
"description": "Pass this as source_id to create_clips",
"type": "string"
},
"kind": {
"description": "upload or link",
"type": "string"
},
"label": {
"description": "The video's title",
"type": "string"
},
"status": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:bb7e6d37061aa1605b49aa56ac1c6982133b244c591f37390a2159e44ee1228e | sha256sum