Skip to main content
Glama

Publish a video to TikTok

post_video
Destructive

Publish a video to a TikTok account from a public URL, set privacy level and confirm action, then use the returned publish ID to check posting status.

Instructions

Publish a video straight to the account from a public URL. Returns a publish_id; poll get_post_status with it, because the call returns as soon as TikTok accepts the job, long before the post is live. While your app is unaudited every post lands private no matter which privacy_level you pass.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
titleNoThe caption. Hashtags and @mentions work inline. Up to 2200 UTF-16 units.
accountNoWhich connected TikTok account to act as, by the name you gave it in TIKTOK_ACCOUNTS. Defaults to the first. Call list_accounts to see them.
confirmNoMust be true for this to run. A TikTok post is public the moment moderation clears it, and deleting it later does not pull it out of feeds that already have it.
is_aigcNoTrue if the video is AI-generated. Adds TikTok's AI-generated label to the description.
video_urlYesPublic URL of the video file. Its domain must be verified under URL Properties in your TikTok app, and TikTok has one hour to download it.
disable_duetNo
privacy_levelYesMust be one of the values get_creator_info returns in privacy_level_options for this account. A private account cannot use PUBLIC_TO_EVERYONE, and passing it fails the call.
disable_stitchNo
disable_commentNo
brand_content_toggleNoTrue if this is a paid partnership promoting somebody else's business. Defaults false.
brand_organic_toggleNoTrue if this promotes the creator's own business. Defaults false.
video_cover_timestamp_msNoWhich frame to use as the cover, in milliseconds. Defaults to the first frame.
Install Server

TDQS

A4.1/5.0
Behavior5/5

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

The description adds significant behavioral detail beyond the annotations: the call returns as soon as TikTok accepts the job, long before the post is live, and unaudited apps always produce private posts regardless of the privacy_level argument. It also explains the need to poll get_post_status. These are exactly the kind of non-obvious behaviors an agent needs to know.

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?

Three dense sentences carry the core purpose, the async behavior, and the privacy caveat. The most important facts are front-loaded with no filler. Every sentence earns its place.

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 tool with 12 parameters, no output schema, and multiple sibling tools, the description covers the essential runtime behavior: what is returned, how to track the post, and the unaudited-app privacy quirk. It does not mention the required confirm parameter, but that is fully documented in the schema, so this is a minor gap overall.

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?

The input schema already documents 75% of the parameters, so the heavy lifting is done there. The description adds extra value for privacy_level by warning that unaudited apps override whatever value is passed, making every post private. This is a meaningful parameter-related caveat beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies a specific verb and resource: 'Publish a video straight to the account from a public URL.' It also communicates the key output, publish_id. However, it does not explicitly distinguish itself from sibling tools like post_photos or send_video_to_drafts, so the differentiation is implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for what the tool does and tells the agent to poll get_post_status afterward, which is useful. It does not, however, state when to prefer this over alternatives such as send_video_to_drafts or post_photos, nor does it explain when not to use it. Usage is implied by the purpose rather than explicitly routed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/navidmoazzez/tiktok-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server