Skip to main content
Glama

Trim audio

trim_audio

Save one stretch of an owned voice-over, song or audio upload as a new WAV audio generation, cut to the sample. Specify the start time and duration in seconds. To cut a whole take into a talking head's lines, pass each window of chunks from transcribe_media with chunk_max_seconds. Costs no credits; uses account storage. get_generation waits for the result.

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": {
      "source": "<source>",
      "start_seconds": "<start_seconds>",
      "duration_seconds": "<duration_seconds>"
    },
    "name": "trim_audio"
  }
}

Input Schema

NameRequiredDescriptionDefault
sourceYes
accurateNo
start_secondsYes
duration_secondsYes

Output Schema

NameRequiredDescriptionDefault
messageYes
generationYesOne image, clip, voice-over or piece of music.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed20 schema fields changed
    • addedOutput schema / properties / generation / description
      Added value: +"One image, clip, voice-over or piece of music."
    • addedOutput schema / properties / generation / properties / app_url / description
      Added value: +"Opens it in the app."
    • addedOutput schema / properties / generation / properties / aspect_ratio / description
      Added value: +"Null for audio."
    • addedOutput schema / properties / generation / properties / created_at / format
      Added value: +"date-time"
    • addedOutput schema / properties / generation / properties / credits
      Added value: +{
      +  "description": "Credits charged. Zero when your own provider key or the free allowance paid.",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • removedOutput schema / properties / generation / properties / credits_cost
      Removed value: -{
      -  "type": [
      -    "number",
      -    "null"
      -  ]
      -}
    • addedOutput schema / properties / generation / properties / error / description
      Added value: +"Why it failed. Null otherwise."
    • removedOutput schema / properties / generation / properties / generation_id
      Removed value: -{
      -  "format": "uuid",
      -  "type": "string"
      -}
    • addedOutput schema / properties / generation / properties / id
      Added value: +{
      +  "format": "uuid",
      +  "type": "string"
      +}
    • removedOutput schema / properties / generation / properties / kind
      Removed value: -{
      -  "enum": [
      -    "image",
      -    "video",
      -    "audio",
      -    "tool"
      -  ],
      -  "type": "string"
      -}
    • addedOutput schema / properties / generation / properties / model / description
      Added value: +"The model id it was made with (`GET /v1/models`)."
    • addedOutput schema / properties / generation / properties / object
      Added value: +{
      +  "const": "generation",
      +  "type": "string"
      +}
    • addedOutput schema / properties / generation / properties / output_url / description
      Added value: +"The finished file, once `ready`. A signed link that works for about an hour; read the generation again for a fresh one."
    • addedOutput schema / properties / generation / properties / paid_by / description
      Added value: +"Who paid: \"credits\", \"house\" (the free allowance), \"server\" (a server that charges nothing), or the vendor of your own key (\"replicate\", \"fal\", …)."
    • addedOutput schema / properties / generation / properties / ready_in_seconds / description
      Added value: +"Roughly how long an unfinished generation has left; 0 means past its usual time."
    • addedOutput schema / properties / generation / properties / recipe_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/properties/generation/properties/id"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "The recipe it was made with, if any."
      +}
    • addedOutput schema / properties / generation / properties / status / description
      Added value: +"`ready` and `failed` are final."
    • addedOutput schema / properties / generation / properties / thumbnail_url
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/properties/generation/properties/output_url/anyOf/0"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "A small still of the result, for a grid. Null for audio and while it works."
      +}
    • addedOutput schema / properties / generation / properties / type
      Added value: +{
      +  "description": "What was made. New values may be added; treat an unknown one as opaque.",
      +  "enum": [
      +    "image",
      +    "clip",
      +    "voiceover",
      +    "music",
      +    "tool"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / properties / generation / required
      Previous value: -[
      -  "generation_id",
      -  "kind",
      -  "status",
      -  "model",
      -  "prompt",
      -  "aspect_ratio",
      -  "refined_from",
      -  "caption_style",
      -  "output_url",
      -  "credits_cost",
      -  "paid_by",
      -  "error",
      -  "vendor_phase",
      -  "stalled",
      -  "ready_in_seconds",
      -  "created_at",
      -  "app_url"
      -]New value: +[
      +  "object",
      +  "id",
      +  "type",
      +  "status",
      +  "model",
      +  "prompt",
      +  "aspect_ratio",
      +  "output_url",
      +  "thumbnail_url",
      +  "credits",
      +  "paid_by",
      +  "error",
      +  "ready_in_seconds",
      +  "recipe_id",
      +  "created_at",
      +  "app_url",
      +  "refined_from",
      +  "caption_style",
      +  "vendor_phase",
      +  "stalled"
      +]
  2. Changed2 schema fields changed
    • addedOutput schema / properties / generation / properties / paid_by
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / generation / required
      Previous value: -[
      -  "generation_id",
      -  "kind",
      -  "status",
      -  "model",
      -  "prompt",
      -  "aspect_ratio",
      -  "refined_from",
      -  "caption_style",
      -  "output_url",
      -  "credits_cost",
      -  "error",
      -  "vendor_phase",
      -  "stalled",
      -  "ready_in_seconds",
      -  "created_at",
      -  "app_url"
      -]New value: +[
      +  "generation_id",
      +  "kind",
      +  "status",
      +  "model",
      +  "prompt",
      +  "aspect_ratio",
      +  "refined_from",
      +  "caption_style",
      +  "output_url",
      +  "credits_cost",
      +  "paid_by",
      +  "error",
      +  "vendor_phase",
      +  "stalled",
      +  "ready_in_seconds",
      +  "created_at",
      +  "app_url"
      +]
  3. Changed2 schema fields changed
    • addedOutput schema / properties / generation / properties / ready_in_seconds
      Added value: +{
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / generation / required
      Previous value: -[
      -  "generation_id",
      -  "kind",
      -  "status",
      -  "model",
      -  "prompt",
      -  "aspect_ratio",
      -  "refined_from",
      -  "caption_style",
      -  "output_url",
      -  "credits_cost",
      -  "error",
      -  "vendor_phase",
      -  "stalled",
      -  "created_at",
      -  "app_url"
      -]New value: +[
      +  "generation_id",
      +  "kind",
      +  "status",
      +  "model",
      +  "prompt",
      +  "aspect_ratio",
      +  "refined_from",
      +  "caption_style",
      +  "output_url",
      +  "credits_cost",
      +  "error",
      +  "vendor_phase",
      +  "stalled",
      +  "ready_in_seconds",
      +  "created_at",
      +  "app_url"
      +]
  4. First observed

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly=false, destructive=false) it discloses three genuinely useful traits: no credit cost, consumption of account storage, and the asynchronous nature of the result with the get_generation pointer. It still doesn't say what happens at the source's boundaries or whether the source asset is preserved, though 'save ... as a new generation' implies non-destructive.

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?

Front-loaded with the core action, then constraints, then follow-up. Tight overall; only the `chunks`/`chunk_max_seconds` sentence is muddy and costs more attention than it repays.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter mutation that produces an output schema, the definition covers cost, storage, and result retrieval, which are the operational concerns an agent needs. The main residual gap is the undocumented `accurate` flag and the confusing cross-reference to transcribe_media chunk parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the burden: it explains that start time and duration are in seconds, which is real added meaning. However, the polymorphic `source` object (upload vs generation) and the `accurate` flag are completely unexplained, and the 600-second bounds from the schema get no mention.

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: 'Save one stretch of an owned voice-over, song or audio upload as a new WAV audio generation, cut to the sample.' It names the accepted source kinds (voice-over, song, audio upload) and the output format (WAV generation), which also implicitly separates it from the sibling trim_video.

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 a concrete usage scenario (cutting a whole take into talking-head lines) and a follow-up step ('get_generation waits for the result'). It does not explicitly say when to prefer trim_video or other siblings, and the instruction to 'pass each window of `chunks` from transcribe_media with chunk_max_seconds' refers to parameters that do not exist in this schema, which could briefly mislead an agent.

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