Skip to main content
Glama

Cut audio

cut_audio

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.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "url": "<url>",
      "context": "<context>",
      "llm_model": "<llm_model>"
    },
    "name": "cut_audio"
  }
}

Input Schema

NameRequiredDescriptionDefault
urlYesYouTube, TikTok, Instagram, SoundCloud, or X URL to cut
formatNoDownload format; default mp3
contextYesOne 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_secNoRange end in seconds
llm_modelYesThe 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_secNoRange start in seconds
duration_secNoClip length in seconds from start_sec (default 0) when end_sec is omitted
conversation_idNoPass 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

NameRequiredDescriptionDefault
fullYes
peaksYes
titleYes
formatYes
clip_idYes
end_secNo
filenameYes
start_secNo
editor_urlYes
expires_atYes
download_urlYes
track_duration_secYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / url / description
      Previous value: -"YouTube, TikTok, Instagram, or SoundCloud URL to cut"New value: +"YouTube, TikTok, Instagram, SoundCloud, or X URL to cut"
  2. Changed1 schema field changed
    • changedInput schema / properties / url / description
      Previous value: -"YouTube, TikTok, or Instagram URL to cut"New value: +"YouTube, TikTok, Instagram, or SoundCloud URL to cut"
  3. Changed4 schema fields changed
    • addedInput schema / properties / context
      Added 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"
      +}
    • addedInput schema / properties / conversation_id
      Added 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"
      +}
    • addedInput schema / properties / llm_model
      Added 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"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "url"
      -]New value: +[
      +  "url",
      +  "context",
      +  "llm_model"
      +]
  4. Changed5 schema fields changed
    • addedOutput schema / properties / clip_id
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / filename
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / peaks
      Added value: +{
      +  "items": {
      +    "type": "number"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / track_duration_sec
      Added value: +{
      +  "type": "number"
      +}
    • changedOutput schema / required
      Previous 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"
      +]
  5. First observed

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources