Videoslash API

MCP Configuration

Connect Videoslash MCP from Claude Desktop, Claude Code, Cursor, Codex CLI, and OpenCode.

MCP Configuration

All clients connect to the same server URL:

https://www.videoslash.com/api/mcp

There are two auth modes:

ClientAuth
Claude Desktop / claude.aiOAuth via Connectors UI (not claude_desktop_config.json)
Claude Code, Cursor, Codex, OpenCodeAPI key Authorization: Bearer vsl_...

Claude Desktop / claude.ai (Connectors)

No API key and no JSON config. Do not edit claude_desktop_config.json (the file with mcpServers, preferences, coworkUserFilesPath, etc.) for Videoslash — Desktop rejects remote url / headers entries there. Leave "mcpServers": {} alone and use Connectors:

  1. Open Customize → Connectors (or Settings → Connectors).
  2. Add custom connector.
  3. Name: Videoslash (or any label).
  4. Remote MCP server URL: https://www.videoslash.com/api/mcp
  5. Leave OAuth Client ID / Secret empty.
  6. Click Add, then Connect.
  7. Sign in to Videoslash if needed, then click Allow on the consent screen.

Claude receives an OAuth access token with full MCP account access (scripts, Creative Studio, and future MCP tools). Per-tool approval stays in Claude's connector UI. Disconnect from Claude to revoke.

Use the www host (https://www.videoslash.com/api/mcp). The apex domain can redirect in a way MCP clients reject.

Claude Code

This section is for the Claude Code CLI, not Claude Desktop. Config files are project .mcp.json or ~/.claude.json — never claude_desktop_config.json.

Coding agents use an API key. Store it in an environment variable:

export VIDSLASH_API_KEY=vsl_your_key_here
claude mcp add --transport http videoslash https://www.videoslash.com/api/mcp \
  --header "Authorization: Bearer $VIDSLASH_API_KEY"

Use --scope user for all projects, or --scope project to write a shared .mcp.json. The default --scope local stores the server under the current project path inside ~/.claude.json (do not hand-edit that nesting unless you know the shape).

Verify with /mcp inside Claude Code. The server should show as connected with the tools your key's scopes allow.

Project .mcp.json

For a team-shared config, create .mcp.json in the project root (or run claude mcp add ... --scope project). Claude Code requires "type": "http" for remote servers — a url without type is treated as a broken stdio entry.

{
  "mcpServers": {
    "videoslash": {
      "type": "http",
      "url": "https://www.videoslash.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${VIDSLASH_API_KEY}"
      }
    }
  }
}

Env expansion uses ${VAR} or ${VAR:-default} (not Cursor's ${env:VAR}). streamable-http is accepted as an alias for http. Project-scoped servers need approval the first time you open the repo in Claude Code.

claude mcp add-json

claude mcp add-json videoslash \
  '{"type":"http","url":"https://www.videoslash.com/api/mcp","headers":{"Authorization":"Bearer ${VIDSLASH_API_KEY}"}}' \
  --scope user

Cursor

Add to .cursor/mcp.json in your project or ~/.cursor/mcp.json globally:

{
  "mcpServers": {
    "videoslash": {
      "url": "https://www.videoslash.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${env:VIDSLASH_API_KEY}"
      }
    }
  }
}

Restart Cursor or reload MCP servers from Settings → Tools & MCP.

Codex CLI

Add a streamable HTTP server using an environment variable for the token:

codex mcp add videoslash --url https://www.videoslash.com/api/mcp \
  --bearer-token-env-var VIDSLASH_API_KEY

Inspect the saved config with codex mcp get videoslash.

OpenCode

Add to opencode.json:

{
  "mcp": {
    "videoslash": {
      "type": "remote",
      "url": "https://www.videoslash.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${VIDSLASH_API_KEY}"
      }
    }
  }
}

Or via CLI:

opencode mcp add videoslash --url https://www.videoslash.com/api/mcp \
  --header "Authorization=Bearer $VIDSLASH_API_KEY"

Required scopes (API keys only)

Claude Desktop OAuth grants full MCP access automatically. API keys still use scopes:

GoalScopes needed
Check account and creditsread (included on every key)
Browse Creative Studio modelsread
Generate titles and scriptsscripts:generate
Generate images and videoscreative:generate

Create keys in Account settings. Enable the write toggles for script and Creative Studio access.

Troubleshooting

SymptomFix
Connection fails or MCP client refuses redirectUse https://www.videoslash.com/api/mcp (with www), not the apex host.
mcp_registration_failed / couldn't registerRemove and re-add the connector, then try Connect again.
Consent page says unknown applicationRemove and re-add the connector so Claude can register again.
Claude Desktop rejects / strips MCP JSONDon't edit claude_desktop_config.json for Videoslash. Use Connectors → Add custom connector.
Claude Code: server skipped / missing typeUse project .mcp.json with "type": "http", or add via claude mcp add --transport http.
401 Unauthorized (API key clients)Key missing, revoked, or expired. Create a new key.
Fewer tools than expected (API key)Key lacks write scopes. Create a key with Allow script generation or Allow Creative Studio generation.
Tool returns insufficient_creditsSubscribe or add credits at Billing. In Claude Connectors, the model should share that link and summarize Premium (100 credits/month, Creative Studio, Pro Studio, API/MCP).
After Allow, free accounts land on Billing instead of ClaudeExpected for Claude Connectors without an active subscription. Use Skip now · Go back to Claude (or wait ~20s) to finish connecting. Subscribers still return to Claude immediately.
Local / attached file for image-to-image, image-to-video, or reference media in Claude ConnectorsPrefer the widget attach path: call create_creative_generation with mediaIntent (for optional params) and omit mediaUploads. The inline Creative Studio widget prompts the user to attach the file once in-browser and uploads without sending base64 through the model. Do not cat/base64 the file yourself — that causes long waits. Sandbox also blocks request_creative_media_upload (R2 PUT). Reconnect the connector after deploy so updated server instructions apply.
Local / attached file upload fails in Claude Connectors (host_not_allowed, cloudflarestorage.com, network restriction)Expected — Claude's sandbox blocks outbound PUT to presigned R2 URLs. Do not use request_creative_media_upload + curl there. Use the widget attach path above (or upload_creative_media only if bytes never surface in the model transcript; max 8MB).
Local file upload in Claude Code / Cursor / CodexUse request_creative_media_upload, PUT bytes to uploadUrl, then mediaUploads.
Creative output is a plain URL, not inline mediaExpected on Claude Code / Cursor (no MCP Apps). On Connectors, reconnect the server; inline previews require MCP Apps support and the creative:generate tools.
MCP App iframe blank or zero heightRemove and re-add the connector; ensure tool returns non-empty structuredContent. See MCP Apps troubleshooting.

On this page