MCP (streamable HTTP) · TikTok

Draft TikTok demo posts from Cursor

Build in public on TikTok works best when the gap between shipping and posting is short. From Cursor, you can ask the agent to caption the demo clip you just recorded, upload it to SocialHandoff, and create a TikTok draft, all without leaving the editor. The post waits in the approval inbox. There, the reviewer sees the video, the caption, the chosen visibility, and TikTok's consent text before approving.

Prompt

I recorded demo/drag-reorder.mp4 showing the new drag-to-reorder list. Write a TikTok caption in a build-in-public tone: what I built today, one detail that was harder than it looks, and 4 hashtags. Upload it and create the TikTok draft.

How to do it

  1. Connect TikTok and mint a key In https://app.socialhandoff.com, open Connections, connect TikTok, then open TikTok settings on the account and choose visibility, comment/duet/stitch, and commercial disclosure. Then create an agent key named Cursor scoped to TikTok with draft and schedule permission.
  2. Add the server to mcp.json Create .cursor/mcp.json in the repository with a url of https://app.socialhandoff.com/mcp and an Authorization header carrying the key. Cursor lists the tools under MCP in its settings once it connects.
  3. Attach media from the workspace Cursor calls attach_media for the video or up to 35 photos: a public url, or the file as base64 data (up to 8 MB) with its mime type and alt text. Larger files go to POST https://app.socialhandoff.com/v1/media as multipart. The ids go into draft_post as mediaIds.
  4. Ask for the draft Ask Cursor in agent mode. It writes the caption, attaches the clip (base64 if under 8 MB, otherwise a multipart upload), and calls draft_post.
  5. Approve with the consent text The approval screen shows the visibility and interaction settings chosen in Connections and TikTok's consent text. Approve, and it publishes; a video is sent to TikTok in chunks.

Example draft

Day 38 of building my habit tracker: drag to reorder.

Looks simple. The hard part was keeping the order in sync when you edit on two devices at once.

#buildinpublic #indiehacker #coding #webdev

[Video: demo/drag-reorder.mp4, 18-second vertical screen recording]

Gotchas

  • Photo posts are fetched by URL, so the domain serving your media must be verified in the TikTok developer portal. Videos upload as bytes and skip this.
  • Base64 data for attach_media is capped at 8 MB. For a larger video, Cursor has to upload from its terminal; if the key lives only in your shell profile, make sure that terminal loads it, or the upload returns 401.
  • TikTok refuses text-only posts. The agent can draft the caption first, but approval and scheduling are refused until a video or photos are attached.
TikTok
  • Media: Every post needs one video or up to 35 photos. Text-only posts are not possible.
  • Video upload: Videos upload in chunks of 5 to 64 MB; smaller files go in one piece. Maximum duration depends on the creator account.
  • Photo posts: Up to 35 JPEG or WebP images, a title up to 90 characters, and a description up to 4,000 characters.
  • Required choices: TikTok requires a visibility setting with no default, comment/duet/stitch toggles, and a commercial content disclosure.
TikTok scheduler with approval and TikTok's required choices

Frequently asked questions

What does the reviewer see before approving?
The approval screen shows the caption, the media, the account's chosen settings, and TikTok's consent text, so the person approving knows exactly what will be posted.
Should mcp.json go in the repository?
Only without the key. Keep the key in an environment variable or in the global ~/.cursor/mcp.json so it never gets committed.
Where do I choose who can see the video?
In Connections, TikTok settings reads the creator's live options and asks for visibility, comment, duet, stitch, and commercial content disclosure. Those choices apply to every post from that account.

Let your agents post. Keep the final say.

Connect your first agent in minutes. Every draft waits in your inbox until you approve it.

14 days free. No card required.

The hosted version is opening soon

Leave your email and we will send one message when hosted accounts open, with your 14-day trial ready. Want it today? Self-host it free from the repo.

Start free trial