Connects your AI assistant to CrabCut's video clipping API for turning YouTube videos into vertical short-form content. Exposes five tools: generate_clips kicks off processing and returns a project ID, get_project_status polls for completion and returns scored clips with download URLs, list_projects shows your history, get_clip fetches individual clip details, and check_usage reports your credit balance. Clips come back reframed for 9:16 with auto-generated subtitles and a relevance score. Useful if you're building content workflows where an LLM identifies interesting videos and you want downloadable clips without manual editing. Supports webhooks for async workflows and works over standard MCP transports or their HTTP endpoint for n8n integrations.
Public tool metadata for what this MCP can expose to an agent.
generate_clipsStart AI clip generation from a YouTube video. Returns {project_id, status, poll_url, estimated_minutes}. Poll with get_project_status every 10-15 seconds, or provide a callback_url for webhook notification.4 paramsStart AI clip generation from a YouTube video. Returns {project_id, status, poll_url, estimated_minutes}. Poll with get_project_status every 10-15 seconds, or provide a callback_url for webhook notification.
urlstringend_timenumberstart_timenumbercallback_urlstringget_project_statusReturns {id, name, status, step, error, expected_clips, duration, clips[]}. Clips sorted by score, each with clip_status (pending/exporting/completed/failed) and download_url when ready.1 paramsReturns {id, name, status, step, error, expected_clips, duration, clips[]}. Clips sorted by score, each with clip_status (pending/exporting/completed/failed) and download_url when ready.
project_idstringlist_projectsReturns {projects[], total, limit, offset}. Each project has id, name, status, step, expected_clips, clips_count, duration, created_at.2 paramsReturns {projects[], total, limit, offset}. Each project has id, name, status, step, expected_clips, clips_count, duration, created_at.
limitnumberstatusstringpending · processing · completed · completed_no_clips · failedget_clipReturns full clip details: id, project_id, title, duration, score, reason, export_status, export_quality, is_exported, video_url, thumbnail_url.1 paramsReturns full clip details: id, project_id, title, duration, score, reason, export_status, export_quality, is_exported, video_url, thumbnail_url.
clip_idstringcheck_usageReturns {plan, credits_remaining, credits_total, period_start, period_end}. Check before generate_clips to confirm enough credits.Returns {plan, credits_remaining, credits_total, period_start, period_end}. Check before generate_clips to confirm enough credits.
No parameter schema in public metadata yet.
Turn YouTube videos into short clips — from Claude, Cursor, or any AI assistant that supports MCP.
Give it a YouTube link. It finds the best moments, reframes for vertical video (9:16), adds subtitles, and returns download-ready clips.
CRABCUT_API_KEY=sk_live_... npx @crabcut/mcp-server
Add to your config file — claude_desktop_config.json for Claude, .cursor/mcp.json for Cursor:
{
"mcpServers": {
"crabcut": {
"command": "npx",
"args": ["@crabcut/mcp-server"],
"env": {
"CRABCUT_API_KEY": "sk_live_..."
}
}
}
}
npx @smithery/cli mcp add crabcut/crabcut-mcp-server
For n8n, custom integrations, or any client that supports remote MCP:
https://mcp.crabcut.ai/mcpAuthorization: Bearer sk_live_...| Tool | What it does |
|---|---|
generate_clips | Start clip generation from a YouTube URL. Returns a project_id right away. |
get_project_status | Check progress and get clips when ready. Clips are sorted by score (best first). |
list_projects | List your projects with status and clip counts. |
get_clip | Get full details for a single clip. |
check_usage | See your plan, remaining credits, and usage. |
generate_clips with a YouTube URLproject_id immediatelyget_project_status every 10–15 seconds (or pass a callback_url for webhook)download_urlProject: pending → processing → completed (or completed_no_clips / failed)
Processing steps: queued → DOWNLOADING_VIDEO → EXTRACTING_AUDIO → TRANSCRIBING → DETECTING_HIGHLIGHTS → CUTTING_CLIPS → EXPORTING_CLIPS → done
Clips: pending → exporting → completed (or failed). The download_url is available when clip_status is completed.
generate_clipsStart clip generation from a YouTube video.
| Field | Type | Required | Description |
|---|---|---|---|
url | string | Yes | Full YouTube video URL |
start_time | number | No | Start time in seconds (to process only a segment) |
end_time | number | No | End time in seconds (to process only a segment) |
callback_url | string | No | Webhook URL to receive results when done |
{
"project_id": "43dbe622-8ac6-4579-9625-0ad7f0f9db0b",
"status": "processing",
"poll_url": "/api/v1/projects/43dbe622-8ac6-4579-9625-0ad7f0f9db0b",
"estimated_minutes": 5,
"message": "Processing started. Poll with get_project_status every 10-15 seconds until status is 'completed'."
}
get_project_statusCheck progress and get clips.
| Field | Type | Required | Description |
|---|---|---|---|
project_id | string | Yes | The project ID from generate_clips |
{
"id": "43dbe622-...",
"name": "Video Title",
"status": "completed",
"step": "done",
"error": null,
"expected_clips": 9,
"duration": 639,
"created_at": "2026-03-15T02:21:46.226Z",
"clips": [
{
"id": "32538b9c-...",
"title": "One Dating Theory Leads to Chaos",
"duration": 41.83,
"score": 90,
"reason": "Sharp universal joke that hooks instantly with strong reactions.",
"clip_status": "completed",
"download_url": "https://cdn.crabcut.ai/exports/premium/.../clip-32538b9c-....mp4",
"quality": "1080p",
"thumbnail_url": "https://cdn.crabcut.ai/exports/premium/.../clip-32538b9c-...-thumb.jpg",
"created_at": "2026-03-15T02:29:10.954Z",
"updated_at": "2026-03-15T02:30:43.907Z"
}
]
}
Clips are sorted by score (highest first).
list_projects| Field | Type | Required | Description |
|---|---|---|---|
limit | number | No | Max projects to return. Default 20, max 100. |
status | string | No | Filter: pending, processing, completed, completed_no_clips, failed |
{
"projects": [
{
"id": "43dbe622-...",
"name": "Video Title",
"status": "completed",
"step": "done",
"expected_clips": 9,
"clips_count": 8,
"duration": 639,
"created_at": "2026-03-15T02:21:46.226Z"
}
],
"total": 1,
"limit": 20,
"offset": 0
}
get_clip| Field | Type | Required | Description |
|---|---|---|---|
clip_id | string | Yes | The clip ID from a project's clips array |
{
"id": "32538b9c-...",
"project_id": "43dbe622-...",
"title": "One Dating Theory Leads to Chaos",
"duration": 41.83,
"score": 90,
"reason": "Sharp universal joke that hooks instantly.",
"export_status": "completed",
"export_quality": "1080p",
"is_exported": true,
"video_url": "https://cdn.crabcut.ai/...",
"video_url_720p": "https://cdn.crabcut.ai/...",
"video_url_1080p": "https://cdn.crabcut.ai/...",
"thumbnail_url": "https://cdn.crabcut.ai/...",
"created_at": "2026-03-15T02:29:10.954Z",
"updated_at": "2026-03-15T02:30:43.907Z"
}
check_usageNo input required.
{
"plan": "pro",
"credits_remaining": 450,
"credits_total": 500,
"period_start": "2026-03-01T00:00:00.000Z",
"period_end": "2026-04-01T00:00:00.000Z"
}
| HTTP Status | Error | What to do |
|---|---|---|
| 400 | Invalid YouTube URL | Check the URL format |
| 401 | Unauthorized | Check your API key |
| 402 | Insufficient credits | Buy more credits or use a shorter video |
| 429 | Rate limit exceeded | Wait and try again |
| 500 | Internal server error | Try again later |
Pass a callback_url when calling generate_clips to receive a POST when all clips are ready.
Completed:
{
"event": "project.completed",
"project_id": "43dbe622-...",
"status": "completed",
"source_url": "https://www.youtube.com/watch?v=H51iLa1leOU",
"clips": [
{
"id": "32538b9c-...",
"title": "One Dating Theory Leads to Chaos",
"duration": 41.83,
"score": 90,
"download_url": "https://cdn.crabcut.ai/exports/premium/.../clip-32538b9c-....mp4",
"thumbnail_url": "https://cdn.crabcut.ai/exports/premium/.../clip-32538b9c-...-thumb.jpg",
"quality": "1080p"
}
]
}
Failed:
{
"event": "project.failed",
"project_id": "43dbe622-...",
"status": "failed",
"error": "YouTube video is unavailable",
"clips": []
}
Clips are sorted by score (highest first). We retry up to 3 times if your server doesn't respond.
Signature verification (optional): Each callback includes an X-Crabcut-Signature header. Compute HMAC-SHA256 of the request body using SHA-256(your_api_key) as the signing key. Compare with the header value (sha256=<hex>).
Option A — Webhook (recommended):
POST https://api.crabcut.ai/api/v1/clips/generate with Header Auth (Authorization: Bearer sk_live_...) and body:
{
"url": "https://www.youtube.com/watch?v=...",
"callback_url": "https://your-n8n.com/webhook/abc123"
}
{{ $json.clips[0].download_url }}Option B — Polling loop:
POST to generate clips (same as above, without callback_url).https://api.crabcut.ai/api/v1/projects/{{ $json.project_id }} → IF status is not completed, loop back to Wait.For direct HTTP calls without MCP:
| Method | Endpoint | Description |
|---|---|---|
POST | /api/v1/clips/generate | Start clip generation |
GET | /api/v1/projects/:id | Get project status and clips |
GET | /api/v1/projects | List projects |
GET | /api/v1/clips/:id | Get single clip details |
GET | /api/v1/account/usage | Check credits and plan |
Base URL: https://api.crabcut.ai — All endpoints require Authorization: Bearer sk_live_...
| Variable | Required | Default |
|---|---|---|
CRABCUT_API_KEY | Yes | — |
CRABCUT_API_URL | No | https://api.crabcut.ai |
MIT
CRABCUT_API_KEY*secretYour Crabcut API key from app.crabcut.ai/developers
io.github.socialapishub/social-media-api
io.github.xpaysh/social-media
com.thenextgennexus/youtube-media-mcp-server
io.github.ludmila-omlopes/youtube-video-analyzer
csoai-org/social-media-ai-mcp
com.ezbizservices/social-media