
Connects Claude to the full CutPro API for AI-driven video clipping. You get 34 tools covering the entire workflow: analyze a long video, submit it for clipping, list the AI-generated clips sorted by rating, apply editing templates, render to MP4, and publish to TikTok, Instagram, or YouTube. Works over stdio for local clients and a hosted Streamable HTTP endpoint with OAuth for ChatGPT and Claude.ai. Requires a CutPro Pro plan and API key. Token-efficient by design: list operations cap results and omit signed URLs unless requested. Reach for this when you want to automate virality from raw footage without leaving the LLM context.
Public tool metadata for what this MCP can expose to an agent.
get_workspaceThe workspace this key resolved to, with plan and role.The workspace this key resolved to, with plan and role.
No parameter schema in public metadata yet.
get_balanceCurrent credit balance of the workspace.Current credit balance of the workspace.
No parameter schema in public metadata yet.
get_balance_historyLedger of credits added and consumed.4 paramsLedger of credits added and consumed.
limitintegerpageintegerreference_typestringtypestringlist_videosYour source video library.3 paramsYour source video library.
limitintegerpageintegersortstringdelete_videoDelete a source video and its submissions/clips.1 paramsDelete a source video and its submissions/clips.
video_idstringstart_uploadGet a presigned URL to upload your own video file. PUT the bytes to upload_url (same content_type), then call complete_upload. Max 2 GB; .mp4/.mov/.webm/.mkv.3 paramsGet a presigned URL to upload your own video file. PUT the bytes to upload_url (same content_type), then call complete_upload. Max 2 GB; .mp4/.mov/.webm/.mkv.
content_typestringfile_namestringfile_sizenumbercomplete_uploadRegister a finished upload (after the PUT) and get its metadata and credit cost. Returns a video_id for submit_clipping.5 paramsRegister a finished upload (after the PUT) and get its metadata and credit cost. Returns a video_id for submit_clipping.
durationnumberfile_namestringheightnumbervideo_idstringwidthnumberanalyze_videoPreview metadata and credit cost of a public video URL (YouTube, Twitch, Kick, TikTok). Free. Returns a video_id for submit_clipping.1 paramsPreview metadata and credit cost of a public video URL (YouTube, Twitch, Kick, TikTok). Free. Returns a video_id for submit_clipping.
urlstringsubmit_clippingStart AI clipping. Charges credits immediately (call analyze_video first). Returns submission_id to poll with get_submission.5 paramsStart AI clipping. Charges credits immediately (call analyze_video first). Returns submission_id to poll with get_submission.
source_languagestringauto · en · ptstrategy_idstringtemplate_idstringtimeframeobjectvideo_idstringlist_submissionsClipping jobs for a video.3 paramsClipping jobs for a video.
limitintegerpageintegervideo_idstringget_submissionPoll a submission until status is 'completed' or 'failed'.2 paramsPoll a submission until status is 'completed' or 'failed'.
submission_idstringvideo_idstringdelete_submissionDelete a submission and its clips.2 paramsDelete a submission and its clips.
submission_idstringvideo_idstringlist_clipsClips of a completed submission, rating-sorted. URLs omitted unless include_urls is true (they are long).5 paramsClips of a completed submission, rating-sorted. URLs omitted unless include_urls is true (they are long).
include_urlsbooleanlimitintegermin_ratingnumbersubmission_idstringvideo_idstringapply_templateApply an editing template to clips of a submission in bulk. Omit clip_ids to apply to all.4 paramsApply an editing template to clips of a submission in bulk. Omit clip_ids to apply to all.
clip_idsarraysubmission_idstringtemplate_idstringvideo_idstringdelete_clipDelete a single generated clip.3 paramsDelete a single generated clip.
clip_idstringsubmission_idstringvideo_idstringlist_templatesEditing templates to apply to clips. Use an id as template_id.4 paramsEditing templates to apply to clips. Use an id as template_id.
filterstringlimitintegerpageintegersortstringrender_clipRender a clip to a final MP4. Returns render_id (poll with get_render). download_url is included when served from cache.3 paramsRender a clip to a final MP4. Returns render_id (poll with get_render). download_url is included when served from cache.
clip_idstringsubmission_idstringvideo_idstringlist_rendersYour render jobs.3 paramsYour render jobs.
limitintegerpageintegerstatusstringget_render_limitsRender quota and limits for the workspace.Render quota and limits for the workspace.
No parameter schema in public metadata yet.
get_renderPoll a render until status is 'completed'.1 paramsPoll a render until status is 'completed'.
render_idstringget_render_downloadSigned download URL of a completed render.1 paramsSigned download URL of a completed render.
render_idstringcancel_renderCancel an in-progress render or delete a finished one.1 paramsCancel an in-progress render or delete a finished one.
render_idstringstart_bulk_downloadBundle several renders into one download. Returns a jobId to poll with get_bulk_download.1 paramsBundle several renders into one download. Returns a jobId to poll with get_bulk_download.
render_idsarrayget_bulk_downloadPoll a bulk download job until ready.1 paramsPoll a bulk download job until ready.
job_idstringcreate_postPublish rendered clips to connected accounts. Each video has an editId (the render's edit_setting_id) and targets (connectionId + per-platform metadata). Set scheduled_at (ISO 8601) to schedule.2 paramsPublish rendered clips to connected accounts. Each video has an editId (the render's edit_setting_id) and targets (connectionId + per-platform metadata). Set scheduled_at (ISO 8601) to schedule.
scheduled_atstringvideosarraylist_postsYour posts.3 paramsYour posts.
limitintegerpageintegerstatusstringget_postA post with its per-account items and statuses.1 paramsA post with its per-account items and statuses.
idstringupdate_postUpdate a pending post, e.g. reschedule or adjust items.3 paramsUpdate a pending post, e.g. reschedule or adjust items.
idstringitemsarrayscheduled_atstringpublish_postTrigger immediate publishing of a post.1 paramsTrigger immediate publishing of a post.
idstringretry_post_itemRetry a single failed post item without disturbing the others.2 paramsRetry a single failed post item without disturbing the others.
idstringitem_idstringdelete_post_itemRemove a single item from a post.2 paramsRemove a single item from a post.
idstringitem_idstringdelete_postDelete an entire post.1 paramsDelete an entire post.
idstringlist_connectionsConnected social accounts. Use an id as connectionId in create_post.3 paramsConnected social accounts. Use an id as connectionId in create_post.
limitintegerpageintegerplatformstringget_connectionA single connected account.1 paramsA single connected account.
idstringA Model Context Protocol (MCP) server for AI images, videos, personas and clips. It exposes the full CutPro API as tools, so an LLM can:
server/discover, cacheable lists, multi round-trip requests) and every earlier revision, on the same endpoint.Most clients use the same JSON. Add your API key under env:
{
"mcpServers": {
"cutpro": {
"command": "npx",
"args": ["-y", "@cutpro/mcp@latest"],
"env": { "CUTPRO_API_KEY": "<your-api-key>" }
}
}
}
After installing via a button, add your CUTPRO_API_KEY to the server's env.
claude mcp add cutpro --env CUTPRO_API_KEY=<your-api-key> -- npx -y @cutpro/mcp@latest
Add to claude_desktop_config.json (Settings, Developer, Edit Config):
{
"mcpServers": {
"cutpro": {
"command": "npx",
"args": ["-y", "@cutpro/mcp@latest"],
"env": { "CUTPRO_API_KEY": "<your-api-key>" }
}
}
}
Add the standard config above to the client's MCP settings (mcp.json / mcpServers).
Open the MCP Servers panel, choose Configure, and add the standard config above.
gemini mcp add cutpro npx -y @cutpro/mcp@latest -e CUTPRO_API_KEY=<your-api-key>
Add to ~/.codex/config.toml:
[mcp_servers.cutpro]
command = "npx"
args = ["-y", "@cutpro/mcp@latest"]
env = { "CUTPRO_API_KEY" = "<your-api-key>" }
Use the hosted server. Add a custom connector pointing to:
https://mcp.cut.pro
You sign in to cut.pro, pick the workspace and approve the connection, so no API key and no local setup are needed. Any CutPro plan can connect; jobs use the workspace's credits. Disconnect at any time in Settings, under Connected apps.
The plugin bundles the hosted server with a skill that teaches Claude the CutPro workflows:
claude plugin marketplace add getcutpro/mcp
claude plugin install cutpro@cutpro
Every install stays current on its own:
https://mcp.cut.pro, the Claude plugin and the ChatGPT app): always the latest release, nothing to do.npx -y @cutpro/mcp@latest): on start the server checks npm and, when a newer release exists, hands the session to it. This works even for a pinned version or a stale npx cache. Set CUTPRO_MCP_AUTO_UPDATE=0 to stay on the installed version; the server then tells the model an update is available.Every release is listed with its notes in Releases and CHANGELOG.md.
The server is configured with environment variables.
| Variable | Description | Required |
|---|---|---|
CUTPRO_API_KEY | Your CutPro API key. | Yes (stdio) |
CUTPRO_WORKSPACE_ID | Selects the workspace for multi-workspace keys. | No |
CUTPRO_API_URL | Override the API base URL. Defaults to https://api.cut.pro/api/v1. | No |
CUTPRO_MCP_AUTO_UPDATE | 0 keeps the installed version instead of switching to the newest release. | No |
| Variable | Description |
|---|---|
MCP_TRANSPORT=http / PORT | Serve Streamable HTTP at the root instead of stdio. |
MCP_OAUTH=1 | Enable the full OAuth 2.1 layer (discovery, DCR, PKCE) for browser clients. |
MCP_PUBLIC_URL | Public endpoint, e.g. https://mcp.cut.pro. Its origin becomes the OAuth issuer. |
MCP_REDIS_URL | Back OAuth state with Redis so it survives restarts and scales across instances. |
CUTPRO_APP_URL | Where the consent screen lives. Defaults to https://cut.pro. |
OPENAI_APPS_CHALLENGE | Domain verification token from the OpenAI plugin portal, served at /.well-known/openai-apps-challenge. |
MCP_TRANSPORT=http PORT=8787 MCP_OAUTH=1 \
MCP_PUBLIC_URL=https://mcp.cut.pro MCP_REDIS_URL=redis://127.0.0.1:6379 \
npx -y @cutpro/mcp@latest
In OAuth mode the user signs in on cut.pro and approves the app there; cut.pro creates a key for that app and workspace, and the access token maps server side to it. Clients can register dynamically (DCR) or present a Client ID Metadata Document (CIMD). Without MCP_REDIS_URL, an in-memory store is used (single instance, state lost on restart).
The tools are built from the API's own OpenAPI spec (/api/v1/openapi.json), so they always match the API reference: one tool per endpoint, named after its operationId in snake case (analyzeVideo is analyze_video, createSubmission is create_submission), with the endpoint's own parameters, descriptions and responses. A new endpoint becomes a tool within ten minutes of reaching the API, with no new release of this package.
The usual flows:
list_generation_models, create_generation with the agreed price, get_generation until it is ready. Pass a ready image's output.image_id to animate it.get_persona_catalog, create_persona, get_persona until its photo is ready, save_persona, then quote_persona_swap and create_persona_video to put it in a video.analyze_video, create_submission, get_submission until it completes, list_clips, render_clip, get_render and download_render.Annotations come from the spec too: GET is read-only, PUT, PATCH and DELETE are destructive, and a route declares more in its x-mcp extension (spending credits, publishing to a social network, reaching an arbitrary public URL). Routes that need a file uploaded from disk are listed only by the local (stdio) server, since a chat client cannot send bytes.
90 tools and 5 prompts, generated from the live API spec and the server.
Ready-made requests your client offers as shortcuts (the / menu in Claude).
| Prompt | What it does |
|---|---|
generate_video | Turn an idea into a video with Veo, Kling, Seedance, Wan or any other model. |
product_ad | An ad image of your product, animated into a vertical video ready to post. |
create_persona | A realistic person that stays the same in every photo and video. |
clip_and_schedule | The best moments of a long video, rendered and scheduled one per day. |
transcribe | Timed captions of a video or audio, plus a short summary. |
| Tool | What it does | Notes |
|---|---|---|
get_workspace | Get current workspace |
| Tool | What it does | Notes |
|---|---|---|
get_balance | Get balance | |
get_balance_history | Get credit history |
| Tool | What it does | Notes |
|---|---|---|
create_video_upload | Start an upload | local server only |
complete_video_multipart_upload | Finalize a multipart upload | local server only |
abort_video_multipart_upload | Discard a multipart upload | local server only |
complete_video_upload | Complete an upload | local server only |
list_videos | List videos | |
delete_video | Delete a video |
| Tool | What it does | Notes |
|---|---|---|
create_submission | Submit a video for clipping | |
analyze_video | Analyze a video | |
list_submissions | List submissions | |
get_submission | Get submission | |
delete_submission | Delete submission | |
retry_submission | Retry a failed submission |
| Tool | What it does | Notes |
|---|---|---|
apply_template | Apply template to clips | |
list_clips | List generated clips | opens the CutPro player |
delete_clip | Delete a clip | |
download_clip_subtitles | Download a clip's captions |
| Tool | What it does | Notes |
|---|---|---|
render_clip | Render a clip | opens the CutPro player |
render_broadcast_clip | Render a broadcast clip | |
get_render_limits | Get render quota | |
create_render | Render an edit | |
list_renders | List renders | |
create_bulk_download | Start a bulk download | |
get_bulk_download | Get bulk download status | |
get_render | Get render status | opens the CutPro player |
delete_render | Cancel or delete a render | |
download_render | Get render download URL | opens the CutPro player |
| Tool | What it does | Notes |
|---|---|---|
list_connections | List connections | |
get_connection_link | Get the link to connect an account | |
get_connection | Get a connection |
| Tool | What it does | Notes |
|---|---|---|
list_monitors | List monitored channels | |
create_monitor | Monitor a channel | |
get_monitor | Get a monitored channel | |
update_monitor | Update a monitor | |
delete_monitor | Stop watching a channel | |
start_monitor | Start monitoring | |
stop_monitor | Stop monitoring | |
list_broadcasts | List broadcasts of a live monitor | |
list_broadcast_clips | List clips of a broadcast | |
apply_broadcast_template | Apply template to broadcast clips |
| Tool | What it does | Notes |
|---|---|---|
create_post | Create a post | |
list_posts | List posts | |
get_post | Get a post | |
cancel_post | Cancel a post | |
update_post | Update a post | |
publish_post | Trigger publish | |
retry_post_item | Retry a failed item | |
delete_post_item | Delete a post item |
| Tool | What it does | Notes |
|---|---|---|
list_templates | List templates |
| Tool | What it does | Notes |
|---|---|---|
create_transcription_upload | Start an upload | local server only |
create_transcription | Transcribe a media file | |
list_transcriptions | List transcriptions | |
get_transcription | Get transcription status | |
delete_transcription | Delete a transcription | |
get_transcription_cues | Get the transcript as JSON | |
download_transcription | Download the transcript as a subtitle file |
| Tool | What it does | Notes |
|---|---|---|
get_persona_catalog | Get traits, prices and limits | |
list_persona_presets | List ready-made characters | |
create_persona_from_preset | Create a persona from a ready-made character | opens the CutPro player |
favorite_persona_preset | Star a ready-made character | |
list_personas | List personas | opens the CutPro player |
create_persona | Create a persona | opens the CutPro player |
upload_persona_face | Upload a reference photo | local server only |
quote_persona_swap | Price a swap video | |
create_persona_source_upload | Upload a source video | local server only |
complete_persona_source_upload | Complete a source video upload | local server only |
get_persona | Get a persona | opens the CutPro player |
delete_persona | Delete a persona | |
regenerate_persona | Regenerate or edit the persona photo | opens the CutPro player |
restore_persona_version | Restore a persona version | |
rate_persona_version | Rate a persona photo | |
rate_persona_video | Rate a persona video | |
save_persona | Save or rename a persona | |
create_persona_video | Create a persona video | spends credits, asks first, opens the CutPro player |
list_persona_videos | List a persona's videos | opens the CutPro player |
get_persona_video | Get a persona video | opens the CutPro player |
read_persona_shot_product | Read a product from its page link | |
upload_persona_shot_photo | Upload a product photo | local server only |
create_persona_shot | Create a persona photo | spends credits, asks first |
list_persona_shots | List a persona's photos | |
get_persona_shot | Get a persona photo |
| Tool | What it does | Notes |
|---|---|---|
list_generation_models | List image and video models and their prices | |
upload_generation_image | Upload a reference image | local server only |
create_generation | Generate an image or a video | spends credits, asks first, opens the CutPro player |
list_generations | List generations | opens the CutPro player |
get_generation | Get a generation | opens the CutPro player |
delete_generation | Delete a generation | |
download_generation | Get the download link of a generation |
io.github.getcutpro/cutproMIT
CUTPRO_API_KEY*secretYour CutPro API key (Pro plan). Generate one at https://cut.pro/studio/me/api-keys.
CUTPRO_WORKSPACE_IDOnly needed for multi-workspace keys.