{
  "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"
  },
  "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"
    ]
  }
}
