# Compeller

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

- name: ai.compeller/compel
- version: 0.5.1
- connection class: R0 (autonomous)
- trust: 86/100
- quality: 85/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/ai.compeller%2Fcompel
- tools: https://api.protogrid.dev/v1/servers/ai.compeller%2Fcompel/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "compel": {
      "type": "http",
      "url": "https://compeller.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer ${COMPEL_TOKEN}",
        "X-API-Token": "${X_API_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${COMPEL_TOKEN}`, `${X_API_TOKEN}`.

## Trust

- hygiene: 100
- liveness: 100
- freshness: 65
- provenance: 75
- drivers: +repository +dns-namespace +reachable +uptime-100% ~updated-168d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 85/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2024-11-05; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 86 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 30 of 30 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_rendering (destructiveHint, idempotentHint, openWorldHint); search_media (destructiveHint, idempotentHint, openWorldHint); get_account_credits (destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 4,108 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 30, about 4,108 tokens to load them all
- tool set hash: 3ac5732164d113cf16cfb5e06e997e47
- badge: [![protogrid quality](https://protogrid.dev/badge/ai.compeller/compel.svg)](https://protogrid.dev/servers/ai.compeller/compel)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://compeller.ai/api/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (30)

- `ack_lighting_cue`: REACT/BAE acknowledgement for a launch_id. Idempotently records whether the executor accepted or rejected the cue and which executor observed it.
- `cancel_compel`: 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.
- `create_compel`: 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.
- `create_compel_from_music`: Create a compel from a selected Deezer preview track. If the user provides an audio file instead, upload that file and use create_compel.
- `delete_webhook`: Delete a webhook endpoint by id. Removes the registration and stops future deliveries.
- `get_account_credits`: 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.
- `get_capabilities`: Get Compeller platform capabilities, supported features, and API version.
- `get_compel`: Get the current status, progress, and details of a Compeller generation job.
- `get_lighting_cue`: Fetch a single live lighting cue by its launch_id, including resolved variables, launch_contract, and REACT feedback.
- `get_pricing`: Get current Compeller subscription plans and pricing.
- `get_rendering`: Get details of a specific video rendering.
- `launch_lighting_cue`: 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.
- `list_compels`: List all Compeller generation jobs for the authenticated account, newest first.
- `list_lighting_cues`: 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.
- `list_lighting_effects`: 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.
- `list_renderings`: List all video renderings for a specific compel.
- `list_styles`: List available visual styles for Compeller video generation.
- `list_webhooks`: List all webhook endpoints registered for the authenticated account. Secrets are never returned by this tool.
- `register_webhook`: 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.
- `report_lighting_cue`: REACT/BAE report-back for cue status, active variables, skipped bindings, capability misses, last_frame_at, and errors.
- `rotate_webhook_secret`: 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.
- `search_compels`: Search Compeller generation jobs by title for the authenticated account.
- `search_media`: Search and list uploaded media files for the authenticated account.
- `search_music`: Search Deezer preview tracks by song, artist, or album. Use this when the user provides a song string but no MP3/WAV/FLAC file.
- `set_lighting_cue_variables`: 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.
- `start_render`: Start rendering a READY compel with default configuration so an agent can continue to final MP4 without opening the browser UI.
- `stop_lighting_cue`: Stop a live cue by its launch_id. Idempotent - the cue is marked stop-requested so REACT drops it on its next refresh.
- `test_webhook_delivery`: 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.
- `update_webhook`: 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).
- `upload_media`: Get upload instructions for media files (audio, images, video). Returns the upload URL and required headers. Requires API token authentication.
