{
  "data": {
    "tool": {
      "category": "music-generation",
      "endpoint": "https://compeller.ai/api/mcp",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/compeller-compel.json",
      "kind": "mcp",
      "listed": "indexed",
      "liveUrl": "https://www.anchorterminal.com/api/v1/live/compeller-compel.json",
      "markdownUrl": "https://www.anchorterminal.com/tools/compeller-compel.md",
      "mcpTools": {
        "check": {
          "checker": "anchor-check/1.0",
          "totalTokens": 4545,
          "counts": {
            "error": 0,
            "note": 1,
            "warn": 5
          },
          "findings": [
            {
              "rule": "TC11",
              "severity": "warn",
              "tool": "report_lighting_cue",
              "message": "5 parameters without a description: capability_misses, error, executor_id, last_frame_at, skipped_bindings",
              "fix": "Describe each one: format, units, an example, and what happens when it's left out."
            },
            {
              "rule": "TC13",
              "severity": "warn",
              "tool": "launch_lighting_cue",
              "message": "launch_contract (object with no properties), variables (object with no properties)",
              "fix": "Declare the properties (or additionalProperties with a schema) and the array's items."
            },
            {
              "rule": "TC13",
              "severity": "warn",
              "tool": "report_lighting_cue",
              "message": "active_variables (object with no properties), capability_misses[] (object with no properties)",
              "fix": "Declare the properties (or additionalProperties with a schema) and the array's items."
            },
            {
              "rule": "TC13",
              "severity": "warn",
              "tool": "set_lighting_cue_variables",
              "message": "variables (object with no properties)",
              "fix": "Declare the properties (or additionalProperties with a schema) and the array's items."
            },
            {
              "rule": "TC18",
              "severity": "warn",
              "tool": "upload_media",
              "message": "readOnlyHint is true but the name says \"upload\"",
              "fix": "If it changes anything, readOnlyHint must be false."
            },
            {
              "rule": "TC24",
              "severity": "note",
              "message": "30 of 30 tools have no outputSchema",
              "fix": "Declare outputSchema for tools that return structured data, and return structuredContent that matches it."
            }
          ]
        },
        "checkedAt": "2026-10-04T22:20:03Z",
        "count": 30,
        "note": "answered without the initialize handshake",
        "schemaTokens": 4545,
        "status": "ok",
        "tools": [
          {
            "name": "get_capabilities",
            "description": "Get Compeller platform capabilities, supported features, and API version.",
            "inputSchema": {
              "properties": {},
              "required": [],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "Get Compeller capabilities"
            }
          },
          {
            "name": "get_pricing",
            "description": "Get current Compeller subscription plans and pricing.",
            "inputSchema": {
              "properties": {},
              "required": [],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "Get Compeller pricing"
            }
          },
          {
            "name": "list_styles",
            "description": "List available visual styles for Compeller video generation.",
            "inputSchema": {
              "properties": {},
              "required": [],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "List visual styles"
            }
          },
          {
            "name": "upload_media",
            "description": "Get upload instructions for media files (audio, images, video). Returns the upload URL and required headers. Requires API token authentication.",
            "inputSchema": {
              "properties": {
                "mime_type": {
                  "description": "MIME type of the file",
                  "type": "string"
                },
                "name": {
                  "description": "Filename for the upload",
                  "type": "string"
                },
                "type": {
                  "description": "Media type: audio, image, video, or text",
                  "type": "string"
                }
              },
              "required": [],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "Get media upload instructions"
            }
          },
          {
            "name": "search_music",
            "description": "Search Deezer preview tracks by song, artist, or album. Use this when the user provides a song string but no MP3/WAV/FLAC file.",
            "inputSchema": {
              "properties": {
                "limit": {
                  "description": "Max results to return (default 10, max 20)",
                  "type": "integer"
                },
                "query": {
                  "description": "Song, artist, or album search query",
                  "type": "string"
                }
              },
              "required": [
                "query"
              ],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "Search music previews"
            }
          },
          {
            "name": "create_compel_from_music",
            "description": "Create a compel from a selected Deezer preview track. If the user provides an audio file instead, upload that file and use create_compel.",
            "inputSchema": {
              "properties": {
                "artist_context": {
                  "description": "Additional creative context",
                  "type": "string"
                },
                "aspect_ratio": {
                  "description": "Explicit aspect ratio override (takes precedence over target_platform).",
                  "enum": [
                    "16:9",
                    "9:16",
                    "1:1"
                  ],
                  "type": "string"
                },
                "style": {
                  "description": "Visual style. Use one of the exact ids returned by list_styles (e.g. \"Cinematic Realistic\", \"Anime / Manga\"). Omit to use the account default.",
                  "enum": [
                    "Cinematic Realistic",
                    "Photo Realistic",
                    "Cyberpunk",
                    "Anime / Manga",
                    "Film Noir",
                    "Watercolor Painting",
                    "Oil Painting",
                    "3D Render / Pixar",
                    "Retro 80s Synthwave",
                    "Vintage Film Grain",
                    "Comic Book / Pop Art",
                    "Fantasy / Ethereal",
                    "Horror / Dark Gothic",
                    "Steampunk",
                    "Neon Glow",
                    "Minimalist / Abstract",
                    "Surrealist",
                    "Documentary",
                    "Vaporwave",
                    "Pencil Sketch",
                    "Noir Detective",
                    "Claymation / Stop Motion",
                    "Studio Ghibli",
                    "Baroque / Renaissance",
                    "Lo-Fi / Grainy VHS",
                    "Glitch Art / Digital",
                    "Psychedelic"
                  ],
                  "type": "string"
                },
                "target_platform": {
                  "description": "Target platform; sets the aspect ratio when aspect_ratio is omitted.",
                  "enum": [
                    "tiktok",
                    "reels",
                    "shorts",
                    "instagram",
                    "square",
                    "youtube",
                    "web"
                  ],
                  "type": "string"
                },
                "title": {
                  "description": "Optional compel title override",
                  "type": "string"
                },
                "track_id": {
                  "description": "Deezer track id returned by search_music",
                  "type": "integer"
                }
              },
              "required": [
                "track_id"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": false,
              "readOnlyHint": false,
              "title": "Create Compel from music search"
            }
          },
          {
            "name": "create_compel",
            "description": "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.",
            "inputSchema": {
              "properties": {
                "artist_context": {
                  "description": "Additional creative context about the artist or song",
                  "type": "string"
                },
                "aspect_ratio": {
                  "description": "Explicit aspect ratio override (takes precedence over target_platform).",
                  "enum": [
                    "16:9",
                    "9:16",
                    "1:1"
                  ],
                  "type": "string"
                },
                "primary_media_id": {
                  "description": "ID of the uploaded audio media to use as the primary track",
                  "type": "integer"
                },
                "style": {
                  "description": "Visual style. Use one of the exact ids returned by list_styles (e.g. \"Cinematic Realistic\", \"Anime / Manga\"). Omit to use the account default.",
                  "enum": [
                    "Cinematic Realistic",
                    "Photo Realistic",
                    "Cyberpunk",
                    "Anime / Manga",
                    "Film Noir",
                    "Watercolor Painting",
                    "Oil Painting",
                    "3D Render / Pixar",
                    "Retro 80s Synthwave",
                    "Vintage Film Grain",
                    "Comic Book / Pop Art",
                    "Fantasy / Ethereal",
                    "Horror / Dark Gothic",
                    "Steampunk",
                    "Neon Glow",
                    "Minimalist / Abstract",
                    "Surrealist",
                    "Documentary",
                    "Vaporwave",
                    "Pencil Sketch",
                    "Noir Detective",
                    "Claymation / Stop Motion",
                    "Studio Ghibli",
                    "Baroque / Renaissance",
                    "Lo-Fi / Grainy VHS",
                    "Glitch Art / Digital",
                    "Psychedelic"
                  ],
                  "type": "string"
                },
                "target_platform": {
                  "description": "Target platform; sets the aspect ratio when aspect_ratio is omitted.",
                  "enum": [
                    "tiktok",
                    "reels",
                    "shorts",
                    "instagram",
                    "square",
                    "youtube",
                    "web"
                  ],
                  "type": "string"
                },
                "title": {
                  "description": "Title for the compel",
                  "type": "string"
                }
              },
              "required": [
                "title",
                "primary_media_id"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": false,
              "readOnlyHint": false,
              "title": "Create Compel from uploaded audio"
            }
          },
          {
            "name": "get_compel",
            "description": "Get the current status, progress, and details of a Compeller generation job.",
            "inputSchema": {
              "properties": {
                "compel_id": {
                  "description": "The compel ID to check",
                  "type": "integer"
                }
              },
              "required": [
                "compel_id"
              ],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "Get Compel status"
            }
          },
          {
            "name": "start_render",
            "description": "Start rendering a READY compel with default configuration so an agent can continue to final MP4 without opening the browser UI.",
            "inputSchema": {
              "properties": {
                "compel_id": {
                  "description": "The READY compel ID to render",
                  "type": "integer"
                }
              },
              "required": [
                "compel_id"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": false,
              "readOnlyHint": false,
              "title": "Start Compel render"
            }
          },
          {
            "name": "list_compels",
            "description": "List all Compeller generation jobs for the authenticated account, newest first.",
            "inputSchema": {
              "properties": {
                "limit": {
                  "description": "Max results to return (default 20, max 100)",
                  "type": "integer"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "integer"
                }
              },
              "required": [],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "List Compels"
            }
          },
          {
            "name": "search_compels",
            "description": "Search Compeller generation jobs by title for the authenticated account.",
            "inputSchema": {
              "properties": {
                "limit": {
                  "description": "Max results to return (default 20)",
                  "type": "integer"
                },
                "query": {
                  "description": "Search query to match against compel titles",
                  "type": "string"
                }
              },
              "required": [
                "query"
              ],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "Search Compels"
            }
          },
          {
            "name": "list_renderings",
            "description": "List all video renderings for a specific compel.",
            "inputSchema": {
              "properties": {
                "compel_id": {
                  "description": "The compel ID to list renderings for",
                  "type": "integer"
                }
              },
              "required": [
                "compel_id"
              ],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "List Compel renderings"
            }
          },
          {
            "name": "get_rendering",
            "description": "Get details of a specific video rendering.",
            "inputSchema": {
              "properties": {
                "rendering_id": {
                  "description": "The rendering ID to retrieve",
                  "type": "integer"
                }
              },
              "required": [
                "rendering_id"
              ],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "Get rendering details"
            }
          },
          {
            "name": "search_media",
            "description": "Search and list uploaded media files for the authenticated account.",
            "inputSchema": {
              "properties": {
                "limit": {
                  "description": "Max results to return (default 20, max 100)",
                  "type": "integer"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "integer"
                },
                "type": {
                  "description": "Filter by media type: audio, image, video, or text",
                  "type": "string"
                }
              },
              "required": [],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "Search uploaded media"
            }
          },
          {
            "name": "register_webhook",
            "description": "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=\u003chex\u003e 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.",
            "inputSchema": {
              "properties": {
                "events": {
                  "description": "Event types to subscribe to. Omit or pass [\"*\"] for all. Known types: compel.ready (renderable - call start_render), compel.completed, compel.failed.",
                  "items": {
                    "enum": [
                      "*",
                      "compel.ready",
                      "compel.completed",
                      "compel.failed"
                    ],
                    "type": "string"
                  },
                  "type": "array"
                },
                "url": {
                  "description": "HTTPS URL to deliver events to (max 2048 chars)",
                  "type": "string"
                }
              },
              "required": [
                "url"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": true,
              "readOnlyHint": false,
              "title": "Register webhook"
            }
          },
          {
            "name": "list_webhooks",
            "description": "List all webhook endpoints registered for the authenticated account. Secrets are never returned by this tool.",
            "inputSchema": {
              "properties": {},
              "required": [],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "List webhooks"
            }
          },
          {
            "name": "delete_webhook",
            "description": "Delete a webhook endpoint by id. Removes the registration and stops future deliveries.",
            "inputSchema": {
              "properties": {
                "webhook_id": {
                  "description": "The webhook id returned by register_webhook or list_webhooks",
                  "type": "integer"
                }
              },
              "required": [
                "webhook_id"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": true,
              "openWorldHint": false,
              "readOnlyHint": false,
              "title": "Delete webhook"
            }
          },
          {
            "name": "test_webhook_delivery",
            "description": "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.",
            "inputSchema": {
              "properties": {
                "webhook_id": {
                  "description": "The webhook id to test. Must belong to the authenticated account.",
                  "type": "integer"
                }
              },
              "required": [
                "webhook_id"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": true,
              "readOnlyHint": false,
              "title": "Test webhook delivery"
            }
          },
          {
            "name": "update_webhook",
            "description": "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, \u003c= 2048 chars, URL safety blocklist). Returns the updated endpoint (secret is never returned by this tool - use rotate_webhook_secret for that).",
            "inputSchema": {
              "properties": {
                "active": {
                  "description": "Toggle delivery on/off without losing the registration",
                  "type": "boolean"
                },
                "events": {
                  "description": "Replacement event types. Omit to leave unchanged. [\"*\"] or an empty filtered list resets to wildcard.",
                  "items": {
                    "enum": [
                      "*",
                      "compel.ready",
                      "compel.completed",
                      "compel.failed"
                    ],
                    "type": "string"
                  },
                  "type": "array"
                },
                "url": {
                  "description": "New HTTPS URL (max 2048 chars)",
                  "type": "string"
                },
                "webhook_id": {
                  "description": "The webhook id to update",
                  "type": "integer"
                }
              },
              "required": [
                "webhook_id"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": true,
              "readOnlyHint": false,
              "title": "Update webhook"
            }
          },
          {
            "name": "rotate_webhook_secret",
            "description": "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.",
            "inputSchema": {
              "properties": {
                "webhook_id": {
                  "description": "The webhook id to rotate the secret on",
                  "type": "integer"
                }
              },
              "required": [
                "webhook_id"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": true,
              "openWorldHint": false,
              "readOnlyHint": false,
              "title": "Rotate webhook secret"
            }
          },
          {
            "name": "cancel_compel",
            "description": "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.",
            "inputSchema": {
              "properties": {
                "compel_id": {
                  "description": "The compel ID to cancel",
                  "type": "integer"
                }
              },
              "required": [
                "compel_id"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": true,
              "openWorldHint": false,
              "readOnlyHint": false,
              "title": "Cancel a compel"
            }
          },
          {
            "name": "get_account_credits",
            "description": "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.",
            "inputSchema": {
              "properties": {},
              "required": [],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "Get account credits"
            }
          },
          {
            "name": "list_lighting_effects",
            "description": "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.",
            "inputSchema": {
              "properties": {},
              "required": [],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "List lighting effects"
            }
          },
          {
            "name": "launch_lighting_cue",
            "description": "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.",
            "inputSchema": {
              "properties": {
                "effect_id": {
                  "description": "COM-497 starter effect id from list_lighting_effects, e.g. \"gobo-cycle\"",
                  "type": "string"
                },
                "launch_contract": {
                  "description": "Advanced: an explicit launch_contract to launch instead of resolving one from effect_id.",
                  "type": "object"
                },
                "stage_id": {
                  "description": "The stage to launch onto (must belong to the authenticated account)",
                  "type": "integer"
                },
                "variables": {
                  "description": "Optional variable overrides (name -\u003e value), e.g. {\"speed\": 0.5}. Defaults come from the effect.",
                  "type": "object"
                }
              },
              "required": [],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "readOnlyHint": false,
              "title": "Launch lighting cue"
            }
          },
          {
            "name": "list_lighting_cues",
            "description": "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.",
            "inputSchema": {
              "properties": {
                "stage_id": {
                  "description": "Optional stage id to scope the listing to (must belong to the authenticated account)",
                  "type": "integer"
                }
              },
              "required": [],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "List lighting cues"
            }
          },
          {
            "name": "get_lighting_cue",
            "description": "Fetch a single live lighting cue by its launch_id, including resolved variables, launch_contract, and REACT feedback.",
            "inputSchema": {
              "properties": {
                "launch_id": {
                  "description": "The launch_id returned by launch_lighting_cue or list_lighting_cues",
                  "type": "string"
                }
              },
              "required": [
                "launch_id"
              ],
              "type": "object"
            },
            "annotations": {
              "readOnlyHint": true,
              "title": "Get lighting cue"
            }
          },
          {
            "name": "stop_lighting_cue",
            "description": "Stop a live cue by its launch_id. Idempotent - the cue is marked stop-requested so REACT drops it on its next refresh.",
            "inputSchema": {
              "properties": {
                "launch_id": {
                  "description": "The launch_id of the cue to stop",
                  "type": "string"
                }
              },
              "required": [
                "launch_id"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": true,
              "readOnlyHint": false,
              "title": "Stop lighting cue"
            }
          },
          {
            "name": "set_lighting_cue_variables",
            "description": "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.",
            "inputSchema": {
              "properties": {
                "launch_id": {
                  "description": "The launch_id of the cue to update",
                  "type": "string"
                },
                "variables": {
                  "description": "Variables to set (name -\u003e value), e.g. {\"speed\": 0.75}",
                  "type": "object"
                }
              },
              "required": [
                "launch_id",
                "variables"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "readOnlyHint": false,
              "title": "Set lighting cue variables"
            }
          },
          {
            "name": "ack_lighting_cue",
            "description": "REACT/BAE acknowledgement for a launch_id. Idempotently records whether the executor accepted or rejected the cue and which executor observed it.",
            "inputSchema": {
              "properties": {
                "accepted": {
                  "description": "true when REACT/BAE accepted the cue for execution",
                  "type": "boolean"
                },
                "executor_id": {
                  "description": "Stable REACT/BAE executor instance id",
                  "type": "string"
                },
                "launch_id": {
                  "description": "The launch_id to acknowledge",
                  "type": "string"
                },
                "observed_at": {
                  "description": "Executor observation timestamp",
                  "type": "string"
                },
                "rejected_reason": {
                  "description": "Required by convention when accepted=false",
                  "type": "string"
                }
              },
              "required": [
                "launch_id",
                "accepted"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "readOnlyHint": false,
              "title": "Ack lighting cue"
            }
          },
          {
            "name": "report_lighting_cue",
            "description": "REACT/BAE report-back for cue status, active variables, skipped bindings, capability misses, last_frame_at, and errors.",
            "inputSchema": {
              "properties": {
                "active_variables": {
                  "description": "Variables actually being sampled by REACT/BAE",
                  "type": "object"
                },
                "capability_misses": {
                  "items": {
                    "type": "object"
                  },
                  "type": "array"
                },
                "error": {
                  "type": "string"
                },
                "executor_id": {
                  "type": "string"
                },
                "last_frame_at": {
                  "type": "string"
                },
                "launch_id": {
                  "description": "The launch_id to report",
                  "type": "string"
                },
                "skipped_bindings": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "status": {
                  "description": "ACTIVE, STOP_REQUESTED, or STOPPED",
                  "type": "string"
                }
              },
              "required": [
                "launch_id"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "readOnlyHint": false,
              "title": "Report lighting cue"
            }
          }
        ]
      },
      "name": "Compeller",
      "note": "Indexed from the official MCP registry: facts and our own checks, not reviewed, so no score, grade or rank.",
      "packages": null,
      "pageJsonUrl": "https://www.anchorterminal.com/tools/compeller-compel.json",
      "popularity": {
        "githubStars": 1
      },
      "registryName": "ai.compeller/compel",
      "remotes": [
        {
          "type": "streamable-http",
          "url": "https://compeller.ai/api/mcp"
        }
      ],
      "repository": "https://github.com/Compellerai/compeller-mcp",
      "reviewed": false,
      "slug": "compeller-compel",
      "source": "the official MCP registry",
      "sourceUrl": "https://registry.modelcontextprotocol.io/v0.1/servers?search=ai.compeller/compel",
      "summary": "Create and track AI music videos and audio-reactive visuals from songs.",
      "updatedAt": "2026-05-05T03:21:40Z",
      "url": "https://www.anchorterminal.com/tools/compeller-compel",
      "vendor": "compeller.ai",
      "vendorUrl": "https://compeller.ai",
      "version": "0.5.1",
      "websiteUrl": "",
      "where": "hosted",
      "why": [
        "vendor"
      ]
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/tools/compeller-compel",
    "json": "https://www.anchorterminal.com/tools/compeller-compel.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/tools/compeller-compel.md",
    "slim": "https://www.anchorterminal.com/tools/compeller-compel.min.md"
  },
  "markdown": "# Compeller\n\n\u003e Indexed, not reviewed: facts from the official MCP registry and our own checks. No score, grade or rank, and not in the rankings until the panel reviews it. How the index works: https://www.anchorterminal.com/indexed/\n\n- Kind: MCP server, by compeller.ai (https://compeller.ai)\n- Category: Music generation (https://www.anchorterminal.com/categories/music-generation.md)\n- Listed because: It's published in the registry under compeller.ai, a namespace the registry only gives to whoever proves they control that domain.\n- What the official MCP registry says: Create and track AI music videos and audio-reactive visuals from songs.\n\n## Facts\n\n- MCP registry: `ai.compeller/compel` 0.5.1\n- Endpoint: https://compeller.ai/api/mcp (streamable HTTP)\n- Source: https://github.com/Compellerai/compeller-mcp\n- GitHub stars: 1\n- Registry entry updated: 2026-05-05\n\n## Tools\n\n- Tools it lists (30, about 4,545 tokens of context, `tools/list` without credentials, checked 2026-10-04 22:20 UTC):\n  - `get_capabilities` (read-only): Get Compeller platform capabilities, supported features, and API version.\n  - `get_pricing` (read-only): Get current Compeller subscription plans and pricing.\n  - `list_styles` (read-only): List available visual styles for Compeller video generation.\n  - `upload_media` (read-only): Get upload instructions for media files (audio, images, video). Returns the upload URL and required headers. Requires API token authentication.\n  - `search_music` (read-only): Search Deezer preview tracks by song, artist, or album. Use this when the user provides a song string but no MP3/WAV/FLAC file.\n  - `create_compel_from_music` (writes): Create a compel from a selected Deezer preview track. If the user provides an audio file instead, upload that file and use create_compel.\n  - `create_compel` (writes): Create a Compeller generation job from primary audio media and optional reference media. Returns compel id, status, and links to track progress and retrieve…\n  - `get_compel` (read-only): Get the current status, progress, and details of a Compeller generation job.\n  - `start_render` (writes): Start rendering a READY compel with default configuration so an agent can continue to final MP4 without opening the browser UI.\n  - `list_compels` (read-only): List all Compeller generation jobs for the authenticated account, newest first.\n  - `search_compels` (read-only): Search Compeller generation jobs by title for the authenticated account.\n  - `list_renderings` (read-only): List all video renderings for a specific compel.\n  - `get_rendering` (read-only): Get details of a specific video rendering.\n  - `search_media` (read-only): Search and list uploaded media files for the authenticated account.\n  - `register_webhook` (writes): Register an HTTPS endpoint to receive signed push notifications for compel lifecycle events (compel.ready when renderable, compel.completed, compel.failed).…\n  - `list_webhooks` (read-only): List all webhook endpoints registered for the authenticated account. Secrets are never returned by this tool.\n  - `delete_webhook` (writes): Delete a webhook endpoint by id. Removes the registration and stops future deliveries.\n  - `test_webhook_delivery` (writes): Synchronously POST a synthetic webhook.test event to a registered endpoint. Uses the same HMAC-SHA256 signature as real deliveries, runs the standard URL…\n  - `update_webhook` (writes): Update one or more mutable fields on a registered webhook endpoint: url, events, active. At least one of these must be provided. Validation mirrors…\n  - `rotate_webhook_secret` (writes): Mint a new HMAC-SHA256 signing secret for a registered webhook endpoint. The previous secret is invalidated immediately - integrators must update their…\n  - `cancel_compel` (writes): Cancel an in-progress compel. Dequeues it if still queued, otherwise cancels any active external (AI provider) tasks and transitions it to CANCELLED.…\n  - `get_account_credits` (read-only): Get the authenticated account's render-minute balance and plan: minutes remaining (free + paid), monthly allowance, plan code, and whether the quota is…\n  - `list_lighting_effects` (read-only): 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…\n  - `launch_lighting_cue` (writes): 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…\n  - `list_lighting_cues` (read-only): List the live (non-stopped) lighting cues REACT is executing, including each cue's launch_id, resolved variables, launch_contract, and feedback. Optionally…\n  - `get_lighting_cue` (read-only): Fetch a single live lighting cue by its launch_id, including resolved variables, launch_contract, and REACT feedback.\n  - `stop_lighting_cue` (writes): Stop a live cue by its launch_id. Idempotent - the cue is marked stop-requested so REACT drops it on its next refresh.\n  - `set_lighting_cue_variables` (writes): 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…\n  - `ack_lighting_cue` (writes): REACT/BAE acknowledgement for a launch_id. Idempotently records whether the executor accepted or rejected the cue and which executor observed it.\n  - `report_lighting_cue` (writes): REACT/BAE report-back for cue status, active variables, skipped bindings, capability misses, last_frame_at, and errors.\n- How its tools read to an agent (0 errors, 5 warnings, 1 note, about 4,545 tokens; rules at https://www.anchorterminal.com/check.md; not part of the score):\n  - warn TC11 report_lighting_cue: 5 parameters without a description: capability_misses, error, executor_id, last_frame_at, skipped_bindings\n  - warn TC13 launch_lighting_cue: launch_contract (object with no properties), variables (object with no properties)\n  - warn TC13 report_lighting_cue: active_variables (object with no properties), capability_misses[] (object with no properties)\n  - warn TC13 set_lighting_cue_variables: variables (object with no properties)\n  - warn TC18 upload_media: readOnlyHint is true but the name says \"upload\"\n  - note TC24 server: 30 of 30 tools have no outputSchema\n\n- JSON: https://www.anchorterminal.com/api/v1/tools/compeller-compel.json\n- Being indexed says nothing about quality, and nobody can pay for it. Ask for a review: https://www.anchorterminal.com/builders/#claiming\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-05",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Terminal",
        "url": "https://www.anchorterminal.com/tools/"
      },
      {
        "name": "Indexed",
        "url": "https://www.anchorterminal.com/indexed/"
      },
      {
        "name": "Compeller",
        "url": ""
      }
    ],
    "description": "Compeller, an MCP server by compeller.ai, listed from the official MCP registry. Indexed, not reviewed: facts and our own checks, no score or ranking. Create and track AI music videos and audio-reactive visuals from songs.",
    "facts": [
      "not reviewed",
      "not ranked",
      "facts only"
    ],
    "h1": "Compeller",
    "image": "https://www.anchorterminal.com/assets/og/indexed.png",
    "path": "/tools/compeller-compel",
    "published": "",
    "section": "indexed",
    "title": "Compeller: MCP server, indexed from the official MCP registry",
    "toc": null,
    "updated": "2026-10-05",
    "url": "https://www.anchorterminal.com/tools/compeller-compel"
  },
  "tokens": {
    "markdown": 1800,
    "slim": 1730
  },
  "version": 1
}
