Skip to main content
Glama

tiktok.download_music

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

Provide either music_id or music_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
music_idNoTikTok music id.
file_nameNoOptional account-relative storage path for the music file. If omitted, the file is stored under downloads/ with a generated name.
music_urlNoTikTok music page 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. Changed14 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"
      -}
    • 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 / 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_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 / play
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Signed download URL for the music file.",
      -  "title": "Play"
      -}
    • 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 burden of disclosure. It reveals important behavioral traits: the file is saved to account storage, the response format includes file_url and download_code, and the cost is 10 tokens. This goes beyond a simple statement of purpose, though it doesn't cover potential errors or prerequisites.

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 three sentences, front-loaded with the purpose, followed by parameter constraint, then output/cost details. Every sentence earns its place with no wasted words.

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?

Given the output schema exists, the description need not detail return values, but it still mentions key outputs (file_url, download_code). It covers parameter constraints, side effects (file storage), and cost. It doesn't address when to prefer this over download_music_from_video, but the core context is sufficient for a download tool.

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 baseline is 3. The description adds critical param semantics not in the schema: 'Provide either music_id or music_url, not both.' This mutual exclusivity constraint is essential for correct invocation and is absent from the individual parameter descriptions.

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 the tool's function: 'Download a TikTok music track so the user or agent can save and reuse it.' The verb 'download' and resource 'TikTok music track' are specific, and the mention of accepting music_id or music_url distinguishes it from sibling tools like download_video and download_music_from_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 context for usage: 'Provide either music_id or music_url, not both.' It also explains the outcome (file saved to account file storage, response contains file_url/download_code). However, it does not explicitly mention alternative tools or when not to use this tool, so it falls short of a 5.

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.