Samplecut
Server Details
Cut audio from YouTube, TikTok or Instagram links to MP3/WAV, and fetch video transcripts.
- Status
- Healthy
- Uptime
- 99.9% over 42 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 4 tools
cut_audio and retrim_clip both produce a cut clip and could be confused at first glance, but retrim_clip's description explicitly scopes it to the interactive card and redirects new cuts to cut_audio. get_transcript and send_feedback are clearly distinct from the cutting tools and from each other.
All four names follow a consistent snake_case verb_noun pattern (cut_audio, get_transcript, retrim_clip, send_feedback) with unambiguous verb choices. No mixed conventions or vague verbs.
Four tools is well-scoped for a focused audio-clipping service; each covers a distinct step (clip retrieval, captions, card re-trim, feedback) with no filler. Nothing suggests a missing or redundant tool at this scale.
The surface covers the core lifecycle: get captions to pick a range, cut audio, re-trim an existing clip, and report on the experience. Minor gaps exist (no way to look up prior clips once links expire or to list supported platforms/formats), but these are recoverable by re-calling cut_audio.
Available Tools
4 toolscut_audioCut audioAInspect
Cut audio from a YouTube, TikTok, Instagram, SoundCloud, or X URL and return a short-lived download link. Lead with download_url for cut/download requests; offer editor_url when the user wants to tweak the selection. Links expire after about an hour — ask again in chat for a fresh cut if expired. Omit start_sec and end_sec for the full track. format defaults to mp3 (wav allowed). clip_id and peaks drive the interactive clip card some chat apps show; do not show them to the user. If the user adjusted the clip in the card, read the widget context for the current range and download link before answering follow-ups.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | YouTube, TikTok, Instagram, SoundCloud, or X URL to cut | |
| format | No | Download format; default mp3 | |
| context | Yes | One short sentence on what the user is trying to do with this audio (for example 'ringtone from the chorus'). No links, names or personal details. | |
| end_sec | No | Range end in seconds | |
| llm_model | Yes | The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess. | |
| start_sec | No | Range start in seconds | |
| duration_sec | No | Clip length in seconds from start_sec (default 0) when end_sec is omitted | |
| conversation_id | No | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request. |
Output Schema
| Name | Required | Description |
|---|---|---|
| full | Yes | |
| peaks | Yes | |
| title | Yes | |
| format | Yes | |
| clip_id | Yes | |
| end_sec | No | |
| filename | Yes | |
| start_sec | No | |
| editor_url | Yes | |
| expires_at | Yes | |
| download_url | Yes | |
| track_duration_sec | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false and openWorldHint=true, so the description carries real weight and delivers: links expire after ~1 hour, expired cuts must be reissued, and clip_id/peaks are internal fields that must not be shown to the user. It also instructs reading widget context after in-card edits, which is behavior an agent could not infer elsewhere.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and source list are front-loaded, and each subsequent sentence carries a distinct operational rule (routing, expiry, defaults, hidden fields, widget context). It is dense but slightly long, and the widget-context sentence sits at the end where it is easiest to skim past.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter, 3-required tool with an output schema, the description covers everything an agent needs: what it produces, how long it lasts, what to do on expiry, which fields to surface, and how to handle post-edit widget state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds semantics the schema does not: omitting start_sec/end_sec yields the full track, format defaults to mp3 with wav allowed, and clip_id/peaks are display-suppressed. It does not clarify the start_sec vs duration_sec vs end_sec interaction, which the schema hints at only briefly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Cut audio') and enumerates the supported sources (YouTube, TikTok, Instagram, SoundCloud, X), plus the artifact returned (a short-lived download link). An agent can distinguish this from get_transcript or send_feedback purely from the description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete routing rules: lead with download_url for cut/download requests, offer editor_url for tweaking, omit start_sec/end_sec for the full track, and ask again for a fresh cut if the link expired. It does not mention the sibling retrim_clip as the path for re-cutting an existing clip, which is a missed alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transcriptGet transcriptARead-onlyInspect
Fetch timestamped captions for a YouTube, TikTok, Instagram, SoundCloud, or X URL when the platform provides them. Use segment start_sec/end_sec (or the flat text) to choose a cut range, then call cut_audio with the same URL and those times. When available is false there are no captions — do not invent lyrics or timestamps; tell the user to pick times another way. Optional lang is a BCP-47 code (default en). No job_id is returned.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | YouTube, TikTok, Instagram, SoundCloud, or X URL to fetch captions for | |
| lang | No | Optional BCP-47 caption language (default en) | |
| context | Yes | One short sentence on what the user is trying to do with this audio (for example 'ringtone from the chorus'). No links, names or personal details. | |
| llm_model | Yes | The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess. | |
| conversation_id | No | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request. |
Output Schema
| Name | Required | Description |
|---|---|---|
| lang | Yes | |
| text | Yes | |
| source | Yes | |
| segments | Yes | |
| available | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, so safety is covered. The description adds genuinely useful behavior beyond that: captions only exist 'when the platform provides them', the available=false fallback, and the notable fact that no job_id is returned (unlike async job tools). It does not discuss rate limits or per-platform quirks, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with purpose then workflow then failure mode. The only redundancy is repeating lang's BCP-47 default from the schema; otherwise every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, yet the description still explains the available flag and the segment timing fields that drive the next call. Combined with the stated no-job_id fact and the follow-up tool, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all five parameters are already documented, including lang's BCP-47 default and the context/llm_model/conversation_id instructions. The description mostly restates the lang default and otherwise adds no parameter-level meaning, which is the expected baseline when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Fetch timestamped captions') and enumerates the exact supported platforms. The tool is clearly a caption-retrieval step that precedes cut_audio, so an agent can distinguish it from siblings without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly prescribes the workflow: use segment start_sec/end_sec to pick a range, then call cut_audio with the same URL and those times. It also covers the negative case (available=false: tell the user to pick times another way, don't invent lyrics or timestamps), leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrim_clipAdjust clipAInspect
Re-cut a clip from Samplecut's clip card to a new start/end, reusing the audio already extracted for it. Called by the interactive card; to cut something new, use cut_audio.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Download format; default the clip's current format | |
| clip_id | Yes | clip_id from a cut_audio result | |
| context | No | Optional: why the clip is being re-cut | |
| end_sec | Yes | New range end in seconds | |
| llm_model | No | Optional: the model making this call | |
| start_sec | Yes | New range start in seconds | |
| conversation_id | No | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request. |
Output Schema
| Name | Required | Description |
|---|---|---|
| full | Yes | |
| peaks | Yes | |
| title | Yes | |
| format | Yes | |
| clip_id | Yes | |
| end_sec | No | |
| filename | Yes | |
| start_sec | No | |
| editor_url | Yes | |
| expires_at | Yes | |
| download_url | Yes | |
| track_duration_sec | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds real context beyond that: the audio is reused rather than re-extracted, and the tool is invoked from the interactive card. It stops short of saying whether the prior clip is overwritten or whether clip_id remains valid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the operation and its reuse-of-audio behavior front-loaded before the routing hint to cut_audio.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description covers purpose, alternative routing, and invocation source. It leaves minor gaps about the fate of the original clip and whether the re-cut replaces or versions it, which matters for a non-read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented, including the conversation_id protocol and format default. The description's 'new start/end' merely restates start_sec/end_sec and adds no syntax or constraint detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (re-cut), resource (clip), and the resulting scope (new start/end), and explicitly distinguishes itself from the sibling cut_audio. An agent can tell it apart from cut_audio and get_transcript without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative explicitly ('to cut something new, use cut_audio') and gives the invocation context ('Called by the interactive card'), so the when-to-use and when-to-use-something-else conditions are both covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_feedbackARead-onlyIdempotentInspect
Tell Samplecut's developers how the user's task went. Call it once after you finish or give up on a task where you used these tools, with task_completed set to whether the user got what they wanted. Use feedback_type "missing_capability" when the goal needed something these tools do not do (for example naming a song or separating vocals), even if you finished it another way; "issue" when a tool failed, or its result was wrong or confusing; "praise" when it went well. This only records feedback. No links, names or personal details.
| Name | Required | Description | Default |
|---|---|---|---|
| details | No | Optional longer context: what you tried, exact parameter values, the error text you saw, and any workaround you used. Omit when the summary says it all. | |
| summary | Yes | One self-contained sentence. For 'missing_capability': the capability you needed, e.g. 'No tool to delete multiple cohorts in one call.' For 'issue': the tool and the problem, e.g. 'query-trends rejects relative date ranges with an unclear error.' | |
| llm_model | Yes | The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess. | |
| sentiment | No | Optional: how the experience felt overall. | |
| tool_name | No | Optional: the existing tool this feedback is about (for 'issue' or 'praise'). Leave empty for 'missing_capability' - the point is that no tool fits. | |
| feedback_type | Yes | What kind of feedback this is. Use 'missing_capability' when the tool you needed does not exist in the tool list - nothing failed, the capability is absent (this is the most valuable report; send it even if you found a workaround). Use 'issue' when an existing tool behaved badly: it failed, returned a confusing error, or its description or schema misled you. Use 'praise' when something worked notably well. Use 'other' for anything else. | |
| task_completed | No | Optional: whether you still completed the user's task despite the problem. | |
| conversation_id | No | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request. | |
| friction_points | No | Optional: the specific moments that slowed you down, as short bullet-like sentences, quoting exact tool names, parameters, or error text. | |
| suggested_improvement | No | Optional: the concrete change that would have helped, e.g. the tool to add, the description to reword, or the error message to improve. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior, so the bar is lower. The description adds useful constraints beyond annotations: it only records feedback, should be called once, and must avoid links, names, and personal details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and compact: purpose, call timing, feedback-type guidance, and privacy constraint each appear in a clear sentence. No sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 10 parameters, rich schema descriptions, strong annotations, and no output schema, the description supplies what an agent needs: when to call, how to choose feedback_type, and what not to include. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description still adds value by giving examples for missing_capability and clarifying task_completed as whether the user got what they wanted, plus a privacy constraint that affects summary/details content.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: telling Samplecut's developers how the user's task went. It also frames this as feedback tied to tasks where these tools were used, which clearly distinguishes it from the audio-operation siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit timing ('once after you finish or give up on a task') and concrete routing rules for feedback_type, including when to use missing_capability even if a workaround was found. The alternatives are well defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
cut_audio1 field changed- changed
Input schema / properties / url / descriptionPrevious value: -"YouTube, TikTok, Instagram, or SoundCloud URL to cut"New value: +"YouTube, TikTok, Instagram, SoundCloud, or X URL to cut"
- Changed
get_transcript1 field changed- changed
Input schema / properties / url / descriptionPrevious value: -"YouTube, TikTok, Instagram, or SoundCloud URL to fetch captions for"New value: +"YouTube, TikTok, Instagram, SoundCloud, or X URL to fetch captions for"
1 tool update
- Added
send_feedback
2 tool updates
- Changed
cut_audio1 field changed- changed
Input schema / properties / url / descriptionPrevious value: -"YouTube, TikTok, or Instagram URL to cut"New value: +"YouTube, TikTok, Instagram, or SoundCloud URL to cut"
- Changed
get_transcript1 field changed- changed
Input schema / properties / url / descriptionPrevious value: -"YouTube, TikTok, or Instagram URL to fetch captions for"New value: +"YouTube, TikTok, Instagram, or SoundCloud URL to fetch captions for"
3 tool updates
- Changed
cut_audio4 fields changed- added
Input schema / properties / contextAdded value: +{ + "description": "One short sentence on what the user is trying to do with this audio (for example 'ringtone from the chorus'). No links, names or personal details.", + "type": "string" +} - added
Input schema / properties / conversation_idAdded value: +{ + "description": "Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.", + "type": "string" +} - added
Input schema / properties / llm_modelAdded value: +{ + "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "url" -]New value: +[ + "url", + "context", + "llm_model" +]
- Changed
get_transcript4 fields changed- added
Input schema / properties / contextAdded value: +{ + "description": "One short sentence on what the user is trying to do with this audio (for example 'ringtone from the chorus'). No links, names or personal details.", + "type": "string" +} - added
Input schema / properties / conversation_idAdded value: +{ + "description": "Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.", + "type": "string" +} - added
Input schema / properties / llm_modelAdded value: +{ + "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "url" -]New value: +[ + "url", + "context", + "llm_model" +]
- Changed
retrim_clip3 fields changed- added
Input schema / properties / contextAdded value: +{ + "description": "Optional: why the clip is being re-cut", + "type": "string" +} - added
Input schema / properties / conversation_idAdded value: +{ + "description": "Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.", + "type": "string" +} - added
Input schema / properties / llm_modelAdded value: +{ + "description": "Optional: the model making this call", + "type": "string" +}
2 tool updates
- Changed
cut_audio5 fields changed- added
Output schema / properties / clip_idAdded value: +{ + "type": "string" +} - added
Output schema / properties / filenameAdded value: +{ + "type": "string" +} - added
Output schema / properties / peaksAdded value: +{ + "items": { + "type": "number" + }, + "type": "array" +} - added
Output schema / properties / track_duration_secAdded value: +{ + "type": "number" +} - changed
Output schema / requiredPrevious value: -[ - "title", - "format", - "full", - "download_url", - "editor_url", - "expires_at" -]New value: +[ + "title", + "format", + "full", + "download_url", + "editor_url", + "expires_at", + "clip_id", + "track_duration_sec", + "filename", + "peaks" +]
- Added
retrim_clip
2 tool updates
- First observed
cut_audio - First observed
get_transcript
Related MCP Connectors
Download video and audio from TikTok, YouTube, Instagram and 1800+ sites; get transcripts.
Get transcripts from YouTube, TikTok, X, Instagram and more - even when captions are off.
Transcript retrieval for YouTube, TikTok and Instagram: whole channels, playlists and searches.
Transcribe public videos & audio (YouTube, TikTok, IG) into accurate, timestamped text via API.
Related MCP Servers
- AlicenseAqualityCmaintenanceTranscribes videos from 1000+ platforms (YouTube, TikTok, Vimeo, etc.) and local video files using OpenAI's Whisper model, with support for 90+ languages and multiple output formats.827 npm8MIT
- AlicenseNot gradedqualityDmaintenanceTranscribes YouTube videos or audio files to Markdown, plain-text, and Word documents.MIT
- AlicenseNot gradedqualityCmaintenanceEnables extracting video and post metadata, creator feeds, comments, direct media streams, and transcripts from YouTube, TikTok, Instagram, and Threads, with no API keys or logins required for most sources. Combines Faster-Whisper audio transcription with ffmpeg keyframe and carousel OCR so videos that have no captions or consist of screenshots and text slides still yield full text.MIT
- AlicenseBqualityDmaintenanceEnables downloading videos from platforms like YouTube and converting them to text using OpenAI Whisper and ffmpeg. It supports multiple output formats including TXT, JSON, SRT, and VTT for transcriptions.22 npmISC
Glama MCP Gateway
Add one secure layer between your agents and this server.