Video APIv1 Home OpenAPI spec

Docs › AI assistants (MCP)

AI assistants (MCP)

Video Piper is an MCP server, so AI assistants such as Claude, Cursor and VS Code can work with your videos: "cut the first 30 seconds of yesterday's demo and add captions", "blur any API keys in my latest recording", "give me an embed code for the onboarding video". It's the same account, limits and billing as the API: the assistant acts with your API key, and every tool is an API call.

Server URLhttps://api.videopiper.dev/v1/mcp
TransportStreamable HTTP (stateless: POST only, JSON answers)
AuthenticationAuthorization: Bearer vpk_…, your API key (a test key, vp_test_…, works on test videos)

Connect your assistant

Claude Code

claude mcp add --transport http video-piper https://api.videopiper.dev/v1/mcp \
  --header "Authorization: Bearer $VIDEO_API_KEY"

Cursor: ~/.cursor/mcp.json (or .cursor/mcp.json in a project)

{
  "mcpServers": {
    "video-piper": {
      "url": "https://api.videopiper.dev/v1/mcp",
      "headers": { "Authorization": "Bearer vpk_..." }
    }
  }
}

VS Code: .vscode/mcp.json (it asks for the key once and keeps it out of the file)

{
  "inputs": [{ "type": "promptString", "id": "video-piper-key", "description": "Video Piper API key", "password": true }],
  "servers": {
    "video-piper": {
      "type": "http",
      "url": "https://api.videopiper.dev/v1/mcp",
      "headers": { "Authorization": "Bearer ${input:video-piper-key}" }
    }
  }
}

Claude Desktop: claude_desktop_config.json, through the mcp-remote bridge (needs Node.js)

{
  "mcpServers": {
    "video-piper": {
      "command": "npx",
      "args": ["mcp-remote", "https://api.videopiper.dev/v1/mcp", "--header", "Authorization:${AUTH_HEADER}"],
      "env": { "AUTH_HEADER": "Bearer vpk_..." }
    }
  }
}

Connectors added in Claude.ai's settings sign in with OAuth, which isn't available yet; use one of the setups above.

Tools

ToolWhat it doesAPI call
list_videosYour videos, newest first; filter by metadataGET /videos
get_videoStatus, and once ready the playback, streaming, download and poster links, captions and chaptersGET /videos/{id}
import_videoA new video from a URL, with trim, redactions, auto-redaction and captionsPOST /videos with sourceUrl
edit_videosTrim one video or join several, with crossfadesPOST /videos with edit
reprocess_videoA new copy with other quality, trim, redactions, auto-redaction, captions or layoutPOST /videos/{id}/reprocess
set_chaptersReplace a video's chaptersPUT /videos/{id}/chapters
update_video_detailsTitle, description and metadataPATCH /videos/{id}
set_embedTurn the embeddable player on (with its iframe code) or offPUT /videos/{id}/embed
get_usageA month's minutes, storage and delivery against your planGET /usage
cancel_processingStop a video that is still processingPOST /videos/{id}/cancel
delete_videoDelete a video for good (marked destructive: assistants ask you first)DELETE /videos/{id}

Good to know:

  • Processing is asynchronous. A tool that makes a video returns its videoId straight away; the assistant checks on it with get_video.
  • Local files don't go through MCP. Import from a public or pre-signed URL, or upload in the app or with the API, then work on the video with the assistant.
  • Mistakes come back as the API's errors, with the field and what's wrong, so the assistant can fix the request. Tools that start work accept dryRun to check a request first.
  • Your key gives the assistant your account's access. Use a test key while trying it out, and revoke a key in Account if it leaks.