Cut clips from YouTube videos in any format and get a direct download URL.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
An MCP server for the AppsGolem YouTube
cutter API. It lets an AI agent (Claude Desktop, Claude Code, Cursor, β¦) cut
clips from YouTube videos β in any format the web cutter supports β and get a
direct download URL back. The REST logic lives in a small, dependency-light
client (src/client.ts); src/server.ts is the thin MCP tool layer over it.
Get your API key β appsgolem.com/agents β sign up, add prepaid credits, and generate a key (
ag_live_β¦). That page also has copy-paste setup for Claude Code, Codex, Cursor, and any MCP client, plus a prompt cookbook.
fetch).ag_live_β¦) β get one at
appsgolem.com/agents (sign up β add credits β generate a key in
your dashboard). Credits are prepaid; buy a pack or a subscription, no
auto-renewal required.npx fetches and runs the server on demand β nothing to install globally.
Claude Desktop / Cursor β add to the client's MCP config (e.g.
claude_desktop_config.json):
Claude Code β one command:
The server speaks MCP over stdio (the transport those clients use). A
missing APPSGOLEM_API_KEY is not fatal at startup β the server still starts
and advertises its tools; each call then returns a clear config_error telling
you to set the key.
| Env var | Required | Default | Notes |
|---|---|---|---|
APPSGOLEM_API_KEY | yes | β | Your ag_live_β¦ key. |
APPSGOLEM_API_BASE | no | https://appsgolem.com | Override for self-host / dev. |
1 produced clip = 1 credit. 2160p (4K) = 4 credits per clip β except
audio_only, which stays 1. A source longer than 2 h adds +1 once
per job, but only when its duration is known (the surcharge is skipped if the
probe can't determine it). A batch/stitch of N clips costs N per-clip.
Failed cuts are never billed.
The server exposes three tools. A call that passes MCP input-schema
validation returns a structured result β the API's own JSON on success, or
{ "error": β¦ } on any handler/API failure β and never raises a protocol-level
error, so an agent always gets a usable object. (Invalid tool arguments are
rejected by the MCP SDK before the handler runs, as a text-only isError
result.)
cut_youtube_videoCut a clip (or a batch of clips) from a YouTube video. By default it waits
until the clip is produced and returns its status (including a download_url
once a download token is ready); set wait: false to submit and return
immediately with the current job (its state is normally queued after dispatch).
Parameters
| Name | Type | Default | Notes |
|---|---|---|---|
url | string | β | Required. YouTube watch / share / youtu.be URL. Playlists are rejected. |
start | string | β | Clip start: "SS", "MM:SS", or "HH:MM:SS" (β€ 300 h). Omit when using clips. |
end | string | β | Clip end, same formats (β€ 300 h). Omit when using clips. |
resolution | string | 1080p | 144p Β· 240p Β· 360p Β· 480p Β· 720p Β· 1080p Β· 1440p Β· 2160p (4K; total cut β€ 60 min). |
mode | string | video | video Β· audio_only Β· both Β· nosound Β· short Β· gif Β· frames (see Modes below). |
audio_format | string | β | The audio_only output format: mp3 Β· m4a Β· wav Β· flac (server defaults to mp3). both always produces MP3. |
bitrate | string | β | Lossy-audio bitrate 320 Β· 256 Β· 192 Β· 128 (default 320): MP3/M4A in audio_only, MP3 in both; ignored for WAV/FLAC. |
fast | boolean | false | Stream-copy (β10Γ faster, keyframe-aligned); video / nosound / both only. Mutually exclusive with a non-1Γ speed β if both are set, fast wins and speed is forced to 1.0. |
speed | number | 1.0 | Playback speed 0.5 Β· 1 Β· 1.25 Β· 1.5 Β· 2. video / nosound / both / audio_only. |
interval_ms | integer | 2000 | frames sampling interval: 100 Β· 500 Β· 1000 Β· 2000 Β· 5000 Β· 10000 (non-sheet extraction is capped at 1,800 JPGs total across all clips). |
burn_ts | boolean | false | frames: burn the source timestamp onto each JPG. |
sheet | boolean | false | frames: return a single contact-sheet JPG (2β80 frames, single clip). Setting it disables burn_ts. |
clips | array | β | An array of 1β10 { start, end } ranges instead of start/end (an empty array is rejected). |
stitch | boolean | false | With 2+ clips, join them into one file (else a zip of clips); ignored for a single clip. video / audio_only / both / short / nosound. |
idempotency_key | string | β | A stable key (β€ 200 chars) so a retried request reuses the same job (sent as the Idempotency-Key header). |
wait | boolean | true | Poll until ready, up to the timeout_seconds polling deadline. |
timeout_seconds | integer | 300 | Polling deadline in seconds (default 300). It bounds the polling only β the initial submission and one in-flight status request (each up to a 30 s request timeout) can extend total wall-clock. |
Returns (wait: true, default) β the produced job status. download_url is
present once a download token is available; if it isn't yet, poll again:
Returns (wait: false) β the job immediately, with its current state
(normally queued after dispatch) and no download_url yet; poll
get_cut_status with the id (or fetch poll_url):
If the wait times out before the clip is ready, the result carries
"still_processing": true and the job id β poll get_cut_status with that
id. If the job reaches a terminal failure, the result is
{ "error": "cut_failed", "state": "failed" | "refunded", "id": β¦ } (and no
credit is charged).
get_cut_statusCheck a cut job by its id. Use it to poll a job started with
cut_youtube_video(wait=false) or one that timed out.
| Name | Type | Notes |
|---|---|---|
job_id | string | Required. The job id (a UUID) returned by cut_youtube_video. |
Returns β the job's state; once produced/delivered it also carries a
download_url when a download token is available (otherwise poll again):
States progress accepted β queued β produced β delivered, or
failed β refunded on error.
get_account_balanceReturn the API account's spendable credit balance and current hourly cap. No parameters.
Returns
mode | Output | Notable options |
|---|---|---|
video | Video file, no watermark β normally MP4; fast preserves the source container (e.g. WebM at high res) | resolution, fast, speed |
audio_only | mp3 / m4a / wav / flac | audio_format, bitrate, speed |
both | Video + MP3 together, as a zip (fast may preserve the video's source container) | bitrate, fast, speed |
nosound | Video with no audio track β normally MP4; fast preserves the source container | resolution, fast, speed |
short | Portrait 9:16 β AI smart-crop when applicable, else a letterbox-blur fallback whose exact aspect depends on the source (Shorts / Reels / TikTok) | resolution |
gif | Animated GIF (β€ 5 min; no multi-clip) | resolution |
frames | JPG stills | interval_ms, burn_ts, sheet |
Because the agent picks the parameters from your request, you drive it in plain language:
cut_youtube_video(url, start="0:30", end="1:15")mode="audio_only", audio_format="mp3"mode="short", start="10:00", end="10:45"mode="gif"mode="frames", interval_ms=5000, sheet=trueclips=[{start:"0:10",end:"0:20"},{start:"1:00",end:"1:10"}], stitch=truefast=trueget_account_balance()No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/appsgolem-youtube-cutter)<a href="https://allmcps.com/mcp/appsgolem-youtube-cutter"><img src="https://allmcps.com/api/badge/appsgolem-youtube-cutter?style=directory" alt="AppsGolem YouTube Cutter on AllMCPs" /></a>