Skip to content

MCP server

Choppity runs a remote MCP server, so an AI assistant can use your Choppity workspace directly: make clips from a YouTube link, a video file link or a file on your computer, check on them, render them and post them to your connected socials.

Server URL: https://api2.choppity.com/mcp (Streamable HTTP)

Auth: either sign in (OAuth 2.1 — Claude, ChatGPT, Claude Code and any client that supports MCP authorization), or an API key from Settings → API sent as Authorization: Key <your key>. Either way, only workspace owners on a paid plan can connect.

  1. Open Settings → Connectors and choose Add custom connector.
  2. Name it Choppity and paste https://api2.choppity.com/mcp.
  3. Click Connect, sign in to Choppity if asked, and click Approve.
  1. Open Settings → Apps and create an app. If you don’t see the option, turn on Developer mode under Advanced.
  2. Paste https://api2.choppity.com/mcp and choose OAuth.
  3. Sign in to Choppity if asked, and click Approve.
Terminal window
claude mcp add --transport http choppity https://api2.choppity.com/mcp

Then start claude, type /mcp, pick choppity and choose Authenticate. To use an API key instead (for scripts and CI), add --header "Authorization: Key $CHOPPITY_KEY".

In ~/.cursor/mcp.json:

{
"mcpServers": {
"choppity": {
"url": "https://api2.choppity.com/mcp",
"headers": { "Authorization": "Key YOUR_KEY" }
}
}
}

Run MCP: Open User Configuration from the command palette, add this, and use Copilot Chat in Agent mode:

{
"servers": {
"choppity": {
"type": "http",
"url": "https://api2.choppity.com/mcp",
"headers": { "Authorization": "Key YOUR_KEY" }
}
}
}

In ~/.codex/config.toml, then restart Codex:

[mcp_servers.choppity]
url = "https://api2.choppity.com/mcp"
http_headers = { "Authorization" = "Key YOUR_KEY" }

Any other client that speaks Streamable HTTP works the same way — with a sign-in if it supports MCP authorization, or with a key header if it doesn’t.

Apps you signed in with are listed under Settings → MCP → Connected apps. Disconnect cuts an app off within a minute. Access also stops if the workspace moves to the free plan or you stop being its owner.

ToolWhat it doesChanges anything
whoamiShows the workspace the key acts forno
start_clip_jobMakes clips from a YouTube link, a video file link or an upload_id. Uses your monthly analysis allowance.yes
get_clip_jobA job’s status and its clips: a link to open each clip in Choppity, and a low-resolution preview that plays in the browserno
start_renderFull-quality render of one clip. Uses your rendering allowance.yes
get_renderA render’s status and download linkno
create_uploadStarts uploading a file from your computer (up to 10 GB)yes
refresh_upload_urlsNew upload links for parts whose links expiredyes
complete_uploadFinishes an uploadyes
list_socialsYour connected social accountsno
list_clip_postsA clip’s post drafts and postsno
get_postOne postno
update_postEdits a draft’s caption, title or settingsyes
publish_postPosts publicly, now or at a scheduled timeyes
cancel_postCancels a scheduled post or discards a draftyes

Tools are labelled read-only or destructive, so assistants that respect those labels ask before posting, editing or cancelling.

The server can’t read your disk, but an assistant with a terminal can:

  1. create_upload with the file’s exact size and type returns an upload_id and a short bash script.
  2. The assistant saves the script and runs it: bash upload.sh ./recording.mp4 > parts.json. It uploads the file in parts (one part in memory at a time) and prints the parts list.
  3. complete_upload with that parts list.
  4. start_clip_job with the upload_id. Each upload feeds one clip job; to clip the same file again, upload it again.

Upload links last 4 hours. For a slow connection, refresh_upload_urls re-issues the ones that ran out.

The MCP server shares the rate limits of the REST API, per workspace: 60 requests a minute, and for get_clip_job, get_render, get_post and list_clip_posts the tighter status limits. A limited call comes back as a tool error that says how many seconds to wait. While a job or render is running, its status includes retry_after_seconds.