MCP Server

EditClips exposes an MCP (Model Context Protocol) server that lets AI agents process video and audio files using natural language. Connect Claude Desktop, Cursor, or any MCP-compatible client to create jobs, check status, and manage your balance — all through tool calls.

Endpoint

POST https://editclips.online/mcp

Uses Streamable HTTP transport (stateless). Authentication is the same Bearer API key used by the REST API.

Quick setup

Add EditClips to your MCP client config (e.g. Claude Desktop claude_desktop_config.json, Cursor, or .mcp.json):

{
  "mcpServers": {
    "editclips": {
      "type": "http",
      "url": "https://editclips.online/mcp",
      "headers": {
        "Authorization": "Bearer ec_live_YOUR_KEY"
      }
    }
  }
}

Create an API key from your Account page under API Keys.

Available tools

The MCP server exposes 5 tools:

Tool Description
list_tools List all 27 video/audio processing tools with their options
create_job Create a processing job from URL inputs
get_job Check job status and get the download URL when complete
cancel_job Cancel a job and refund reserved credits
get_balance Check your current credit balance

create_job parameters

Parameter Type Description
tool string Tool slug from list_tools (e.g. "compress-video")
inputs string[] Public URLs to input files
options object Tool-specific options (optional)
webhook string HTTPS URL for completion notification (optional)
durationMs number Input duration in ms, for credit estimation (optional)
width number Input width in px, for credit estimation (optional)
height number Input height in px, for credit estimation (optional)

Example: manual requests

You can test the MCP endpoint directly with curl. First, initialize:

curl -X POST https://editclips.online/mcp \
  -H "Authorization: Bearer ec_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "method": "initialize",
    "params": {
      "protocolVersion": "2025-03-26",
      "capabilities": {},
      "clientInfo": {"name": "my-app", "version": "1.0.0"}
    },
    "id": 1
  }'

Then discover available processing tools:

{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "list_tools",
    "arguments": {}
  },
  "id": 2
}

Create a job:

{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "create_job",
    "arguments": {
      "tool": "compress-video",
      "inputs": ["https://example.com/video.mp4"],
      "durationMs": 30000,
      "width": 1280,
      "height": 720
    }
  },
  "id": 3
}

Check job status:

{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "get_job",
    "arguments": {
      "id": "JOB_ID_FROM_CREATE"
    }
  },
  "id": 4
}

Response format

Responses use Server-Sent Events (SSE) format:

event: message
data: {"result":{"content":[{"type":"text","text":"..."}]},"jsonrpc":"2.0","id":1}

Tool results are returned as JSON text in the content[0].text field. Parse this string to get the structured data.

Error handling

Tool errors return isError: true in the result with a descriptive message:

{"result":{"content":[{"type":"text","text":"Unknown tool 'foo'. Use list_tools to see available tools."}],"isError":true}}

Authentication errors return HTTP 401 before reaching the MCP layer.

Notes

  • The server is stateless — each request creates a fresh session. No session management needed.
  • The same API key and credit balance are shared between MCP and REST API access.
  • Rate limits apply per API key (60 requests/minute), same as the REST API.
  • File upload (presigned URLs) is only available via the REST API. MCP supports URL inputs only.