{"data":{"name":"com.tryslicemedia/slice","title":"Slice","description":"Turn long podcast episodes, video or audio, into captioned vertical clips and transcripts.","version":"1.0.1","websiteUrl":"https://tryslicemedia.com/agents","repositoryUrl":null,"remotes":[{"url":"https://mcp.tryslicemedia.com/mcp","type":"streamable-http"}],"packages":[],"status":"active","isLatest":true,"publishedAt":"2026-10-17T10:11:20.879Z","updatedAt":"2026-10-17T10:11:20.879Z","source":"official-registry","verification":"official","confidence":100,"stars":null,"sources":[{"stars":null,"title":"Slice","source":"official-registry","sourceId":"com.tryslicemedia/slice","updatedAt":"2026-10-17T10:11:20.879Z","confidence":100,"websiteUrl":"https://tryslicemedia.com/agents","description":"Turn long podcast episodes, video or audio, into captioned vertical clips and transcripts.","verification":"official","repositoryUrl":null}],"toolIndex":{"tools":[{"serverName":"com.tryslicemedia/slice","endpointFingerprint":"b2b22d7369b27ea96148f611745b78cf1f7d22443164113df0e63587cc7c6a16","name":"cut_words","title":"Cut words or pauses from a clip","description":"Use this when the person wants to remove words, every filler, or long pauses from a made clip, the way the Slice editor's clean-up does: the sound and the captions both, with breathing room kept so it never sounds choppy. Pass words as a list of indexes from get_clip_edit, or {\"fillers\": true}, or {\"pauses_over_seconds\": 0.8}. restore: true puts those cuts back. Saves the clip only, no render: the person sees it in Slice at once and can undo. Export once at the end.","inputSchema":{"type":"object","properties":{"clip_id":{"type":"string","description":"The clip's id (from get_episode, get_job or the Slice link)."},"words":{"description":"Word indexes from get_clip_edit, or {\"fillers\": true}, or {\"pauses_over_seconds\": n}.","oneOf":[{"type":"array","items":{"type":"integer"}},{"type":"object","properties":{"fillers":{"type":"boolean"},"pauses_over_seconds":{"type":"number"}}}]},"restore":{"type":"boolean","description":"Put these cuts back instead."}},"required":["clip_id","words"]},"annotations":{"title":"Cut words or pauses from a clip","readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"definitionHash":"f722600da7a98064881be4b0399f7590d5dbefae1526db461ca768c7f47e7fd1","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-10-30T17:46:45.151Z","metadataTrust":"untrusted"},{"serverName":"com.tryslicemedia/slice","endpointFingerprint":"b2b22d7369b27ea96148f611745b78cf1f7d22443164113df0e63587cc7c6a16","name":"edit_captions","title":"Fix a clip's captions","description":"Use this when the person wants to change captions on a made clip, applied in order. Word indexes and seconds come from get_clip_edit. set_text {word, text} fixes a word; split {word} starts a new caption at it; join {word} joins its caption to the one before; line_break {word} breaks the line before it inside the caption; insert {at_seconds, text, duration_seconds?, lane?} adds a caption where none was heard; delete {word} removes the caption that word is in (the sound stays) and restore {word} brings it back; hide / show {from_word, to_word} over a stretch; retime {word, start_seconds?, end_seconds?} moves a caption's edges; shift {word, by_seconds} slides it; set_lane {word, lane: 1 or 2} puts it on the first or second line of captions; place {word, x?, y?} puts that caption at a spot (fractions of the frame, null puts it back in line); move {direction: up or down} moves all captions; words_per_caption {n: 1 to 7}; split_by_speaker puts the second voice on lane 2. Saves the clip only, no render.","inputSchema":{"type":"object","properties":{"clip_id":{"type":"string","description":"The clip's id (from get_episode, get_job or the Slice link)."},"ops":{"type":"array","items":{"type":"object","properties":{"op":{"type":"string","enum":["set_text","split","join","line_break","insert","delete","restore","hide","show","retime","shift","set_lane","place","move","words_per_caption","split_by_speaker"]},"word":{"type":"integer"},"from_word":{"type":"integer"},"to_word":{"type":"integer"},"text":{"type":"string"},"direction":{"type":"string","enum":["up","down"]},"at_seconds":{"type":"number"},"duration_seconds":{"type":"number"},"start_seconds":{"type":"number"},"end_seconds":{"type":"number"},"by_seconds":{"type":"number"},"lane":{"type":"integer","enum":[1,2]},"x":{"type":["number","null"]},"y":{"type":["number","null"]},"n":{"type":"integer"}},"required":["op"]}}},"required":["clip_id","ops"]},"annotations":{"title":"Fix a clip's captions","readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"definitionHash":"51a09f4d7bf1a6a952d75be0b7f99dc7a8fe032e6173472a57e769f9dd6c4b37","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-10-30T17:46:45.151Z","metadataTrust":"untrusted"},{"serverName":"com.tryslicemedia/slice","endpointFingerprint":"b2b22d7369b27ea96148f611745b78cf1f7d22443164113df0e63587cc7c6a16","name":"email_transcript","title":"Email a transcript","description":"Use this only when the user explicitly asks for a finished transcript to be emailed to them. Needs a Slice sign-in, asked for on first use, and sends the .txt, .srt and .vtt files only to the confirmed email address on that Slice account, never to another address. Each transcript can be emailed one time, and only from the conversation or account that made it. Do not use to send a transcript to somebody else; share the results page instead.","inputSchema":{"type":"object","properties":{"transcription_id":{"type":"string","description":"The transcription_id of a finished transcript."}},"required":["transcription_id"]},"annotations":{"title":"Email a transcript","readOnlyHint":false,"destructiveHint":true,"openWorldHint":true},"definitionHash":"8a877c2a5cb586781c36136d73d52cff17c6c75e3c47233598b69937fbeba916","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-10-30T17:46:45.151Z","metadataTrust":"untrusted"},{"serverName":"com.tryslicemedia/slice","endpointFingerprint":"b2b22d7369b27ea96148f611745b78cf1f7d22443164113df0e63587cc7c6a16","name":"find_clips_about","title":"Find clips about a topic","description":"Use this when the user wants clips from an episode on a particular topic or for a particular audience, e.g. \"clips about creativity for artists\" or \"moments for young entrepreneurs\". Searches the episode again for moments that fit the focus, skipping clips already found, and adds what it finds to the episode's clips. It may find fewer than usual, or none, when little in the episode fits; say so plainly. Returns each new clip's number, ref, title and why it fits. Takes about a minute; if it is still searching, call it again with the same focus to wait for the result. Do not use before get_episode reports the episode ready.","inputSchema":{"type":"object","properties":{"episode_id":{"type":"string","description":"The episode to search."},"focus":{"type":"string","maxLength":200,"description":"What to look for, in the user's words: a topic or an audience. Optional when target_seconds is given."},"target_seconds":{"type":"integer","minimum":15,"maximum":180,"description":"Optional. How long each clip should be, in seconds (15 to 180), when the user asks for a length, e.g. \"30 second clips\". Every clip found then plays for at most this long and at most 10% less (at least 3 seconds less), cut at clean sentence or pause boundaries; fewer clips come back if few moments fit. Leave it out for clips of any length (30 to 150 seconds). Works with or without a focus."}},"required":["episode_id"]},"annotations":{"title":"Find clips about a topic","readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"definitionHash":"8134ab7afd785b5ae1c9ef133e3c6f49fd1de44785f71cc460e04d216f4910ab","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-10-30T17:46:45.151Z","metadataTrust":"untrusted"},{"serverName":"com.tryslicemedia/slice","endpointFingerprint":"b2b22d7369b27ea96148f611745b78cf1f7d22443164113df0e63587cc7c6a16","name":"get_clip_edit","title":"Read a clip for editing","description":"Use this when you are about to fix a made clip, first: returns every word with its index, text and times on the clip (seconds), whether it is a filler (\"um\"), whether a long pause follows it, and whether it is already cut; plus the hook title, the caption look, the trim, the frame (shape, layout, crop, moves, split, speaker follow, logo, end frame), a one-line summary (\"14 ums, 3 pauses over 0.6 s\") and any notes the person sent you from Slice. Changes nothing.","inputSchema":{"type":"object","properties":{"clip_id":{"type":"string","description":"The clip's id (from get_episode, get_job or the Slice link)."}},"required":["clip_id"]},"annotations":{"title":"Read a clip for editing","readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"definitionHash":"c4b547ea5f8dab7b455edc21b4501d103eb1b215694ba2e856f1b6c15150b790","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-10-30T17:46:45.151Z","metadataTrust":"untrusted"},{"serverName":"com.tryslicemedia/slice","endpointFingerprint":"b2b22d7369b27ea96148f611745b78cf1f7d22443164113df0e63587cc7c6a16","name":"get_episode","title":"Get an episode","description":"Use this when the user asks how an episode is going, whether it is ready, or what clips were found. Returns one status for the whole pipeline (waiting_for_upload, uploading, transcribing, finding_clips, ready or failed) and, once ready, the found clips with number, ref, title, opening line, length and whether each has been cut and captioned. With no episode_id it lists recent episodes. Read the live answer from here rather than guessing how long things take. Do not use for transcripts made with transcribe_audio.","inputSchema":{"type":"object","properties":{"episode_id":{"type":"string","description":"From start_episode, or from this tool with no id."}}},"annotations":{"title":"Get an episode","readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"definitionHash":"0099c5c8f561dbc7173c52af8a2995e5f9a47cac356bf24398213e2a64cf5241","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-10-30T17:46:45.151Z","metadataTrust":"untrusted"},{"serverName":"com.tryslicemedia/slice","endpointFingerprint":"b2b22d7369b27ea96148f611745b78cf1f7d22443164113df0e63587cc7c6a16","name":"get_job","title":"Get a clip job","description":"Use this when the user wants to know whether a clip is cut or rendered, or wants the finished file. Pass the job_id from make_clips or restyle_clip, or a clip_id for that clip's latest render. Returns the status, progress, a still from the clip and, when finished, a short download link. Pass wait: true to hold on up to about 40 seconds for it to finish. Do not use for transcribe_audio jobs.","inputSchema":{"type":"object","properties":{"job_id":{"type":"string","description":"From make_clips or restyle_clip."},"clip_id":{"type":"string","description":"A cut clip, for its latest render."},"wait":{"type":"boolean","description":"Wait briefly for it to finish instead of reporting now."}}},"annotations":{"title":"Get a clip job","readOnlyHint":true,"destructiveHint":false,"openWorldHint":false},"definitionHash":"2f676916e35ab9b1b2ffee36698dc4e9501bdc57a37059c0ef60db5dc363fd36","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-10-30T17:46:45.151Z","metadataTrust":"untrusted"},{"serverName":"com.tryslicemedia/slice","endpointFingerprint":"b2b22d7369b27ea96148f611745b78cf1f7d22443164113df0e63587cc7c6a16","name":"get_visual_style","title":"Get a visual style","description":"Use this when someone gives a Slice style ref (like \"sref-V4RYN2\"), names a style from tryslicemedia.com/styles, or pastes a prompt that says to call get_visual_style. Returns the style's look and feel: palette, materials, motion and type rules, what it suits, how to use it in a clip, and the STORY FIRST rules. A style is a moodboard, never a template: keep its look and invent your own scenes for the clip. Accepts the code or the style's slug.","inputSchema":{"type":"object","properties":{"code":{"type":"string","description":"The style ref (\"sref-V4RYN2\") or the style's slug (\"torn-newsprint\")."}},"required":["code"]},"annotations":{"title":"Get a visual style","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"f925d8f1cbd438c55403b6fd3ef88737fd8f66629ee511a17206e0f9b9d13b89","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-10-30T17:46:45.151Z","metadataTrust":"untrusted"},{"serverName":"com.tryslicemedia/slice","endpointFingerprint":"b2b22d7369b27ea96148f611745b78cf1f7d22443164113df0e63587cc7c6a16","name":"list_styles","title":"List caption styles","description":"Use this when the user wants to know which caption looks they can choose from. Returns each style's id, name, a one-line description and a link to a preview picture. Pass styles to look up particular ones. Do not use to change a clip (use restyle_clip or make_clips).","inputSchema":{"type":"object","properties":{"styles":{"type":"array","items":{"type":"string"},"description":"Ids or names to look up. Default all."}}},"annotations":{"title":"List caption styles","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"fbc8c6efec7e8586f7ed7db7bf0a4fa19117b046c4557dca148a435b46af73fd","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-10-30T17:46:45.151Z","metadataTrust":"untrusted"},{"serverName":"com.tryslicemedia/slice","endpointFingerprint":"b2b22d7369b27ea96148f611745b78cf1f7d22443164113df0e63587cc7c6a16","name":"make_clips","title":"Make clips","description":"Use this when the user picks found clips to make. Cuts each one from the episode and renders it with captions burned in, in one step. Pass the numbers or refs get_episode listed (refs in brackets are fine), or any stretch of the episode as {\"start_seconds\", \"end_seconds\", \"title\"}. Optional style, caption_size, position, hook_title, fit and background apply to these clips. aspect is the shape: 9:16 (Shorts, Reels, TikTok), 4:5 (feeds), 1:1, 16:9 (YouTube) or source. Ask the person which shape before calling; with no aspect the clips are 9:16. Returns a job per clip; follow with get_job for the files. Do not use before get_episode reports the episode ready, and do not use to change a clip that is already made (use restyle_clip).","inputSchema":{"type":"object","properties":{"episode_id":{"type":"string","description":"The episode the clips were found in."},"clips":{"type":"array","items":{"oneOf":[{"type":["integer","string"]},{"type":"object","properties":{"start_seconds":{"type":"number"},"end_seconds":{"type":"number"},"title":{"type":"string"}},"required":["start_seconds","end_seconds"]}]},"description":"Numbers or refs from get_episode, e.g. [2, 5] or [\"a3f9\"], or stretches {\"start_seconds\": 312, \"end_seconds\": 371, \"title\": \"...\"} on the episode. Up to 10."},"style":{"type":"string","description":"A caption style id or name from list_styles, e.g. bold-punch."},"caption_size":{"type":"string","enum":["smaller","bigger","small","medium","large","extra_large"],"description":"Caption size. \"bigger\" and \"smaller\" are relative to now."},"position":{"type":"string","enum":["up","down","top","middle","lower","bottom"],"description":"Where the captions sit. \"up\" and \"down\" move them from where they are now."},"hook_title":{"type":["boolean","string"],"description":"The title box at the top of the clip, on by default for new clips. false removes it, true puts the clip's title there, or give the words to show."},"fit":{"type":"string","enum":["fill","whole"],"description":"How the picture sits in the frame. \"fill\" (the default) crops it to fill the frame. \"whole\" shows the whole video, nothing cropped, with space around it; use when the user does not want a wide video cropped."},"background":{"type":"string","enum":["black","blur"],"description":"What fills the space around a whole video: \"black\", or \"blur\" for a blurred copy of the video. Only matters with fit \"whole\"."},"aspect":{"type":"string","enum":["9:16","4:5","1:1","16:9","3:4","source"],"description":"The clip's shape. Ask the person first; 9:16 when left out."}},"required":["episode_id","clips"]},"annotations":{"title":"Make clips","readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"definitionHash":"4d8c5142bae0205a16b28aaaf1cb7100fc78a61dbccfedd549a7f36810474b9c","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-10-30T17:46:45.151Z","metadataTrust":"untrusted"},{"serverName":"com.tryslicemedia/slice","endpointFingerprint":"b2b22d7369b27ea96148f611745b78cf1f7d22443164113df0e63587cc7c6a16","name":"read_captions","title":"Read captions on a clip","description":"Use this when the user asks what a clip says, what is on screen at a particular moment, which caption contains a word or a typo, or who said something. It is also the only way to get a caption's id, so read it first whenever a later step needs to name one caption. Narrow with at_seconds, a from/to range, or contains. Do not use for a transcript made with transcribe_audio, or to find clips (use get_episode).","inputSchema":{"type":"object","properties":{"clip_id":{"type":"string","description":"A made clip's clip_id, from get_episode or get_job."},"at_seconds":{"type":"number","description":"Only the caption(s) on screen at this moment, in seconds."},"from_seconds":{"type":"number","description":"Start of a time range, in seconds."},"to_seconds":{"type":"number","description":"End of a time range, in seconds."},"contains":{"type":"string","description":"Only captions containing this text. Case-insensitive."},"limit":{"type":"number","description":"Up to 200. Default 40."},"include_removed":{"type":"boolean","description":"Include captions the editor has removed. They are not in the video. Default false."}},"required":["clip_id"]},"annotations":{"title":"Read captions on a clip","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"21621b65bd04cddd5acbd552d4305ef66f6e5636a87ce7340e617104952241d0","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-10-30T17:46:45.151Z","metadataTrust":"untrusted"},{"serverName":"com.tryslicemedia/slice","endpointFingerprint":"b2b22d7369b27ea96148f611745b78cf1f7d22443164113df0e63587cc7c6a16","name":"restyle_clip","title":"Restyle a clip","description":"Use this when the user wants a made clip changed and rendered again: a different caption style, bigger or smaller captions, captions moved up or down, the hook title turned on, off or reworded, or the whole video shown instead of cropped (fit, background). The change is saved on the clip and a new render starts; follow with get_job. When the user wants the look kept for future clips, pass save_as_default (new clips then start from it). Do not use for clips that have not been made yet (use make_clips). When the person is watching in Slice and you are fixing a clip step by step, prefer the tools that change the saved clip without a render (cut_words, set_hook_title, edit_captions, set_trim, set_caption_style, set_frame) and export once at the end: export true with nothing else makes the video from the clip exactly as it stands.","inputSchema":{"type":"object","properties":{"clip_id":{"type":"string","description":"The clip_id from get_episode or get_job (or the job_id of its render). With episode_id, the clip's number or ref also works."},"episode_id":{"type":"string","description":"Only needed when clip_id is a number or ref from get_episode."},"style":{"type":"string","description":"A caption style id or name from list_styles, e.g. bold-punch."},"caption_size":{"type":"string","enum":["smaller","bigger","small","medium","large","extra_large"],"description":"Caption size. \"bigger\" and \"smaller\" are relative to now."},"position":{"type":"string","enum":["up","down","top","middle","lower","bottom"],"description":"Where the captions sit. \"up\" and \"down\" move them from where they are now."},"hook_title":{"type":["boolean","string"],"description":"The title box at the top of the clip, on by default for new clips. false removes it, true puts the clip's title there, or give the words to show."},"fit":{"type":"string","enum":["fill","whole"],"description":"How the picture sits in the frame. \"fill\" (the default) crops it to fill the frame. \"whole\" shows the whole video, nothing cropped, with space around it; use when the user does not want a wide video cropped."},"background":{"type":"string","enum":["black","blur"],"description":"What fills the space around a whole video: \"black\", or \"blur\" for a blurred copy of the video. Only matters with fit \"whole\"."},"save_as_default":{"type":"boolean","description":"True when the user wants this look kept for future clips (\"use this from now on\", \"save this style\"). Can be sent with no other change to keep the clip's current look."},"export":{"type":"boolean","description":"True with nothing else to change: make the video from the clip as it stands now (after edits with the no-render tools)."}},"required":["clip_id"]},"annotations":{"title":"Restyle a clip","readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"definitionHash":"c839a23f09b50a68e449652bbe84f1cf055b8b26137add20fd1c9aa0d9234734","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-10-30T17:46:45.151Z","metadataTrust":"untrusted"},{"serverName":"com.tryslicemedia/slice","endpointFingerprint":"b2b22d7369b27ea96148f611745b78cf1f7d22443164113df0e63587cc7c6a16","name":"set_caption_style","title":"Change a clip's caption look","description":"Use this when the person wants to change a made clip's captions, anything a person can change by hand, without a render: style (list_styles names), size (smaller, bigger, small, medium, large, extra_large), position (up, down, top, middle, lower, bottom) or an exact height (caption_y, e.g. to keep them clear of a scene's drawing), colour, highlight colour, font, case, outline, shadow, words per line, captions off, and stretches with no captions (hide: where a scene already writes the words on screen, so they are not shown twice); also weight, italic, size_fraction, appearance (how words appear: word by word, karaoke, typewriter...), card (a box behind the words), letter, word and line spacing, effect (glow, gradient, echo, depth, knockout), highlight_block and highlight_size for the highlighted word, blur in and out, arrangement (a stacked layout), colour_by_speaker and reset. scope {from_word, to_word} gives just those captions their own look; words [{word, color, size, weight, font, italic, case, highlight, big}] styles single words. list_styles kinds font, appearance, effect and arrangement list the choices. A clip with scenes from you follows the change. Use restyle_clip only when the person wants a new video made straight away.","inputSchema":{"type":"object","properties":{"clip_id":{"type":"string","description":"The clip's id (from get_episode, get_job or the Slice link)."},"style":{"type":"string"},"caption_size":{"type":"string"},"position":{"type":"string"},"color":{"type":"string","description":"The caption words' colour, \"#rrggbb\"."},"highlight_color":{"type":"string","description":"The highlighted word's colour, \"#rrggbb\"."},"font":{"type":"string","description":"One of Slice's caption fonts: Inter, Montserrat, Poppins, Sora, TeX Gyre Heros, DM Sans, IBM Plex Mono, JetBrains Mono, Courier Prime, Anton, Bebas Neue, Oswald, Nunito, DM Serif Display, Instrument Serif, Cormorant Garamond, Lora, Libre Baskerville, Merriweather, Playfair Display, Space Mono, Pacifico, Courgette, Satisfy, Dancing Script, Kaushan Script, Yellowtail, Grand Hotel, Parisienne, Caveat, Archivo Black, Barlow Condensed, Baloo 2, Anybody, Archivo, Bricolage Grotesque, Epilogue, Figtree, Manrope, Outfit, Plus Jakarta Sans, Space Grotesk, Urbanist, Bitter, Bodoni Moda, EB Garamond, Fraunces, Libre Bodoni, Newsreader, Spectral, Young Serif, Zilla Slab, Alfa Slab One, Big Shoulders Display, Black Ops One, Bungee, Fjalla One, Fugaz One, Lilita One, Passion One, Rubik Mono One, Staatliches, Teko, Titan One, Ultra, Abril Fatface, Bungee Inline, Lobster Two, Lobster, Monoton, Poiret One, Sacramento, Silkscreen, Yeseva One, Amatic SC, Bangers, Caveat Brush, Chewy, Fredoka, Gloria Hallelujah, Indie Flower, Luckiest Guy, Patrick Hand, Rock Salt, Shrikhand, Sriracha, Audiowide, Chakra Petch, Major Mono Display, Michroma, Orbitron, Rajdhani, Share Tech Mono, VT323, Heebo, Rubik, Assistant, Frank Ruhl Libre, Secular One, Suez One."},"case":{"type":"string","enum":["upper","as_said"]},"outline":{"description":"false, true, or { \"width\": 0 to 0.3 (fraction of the font size), \"color\": \"#rrggbb\" }."},"shadow":{"description":"false, true, or { \"color\": \"#rrggbb\", \"blur\": 0 to 0.5, \"offset_y\": 0 to 0.3 }."},"words_per_line":{"description":"At most this many words a caption line, 1 to 7, or \"auto\"."},"captions":{"type":"string","enum":["on","off"],"description":"Captions on or off for the whole clip."},"hide":{"type":"array","items":{"type":"object","properties":{"from_seconds":{"type":"number"},"to_seconds":{"type":"number"}},"required":["from_seconds","to_seconds"]},"description":"Stretches (seconds on the clip) with no captions, e.g. where a scene already writes the words on screen. Replaces the clip's hidden stretches; [] shows captions everywhere again."},"hide_also":{"type":"array","items":{"type":"object","properties":{"from_seconds":{"type":"number"},"to_seconds":{"type":"number"}},"required":["from_seconds","to_seconds"]},"description":"Stretches to add to the hidden ones."},"caption_y":{"type":"number","description":"The caption block's centre: a fraction of the frame's height (0.7) or px of 1920 (1340). Kept inside Instagram's safe area. On a clip with scenes from you it holds on every scene."},"weight":{"type":"integer","description":"100 to 900; snapped to the weights the font has."},"italic":{"type":"boolean"},"size_fraction":{"type":"number","description":"Exact caption size: a fraction of the frame height, 0.015 to 0.15 (0.05 is large)."},"appearance":{"type":"string","description":"How the words appear: phrase, fade, rise, pop (word by word), bounce, karaoke, word (one at a time), typewriter, punch, slide, sweep, around."},"card":{"description":"A box behind the words: false, true, or { \"color\", \"opacity\" 0-1, \"padding\" 0-1.5, \"radius\" 0-1.5 }."},"letter_spacing":{"type":["number","null"],"description":"em, -0.1 to 0.5; null for the style's own."},"word_spacing":{"type":["number","null"],"description":"em, -0.2 to 1; null for the style's own."},"line_height":{"type":["number","null"],"description":"0.7 to 2; null for the style's own."},"effect":{"description":"none, glow, gradient, echo, depth or knockout, or { \"type\", \"color\", \"color2\" }."},"highlight_block":{"description":"A block behind the highlighted word: false, true, or { \"color\", \"opacity\", \"padding\", \"radius\" }."},"highlight_size":{"type":"number","description":"The highlighted word's size, 0.5 to 3 times the others."},"blur":{"description":"Words blur in and out: false, true, or { \"in\", \"out\", \"strength\": \"soft\" | \"full\" }."},"arrangement":{"type":["string","null"],"description":"A stacked layout id (list_styles kind \"arrangement\"), or null to take it off."},"colour_by_speaker":{"description":"true gives each voice its own colour, false takes it off, or { \"<voice>\": \"#rrggbb\" }."},"reset":{"description":"\"look\" (back to the style's own look), \"captions\" (every caption back on the clip's look), \"positions\" (captions placed by hand back in line) or \"all\"."},"scope":{"type":"object","properties":{"from_word":{"type":"integer"},"to_word":{"type":"integer"}},"required":["from_word","to_word"],"description":"Give only the captions holding these words this look (colour, font, case, weight, size, outline, shadow, card, effect, appearance...)."},"words":{"type":"array","items":{"type":"object","properties":{"word":{"type":"integer"},"color":{"type":["string","null"]},"size":{"type":["number","null"]},"weight":{"type":["integer","null"]},"font":{"type":["string","null"]},"italic":{"type":"boolean"},"case":{"type":["string","null"],"enum":["upper","lower","as_said",null]},"highlight":{"type":"boolean"},"big":{"type":"boolean"}},"required":["word"]},"description":"Looks for single words (index from get_clip_edit): colour, size (0.5 to 3 times), weight, font, italic, case, highlight, big (the one big word of a Big word caption)."}},"required":["clip_id"]},"annotations":{"title":"Change a clip's caption look","readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"definitionHash":"bbe23d39a4b771327eeccf41abfd54f0fe0e4df3d6c27a5c6a3a11713b39bf06","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-10-30T17:46:45.151Z","metadataTrust":"untrusted"},{"serverName":"com.tryslicemedia/slice","endpointFingerprint":"b2b22d7369b27ea96148f611745b78cf1f7d22443164113df0e63587cc7c6a16","name":"set_frame","title":"Change a clip's frame and layout","description":"Use this when the person wants to change how a made clip's picture is framed, anything the Slice editor's Frame tab and Layouts do, with no render. aspect: 9:16, 4:5, 1:1, 16:9, 3:4, source (ask the person which shape first). layout: follow-speaker, follow-both, two-people, face-on-top, face-corner, speaker-slides, fill, whole-blur, whole-black (list_styles kind \"layout\" says what each is; split screens are 9:16 only). fit (fill or whole) and background (black or blur); crop {scale 1-5, x, y} moves and zooms the picture; moves [{at_seconds, scale, x, y}] reframe part-way through ([] removes them); split {share, swap, border, corner_size} adjusts a split screen; follow speaker, both or off (Slice finds who is talking, as the editor's Follow the speaker does); logo \"brand\", false or {path, x, y, width, opacity}; end_frame \"brand\", false or {path, kind, duration_seconds}. Saves the clip only: the person sees it in Slice and can undo.","inputSchema":{"type":"object","properties":{"clip_id":{"type":"string","description":"The clip's id (from get_episode, get_job or the Slice link)."},"aspect":{"type":"string","enum":["9:16","4:5","1:1","16:9","3:4","source"]},"layout":{"type":"string","enum":["follow-speaker","follow-both","two-people","face-on-top","face-corner","speaker-slides","fill","whole-blur","whole-black"]},"fit":{"type":"string","enum":["fill","whole"]},"background":{"type":"string","enum":["black","blur"]},"crop":{"type":"object","properties":{"scale":{"type":"number"},"x":{"type":"number"},"y":{"type":"number"}},"description":"scale 1 fills the frame, up to 5; x and y -1 to 1 move the picture (0 is centred)."},"moves":{"type":"array","items":{"type":"object","properties":{"at_seconds":{"type":"number"},"scale":{"type":"number"},"x":{"type":"number"},"y":{"type":"number"}},"required":["at_seconds"]},"description":"Camera moves: from at_seconds on, the picture is framed like this. Replaces the clip's moves."},"split":{"type":"object","properties":{"share":{"type":"number"},"swap":{"type":"boolean"},"border":{"type":"boolean"},"corner_size":{"type":"string","enum":["S","M","L"]}}},"follow":{"type":"string","enum":["speaker","both","off"]},"logo":{"description":"\"brand\" (the account's logo), false (none), or { \"path\" (a file in this account), \"x\", \"y\" (0-1, its centre), \"width\" (0.04-0.6), \"opacity\" (0-1) }."},"end_frame":{"description":"\"brand\" (the account's end card), false (none on this clip), or { \"path\", \"kind\": \"image\" | \"video\", \"duration_seconds\" }."}},"required":["clip_id"]},"annotations":{"title":"Change a clip's frame and layout","readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"definitionHash":"1c65554e85f45bccf5328a974b7011273e1b0962a77ecab372ec74b265bb987c","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-10-30T17:46:45.151Z","metadataTrust":"untrusted"},{"serverName":"com.tryslicemedia/slice","endpointFingerprint":"b2b22d7369b27ea96148f611745b78cf1f7d22443164113df0e63587cc7c6a16","name":"set_hook_title","title":"Set a clip's hook title","description":"Use this when the person wants to reword, turn on or off, or restyle the title card at the top of a made clip. style is a box such as \"white box\", \"black box\" or \"lime word\" (or a title template id). Saves the clip only, no render.","inputSchema":{"type":"object","properties":{"clip_id":{"type":"string","description":"The clip's id (from get_episode, get_job or the Slice link)."},"text":{"type":"string","description":"The words to show (up to 140 characters)."},"on":{"type":"boolean"},"style":{"type":"string"}},"required":["clip_id"]},"annotations":{"title":"Set a clip's hook title","readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"definitionHash":"86d05d580bfb87d12fa4b6a9dc54979a68b13ca632d67ebce53da4fb3ec1e688","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-10-30T17:46:45.151Z","metadataTrust":"untrusted"},{"serverName":"com.tryslicemedia/slice","endpointFingerprint":"b2b22d7369b27ea96148f611745b78cf1f7d22443164113df0e63587cc7c6a16","name":"set_trim","title":"Trim a clip","description":"Use this when the person wants to change where a made clip starts or ends, or to cut out any stretch in the middle, in seconds on the clip (get_clip_edit gives the word times). remove [{start_seconds, end_seconds}] cuts stretches (sound, picture and their captions); restore [...] puts cut stretches back. Edges move to the nearest gap between words. A clip keeps at least 3 seconds. Saves the clip only, no render.","inputSchema":{"type":"object","properties":{"clip_id":{"type":"string","description":"The clip's id (from get_episode, get_job or the Slice link)."},"start_seconds":{"type":"number"},"end_seconds":{"type":"number"},"remove":{"type":"array","items":{"type":"object","properties":{"start_seconds":{"type":"number"},"end_seconds":{"type":"number"}},"required":["start_seconds","end_seconds"]}},"restore":{"type":"array","items":{"type":"object","properties":{"start_seconds":{"type":"number"},"end_seconds":{"type":"number"}},"required":["start_seconds","end_seconds"]}}},"required":["clip_id"]},"annotations":{"title":"Trim a clip","readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"definitionHash":"71e8ef11d6f35f79170992e1e1f8ebe16661258ee8b8d4bef3fb68fb41e1bec9","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-10-30T17:46:45.151Z","metadataTrust":"untrusted"},{"serverName":"com.tryslicemedia/slice","endpointFingerprint":"b2b22d7369b27ea96148f611745b78cf1f7d22443164113df0e63587cc7c6a16","name":"start_episode","title":"Start an episode","description":"Use this when the user wants a podcast, interview, stream or other video turned into short clips. An audio-only episode (MP3, M4A, WAV, OGG or FLAC) works too: its clips come out as captioned vertical videos drawn with an audio template. With a video or audio file attached in the chat, pass it as file: it is copied into Slice, transcribed, and searched for the moments worth posting, with no further steps. With no file, it returns an upload_url for the user to open and drop the file in (up to three hours and 4.5GB). Follow with get_episode. If the user shared a video without saying what they want, ASK FIRST: \"Find the best clips in it, or edit the whole video as one piece?\". For the whole video pass purpose \"whole\": Slice only transcribes it (no clip search, no clips email), then make_clips with one stretch from 0 to its full length makes it one clip (10 minutes at most; a longer video must be split into parts or turned into clips). Do not use when the user only wants the words as text (use transcribe_audio), and do not use for links to YouTube or other web pages; those are not supported.","inputSchema":{"type":"object","properties":{"file":{"type":"object","description":"A video or audio file the user attached in the conversation.","properties":{"download_url":{"type":"string"},"file_id":{"type":"string"},"mime_type":{"type":"string"},"file_name":{"type":"string"}},"required":["download_url","file_id"],"additionalProperties":false},"name":{"type":"string","description":"What to call the episode. Defaults to the file name."},"content_type":{"type":"string","enum":["podcast","stream","other"],"description":"What kind of video it is, which decides how clips are found: podcast (a podcast or interview), stream (a livestream or gaming video) or other (a vlog, challenge, talk or story). Pass it when the user's video is clearly one of these. Otherwise leave it out and Slice will guess."},"target_seconds":{"type":"integer","minimum":15,"maximum":180,"description":"Optional. How long each clip should be, in seconds (15 to 180), when the user asks for a length, e.g. \"30 second clips\". Every clip found then plays for at most this long and at most 10% less (at least 3 seconds less), cut at clean sentence or pause boundaries; fewer clips come back if few moments fit. Leave it out for clips of any length (30 to 150 seconds). Works with or without a focus."},"purpose":{"type":"string","enum":["clips","whole"],"description":"\"clips\" (default): Slice finds the best clips. \"whole\": edit the whole video as one piece, with no clip search; ask the user first when they have not said."}}},"annotations":{"title":"Start an episode","readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"definitionHash":"155dfdbddd49daf14b6aeda4fbcd8ce236dc6f77d77a8cd4f1e95b45d9391e90","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-10-30T17:46:45.151Z","metadataTrust":"untrusted"},{"serverName":"com.tryslicemedia/slice","endpointFingerprint":"b2b22d7369b27ea96148f611745b78cf1f7d22443164113df0e63587cc7c6a16","name":"suggest_visual_styles","title":"Suggest visual styles for a clip","description":"Use this when someone wants visuals, animation or a visual style for a clip, a Short or a script and has not picked a style. Pass the words as text, or a clip_id, job_id or episode_id from Slice to use its transcript. Returns a few ranked styles from the Slice library with a short reason each, plus the whole catalogue so you can choose with your own judgement. Show the person 3 to 5 options with the reasons and let them choose. They can mix styles or use none: there is no need to use a Slice style at all.","inputSchema":{"type":"object","properties":{"text":{"type":"string","description":"A transcript, a script or a description of the clip, up to 20,000 characters."},"clip_id":{"type":"string","description":"Instead of text: a Slice clip's clip_id, to use its words."},"job_id":{"type":"string","description":"Instead of text: the job_id of a clip being made or rendered, to use its words."},"episode_id":{"type":"string","description":"Instead of text: a Slice episode_id, to use the episode's words."},"count":{"type":"integer","description":"How many suggestions, 1 to 12. Default 5."},"aspect":{"type":"string","enum":["9:16","4:5","1:1","16:9"],"description":"The frame shape, if known. Every style works in every shape; this only breaks ties."}}},"annotations":{"title":"Suggest visual styles for a clip","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"0c931f025edd7fe1fff6ede237bbaba9393b30623dcdfcc02a0cc23d574d1f2a","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-10-30T17:46:45.151Z","metadataTrust":"untrusted"},{"serverName":"com.tryslicemedia/slice","endpointFingerprint":"b2b22d7369b27ea96148f611745b78cf1f7d22443164113df0e63587cc7c6a16","name":"templates","title":"Saved templates: save, list, apply, rename, delete","description":"Use this when the person likes a look and wants to keep it, or wants their saved look on clips. The same saved templates as the Slice editor's Saved styles. kind: style (the caption look with logo, framing, stacking and caption rules; \"setup\" also keeps the clip's shape, layout, hook title look and B-roll look), title (a hook title style), audio_brand (the brand template every new audio episode opens in), layout (the starting layout for whole videos), broll_look (a saved Un-Stock look for B-roll) and visual_cut (a storyboard's saved style). save: from_clip (its current look) or settings (style: the set_caption_style fields, e.g. {\"style\":\"bold-punch\",\"color\":\"#ffffff\",\"font\":\"Anton\"}; title: {\"template\",\"colour\",\"mark_colour\",\"font_scale\",\"align\"}; broll_look: Un-Stock {\"preset\"?, \"settings\"}), with a name. list: every template with its id, kind and which is the default. get: one in full. apply: id to clip_id, clip_ids or an episode_id's clips: no render, one undoable change per clip (undo_edit). new_uploads true makes it the default for new uploads; only when the person asks for that. rename: id and name. delete: call once to get a confirm token and a question; ask the person, then call again with confirm.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["save","list","get","apply","rename","delete"]},"kind":{"type":"string","enum":["style","title","audio_brand","layout","broll_look","visual_cut","setup","caption"],"description":"For save and list. Not needed with an id from list."},"id":{"type":"string","description":"A template id as list gives it (e.g. \"style:<uuid>\", \"title:<id>\", \"audio_brand\")."},"name":{"type":"string","description":"Up to 60 characters (save, rename)."},"from_clip":{"type":"string","description":"save: the clip whose current look to keep (a clip id, or a storyboard's clip for visual_cut)."},"from_video":{"type":"string","description":"save kind layout: the whole video whose layout to keep."},"settings":{"type":"object","description":"save without a clip: the look itself (see the description)."},"replace":{"type":"boolean","description":"save: overwrite a template of the same name."},"clip_id":{"type":"string"},"clip_ids":{"type":"array","items":{"type":"string"},"description":"apply: up to 30 clips."},"episode_id":{"type":"string","description":"apply: every clip of this episode."},"new_uploads":{"type":"boolean","description":"apply or save: true makes it the default for new uploads (only when the person asks); false stops that."},"confirm":{"type":"string","description":"delete: the token the first delete call gave, once the person has said yes."}},"required":["action"]},"annotations":{"title":"Saved templates","readOnlyHint":false,"destructiveHint":true,"openWorldHint":false},"definitionHash":"f060db2fac45bff2b1acfb69335351e9b2a11ff49188534b4be76d5d5e13042b","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-10-30T17:46:45.151Z","metadataTrust":"untrusted"},{"serverName":"com.tryslicemedia/slice","endpointFingerprint":"b2b22d7369b27ea96148f611745b78cf1f7d22443164113df0e63587cc7c6a16","name":"transcribe_audio","title":"Transcribe audio or video","description":"Use this when the user wants the words: speech in an audio or video file turned into text, from a podcast, interview, lecture, meeting or voice note. Accepts a file the user attached (file) or a direct https link to a media file such as .mp3, .m4a, .wav or .mp4 (url). Returns the transcript with speaker turns, plus a page with the full text and .txt, .srt and .vtt downloads. Short files finish in this call; longer ones return status \"processing\" and a transcription_id for transcription_status. Up to 1 hour per file. The first transcript needs no account; after that it asks for a Slice sign-in, and a signed-in person gets 2 transcripts a month, shared with the Slice website. Do not use when the user wants short video clips made from a video (start_episode does that), for YouTube, Spotify, Apple Podcasts or other web pages (they are pages, not files), for text already in the conversation, or for live audio.","inputSchema":{"type":"object","properties":{"file":{"type":"object","description":"An audio or video file the user attached in the conversation.","properties":{"download_url":{"type":"string"},"file_id":{"type":"string"},"mime_type":{"type":"string"},"file_name":{"type":"string"}},"required":["download_url","file_id"],"additionalProperties":false},"url":{"type":"string","description":"A direct https link to an audio or video file, e.g. https://example.com/episode.mp3. Not a web page."},"wait":{"type":"boolean","description":"Default true: wait briefly so short files come back finished. False returns at once with a transcription_id."}}},"annotations":{"title":"Transcribe audio or video","readOnlyHint":false,"destructiveHint":false,"openWorldHint":true},"definitionHash":"31b1e6ce7ecdb51c7aa1e1a7251979819369080eec5ee70509d2656545c80666","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-10-30T17:46:45.151Z","metadataTrust":"untrusted"},{"serverName":"com.tryslicemedia/slice","endpointFingerprint":"b2b22d7369b27ea96148f611745b78cf1f7d22443164113df0e63587cc7c6a16","name":"transcription_status","title":"Get a transcription","description":"Use this when transcribe_audio returned status \"processing\", to check whether the transcript is finished and get its text. Pass the transcription_id it returned. Call it again after a short wait while the status is still \"processing\". Only answers in the conversation (or Slice account) that started the transcription. Do not use to start a transcription; use transcribe_audio.","inputSchema":{"type":"object","properties":{"transcription_id":{"type":"string","description":"The transcription_id transcribe_audio returned."}},"required":["transcription_id"]},"annotations":{"title":"Get a transcription","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"31199c83626af69cffb9fc9000406ce2cf1d6cd7425e0e5417cb99421ba41fa1","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-10-30T17:46:45.151Z","metadataTrust":"untrusted"},{"serverName":"com.tryslicemedia/slice","endpointFingerprint":"b2b22d7369b27ea96148f611745b78cf1f7d22443164113df0e63587cc7c6a16","name":"undo_edit","title":"Undo your changes to a clip","description":"Use this when the person wants to take back changes you (the person's AI) made to a clip with the edit tools, newest first, the same as Undo in the Slice editor. A storyboard moment taken off the clip (in the editor or by you) is undone here too: it comes back as it was (edit_id \"moment:<id>\" from list true). With no edit_id or count it undoes the newest change; count undoes the newest n (up to 10); edit_id undoes back to and including that change. list true only lists the recent changes with their ids. Saves the clip only, no render.","inputSchema":{"type":"object","properties":{"clip_id":{"type":"string","description":"The clip's id (from get_episode, get_job or the Slice link)."},"edit_id":{"type":"string"},"count":{"type":"integer","minimum":1,"maximum":10},"list":{"type":"boolean"}},"required":["clip_id"]},"annotations":{"title":"Undo your changes to a clip","readOnlyHint":false,"destructiveHint":false,"openWorldHint":false},"definitionHash":"da2accde53db8167c637eaf50578b3f386e702ab7b6e5259c38f79928dd7cbfc","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-10-30T17:46:45.151Z","metadataTrust":"untrusted"}],"endpoints":[{"endpointFingerprint":"b2b22d7369b27ea96148f611745b78cf1f7d22443164113df0e63587cc7c6a16","protocol":"streamable-http","status":"indexed","toolCount":22,"observedAt":"2026-10-30T17:46:45.151Z"}],"authentication":"unknown"},"connectionConfigurations":{"status":"ready","authentication":"not embedded","clients":{"Claude Desktop":{"mcpServers":{"com.tryslicemedia/slice":{"url":"https://mcp.tryslicemedia.com/mcp"}}},"Cursor":{"mcpServers":{"com.tryslicemedia/slice":{"url":"https://mcp.tryslicemedia.com/mcp"}}},"VS Code":{"servers":{"com.tryslicemedia/slice":{"type":"http","url":"https://mcp.tryslicemedia.com/mcp"}}}}},"resourceType":"mcp-server","callable":true,"runtime":{"callable":true,"protocols":["mcp"]},"interfaces":[{"protocol":"mcp","transport":"streamable-http","url":"https://mcp.tryslicemedia.com/mcp"}],"profile":{"apiVersion":"1","schemaVersion":"1","id":"mcp-server:com.tryslicemedia%2Fslice","resourceType":"mcp-server","canonicalUrl":"https://www.agentsjunction.com/api/v1/servers/com.tryslicemedia%2Fslice","name":"com.tryslicemedia/slice","description":"Turn long podcast episodes, video or audio, into captioned vertical clips and transcripts.","interfaces":[{"protocol":"mcp","transport":"streamable-http","url":"https://mcp.tryslicemedia.com/mcp"}],"capabilities":[],"identity":{"source":"official-registry","websiteUrl":"https://tryslicemedia.com/agents","repositoryUrl":null,"version":"1.0.1"},"verification":{"state":"official","confidence":100},"operations":{"resourceType":"mcp-server","name":"com.tryslicemedia/slice","status":"online","lastCheckedAt":"2026-11-03T17:18:12.361Z","lastSuccessfulCheck":"2026-11-03T17:18:12.361Z","latencyMs":651,"consecutiveFailures":0,"isStale":false,"checks":{"endpointReachable":true,"protocolValid":true,"agentCardValid":null,"mcpHandshakeValid":true},"lastSeen":null,"lastSuccessfulInteraction":null,"lastHealthCheck":"2026-11-03T17:18:12.361Z","source":{"type":"health-check","url":null},"observedAt":"2026-11-03T17:18:12.361Z"},"security":null,"timestamps":{"createdAt":"2026-10-17T10:11:20.879Z","updatedAt":"2026-10-17T10:11:20.879Z","observedAt":"2026-11-03T17:18:12.361Z"},"compatibility":{"serverVersion":"1.0.1","protocolVersions":[{"protocol":"mcp","version":null}]}}}}