Let AI agents publish videos, photo carousels and drafts to TikTok, set privacy and AI labels, check processing status and pull performance metrics from a single prompt.
{
"mcpServers": {
"upload-post": {
"url": "https://mcp.upload-post.com/mcp",
"headers": {
"Authorization": "ApiKey YOUR_API_KEY"
}
}
}
} Part of the Upload-Post MCP server. The agent picks the right tool from your prompt.
| Tool | What it does |
|---|---|
| upload_video | Publish a video to TikTok with caption, privacy and scheduling options |
| upload_photos | Publish a photo carousel of up to 35 images to TikTok |
| tiktok_publishing_settings | Read which privacy levels the account allows, its max video length and its comment, duet and stitch switches |
| tiktok_music_trending / tiktok_music_search / tiktok_location_search | Find a Commercial Music Library track or a place to tag on the post |
| get_status | Track upload and processing status |
| get_post_comments / create_comment / comment_action | Read, answer, like, pin or hide comments on your videos |
| list_scheduled / edit_scheduled / cancel_scheduled | Manage scheduled TikTok posts |
| get_analytics / get_post_analytics | Pull views, likes and engagement per post or account |
| submit_ffmpeg_job | Trim or re-encode a clip before posting |
Looking for another way to post? See the TikTok API page or the Claude Code TikTok skill.
One hosted server at mcp.upload-post.com/mcp. Sign in with OAuth or paste an Upload-Post API key, whichever your client supports.
Open it from Settings > Developer > Edit Config, paste the entry and restart Claude Desktop. It runs the open-source npm package @upload-post/mcp on your machine and needs Node.js 18 or newer.
Using Claude in the browser? Skip the file: Settings > Connectors > Add custom connector, paste https://mcp.upload-post.com/mcp and sign in with your Upload-Post account (OAuth).
{
"mcpServers": {
"upload-post": {
"command": "npx",
"args": ["-y", "@upload-post/mcp"],
"env": { "UPLOAD_POST_API_KEY": "YOUR_API_KEY" }
}
}
} Prefer OAuth? Drop the --header line, then run /mcp inside Claude Code and sign in. Add --scope user to use the server in every project.
claude mcp add --transport http upload-post https://mcp.upload-post.com/mcp \
--header "Authorization: ApiKey YOUR_API_KEY" Put it in .cursor/mcp.json for one project or ~/.cursor/mcp.json for all of them, then reload Cursor.
{
"mcpServers": {
"upload-post": {
"url": "https://mcp.upload-post.com/mcp",
"headers": {
"Authorization": "ApiKey YOUR_API_KEY"
}
}
}
}
Your API key is under API Keys in app.upload-post.com. Before the first post, connect TikTok to a profile in the dashboard: the agent passes that profile name as user. On ChatGPT, search for Upload-Post under Apps and click Connect; no config file needed.
An example flow with placeholder names, IDs and URLs, not a customer transcript. The tool names and parameters are the real ones the server exposes.
You
Post https://example.com/clips/launch.mp4 to TikTok on my profile "studio". Caption: "Our new editor in 30 seconds". It was made with AI, so label it, and turn off duets.
Tool call 1
tiktok_publishing_settings
Checks which privacy levels this account allows before posting.
{
"profile": "studio"
}{
"success": true,
"privacy_level_options": [
"PUBLIC_TO_EVERYONE",
"MUTUAL_FOLLOW_FRIENDS",
"FOLLOWER_OF_CREATOR",
"SELF_ONLY"
],
"max_video_post_duration_sec": 600,
"comment_disabled": false,
"duet_disabled": false,
"stitch_disabled": false
}Tool call 2
upload_video
Publishes in the background and returns a request_id to follow.
{
"videoPathOrUrl": "https://example.com/clips/launch.mp4",
"user": "studio",
"platforms": [
"tiktok"
],
"title": "Our new editor in 30 seconds",
"asyncUpload": true,
"platformOptions": {
"tiktokPrivacyLevel": "PUBLIC_TO_EVERYONE",
"tiktokDisableDuet": true,
"tiktokIsAigc": true
}
}{
"success": true,
"message": "Upload initiated successfully in background.",
"request_id": "9f3c1a7e-5b2d-4c8e-a1f0-2d7b6e4c9a10",
"total_platforms": 1
}Tool call 3
get_status
Polls until TikTok confirms the post.
{
"requestId": "9f3c1a7e-5b2d-4c8e-a1f0-2d7b6e4c9a10"
}{
"request_id": "9f3c1a7e-5b2d-4c8e-a1f0-2d7b6e4c9a10",
"status": "completed",
"completed": 1,
"total": 1,
"results": [
{
"platform": "tiktok",
"success": true
}
]
}Assistant
Published to TikTok on "studio" with the AI-generated label and duets turned off.
upload_video: Sends the clip to your TikTok drafts (inbox) so you can add a sound and publish from the app. In draft mode TikTok ignores the caption and privacy sent through the API.
{
"videoPathOrUrl": "https://example.com/clips/launch.mp4",
"user": "studio",
"platforms": [
"tiktok"
],
"platformOptions": {
"tiktokPostMode": "MEDIA_UPLOAD"
}
}upload_photos: A photo carousel with the first image as cover and music added automatically.
{
"photosPathsOrUrls": [
"https://example.com/slides/1.jpg",
"https://example.com/slides/2.jpg",
"https://example.com/slides/3.jpg"
],
"user": "studio",
"platforms": [
"tiktok"
],
"title": "3 editing mistakes",
"description": "Swipe for the fix to each one.",
"platformOptions": {
"tiktokPrivacyLevel": "PUBLIC_TO_EVERYONE",
"tiktokPhotoCoverIndex": 0,
"tiktokAutoAddMusic": true
}
}How the TikTok MCP server reaches your account.
Every post goes out through TikTok’s Content Posting API using Upload-Post’s approved TikTok app. You connect the TikTok account once in the Upload-Post dashboard, on TikTok’s own authorization screen. There is no password sharing and no automation of the TikTok app.
That approval matters if you have looked at building this yourself. TikTok restricts everything posted by unaudited API clients to private viewing until the client passes an audit. With the hosted server you skip the developer app, the audit and the token handling.
TikTok decides per account which privacy levels are allowed. A private account, for example, has no PUBLIC_TO_EVERYONE. The agent can call tiktok_publishing_settings first and pick a level the account actually has, instead of failing with tiktok_privacy_unavailable.
Music, location tags, custom covers and comments depend on permissions granted when the account was connected. list_users shows them in a capabilities array on the TikTok account, and reconnecting TikTok picks up new ones.
Sources: TikTok Content Posting API, Upload-Post TikTok guide, upload-post-mcp on GitHub.
What TikTok and Upload-Post accept per post, checked September 2026.
| What | Limit | Source |
|---|---|---|
| Video caption | 2,200 characters (an emoji counts as 2) | Upload-Post character limits |
| Photo post text | Title up to 90 characters, description up to 4,000 | Upload-Post character limits |
| Video | MP4, MOV or WebM; 3 seconds to 10 minutes through the API; 23 to 60 fps; at least 360 px on each side. Upload-Post rejects files over 3 GB. | Upload-Post video requirements |
| Photos | JPG, JPEG or WebP, up to 35 per post and 20 MB each. Images above 1080 x 1920 are downscaled automatically. | Upload-Post photo requirements |
| Privacy | PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR or SELF_ONLY, limited per account by TikTok | Upload-Post TikTok guide |
| Posting rate (TikTok) | 6 posts per minute and 15 per 24 hours per TikTok account | Upload-Post video requirements |
No commands to memorize. Describe what you want.
“Publish this video to TikTok under profile "marketing", caption: "Spring launch 🌱".”
“Trim this clip to the first 30 seconds and post it to TikTok.”
“Schedule this TikTok for Friday at 6pm Madrid time.”
“How did my last 5 TikToks perform? Compare views and completion.”
TikTok + AI agents, answered. Last updated September 2026.
A TikTok MCP server is a Model Context Protocol server that exposes TikTok publishing as tools an AI agent can call. The Upload-Post MCP server lets ChatGPT, Claude, Gemini or any MCP client upload videos and photo carousels to TikTok, schedule posts and pull analytics, with no custom code.
Yes. Connect your TikTok account to Upload-Post once, add the MCP server to your AI client, and the agent can publish videos with captions, privacy settings and scheduling from a natural-language prompt.
Through the API TikTok takes MP4, MOV or WebM from 3 seconds to 10 minutes, at 23 to 60 fps and at least 360 px on each side. Photos larger than 1080 x 1920 are downscaled automatically. If a clip is too long or in the wrong format, the agent can trim or re-encode it first with submit_ffmpeg_job.
The server code is free and open source (MIT). You connect it with an Upload-Post API key, and you can create an account for free.
They do different jobs. TikTok’s own TikTok for Business MCP server works on the Ads side: campaigns, ad groups, audiences, catalogs and ad reporting. The Upload-Post TikTok MCP works on your organic account: it publishes videos and photo carousels, sends clips to drafts, answers comments and reads post analytics, all through TikTok’s official developer APIs. If you run ads and also post organically, you can connect both to the same AI client.
No. It only works with TikTok accounts you connect and own, through TikTok’s official API. It does not download other creators’ videos, search hashtags or collect profile data, which is what the scraping MCP servers listed for TikTok do.
Yes. Set tiktokPostMode to MEDIA_UPLOAD (or tiktokUploadToDraft to true) in platformOptions and the video lands in the TikTok inbox, where you finish and publish it in the app. In draft mode TikTok ignores the caption and privacy sent through the API.
Yes. upload_photos with platforms ["tiktok"] publishes a photo post of up to 35 JPG, JPEG or WebP images. tiktokPhotoCoverIndex picks the cover and tiktokAutoAddMusic adds background music.
Pass tiktokIsAigc: true in platformOptions. TikTok then shows the video as labeled by the creator as AI-generated.
Up to 15 per TikTok account in a rolling 24 hours, and no more than 6 per minute. Those are TikTok’s own limits.
Free to start, no credit card. Connect TikTok once and post from any MCP client.
We use strictly necessary cookies to run this site. With your permission we would also like to measure how the site is used (analytics) and how our ads perform (marketing). Nothing optional is loaded until you choose. Cookie Policy · Privacy Policy
Choose which categories you allow. You can change this at any time from "Cookie settings" in the footer. Cookie Policy
Needed for the site to work: your consent record (up_consent) and your light/dark theme preference. Exempt from consent under art. 22.2 LSSI.
OpenPanel, self-hosted on our own servers (api.openpanel.fotoexamen.com). Aggregated page and feature usage so we can see what to improve. No data goes to an advertising network.
Google Ads conversion measurement, the Reddit advertising pixel, and our own affiliate/attribution cookies (aff_ref, up_attribution). These tell us which campaign or affiliate brought you here.