{
  "ok": true,
  "resource": {
    "id": "RES_38842A09E48A",
    "resource_type": "mcp_server",
    "canonical_url": "https://registry.modelcontextprotocol.io/v0.1/servers/ai.compeller%2Fcompel/versions/0.5.1",
    "name": "Compeller",
    "summary_en": "Create and track AI music videos and audio-reactive visuals from songs.",
    "summary_zh": "从歌曲创建并跟踪AI音乐视频和音频反应式视觉内容。",
    "description_en": "Compeller is an MCP server that enables the creation and tracking of AI-generated music videos and audio-reactive visuals from songs. It provides tools for music search, media upload, compel (generation job) creation, rendering, and webhook management. The server requires authentication for generation and account tools, while discovery tools are accessible without it.",
    "description_zh": "Compeller是一个MCP服务器，支持从歌曲创建和跟踪AI生成的音乐视频和音频反应式视觉内容。它提供音乐搜索、媒体上传、compel（生成任务）创建、渲染和webhook管理工具。服务器要求对生成和账户工具进行身份验证，而发现工具无需身份验证即可访问。",
    "provider_name": "ai.compeller",
    "homepage_url": "https://github.com/Compellerai/compeller-mcp",
    "endpoint_url": "https://compeller.ai/api/mcp",
    "source_url": "https://github.com/Compellerai/compeller-mcp",
    "icon_url": null,
    "cover_image_url": null,
    "capabilities": [
      "media.generate",
      "media.search",
      "media.upload",
      "media.track",
      "webhook.manage"
    ],
    "categories": [
      "creative"
    ],
    "industries": [
      "media"
    ],
    "protocols": [
      "mcp"
    ],
    "auth": {
      "type": "unknown"
    },
    "pricing": {
      "model": "unknown"
    },
    "input_schema": {},
    "output_schema": {},
    "metadata": {
      "content_language": "en",
      "translation_status": "original-only",
      "official_registry": {
        "version": "0.5.1",
        "packages": [],
        "remotes": []
      },
      "review_gate": {
        "passed": true,
        "reasons": [],
        "policy_version": "review-gate-v1",
        "evaluated_at": "2026-09-03T06:21:31.804Z"
      }
    },
    "latest_version": "0.5.1",
    "status": "listed",
    "health_status": "healthy",
    "source_kind": "imported",
    "source_agent": "registry.modelcontextprotocol.io",
    "trust": {
      "signal": "none",
      "reason": null,
      "signals": {
        "yellow": 0,
        "red": 0
      }
    },
    "review_summary": {
      "method_version": "capability-evidence-v2",
      "capability_definition": "strong",
      "contract_completeness": "strong",
      "access_friction": "medium",
      "operational_transparency": "partial",
      "evidence_strength": "protocol_inspected",
      "use_readiness": "conditional",
      "reviewed_at": "2026-09-03T06:21:32.823Z"
    },
    "experience_count": 0,
    "verified_experience_count": 0,
    "usage_count": 0,
    "success_rate": null,
    "first_seen_at": "2026-09-03T02:50:16.651Z",
    "last_seen_at": "2026-09-03T06:21:32.085Z",
    "published_at": "2026-09-03T06:21:32.085Z",
    "created_at": "2026-09-03T02:50:16.651Z",
    "updated_at": "2026-09-03T06:21:32.823Z",
    "api_url": "https://aiworkshub.io/api/v1/resources/RES_38842A09E48A",
    "reviews_url": "https://aiworkshub.io/api/v1/resources/RES_38842A09E48A/reviews",
    "public_url": "https://aiworkshub.io/resources/RES_38842A09E48A",
    "distribution": {
      "canonical_identity": "https://registry.modelcontextprotocol.io/v0.1/servers/ai.compeller%2Fcompel/versions/0.5.1",
      "syndicatable": true,
      "origins": [
        {
          "registry_url": "https://registry.modelcontextprotocol.io/",
          "upstream_resource_id": "ai.compeller/compel@0.5.1",
          "upstream_record_url": "https://registry.modelcontextprotocol.io/v0.1/servers/ai.compeller%2Fcompel/versions/0.5.1",
          "relation": "syndicated",
          "metadata": {
            "source": "official-mcp-registry"
          },
          "first_seen_at": "2026-09-03T02:50:16.651Z",
          "last_seen_at": "2026-09-03T06:21:32.085Z"
        }
      ]
    },
    "tools": [
      {
        "name": "create_compel",
        "title_en": "Create Compel from uploaded audio",
        "title_zh": "从上传的音频创建Compel",
        "description_en": "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.",
        "description_zh": "从主要音频媒体和可选参考媒体创建Compeller生成任务。返回compel ID、状态以及跟踪进度和检索渲染的链接。",
        "input_schema": {
          "type": "object",
          "properties": {
            "title": {
              "type": "string",
              "description": "Title for the compel"
            },
            "primary_media_id": {
              "type": "integer",
              "description": "ID of the uploaded audio media to use as the primary track"
            },
            "style": {
              "type": "string",
              "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"
              ]
            },
            "target_platform": {
              "type": "string",
              "description": "Target platform; sets the aspect ratio when aspect_ratio is omitted.",
              "enum": [
                "tiktok",
                "reels",
                "shorts",
                "instagram",
                "square",
                "youtube",
                "web"
              ]
            },
            "aspect_ratio": {
              "type": "string",
              "description": "Explicit aspect ratio override (takes precedence over target_platform).",
              "enum": [
                "16:9",
                "9:16",
                "1:1"
              ]
            },
            "artist_context": {
              "type": "string",
              "description": "Additional creative context about the artist or song"
            }
          },
          "required": [
            "title",
            "primary_media_id"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "write",
        "open_world": false,
        "idempotency": "unknown",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {
          "type": "bearer"
        },
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "create_compel_from_music",
        "title_en": "Create Compel from music search",
        "title_zh": "从音乐搜索创建Compel",
        "description_en": "Create a compel from a selected Deezer preview track. If the user provides an audio file instead, upload that file and use create_compel.",
        "description_zh": "从选定的Deezer预览曲目创建compel。如果用户提供音频文件，则上传该文件并使用create_compel。",
        "input_schema": {
          "type": "object",
          "properties": {
            "track_id": {
              "type": "integer",
              "description": "Deezer track id returned by search_music"
            },
            "title": {
              "type": "string",
              "description": "Optional compel title override"
            },
            "style": {
              "type": "string",
              "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"
              ]
            },
            "target_platform": {
              "type": "string",
              "description": "Target platform; sets the aspect ratio when aspect_ratio is omitted.",
              "enum": [
                "tiktok",
                "reels",
                "shorts",
                "instagram",
                "square",
                "youtube",
                "web"
              ]
            },
            "aspect_ratio": {
              "type": "string",
              "description": "Explicit aspect ratio override (takes precedence over target_platform).",
              "enum": [
                "16:9",
                "9:16",
                "1:1"
              ]
            },
            "artist_context": {
              "type": "string",
              "description": "Additional creative context"
            }
          },
          "required": [
            "track_id"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "write",
        "open_world": false,
        "idempotency": "unknown",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {
          "type": "bearer"
        },
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "delete_webhook",
        "title_en": "Delete webhook",
        "title_zh": "删除Webhook",
        "description_en": "Delete a webhook endpoint by id. Removes the registration and stops future deliveries.",
        "description_zh": "按ID删除webhook端点。移除注册并停止未来的投递。",
        "input_schema": {
          "type": "object",
          "properties": {
            "webhook_id": {
              "type": "integer",
              "description": "The webhook id returned by register_webhook or list_webhooks"
            }
          },
          "required": [
            "webhook_id"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "irreversible",
        "open_world": false,
        "idempotency": "unknown",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {
          "type": "bearer"
        },
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "get_capabilities",
        "title_en": "Get Compeller capabilities",
        "title_zh": "获取Compeller能力",
        "description_en": "Get Compeller platform capabilities, supported features, and API version.",
        "description_zh": "获取Compeller平台能力、支持的功能和API版本。",
        "input_schema": {
          "type": "object",
          "properties": {},
          "required": []
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "safe_to_retry",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "get_compel",
        "title_en": "Get Compel status",
        "title_zh": "获取Compel状态",
        "description_en": "Get the current status, progress, and details of a Compeller generation job.",
        "description_zh": "获取Compeller生成任务的当前状态、进度和详细信息。",
        "input_schema": {
          "type": "object",
          "properties": {
            "compel_id": {
              "type": "integer",
              "description": "The compel ID to check"
            }
          },
          "required": [
            "compel_id"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "safe_to_retry",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {
          "type": "bearer"
        },
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "get_pricing",
        "title_en": "Get Compeller pricing",
        "title_zh": "获取Compeller定价",
        "description_en": "Get current Compeller subscription plans and pricing.",
        "description_zh": "获取当前Compeller订阅计划和定价。",
        "input_schema": {
          "type": "object",
          "properties": {},
          "required": []
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "safe_to_retry",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "get_rendering",
        "title_en": "Get rendering details",
        "title_zh": "获取渲染详情",
        "description_en": "Get details of a specific video rendering.",
        "description_zh": "获取特定视频渲染的详细信息。",
        "input_schema": {
          "type": "object",
          "properties": {
            "rendering_id": {
              "type": "integer",
              "description": "The rendering ID to retrieve"
            }
          },
          "required": [
            "rendering_id"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "safe_to_retry",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {
          "type": "bearer"
        },
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "list_compels",
        "title_en": "List Compels",
        "title_zh": "列出Compels",
        "description_en": "List all Compeller generation jobs for the authenticated account, newest first.",
        "description_zh": "列出认证账户的所有Compeller生成任务，最新的在前。",
        "input_schema": {
          "type": "object",
          "properties": {
            "limit": {
              "type": "integer",
              "description": "Max results to return (default 20, max 100)"
            },
            "offset": {
              "type": "integer",
              "description": "Pagination offset"
            }
          },
          "required": []
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "safe_to_retry",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {
          "type": "bearer"
        },
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "list_renderings",
        "title_en": "List Compel renderings",
        "title_zh": "列出Compel渲染",
        "description_en": "List all video renderings for a specific compel.",
        "description_zh": "列出特定compel的所有视频渲染。",
        "input_schema": {
          "type": "object",
          "properties": {
            "compel_id": {
              "type": "integer",
              "description": "The compel ID to list renderings for"
            }
          },
          "required": [
            "compel_id"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "safe_to_retry",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {
          "type": "bearer"
        },
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "list_styles",
        "title_en": "List visual styles",
        "title_zh": "列出视觉风格",
        "description_en": "List available visual styles for Compeller video generation.",
        "description_zh": "列出Compeller视频生成可用的视觉风格。",
        "input_schema": {
          "type": "object",
          "properties": {},
          "required": []
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "safe_to_retry",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "list_webhooks",
        "title_en": "List webhooks",
        "title_zh": "列出Webhooks",
        "description_en": "List all webhook endpoints registered for the authenticated account. Secrets are never returned by this tool.",
        "description_zh": "列出认证账户注册的所有webhook端点。此工具从不返回密钥。",
        "input_schema": {
          "type": "object",
          "properties": {},
          "required": []
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "safe_to_retry",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {
          "type": "bearer"
        },
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "register_webhook",
        "title_en": "Register webhook",
        "title_zh": "注册Webhook",
        "description_en": "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.",
        "description_zh": "注册一个HTTPS端点以接收compel生命周期事件（可渲染时的compel.ready、compel.completed、compel.failed）的签名推送通知。返回webhook_id和HMAC-SHA256签名密钥仅一次——立即存储密钥，之后不再返回。投递通过X-Compeller-Signature: sha256=<hex>对原始正文签名。投递至少一次：失败的投递会以退避方式重试（最多6次），每次重试携带相同的X-Compeller-Event-Id，因此请据此去重。",
        "input_schema": {
          "type": "object",
          "properties": {
            "url": {
              "type": "string",
              "description": "HTTPS URL to deliver events to (max 2048 chars)"
            },
            "events": {
              "type": "array",
              "description": "Event types to subscribe to. Omit or pass [\"*\"] for all. Known types: compel.ready (renderable - call start_render), compel.completed, compel.failed.",
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "compel.ready",
                  "compel.completed",
                  "compel.failed"
                ]
              }
            }
          },
          "required": [
            "url"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "write",
        "open_world": true,
        "idempotency": "unknown",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {
          "type": "bearer"
        },
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "rotate_webhook_secret",
        "title_en": "Rotate webhook secret",
        "title_zh": "轮换Webhook密钥",
        "description_en": "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.",
        "description_zh": "为已注册的webhook端点生成新的HMAC-SHA256签名密钥。之前的密钥立即失效——集成者必须在下一个compel终端事件触发前更新其接收器。返回新密钥仅一次；收到后请存储。",
        "input_schema": {
          "type": "object",
          "properties": {
            "webhook_id": {
              "type": "integer",
              "description": "The webhook id to rotate the secret on"
            }
          },
          "required": [
            "webhook_id"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "irreversible",
        "open_world": false,
        "idempotency": "unknown",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {
          "type": "bearer"
        },
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "search_compels",
        "title_en": "Search Compels",
        "title_zh": "搜索Compels",
        "description_en": "Search Compeller generation jobs by title for the authenticated account.",
        "description_zh": "按标题搜索认证账户的Compeller生成任务。",
        "input_schema": {
          "type": "object",
          "properties": {
            "query": {
              "type": "string",
              "description": "Search query to match against compel titles"
            },
            "limit": {
              "type": "integer",
              "description": "Max results to return (default 20)"
            }
          },
          "required": [
            "query"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "safe_to_retry",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {
          "type": "bearer"
        },
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "search_media",
        "title_en": "Search uploaded media",
        "title_zh": "搜索上传的媒体",
        "description_en": "Search and list uploaded media files for the authenticated account.",
        "description_zh": "搜索并列出认证账户上传的媒体文件。",
        "input_schema": {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "description": "Filter by media type: audio, image, video, or text"
            },
            "limit": {
              "type": "integer",
              "description": "Max results to return (default 20, max 100)"
            },
            "offset": {
              "type": "integer",
              "description": "Pagination offset"
            }
          },
          "required": []
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "safe_to_retry",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {
          "type": "bearer"
        },
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "search_music",
        "title_en": "Search music previews",
        "title_zh": "搜索音乐预览",
        "description_en": "Search Deezer preview tracks by song, artist, or album. Use this when the user provides a song string but no MP3/WAV/FLAC file.",
        "description_zh": "按歌曲、艺术家或专辑搜索Deezer预览曲目。当用户提供歌曲字符串但没有MP3/WAV/FLAC文件时使用。",
        "input_schema": {
          "type": "object",
          "properties": {
            "query": {
              "type": "string",
              "description": "Song, artist, or album search query"
            },
            "limit": {
              "type": "integer",
              "description": "Max results to return (default 10, max 20)"
            }
          },
          "required": [
            "query"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "safe_to_retry",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "start_render",
        "title_en": "Start Compel render",
        "title_zh": "开始Compel渲染",
        "description_en": "Start rendering a READY compel with default configuration so an agent can continue to final MP4 without opening the browser UI.",
        "description_zh": "使用默认配置开始渲染READY状态的compel，以便代理无需打开浏览器UI即可继续生成最终MP4。",
        "input_schema": {
          "type": "object",
          "properties": {
            "compel_id": {
              "type": "integer",
              "description": "The READY compel ID to render"
            }
          },
          "required": [
            "compel_id"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "write",
        "open_world": false,
        "idempotency": "unknown",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {
          "type": "bearer"
        },
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "test_webhook_delivery",
        "title_en": "Test webhook delivery",
        "title_zh": "测试Webhook投递",
        "description_en": "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.",
        "description_zh": "同步向注册端点POST一个合成的webhook.test事件。使用与真实投递相同的HMAC-SHA256签名，在投递时运行标准URL安全检查，并返回{webhook_id, event_id, event_type, delivered, response_status, response_body_preview, latency_ms, error?}。忽略端点的事件订阅——测试投递始终按需进行。在依赖compel.completed / compel.failed事件之前，使用此工具验证您的集成。",
        "input_schema": {
          "type": "object",
          "properties": {
            "webhook_id": {
              "type": "integer",
              "description": "The webhook id to test. Must belong to the authenticated account."
            }
          },
          "required": [
            "webhook_id"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "write",
        "open_world": true,
        "idempotency": "unknown",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {
          "type": "bearer"
        },
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "update_webhook",
        "title_en": "Update webhook",
        "title_zh": "更新Webhook",
        "description_en": "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).",
        "description_zh": "更新已注册webhook端点的一个或多个可变字段：url、events、active。必须至少提供其中一个。验证与register_webhook相同（仅https，<=2048字符，URL安全黑名单）。返回更新后的端点（此工具从不返回密钥——请使用rotate_webhook_secret）。",
        "input_schema": {
          "type": "object",
          "properties": {
            "webhook_id": {
              "type": "integer",
              "description": "The webhook id to update"
            },
            "url": {
              "type": "string",
              "description": "New HTTPS URL (max 2048 chars)"
            },
            "events": {
              "type": "array",
              "description": "Replacement event types. Omit to leave unchanged. [\"*\"] or an empty filtered list resets to wildcard.",
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "compel.ready",
                  "compel.completed",
                  "compel.failed"
                ]
              }
            },
            "active": {
              "type": "boolean",
              "description": "Toggle delivery on/off without losing the registration"
            }
          },
          "required": [
            "webhook_id"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "write",
        "open_world": true,
        "idempotency": "unknown",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {
          "type": "bearer"
        },
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "upload_media",
        "title_en": "Get media upload instructions",
        "title_zh": "获取媒体上传说明",
        "description_en": "Get upload instructions for media files (audio, images, video). Returns the upload URL and required headers. Requires API token authentication.",
        "description_zh": "获取媒体文件（音频、图像、视频）的上传说明。返回上传URL和所需标头。需要API令牌认证。",
        "input_schema": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string",
              "description": "Filename for the upload"
            },
            "mime_type": {
              "type": "string",
              "description": "MIME type of the file"
            },
            "type": {
              "type": "string",
              "description": "Media type: audio, image, video, or text"
            }
          },
          "required": []
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "safe_to_retry",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {
          "type": "bearer"
        },
        "pricing": {},
        "metadata": {}
      }
    ],
    "review_profile": {
      "schema_version": "aiworkshub.resource-review/0.2",
      "method_version": "capability-evidence-v2",
      "review_state": {
        "identity": "verified",
        "source": "verified",
        "connectivity": "verified",
        "contract": "strong",
        "safe_use": "untested",
        "real_use": "unobserved"
      },
      "assessment": {
        "capability_definition": "strong",
        "contract_completeness": "strong",
        "access_friction": "medium",
        "operational_transparency": "partial",
        "evidence_strength": "protocol_inspected",
        "use_readiness": "conditional"
      },
      "profile": {
        "capabilities": [
          {
            "id": "media.generate",
            "weight": 90,
            "confidence": 90,
            "evidence_ids": [
              "source-record",
              "protocol-tools"
            ]
          },
          {
            "id": "media.search",
            "weight": 70,
            "confidence": 90,
            "evidence_ids": [
              "protocol-tools"
            ]
          },
          {
            "id": "media.upload",
            "weight": 60,
            "confidence": 90,
            "evidence_ids": [
              "protocol-tools"
            ]
          },
          {
            "id": "media.track",
            "weight": 80,
            "confidence": 90,
            "evidence_ids": [
              "protocol-tools"
            ]
          },
          {
            "id": "webhook.manage",
            "weight": 50,
            "confidence": 90,
            "evidence_ids": [
              "protocol-tools"
            ]
          }
        ],
        "domains": [
          {
            "id": "media",
            "weight": 100,
            "confidence": 90,
            "evidence_ids": [
              "source-record"
            ]
          }
        ],
        "workflow_roles": [
          "design",
          "generate",
          "monitor",
          "deliver"
        ]
      },
      "capability_units": [
        {
          "id": "tool:get_capabilities",
          "kind": "mcp_tool",
          "capability_id": "media.generate",
          "effect": "read",
          "open_world": false,
          "idempotency": "safe_to_retry",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [],
          "produces": [],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:get_pricing",
          "kind": "mcp_tool",
          "capability_id": "media.generate",
          "effect": "read",
          "open_world": false,
          "idempotency": "safe_to_retry",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [],
          "produces": [],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:list_styles",
          "kind": "mcp_tool",
          "capability_id": "media.generate",
          "effect": "read",
          "open_world": false,
          "idempotency": "safe_to_retry",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [],
          "produces": [],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:upload_media",
          "kind": "mcp_tool",
          "capability_id": "media.upload",
          "effect": "read",
          "open_world": false,
          "idempotency": "safe_to_retry",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "audio",
            "image",
            "video",
            "text"
          ],
          "produces": [],
          "runtime_auth": {
            "type": "bearer"
          },
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:search_music",
          "kind": "mcp_tool",
          "capability_id": "media.search",
          "effect": "read",
          "open_world": false,
          "idempotency": "safe_to_retry",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "query"
          ],
          "produces": [
            "track"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:create_compel_from_music",
          "kind": "mcp_tool",
          "capability_id": "media.generate",
          "effect": "write",
          "open_world": false,
          "idempotency": "unknown",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "track_id"
          ],
          "produces": [
            "compel"
          ],
          "runtime_auth": {
            "type": "bearer"
          },
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:create_compel",
          "kind": "mcp_tool",
          "capability_id": "media.generate",
          "effect": "write",
          "open_world": false,
          "idempotency": "unknown",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "audio"
          ],
          "produces": [
            "compel"
          ],
          "runtime_auth": {
            "type": "bearer"
          },
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:get_compel",
          "kind": "mcp_tool",
          "capability_id": "media.track",
          "effect": "read",
          "open_world": false,
          "idempotency": "safe_to_retry",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "compel_id"
          ],
          "produces": [
            "status"
          ],
          "runtime_auth": {
            "type": "bearer"
          },
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:start_render",
          "kind": "mcp_tool",
          "capability_id": "media.generate",
          "effect": "write",
          "open_world": false,
          "idempotency": "unknown",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "compel_id"
          ],
          "produces": [
            "rendering"
          ],
          "runtime_auth": {
            "type": "bearer"
          },
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:list_compels",
          "kind": "mcp_tool",
          "capability_id": "media.track",
          "effect": "read",
          "open_world": false,
          "idempotency": "safe_to_retry",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [],
          "produces": [
            "compel"
          ],
          "runtime_auth": {
            "type": "bearer"
          },
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:search_compels",
          "kind": "mcp_tool",
          "capability_id": "media.track",
          "effect": "read",
          "open_world": false,
          "idempotency": "safe_to_retry",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "query"
          ],
          "produces": [
            "compel"
          ],
          "runtime_auth": {
            "type": "bearer"
          },
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:list_renderings",
          "kind": "mcp_tool",
          "capability_id": "media.track",
          "effect": "read",
          "open_world": false,
          "idempotency": "safe_to_retry",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "compel_id"
          ],
          "produces": [
            "rendering"
          ],
          "runtime_auth": {
            "type": "bearer"
          },
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:get_rendering",
          "kind": "mcp_tool",
          "capability_id": "media.track",
          "effect": "read",
          "open_world": false,
          "idempotency": "safe_to_retry",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "rendering_id"
          ],
          "produces": [
            "rendering"
          ],
          "runtime_auth": {
            "type": "bearer"
          },
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:search_media",
          "kind": "mcp_tool",
          "capability_id": "media.upload",
          "effect": "read",
          "open_world": false,
          "idempotency": "safe_to_retry",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [],
          "produces": [
            "media"
          ],
          "runtime_auth": {
            "type": "bearer"
          },
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:register_webhook",
          "kind": "mcp_tool",
          "capability_id": "webhook.manage",
          "effect": "write",
          "open_world": true,
          "idempotency": "unknown",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "url"
          ],
          "produces": [
            "webhook"
          ],
          "runtime_auth": {
            "type": "bearer"
          },
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:list_webhooks",
          "kind": "mcp_tool",
          "capability_id": "webhook.manage",
          "effect": "read",
          "open_world": false,
          "idempotency": "safe_to_retry",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [],
          "produces": [
            "webhook"
          ],
          "runtime_auth": {
            "type": "bearer"
          },
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:delete_webhook",
          "kind": "mcp_tool",
          "capability_id": "webhook.manage",
          "effect": "irreversible",
          "open_world": false,
          "idempotency": "unknown",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "webhook_id"
          ],
          "produces": [],
          "runtime_auth": {
            "type": "bearer"
          },
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:test_webhook_delivery",
          "kind": "mcp_tool",
          "capability_id": "webhook.manage",
          "effect": "write",
          "open_world": true,
          "idempotency": "unknown",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "webhook_id"
          ],
          "produces": [
            "delivery_result"
          ],
          "runtime_auth": {
            "type": "bearer"
          },
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:update_webhook",
          "kind": "mcp_tool",
          "capability_id": "webhook.manage",
          "effect": "write",
          "open_world": true,
          "idempotency": "unknown",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "webhook_id"
          ],
          "produces": [
            "webhook"
          ],
          "runtime_auth": {
            "type": "bearer"
          },
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:rotate_webhook_secret",
          "kind": "mcp_tool",
          "capability_id": "webhook.manage",
          "effect": "irreversible",
          "open_world": false,
          "idempotency": "unknown",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "webhook_id"
          ],
          "produces": [
            "secret"
          ],
          "runtime_auth": {
            "type": "bearer"
          },
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        }
      ],
      "access": {
        "distribution_license": {},
        "runtime_auth": {
          "type": "bearer",
          "headers": [
            "Authorization",
            "X-API-Token"
          ]
        },
        "runtime_pricing": {
          "model": "unknown"
        },
        "dependencies": []
      },
      "operational_flags": [],
      "trust": {
        "signal": "none",
        "evidence_ids": [],
        "reason": null
      },
      "fit": {
        "good_for": [
          "Creating AI music videos from songs or audio files",
          "Generating audio-reactive visuals",
          "Managing and tracking generation jobs",
          "Integrating webhooks for lifecycle events"
        ],
        "not_for": [
          "Tasks requiring no authentication for generation",
          "Non-media creative tasks"
        ]
      },
      "evidence": [
        {
          "id": "source-record",
          "type": "registry_record",
          "source": "https://github.com/Compellerai/compeller-mcp",
          "observation": "MCP source record for Compeller; version 0.5.1.",
          "observed_at": null,
          "payload": {}
        },
        {
          "id": "protocol-tools",
          "type": "protocol_observation",
          "source": "https://compeller.ai/api/mcp#tools/list",
          "observation": "30 tools were returned by MCP discovery; 20 were retained for review.",
          "observed_at": "2026-09-03T06:21:04.736Z",
          "payload": {}
        }
      ],
      "unknowns": [
        "Exact pricing model and subscription plans",
        "Authentication details beyond bearer token",
        "Output schemas for tools",
        "Real-world usage patterns"
      ],
      "id": "REV_4A132EB6B9C8",
      "resource_id": "RES_38842A09E48A",
      "evaluator_type": "platform_ai",
      "provider": "deepseek",
      "model": "deepseek-v4-flash",
      "review_scope": "protocol-inspected-mcp",
      "created_at": "2026-09-03T06:21:32.823Z"
    }
  }
}