ShortSync
Schedule and publish short-form video, images and text to TikTok, YouTube Shorts, Instagram, X, LinkedIn and more from one upload, and read post analytics.
Hosted MCP Server
npx add-mcp 'https://www.shortsync.app/api/mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
Connect ShortSync to your AI app
Let Claude Desktop, Cursor, or any MCP-compatible AI client read your ShortSync data and act on your behalf, using the Model Context Protocol.
What is MCP? The Model Context Protocol is an open standard that lets an AI client talk to an application on your behalf. When you connect ShortSync, the AI can call a curated set of tools such as listing your workspaces or your upcoming scheduled posts. Every call is scoped to your account.
1
Add ShortSync to your AI client
The MCP endpoint is https://www.shortsync.app/api/mcp. Add it as a custom connector in your AI client. The steps below show Claude; Cursor, Continue, and other MCP clients accept the same URL.
Claude (web or desktop app)
Open Settings → Connectors, click Add in the top-right, and choose Add custom connector.

Name it ShortSync MCP (or anything you like), paste the endpoint URL, and click Add. Leave the OAuth Client ID / Secret fields empty — ShortSync uses Dynamic Client Registration, so Claude negotiates them automatically.

Claude Desktop config file (advanced)
Prefer to edit the config file directly? Add this to your claude_desktop_config.json. On macOS: ~/Library/Application Support/Claude/claude_desktop_config.json. On Windows: %APPDATA%\Claude\claude_desktop_config.json.
{
"mcpServers": {
"shortsync": {
"type": "http",
"url": "https://www.shortsync.app/api/mcp"
}
}
}
Restart Claude Desktop after editing the file.
2
Complete the connection
The first time Claude calls ShortSync, it opens a browser to sign you in (if you aren't already) and shows a consent screen listing exactly what the app is asking for. Click Allow to complete the connection.

Uploading videos and thumbnails from Claude.ai
The create_video_upload and create_post_thumbnail_upload tools return a presigned URL pointing at amazonaws.com. By default Claude.ai's code execution sandbox blocks that host, so the PUT fails with host_not_allowed. To let Claude push the bytes for you, allow the host once:
- In Claude.ai, open Settings → Capabilities → Code execution and file creation.
- Turn on Cloud code execution and file creation and Allow network egress.
- Under Additional allowed domains, add
*.amazonaws.comand click Add. - Start a new conversation. The allowlist is applied when the sandbox is created, so existing chats keep the old rules and will still be blocked.

Cursor, Claude Desktop, and other clients that run tool calls on your own machine don't need this — they can reach S3 directly.
Available tools
A curated selection of ShortSync actions is exposed via MCP. New tools are added over time; ask your AI client to run tools/list for the current inventory. As of today:
Account & workspace
Where you have access and what's connected.
| Tool | Scope | Purpose |
|---|---|---|
| get_user_profile | read | Returns your ShortSync account info. |
| list_organizations | read | Lists organizations you belong to and your role. |
| list_workspaces | read | Lists workspaces you can access. |
| list_platform_connections | read | Lists which platforms are connected in a workspace. |
| list_pinterest_boards | read | Lists the boards on the workspace's connected Pinterest account, for picking a boardId. |
| list_discord_channels | read | Lists the Discord channels connected to a workspace, for picking channelIds. Posts without channelIds go to the default channels. |
Videos & folders
Manage the library: upload new videos or images, organize them into folders.
| Tool | Scope | Purpose |
|---|---|---|
| list_video_uploads | read | Lists your video uploads across accessible workspaces. |
| list_folders | read | Lists folders in a workspace, including hierarchy info. |
| create_video_upload | write | Reserves a NEW library slot and returns a presigned S3 PUT URL so you can push bytes directly. Not for setting a cover on an existing post. Use create_post_thumbnail_upload for that. |
| create_video_upload_from_url | write | Downloads a video or image from a public https URL as a NEW library entry. Not for setting a cover on an existing post. Use update_post with custom_thumbnail_url instead. |
| finalize_video_upload | write | Confirms a create_video_upload PUT landed and links the new video_upload_id you can pass to create_post_draft. |
| create_folder | write | Creates a folder in a workspace, optionally nested under a parent. |
| update_folder | write | Renames or moves (reparents) a folder. |
| delete_folder | write | Deletes a folder; videos inside become unfoldered. |
| move_video_to_folder | write | Files a video upload into a folder, or removes it from any folder. |
| create_carousel | write | Groups 2-50 already-uploaded items into a single carousel. Returns an upload_id you pass to create_post_draft. Per-platform limits (e.g. IG 10, TikTok 35, X 4) are enforced at publish time. |
Posts & thumbnails
Turn library items into drafts, edit captions and covers before publish.
| Tool | Scope | Purpose |
|---|---|---|
| get_post_details | read | Returns caption, title, description and status for a single post. |
| create_concept | write | Records a content idea in a workspace before there's an upload to attach it to. Pass a planned date to place it on the content calendar. |
| create_post_draft | write | Creates a draft post for a single platform from an existing upload. |
| create_post_drafts | write | Batch version — creates draft posts for multiple platforms in one call instead of calling create_post_draft per platform. |
| update_post | write | Edits caption, title, description, first comment, custom thumbnail (image URL, timeline frame, or an existing image upload), and per-platform settings on any not-yet-published post. |
| batch_update_posts | write | Batch version — updates caption, title, description, first comment, and platform settings on multiple posts in one call. Does not support thumbnails. |
| replace_post_media | write | Swaps the video or image behind a not-yet-published post for another upload in the workspace, keeping its schedule and captions. Pass apply_to_batch to swap every post scheduled together with it. |
| create_post_thumbnail_upload | write | Returns a presigned S3 PUT URL scoped to a specific post's custom-thumbnail slot. Does not create a library entry; ideal for local image files intended only as a cover. |
| finalize_post_thumbnail | write | Confirms a create_post_thumbnail_upload PUT landed and wires the image as the post's custom_thumbnail_url. |
Publishing & scheduling
Queue a draft for immediate publish or park it on a future time.
| Tool | Scope | Purpose |
|---|---|---|
| list_scheduled_posts | read | Lists upcoming scheduled posts, soonest first. |
| schedule_post | write | Schedules a draft video post to publish at a specific time. |
| batch_schedule_posts | write | Batch version — schedules multiple draft posts to the same time in one call instead of calling schedule_post per post. |
| cancel_scheduled_post | write | Cancels a scheduled post and returns it to draft. |
| publish_now | write | Publishes a draft or scheduled post immediately. |
| batch_publish_now | write | Batch version of publish_now. Publishes several posts immediately in one call: pass post IDs, or an upload ID (optionally narrowed to some platforms) to publish all of its drafts. |
Analytics
Rollups of published-post metrics from the local sync cache. Covers YouTube, TikTok, Instagram, Facebook, LinkedIn, Threads, Bluesky, Pinterest, Snapchat, and Mastodon. When the data is over an hour old, reading it also starts a background sync, so asking again a few minutes later returns fresh numbers. Numbers may differ from the live dashboard on Instagram, Facebook, and YouTube; see each tool's description for the caveat.
| Tool | Scope | Purpose |
|---|---|---|
| get_workspace_analytics | read | Summary totals of published-post analytics over a rolling window. |
| get_video_analytics | read | Metrics for one video upload, summed across platforms. |
| get_folder_analytics | read | Metrics for a folder, rolled up across videos and subfolders. |
| get_post_analytics | read | Metrics for one platform post (one post = one platform). |
| explain_post_analytics_state | read | Explains why a post's analytics look the way they do (missing sync, unsupported platform, etc.). |
| sync_analytics | write | Refresh analytics from the connected platforms now, or check the progress of a running sync. |
Inbox (comments and DMs)
Read and act on incoming engagement across every connected account.
| Tool | Scope | Purpose |
|---|---|---|
| list_inbox_conversations | read | Lists inbox threads (comments + DMs) with sort, search, and answered/unanswered filters. |
| list_inbox_connections | read | Which platform accounts are wired into the inbox and their reply/DM/like capability flags. |
| get_conversation_messages | read | Returns the messages in an inbox thread, oldest-first. |
| resolve_linkedin_mention | read | Resolves a LinkedIn @-mention into the underlying profile so a reply can tag them correctly. |
| sync_inbox | write | Pull fresh threads and messages from every DM-enabled connection. |
| load_more_comments | write | Paginate deeper into a specific video/post's comment history. |
| reply_to_comment | write | Posts a reply to a comment or DM thread. |
| mark_conversations_seen | write | Batch mark inbox threads as read for the workspace. |
| mark_conversations_spam | write | Bulk flip the local spam moderation flag on inbox threads. |
| like_conversation | write | Like or unlike a top-level Instagram or Facebook comment thread. |
| like_message | write | Like or unlike a nested Instagram or Facebook comment reply. |
Workspace people
Lightweight CRM for the people you work with in this workspace.
| Tool | Scope | Purpose |
|---|---|---|
| list_workspace_people | read | Lists people saved in this workspace with their contact and role info. |
| upsert_workspace_person | write | Creates or updates a person record in the workspace. |
Missing a tool you need? Email hilma@shortsync.app with what you want to do and I'll add it.
Revoke access
You can disconnect any AI app at any time from Settings → API & MCP. Revocation is immediate; the next tool call from that app will fail and the user will have to reconnect.
Limits
- Access tokens last 1 hour; refresh tokens last 30 days.
- Tool calls are rate-limited to 60 per minute per token, on top of your existing per-plan quota.
- Available on every plan, including Free. Expensive tools (uploads, analytics syncs) still count against your monthly quota.
MCP is different from the ShortSync REST API. For programmatic access with a static Bearer key, see API → Getting Started.