# OpusClip (npm · @mindstone/mcp-server-opus-video-clip)

OpusClip MCP server — clip long-form videos, manage projects, collections, censor jobs, posts

- Trust score: 65/100 (medium)
- Change this week: +33
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-07

## Components

- npm · `@mindstone/mcp-server-opus-video-clip`: 65/100 (this document), [markdown](https://verifymcp.io/servers/mindstone-mcp-server-opus-video-clip/mindstone-mcp-server-opus-video-clip.md), [page](https://verifymcp.io/servers/mindstone-mcp-server-opus-video-clip/mindstone-mcp-server-opus-video-clip)

## Channel facts

- Registry: `npm`
- Package: `@mindstone/mcp-server-opus-video-clip`
- Version: `0.1.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-07.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Known CVEs were checked across the 95 of 99 dependencies we could resolve, so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Dependency health was assessed across the 95 of 99 dependencies we could resolve, so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 32/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - License check failed: the license (FSL-1.1-MIT) isn't a recognized OSI-approved license.
  - Actively maintained (last published 78 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 69/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 2407 tokens (~114/item across 21 items; 21 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 37/100
  - Stability observed for 11 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 81/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 44% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add mindstone-mcp-server-opus-video-clip -- npx -y @mindstone/mcp-server-opus-video-clip
```

### Codex

```bash
codex mcp add mindstone-mcp-server-opus-video-clip -- npx -y @mindstone/mcp-server-opus-video-clip
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mindstone-mcp-server-opus-video-clip": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@mindstone/mcp-server-opus-video-clip"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add mindstone-mcp-server-opus-video-clip --command npx --arg -y --arg @mindstone/mcp-server-opus-video-clip
```

### Hermes

```yaml
mcp_servers:
  mindstone-mcp-server-opus-video-clip:
    command: "npx"
    args: ["-y", "@mindstone/mcp-server-opus-video-clip"]
```

### Other

```json
{
  "mcpServers": {
    "mindstone-mcp-server-opus-video-clip": {
      "command": "npx",
      "args": [
        "-y",
        "@mindstone/mcp-server-opus-video-clip"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-07 (score 65, +1)

No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-05 (score 64, +1)

No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-03 (score 63, +4)

- [functional improvement] Stability: unverified → 0.23

### 2026-08-02 (score 59, +27)

- [security regression] Provenance: unverified → fail
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Install scripts: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional regression] License: unverified → fail
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional] Licence: FSL-1.1-MIT

### 2026-08-01 (score 32, 0)

- [security] Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.

### 2026-07-31 (score 32, −22)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 54, −18)

- [security regression] Known CVEs: partial → unverified
- [security regression] Provenance: fail → unverified
- [security regression] Install scripts: pass → unverified
- [functional regression] License: fail → unverified
- [functional regression] Dependency health: partial → unverified
- [functional regression] Maintenance: pass → unverified
- [functional] Licence: FSL-1.1-MIT

### 2026-07-28 (score 72, +29)

- [security regression] Provenance: unverified → fail
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Install scripts: unverified → pass
- [functional regression] License: unverified → fail
- [functional improvement] Schema quality: unverified → good
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional] Licence: FSL-1.1-MIT

## MCP tools (21)

### `configure_opus_api_key` (~100 tokens)

Configure the OpusClip API key for this session. WHEN TO USE: only call this if you get an error saying "Opus API key not configured" or "AUTH_FAILED". HOW USER GETS THEIR KEY: go to https://app.opus.pro/settings/integration-tokens and create a new token. After configuring, all other opus_* tools will work immediately.

Input parameters:

- `api_key` (string, required): The OpusClip API token

### `opus_get_brand_templates` (~116 tokens)

List the OpusClip brand templates available to your organisation. Brand templates control captions, fonts, colours, intro/outro cards, and other styling. Use a brand_template_id from this response with opus_create_project or opus_upload_video. NOTE: The Opus API requires the `q` parameter to equal "mine" — calling the endpoint without it returns an empty body. The schema below makes the only legal value compile-time enforced.

Input parameters:

- `q` (string): Required by Opus. Must be the literal string "mine".

### `opus_create_project` (~311 tokens)

Create a new OpusClip clipping project from a publicly importable long-form video URL. After this returns a projectId, poll opus_get_project to track stage progression (PENDING → QUEUED → IMPORT → CURATE → REFINE → RENDER → UPLOAD → COMPLETE). When complete, call opus_get_clips to retrieve the generated clips. For local files, use opus_upload_video instead — it handles upload-link generation, GCS resumable upload, and project creation in a single tool call.

Input parameters:

- `brandTemplateId` (string): Brand template ID from opus_get_brand_templates (e.g. "preset-fancy-Karaoke")
- `conclusionActions` (array)
- `curationPref` (object): Curation preferences. Use `model: "ClipBasic"` for talking-head videos with `topicKeywords`, or `model: "ClipAnything"` with `customPrompt` for any video type. Set `skipCurate: true` to upload withou…
- `importPref` (object)
- `renderPref` (object)
- `uploadedVideoAttr` (object)
- `videoUrl` (string, required): Public URL of the source video (YouTube, Google Drive, Vimeo, Zoom, Rumble, Twitch, Facebook, LinkedIn, X, Dropbox, Riverside, Loom, Frame.io, StreamYard, or a public S3 MP4 link up to 10GB). For loc…

### `opus_get_project` (~87 tokens)

Retrieve the current status and metadata of an OpusClip project. Check the `stage` field — when it reaches "COMPLETE" the clips are ready (use opus_get_clips). If `stage` is "STALLED" or `error` is set, the project has failed.

Input parameters:

- `projectId` (string, required): The OpusClip projectId returned by opus_create_project

### `opus_get_clips` (~109 tokens)

List the exportable clips for a given project or collection. Each clip has a full-clip id of the form `{projectId}.{curationId}`, plus preview/export URLs (`uriForPreview`, `uriForExport`) on Google Cloud Storage. Choose `q: "findByProjectId"` and pass `projectId`, OR `q: "findByCollectionId"` and pass `collectionId`. Pagination via `pageNum` (starts at 1) and `pageSize`.

### `opus_share_project` (~67 tokens)

Update the sharing visibility of an OpusClip project. `DEFAULT`: team members can open / edit / export. `PUBLIC`: anyone with the link can open / edit / export.

Input parameters:

- `projectId` (string, required)
- `visibility` (string, required): "DEFAULT" or "PUBLIC"

### `opus_upload_video` (~260 tokens)

Upload a local video file to OpusClip and create a clipping project in a single step. Orchestrates the 4-step Opus / Google Cloud Storage resumable upload: (1) request an upload link, (2) start a GCS resumable session, (3) PUT the video bytes (with automatic offset-query recovery on ambiguous failures), (4) create the project. Pass `file_path` as an absolute filesystem path. Optional `brandTemplateId`, `curationPref`, `renderPref`, `importPref`, `uploadedVideoAttr`, and `conclusionActions` are forwarded to `opus_create_project`. On retryable network failures the same `uploadId` is reused, so calling this tool twice in a row will NOT create two billable projects. Per-chunk upload timeout is OPUS_UPLOAD_TIMEOUT_MS (default 600s).

Input parameters:

- `brandTemplateId` (string)
- `conclusionActions` (array)
- `curationPref` (object)
- `file_path` (string, required): Absolute path to a local video file (MP4 recommended, up to 10GB).
- `importPref` (object)
- `renderPref` (object)
- `uploadedVideoAttr` (object)

### `opus_create_censor_job` (~126 tokens)

Create a censor job that processes a specific clip and bleeps / mutes profanity. Returns a jobId. Poll opus_get_censor_job_status until status is "CONCLUDED" (success) or "FAILED". Set `options.beepSound: true` to substitute a beep for censored words; default is to mute them.

Input parameters:

- `clipId` (string, required): Clip ID to censor (the curation suffix, e.g. "CU67da38").
- `options` (object)
- `projectId` (string, required): Project ID containing the clip to censor.

### `opus_get_censor_job_status` (~128 tokens)

Poll the status of an OpusClip censor job. Status values: "QUEUED" / "PROCESSING" (still running, poll again), "CONCLUDED" (success), "FAILED" (check error), "UNKNOWN" (Opus could not determine the state — surfaced as UPSTREAM_STATUS_UNKNOWN). The response includes `next_poll_after_seconds` honouring Retry-After when present.

Input parameters:

- `attempt` (integer): Current attempt number (used for exponential backoff when Retry-After is absent). Starts at 1.
- `jobId` (string, required)

### `opus_create_collection` (~48 tokens)

Create a new clip collection to organise your clips. Returns the new collectionId. Use opus_add_clip_to_collection to populate it.

Input parameters:

- `collectionName` (string, required): Display name for the collection.

### `opus_get_collections` (~72 tokens)

List your OpusClip collections. Use `q: "mine"` to list all collections on your account, or `q: "findByContentId"` (with `contentId` set to a full clip id like "{projectId}.{curationId}") to find which collections contain a specific clip.

### `opus_export_collection` (~60 tokens)

Export all clips from a collection. Returns a `contentList` of `{ contentId, uriForExport }` pairs — the uriForExport URLs are Google Cloud Storage download links for the clip MP4s.

Input parameters:

- `collectionId` (string, required)

### `opus_delete_collection` (~55 tokens)

Delete a clip collection. IMPORTANT: only the collection container is deleted — the clips themselves are preserved and still accessible via opus_get_clips with `q: "findByProjectId"`.

Input parameters:

- `collectionId` (string, required)

### `opus_add_clip_to_collection` (~98 tokens)

Add a clip to an existing collection. `contentId` is the full clip ID in the form `{projectId}.{curationId}` (e.g. "Q20107035eDq.CU0b92e6") — get it from opus_get_clips.

Input parameters:

- `collectionId` (string, required)
- `contentId` (string, required): Full clip id in the form `{projectId}.{curationId}`.

### `opus_remove_clip_from_collection` (~75 tokens)

Remove a clip from a collection. IMPORTANT: Opus exposes this operation as a POST to /api/collection-contents/delete-collection-contents (NOT a DELETE). The clip itself is not deleted — only the collection membership is removed.

Input parameters:

- `collectionId` (string, required)
- `contentId` (string, required)

### `opus_get_social_accounts` (~83 tokens)

List the social accounts connected to your Opus organisation. Returns `postAccountId`, `subAccountId` (where applicable), `platform`, and the platform-side `extUser*` identifiers. Use these IDs with opus_publish_post, opus_schedule_post, and opus_create_social_copy_job.

Input parameters:

- `q` (string): Must be the literal string "mine".

### `opus_create_social_copy_job` (~137 tokens)

Create an asynchronous social-copy generation job. Opus produces a platform-specific title, description, and hashtags for a clip + destination account. Returns a jobId — poll opus_get_social_copy_job until status is "COMPLETED" or "FAILED".

Input parameters:

- `clipId` (string, required)
- `forceRegenerate` (boolean): If true, bypass the cached result for this clip/account pair.
- `postAccountId` (string, required)
- `projectId` (string, required)
- `prompt` (string): Optional style or tone instruction (e.g. "playful and witty").
- `subAccountId` (string, required)

### `opus_get_social_copy_job` (~78 tokens)

Poll the status and result of a social-copy generation job. Status values: "RUNNING" (still generating), "COMPLETED" (returns title/description/hashtags), "FAILED". Includes `next_poll_after_seconds` honouring Retry-After.

Input parameters:

- `attempt` (integer)
- `jobId` (string, required)

### `opus_publish_post` (~141 tokens)

Publish a clip immediately to a connected social account. For X (formerly Twitter) each post costs 1 credit. Returns a `postId`. The clip is queued for upload by Opus to the destination platform.

Input parameters:

- `clipId` (string, required): Curation ID (e.g. "CU67da38"), NOT the full clip id.
- `postAccountId` (string, required): From opus_get_social_accounts.postAccountId
- `postDetail` (object, required)
- `projectId` (string, required)
- `subAccountId` (string): Required for Facebook pages, Instagram business accounts, and LinkedIn — from opus_get_social_accounts.subAccountId.

### `opus_schedule_post` (~206 tokens)

Schedule a clip for future publishing. `publishAt` must be a future UTC ISO 8601 timestamp (e.g. "2026-06-01T16:00:00.000Z"). For X (formerly Twitter) each post costs 1 credit. Returns a `scheduleId` you can pass to opus_cancel_scheduled_post.

Input parameters:

- `clipId` (string, required): Curation ID (e.g. "CU67da38"), NOT the full clip id.
- `postAccountId` (string, required): From opus_get_social_accounts.postAccountId
- `postDetail` (object, required)
- `projectId` (string, required)
- `publishAt` (string, required): Future publish time in UTC ISO 8601, e.g. "2026-06-01T16:00:00.000Z".
- `subAccountId` (string): Required for Facebook pages, Instagram business accounts, and LinkedIn — from opus_get_social_accounts.subAccountId.

### `opus_cancel_scheduled_post` (~50 tokens)

Cancel a scheduled social post BEFORE its publishAt time. After publishAt the post is irrevocably handed to the platform — cancellation is no longer possible.

Input parameters:

- `scheduleId` (string, required)

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/mindstone-mcp-server-opus-video-clip/mindstone-mcp-server-opus-video-clip#diagnostics

## Score history

- 2026-08-07: 65
- 2026-08-06: 64
- 2026-08-05: 64
- 2026-08-04: 63
- 2026-08-03: 63
- 2026-08-02: 59
- 2026-08-01: 32
- 2026-07-31: 32
- 2026-07-30: 54
- 2026-07-28: 72
- 2026-07-27: 43

## Links

- npm package: https://www.npmjs.com/package/@mindstone/mcp-server-opus-video-clip
- Socket report: https://socket.dev/npm/package/@mindstone/mcp-server-opus-video-clip
- Repository: https://github.com/mindstone/mcp-servers
- Changelog RSS feed: https://verifymcp.io/servers/mindstone-mcp-server-opus-video-clip/mindstone-mcp-server-opus-video-clip.xml
- Changelog JSON feed: https://verifymcp.io/servers/mindstone-mcp-server-opus-video-clip/mindstone-mcp-server-opus-video-clip.json
- HTML version of this page: https://verifymcp.io/servers/mindstone-mcp-server-opus-video-clip/mindstone-mcp-server-opus-video-clip
