Skip to main content
Glama

tiktok.download_music_from_video

Download music from a TikTok video so the user or agent can save and reuse it.

Provide either video_id or video_url, not both. The file is saved to account file storage. The response includes file_url for API users and download_code for agents to run vee3-get-file.

Cost = 10 tokens.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
video_idNoTikTok video id.
file_nameNoOptional account-relative storage path for the music file. If omitted, the file is stored under downloads/ with a generated name.
video_urlNoTikTok video URL.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
commandNoSuggested terminal command for downloading to a local path.
file_urlNoSigned download URL from account file storage.
file_nameNoAccount-relative path where the file was stored.
expires_atNoISO 8601 timestamp when the download code can no longer be resolved (60 minutes after reserve).
download_idNoStable identifier for the reserved agent download session.
content_typeNoMIME type of the music file.
download_codeNoShort code to pass to the @vee3/cli `vee3-get-file` command.
retained_untilNoISO 8601 timestamp when account storage retention expires.
file_size_bytesNoMusic file size in bytes.
install_commandNoOne-time command to install the Vee3 CLI (`npm install -g @vee3/cli`). On networks that inspect HTTPS, install may require Node 22.15+ with NODE_OPTIONS=--use-system-ca.
troubleshootingNoWhat to do if installation or downloading fails: re-read this tool's description via meta-tools.describe for setup and troubleshooting steps.
tiktok_download_idNoUnique TikTok download operation identifier, prefix td_.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed17 schema fields changed
    • addedInput schema / properties / file_name
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 255,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Optional account-relative storage path for the music file. If omitted, the file is stored under downloads/ with a generated name.",
      +  "title": "File Name"
      +}
    • removedInput schema / properties / return_mode
      Removed value: -{
      -  "default": "both",
      -  "description": "How to deliver the result. 'url' returns a signed download URL only. 'file' returns inline base64 when the file is under 10 MB. 'both' returns the signed URL plus inline base64 when small enough.",
      -  "title": "Return Mode",
      -  "type": "string"
      -}
    • removedOutput schema / $defs
      Removed value: -{
      -  "DownloadTiktokMusicFromVideoResponseMusicInfo": {
      -    "additionalProperties": true,
      -    "properties": {
      -      "play": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null,
      -        "description": "Signed download URL for the music file.",
      -        "title": "Play"
      -      }
      -    },
      -    "title": "DownloadTiktokMusicFromVideoResponseMusicInfo",
      -    "type": "object"
      -  }
      -}
    • addedOutput schema / properties / command
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Suggested terminal command for downloading to a local path.",
      +  "title": "Command"
      +}
    • addedOutput schema / properties / content_type
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "MIME type of the music file.",
      +  "title": "Content Type"
      +}
    • addedOutput schema / properties / download_code
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Short code to pass to the @vee3/cli `vee3-get-file` command.",
      +  "title": "Download Code"
      +}
    • changedOutput schema / properties / download_id / description
      Previous value: -"Unique download identifier, prefix td_."New value: +"Stable identifier for the reserved agent download session."
    • addedOutput schema / properties / expires_at
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "ISO 8601 timestamp when the download code can no longer be resolved (60 minutes after reserve).",
      +  "title": "Expires At"
      +}
    • addedOutput schema / properties / file_name
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Account-relative path where the file was stored.",
      +  "title": "File Name"
      +}
    • addedOutput schema / properties / file_size_bytes
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Music file size in bytes.",
      +  "title": "File Size Bytes"
      +}
    • addedOutput schema / properties / file_url
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Signed download URL from account file storage.",
      +  "title": "File Url"
      +}
    • addedOutput schema / properties / install_command
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "One-time command to install the Vee3 CLI (`npm install -g @vee3/cli`). On networks that inspect HTTPS, install may require Node 22.15+ with NODE_OPTIONS=--use-system-ca.",
      +  "title": "Install Command"
      +}
    • removedOutput schema / properties / music_info
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "$ref": "#/$defs/DownloadTiktokMusicFromVideoResponseMusicInfo"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Music metadata with a signed download URL."
      -}
    • addedOutput schema / properties / retained_until
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "ISO 8601 timestamp when account storage retention expires.",
      +  "title": "Retained Until"
      +}
    • removedOutput schema / properties / return_mode
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Echo of the requested delivery mode.",
      -  "title": "Return Mode"
      -}
    • addedOutput schema / properties / tiktok_download_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Unique TikTok download operation identifier, prefix td_.",
      +  "title": "Tiktok Download Id"
      +}
    • addedOutput schema / properties / troubleshooting
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "What to do if installation or downloading fails: re-read this tool's description via meta-tools.describe for setup and troubleshooting steps.",
      +  "title": "Troubleshooting"
      +}
  2. First observed

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses key behavioral traits: the file is saved to account file storage, the response includes file_url for API users and download_code for agents, and the cost is 10 tokens. It does not mention failure modes or auth requirements, but for a download tool this is reasonably transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with three short sentences that cover purpose, parameter constraint, storage behavior, response format, and cost. Every sentence earns its place with no fluff or redundancy.

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?

The tool has 3 optional parameters, an output schema, and is relatively simple. The description covers purpose, input constraints, side effects, response format, and cost. It lacks explicit comparison to siblings, but overall it is complete for the tool's complexity.

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 description coverage is 100%, so each parameter is already documented. The description adds meaningful semantic value by enforcing mutual exclusivity ('Provide either video_id or video_url, not both') which is not encoded in the schema. This goes beyond simple restatement.

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?

The description clearly states 'Download music from a TikTok video', using a specific verb and resource. It distinguishes itself from sibling tools like tiktok.download_video (which downloads the video) and tiktok.download_music (which likely downloads by music ID) by explicitly scoping to music from a 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?

The description provides clear input usage guidance ('Provide either video_id or video_url, not both') and states the intent ('so the user or agent can save and reuse it'). However, it does not explicitly name alternatives or contrast with download_music/download_video, though the purpose makes the use case clear.

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.