Skip to main content
Glama

Post a video or photo post to TikTok

post_to_tiktok

Publish to the user’s connected TikTok account — a finished VIDEO, or a PHOTO POST (TikTok’s photo/slideshow format). A photo post carries 1 to 35 images and ONE image is simply a one-slide photo post, so there is nothing special to do for a single picture: pass imageUrls, in the order the slides should appear, and optionally coverIndex. Pass videoUrl for a video. Never pass both — TikTok has no mixed post. TWO destinations either way: destination:"post" puts it LIVE on their profile now — that requires privacy, and you must call tiktok_creator_info first, show the creator’s real privacy options and get an explicit yes before calling. destination:"draft" (the default, and the safer one) sends it to TikTok for the user to finish and post themselves from the app. Pass Hermoso render URLs (or upload_file urls for local/external files). Needs TikTok connected (Settings ▸ Connectors ▸ TikTok).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
hookNoWHAT ANGLE THIS POST IS BUILT ON — the single most valuable field here, and the only moment it can ever be recorded. post_performance groups on it to answer "which hooks work", and it needs 5 posts sharing ONE hook before it will call anything a winner, so REUSE THE SAME WORDING across a campaign instead of rephrasing it every time. Best of all, pass a hook id from list_hooks (e.g. "direct_callout", "mid_problem", "before_after") — those fold onto a stable key however they are spelled, so a whole brand accumulates evidence on one row. Your own wording is fine too; it just only groups when you repeat it exactly. Omitting it means this post can never vote on which hook works.
titleNothe caption — hashtags go here (video ≤2200 chars, photo post ≤4000)
privacyNoREQUIRED for destination:"post", for photos and video alike. Must be one the creator actually allows — read them from tiktok_creator_info, never guess.
subjectNoWHAT THIS POST IS ABOUT — the product, feature, offer or theme (e.g. "winter coat", "free trial", "founder story"). The second grouping axis in post_performance. Same rule as hook: reuse the exact wording so posts about one subject land in one group.
videoUrlNothe video to post — a Hermoso render URL or an upload_file url. Omit for a photo post.
imageUrlsNoa PHOTO POST: 1–35 image URLs in slide order. One url = a single-image photo post. Do not combine with videoUrl.
yourBrandNodiscloses that this promotes the creator’s own brand
coverIndexNophoto posts: which slide is the cover, 0-based. Default 0 (the first slide).
photoTitleNophoto posts only: a short title above the caption (≤90 chars). Defaults to the caption’s first line.
destinationNo"post" = live on the profile now (needs privacy + an explicit user yes); "draft" = to TikTok for the user to review and post themselves. Default "draft".
disableDuetNovideo only — TikTok has no duet on a photo post
autoAddMusicNophoto posts only: let TikTok add a recommended track (default true — a silent slideshow reads as broken)
disableStitchNovideo only — TikTok has no stitch on a photo post
brandedContentNodiscloses a paid partnership — cannot be combined with SELF_ONLY privacy
disableCommentNo
coverTimestampMsNovideo only: which frame to use as the cover, in ms

TDQS

A4.4/5.0
Behavior5/5

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

The description goes well beyond the annotations (readOnlyHint false, openWorldHint true) by disclosing that posting live immediately publishes to the profile, requires explicit approval, and that draft is a safer default. It details the prerequisite call to tiktok_creator_info and the need for explicit privacy choice, adding rich behavioral context about side effects and required preconditions. No contradiction with annotations.

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?

The description is information-dense and front-loads the core purpose, but it is a single lengthy paragraph without bullet points or clear segmentation. Each sentence adds necessary detail, but the structure could be improved for scanability. It is not overly verbose given the complexity, earning a high score.

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

Completeness3/5

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

For a complex tool with 16 parameters and no output schema, the description thoroughly covers usage modes, constraints, prerequisites, and connection requirements. However, it does not describe what the tool returns (e.g., a post ID, status) or potential error conditions, which are important for an agent to handle success/failure. This gap lowers the completeness score.

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 has detailed descriptions for most parameters (94% coverage), so the description adds value by clarifying cross-parameter constraints (e.g., mutual exclusivity of videoUrl and imageUrls), explaining the conceptual purpose of hook and subject for post_performance grouping, and elaborating on the photo post format (1-35 images, one image being a single-slide post). This exceeds the baseline expected when schema coverage is high, but it doesn't fully compensate for any gaps in schema descriptions, which are minimal.

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 that the tool publishes a video or photo post to TikTok, with explicit mention of the two formats and destinations (live or draft). It distinguishes itself from siblings by naming the platform and the specific artifact types, making it unambiguous which tool to use for TikTok posting.

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 detailed usage guidance: it explains the two destinations (post vs draft), the requirement to call tiktok_creator_info before live posting, the need for explicit user consent, and the prerequisite of a connected TikTok account. It does not explicitly compare with alternative posting tools (like post_to_meta), but the platform-specific nature makes the context clear. It also sets constraints like 'Never pass both' and explains the default draft destination.

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.

TDQS

A3.7/5.0
Disambiguation2/5

With 293 tools, the surface is enormous and many tools have overlapping purposes—multiple posting tools (post_to_meta, post_to_linkedin, schedule_post, etc.), multiple analytics tools per channel, and several search tools (search_meta_ads, search_instagram, search_reddit...). While each description is detailed, the volume makes it difficult for an agent to reliably distinguish between similar tools without careful reading, leading to frequent misselection.

Naming Consistency4/5

The naming is largely consistent with a verb_noun pattern (post_to_*, list_*, create_*, delete_*, update_*, manage_*). There are clear families for major operations. A few outliers like 'google_business_account', 'hermoso_capabilities', and 'store_get' break the pattern, but the overwhelming majority follow a predictable structure, making navigation somewhat easier.

Tool Count1/5

293 tools is far beyond any reasonable scope for a single MCP server, even for a comprehensive marketing platform. The calibration guide flags 50+ as an extreme mismatch, and this is nearly six times that threshold. Such a large surface overwhelms context windows, increases the probability of misselection, and makes it impractical for agents to learn or use effectively.

Completeness4/5

The tool set covers a vast domain: ad creation and rendering, posting across nine+ social channels, analytics and reporting, file management (Drive/OneDrive), competitor research, brand management, and more. It appears to provide CRUD and lifecycle coverage for most resources. While there may be minor gaps given the immense scope, the overall coverage is impressively comprehensive.