# Compeller (remote · compeller.ai)

Create and track AI music videos and audio-reactive visuals from songs.

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

## Components

- remote · `compeller.ai`: 64/100 (this document), [markdown](https://verifymcp.io/servers/ai-compeller-compel/api-mcp.md), [page](https://verifymcp.io/servers/ai-compeller-compel/api-mcp)

## Channel facts

- Endpoint: `https://compeller.ai/api/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.5.1`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, 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-03.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (delete_webhook).
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 70/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 2432 tokens (~81/item across 30 items; 30 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 97/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 92% of tool parameters carry a description.
- **Capabilities**: 20/100
  - Spec-recency check failed: implements MCP spec 2024-11-05; the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http ai-compeller-compel https://compeller.ai/api/mcp
```

### Codex

```toml
[mcp_servers.ai-compeller-compel]
url = "https://compeller.ai/api/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ai-compeller-compel": {
      "type": "remote",
      "url": "https://compeller.ai/api/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add ai-compeller-compel --url https://compeller.ai/api/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  ai-compeller-compel:
    url: "https://compeller.ai/api/mcp"
```

### Other

```json
{
  "mcpServers": {
    "ai-compeller-compel": {
      "type": "http",
      "url": "https://compeller.ai/api/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## 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-03 (score 64, +1)

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

### 2026-08-01 (score 63, +1)

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

### 2026-07-31 (score 62, 0)

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

### 2026-07-30 (score 62, +1)

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

### 2026-07-29 (score 61, +1)

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

### 2026-07-27 (score 60, +1)

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

### 2026-07-26 (score 59)

First indexed and scored.

## MCP tools (30)

### `get_capabilities` (~22 tokens)

Get Compeller platform capabilities, supported features, and API version.

### `get_pricing` (~18 tokens)

Get current Compeller subscription plans and pricing.

### `list_styles` (~18 tokens)

List available visual styles for Compeller video generation.

### `upload_media` (~76 tokens)

Get upload instructions for media files (audio, images, video). Returns the upload URL and required headers. Requires API token authentication.

Input parameters:

- `mime_type` (string): MIME type of the file
- `name` (string): Filename for the upload
- `type` (string): Media type: audio, image, video, or text

### `search_music` (~75 tokens)

Search Deezer preview tracks by song, artist, or album. Use this when the user provides a song string but no MP3/WAV/FLAC file.

Input parameters:

- `limit` (integer): Max results to return (default 10, max 20)
- `query` (string, required): Song, artist, or album search query

### `create_compel_from_music` (~158 tokens)

Create a compel from a selected Deezer preview track. If the user provides an audio file instead, upload that file and use create_compel.

Input parameters:

- `artist_context` (string): Additional creative context
- `aspect_ratio` (string): Explicit aspect ratio override (takes precedence over target_platform).
- `style` (string): Visual style. Use one of the exact ids returned by list_styles (e.g. "Cinematic Realistic", "Anime / Manga"). Omit to use the account default.
- `target_platform` (string): Target platform; sets the aspect ratio when aspect_ratio is omitted.
- `title` (string): Optional compel title override
- `track_id` (integer, required): Deezer track id returned by search_music

### `create_compel` (~168 tokens)

Create a Compeller generation job from primary audio media and optional reference media. Returns compel id, status, and links to track progress and retrieve renderings.

Input parameters:

- `artist_context` (string): Additional creative context about the artist or song
- `aspect_ratio` (string): Explicit aspect ratio override (takes precedence over target_platform).
- `primary_media_id` (integer, required): ID of the uploaded audio media to use as the primary track
- `style` (string): Visual style. Use one of the exact ids returned by list_styles (e.g. "Cinematic Realistic", "Anime / Manga"). Omit to use the account default.
- `target_platform` (string): Target platform; sets the aspect ratio when aspect_ratio is omitted.
- `title` (string, required): Title for the compel

### `get_compel` (~38 tokens)

Get the current status, progress, and details of a Compeller generation job.

Input parameters:

- `compel_id` (integer, required): The compel ID to check

### `start_render` (~45 tokens)

Start rendering a READY compel with default configuration so an agent can continue to final MP4 without opening the browser UI.

Input parameters:

- `compel_id` (integer, required): The READY compel ID to render

### `list_compels` (~51 tokens)

List all Compeller generation jobs for the authenticated account, newest first.

Input parameters:

- `limit` (integer): Max results to return (default 20, max 100)
- `offset` (integer): Pagination offset

### `search_compels` (~50 tokens)

Search Compeller generation jobs by title for the authenticated account.

Input parameters:

- `limit` (integer): Max results to return (default 20)
- `query` (string, required): Search query to match against compel titles

### `list_renderings` (~35 tokens)

List all video renderings for a specific compel.

Input parameters:

- `compel_id` (integer, required): The compel ID to list renderings for

### `get_rendering` (~30 tokens)

Get details of a specific video rendering.

Input parameters:

- `rendering_id` (integer, required): The rendering ID to retrieve

### `search_media` (~67 tokens)

Search and list uploaded media files for the authenticated account.

Input parameters:

- `limit` (integer): Max results to return (default 20, max 100)
- `offset` (integer): Pagination offset
- `type` (string): Filter by media type: audio, image, video, or text

### `register_webhook` (~190 tokens)

Register an HTTPS endpoint to receive signed push notifications for compel lifecycle events (compel.ready when renderable, compel.completed, compel.failed). Returns webhook_id and the HMAC-SHA256 signing secret exactly once - store the secret immediately, it is never returned again. Deliveries are signed via X-Compeller-Signature: sha256=<hex> over the raw body. Delivery is at-least-once: a failed delivery is retried with backoff (up to 6 attempts) and every retry carries the same X-Compeller-Event-Id, so dedupe on it.

Input parameters:

- `events` (array): Event types to subscribe to. Omit or pass ["*"] for all. Known types: compel.ready (renderable - call start_render), compel.completed, compel.failed.
- `url` (string, required): HTTPS URL to deliver events to (max 2048 chars)

### `list_webhooks` (~27 tokens)

List all webhook endpoints registered for the authenticated account. Secrets are never returned by this tool.

### `delete_webhook` (~44 tokens)

Delete a webhook endpoint by id. Removes the registration and stops future deliveries.

Input parameters:

- `webhook_id` (integer, required): The webhook id returned by register_webhook or list_webhooks

### `test_webhook_delivery` (~126 tokens)

Synchronously POST a synthetic webhook.test event to a registered endpoint. Uses the same HMAC-SHA256 signature as real deliveries, runs the standard URL safety check at delivery time, and returns {webhook_id, event_id, event_type, delivered, response_status, response_body_preview, latency_ms, error?}. Ignores the endpoint's events subscription - test delivery is always on-demand. Use this to verify your integration before relying on compel.completed / compel.failed events.

Input parameters:

- `webhook_id` (integer, required): The webhook id to test. Must belong to the authenticated account.

### `update_webhook` (~149 tokens)

Update one or more mutable fields on a registered webhook endpoint: url, events, active. At least one of these must be provided. Validation mirrors register_webhook (https-only, <= 2048 chars, URL safety blocklist). Returns the updated endpoint (secret is never returned by this tool - use rotate_webhook_secret for that).

Input parameters:

- `active` (boolean): Toggle delivery on/off without losing the registration
- `events` (array): Replacement event types. Omit to leave unchanged. ["*"] or an empty filtered list resets to wildcard.
- `url` (string): New HTTPS URL (max 2048 chars)
- `webhook_id` (integer, required): The webhook id to update

### `rotate_webhook_secret` (~76 tokens)

Mint a new HMAC-SHA256 signing secret for a registered webhook endpoint. The previous secret is invalidated immediately - integrators must update their receiver before the next compel terminal event fires. Returns the new secret exactly once; store it on receipt.

Input parameters:

- `webhook_id` (integer, required): The webhook id to rotate the secret on

### `cancel_compel` (~84 tokens)

Cancel an in-progress compel. Dequeues it if still queued, otherwise cancels any active external (AI provider) tasks and transitions it to CANCELLED. Idempotent - cancelling an already-CANCELLED compel succeeds. Use to stop a mis-prompted or runaway job before it consumes more render minutes.

Input parameters:

- `compel_id` (integer, required): The compel ID to cancel

### `get_account_credits` (~56 tokens)

Get the authenticated account's render-minute balance and plan: minutes remaining (free + paid), monthly allowance, plan code, and whether the quota is exceeded. Call before starting an expensive render so an agent can make cost-aware decisions.

### `list_lighting_effects` (~75 tokens)

List the COM-497 starter lighting effects available to launch as cues (e.g. "gobo-cycle", "x-move", "dimmer-pulse"). Each effect carries an id, the capabilities it needs, and a launch_contract template. Use the returned id as effect_id for launch_lighting_cue.

### `launch_lighting_cue` (~235 tokens)

Launch a starter lighting effect onto a stage as a live cue (e.g. "gobo-cycle on the stage's 7R beams at speed 0.5"). Pass effect_id (from list_lighting_effects) and optional variables to override effect defaults. Validation is loud: an unknown effect, a launch_contract whose bindings a stage cannot render, or a missing required field is rejected. Returns the active cue including its launch_id, resolved variables, and launch_contract for REACT. REACT executes the cue per-frame; the live strobe slider stays authoritative and is never raised by a launch.

Input parameters:

- `effect_id` (string): COM-497 starter effect id from list_lighting_effects, e.g. "gobo-cycle"
- `launch_contract` (object): Advanced: an explicit launch_contract to launch instead of resolving one from effect_id.
- `stage_id` (integer): The stage to launch onto (must belong to the authenticated account)
- `variables` (object): Optional variable overrides (name -> value), e.g. {"speed": 0.5}. Defaults come from the effect.

### `list_lighting_cues` (~72 tokens)

List the live (non-stopped) lighting cues REACT is executing, including each cue's launch_id, resolved variables, launch_contract, and feedback. Optionally scope to one stage.

Input parameters:

- `stage_id` (integer): Optional stage id to scope the listing to (must belong to the authenticated account)

### `get_lighting_cue` (~58 tokens)

Fetch a single live lighting cue by its launch_id, including resolved variables, launch_contract, and REACT feedback.

Input parameters:

- `launch_id` (string, required): The launch_id returned by launch_lighting_cue or list_lighting_cues

### `stop_lighting_cue` (~57 tokens)

Stop a live cue by its launch_id. Idempotent - the cue is marked stop-requested so REACT drops it on its next refresh.

Input parameters:

- `launch_id` (string, required): The launch_id of the cue to stop

### `set_lighting_cue_variables` (~91 tokens)

Update variables on a live cue (e.g. change cycle speed or intensity mid-show). Only the variables you pass change; the rest keep their current values. Stopped cues are rejected.

Input parameters:

- `launch_id` (string, required): The launch_id of the cue to update
- `variables` (object, required): Variables to set (name -> value), e.g. {"speed": 0.75}

### `ack_lighting_cue` (~114 tokens)

REACT/BAE acknowledgement for a launch_id. Idempotently records whether the executor accepted or rejected the cue and which executor observed it.

Input parameters:

- `accepted` (boolean, required): true when REACT/BAE accepted the cue for execution
- `executor_id` (string): Stable REACT/BAE executor instance id
- `launch_id` (string, required): The launch_id to acknowledge
- `observed_at` (string): Executor observation timestamp
- `rejected_reason` (string): Required by convention when accepted=false

### `report_lighting_cue` (~127 tokens)

REACT/BAE report-back for cue status, active variables, skipped bindings, capability misses, last_frame_at, and errors.

Input parameters:

- `active_variables` (object): Variables actually being sampled by REACT/BAE
- `capability_misses` (array)
- `error` (string)
- `executor_id` (string)
- `last_frame_at` (string)
- `launch_id` (string, required): The launch_id to report
- `skipped_bindings` (array)
- `status` (string): ACTIVE, STOP_REQUESTED, or STOPPED

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/ai-compeller-compel/api-mcp#diagnostics

## Score history

- 2026-08-03: 64
- 2026-08-02: 63
- 2026-08-01: 63
- 2026-07-31: 62
- 2026-07-30: 62
- 2026-07-29: 61
- 2026-07-28: 60
- 2026-07-27: 60
- 2026-07-26: 59

## Links

- Remote endpoint: https://compeller.ai/api/mcp
- Repository: https://github.com/Compellerai/compeller-mcp
- Changelog RSS feed: https://verifymcp.io/servers/ai-compeller-compel/api-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/ai-compeller-compel/api-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/ai-compeller-compel/api-mcp
