CCAPI
Image, video, music and text generation across 100+ models through one endpoint.
我该使用它吗
质量与安全性
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"mcp": {
"url": "https://api.ccapi.ai/mcp"
}
}
}远程端点
https://api.ccapi.ai/mcpstreamable-httphttps://api.ccapi.ai/mcp/imagestreamable-httphttps://api.ccapi.ai/mcp/videostreamable-httphttps://api.ccapi.ai/mcp/musicstreamable-httphttps://api.ccapi.ai/mcp/textstreamable-http它能做什么
工具清单
工具(4)
🟢generate_video(model, prompt, images, videos, audios, ...)
Generate a video from a text prompt, optionally driven by reference images (image-to-video, first/last frame). This is asynchronous: it returns a task_id you poll with get_task(platform='video'). Generation usually takes 30-180 seconds. Pass wait_seconds to have the server poll for you. Video generation is the most expensive capability here — confirm the prompt with the user before spending on retries.
输入模式
{
"type": "object",
"properties": {
"model": {
"type": "string",
"description": "Exact model name, e.g. doubao-seedance-2-0-260128, veo-3.1-quality or viduq3-pro. Call list_models with category 'video' if unsure."
},
"prompt": {
"type": "string",
"description": "Description of the video to generate."
},
"images": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "Optional reference image URLs. A single image is used as the first frame; use image_roles to control multiple."
},
"videos": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "Optional Seedance reference video URLs or asset:// URIs returned by the trusted asset catalog."
},
"audios": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "Optional Seedance reference audio URLs or asset:// URIs returned by the trusted asset catalog. Reference audio cannot be used alone."
},
"duration": {
"type": [
"null",
"integer"
],
"description": "Clip length in seconds. Model-dependent, typically 4-15; an unsupported value is rejected with a message naming the supported ones. Omit for the model default."
},
"resolution": {
"type": "string",
"description": "Output resolution: 480p, 720p (widest compatibility) or 1080p. Model-dependent."
},
"ratio": {
"type": "string",
"description": "Aspect ratio, e.g. 16:9, 9:16, 1:1, 21:9 or adaptive. Which values a model accepts varies; an unsupported one is rejected with a message naming the valid ones."
},
"generate_audio": {
"type": [
"null",
"boolean"
],
"description": "Generate a synchronised soundtrack. Only some models support this."
},
"image_roles": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "Role of each entry in images, positionally: first_frame, last_frame or reference_image."
},
"wait_seconds": {
"type": [
"null",
"integer"
],
"description": "Poll server-side for up to this many seconds (max 240) and return the finished video if it completes in time. Omit to return a task_id immediately."
}
},
"required": [
"model",
"prompt"
],
"additionalProperties": false
}输出模式
{
"type": "object",
"properties": {
"task_id": {
"type": "string",
"description": "Pass this to get_task together with platform to check progress."
},
"platform": {
"type": "string",
"description": "Always 'video'. Pass to get_task."
},
"status": {
"type": "string",
"description": "One of: queued, in_progress, completed, failed."
},
"model": {
"type": "string",
"description": "Model that accepted the request."
},
"video_urls": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "Finished video URLs, when the task completed within wait_seconds."
},
"note": {
"type": "string",
"description": "What to do next."
}
},
"required": [
"task_id",
"platform",
"status",
"model",
"note"
],
"additionalProperties": false
}🟢get_balance
Report the remaining and used balance for this CCAPI key. Useful before starting an expensive batch of generations, or to explain a quota failure to the user.
输入模式
{
"type": "object",
"additionalProperties": false
}输出模式
{
"type": "object",
"properties": {
"unlimited": {
"type": "boolean",
"description": "True when this token has no spending cap, in which case the amount fields are not meaningful."
},
"remaining_amount": {
"type": "number",
"description": "Remaining balance, in the account's display currency. Omitted when unlimited."
},
"used_amount": {
"type": "number",
"description": "Balance consumed to date, in the same unit."
},
"total_amount": {
"type": "number",
"description": "Remaining plus used. Omitted when unlimited."
},
"currency": {
"type": "string",
"description": "Unit of the amounts above, e.g. USD."
},
"note": {
"type": "string",
"description": "Guidance when the balance is low, unlimited, or scoped to a token."
}
},
"required": [
"unlimited",
"used_amount",
"currency"
],
"additionalProperties": false
}🟢get_task(platform, task_id, wait_seconds)
Check the status of an asynchronous generation task submitted by generate_video, generate_music, generate_lyrics, extend_music, or generate_image with async=true. Pass the platform and task_id exactly as they were returned. Status is one of queued, in_progress, completed or failed; poll every few seconds until it settles, or pass wait_seconds to have the server wait for you.
输入模式
{
"type": "object",
"properties": {
"platform": {
"type": "string",
"description": "Platform the task belongs to, exactly as returned by the submit tool: image, video, suno or producer."
},
"task_id": {
"type": "string",
"description": "Task identifier returned by the submit tool."
},
"wait_seconds": {
"type": [
"null",
"integer"
],
"description": "Poll server-side for up to this many seconds (max 240) and return once the task finishes. Omit for a single immediate status check."
}
},
"required": [
"platform",
"task_id"
],
"additionalProperties": false
}输出模式
{
"type": "object",
"properties": {
"task_id": {
"type": "string",
"description": "The task this status refers to."
},
"platform": {
"type": "string",
"description": "Platform the task belongs to."
},
"status": {
"type": "string",
"description": "One of: queued, in_progress, completed, failed, unknown."
},
"progress": {
"type": "string",
"description": "Progress indication, when the backend reports one."
},
"result_urls": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "Finished asset URLs. May expire; download anything worth keeping."
},
"fail_reason": {
"type": "string",
"description": "Why the task failed, when status is failed."
},
"note": {
"type": "string",
"description": "What to do next."
},
"raw": {
"description": "Backend payload, for details this summary does not cover (lyrics text, per-clip metadata, seeds)."
}
},
"required": [
"task_id",
"platform",
"status"
],
"additionalProperties": false
}🟢list_models(category, search)
List the AI models this CCAPI key can actually call, with their capability category and the MCP tool that drives them. Call this before generating anything if you are unsure a model name is valid — availability depends on the key's group and changes over time. Never guess model names.
输入模式
{
"type": "object",
"properties": {
"category": {
"type": "string",
"description": "Filter by capability. One of: text, image, video, music, embedding, other. Omit to list every model this key can use."
},
"search": {
"type": "string",
"description": "Case-insensitive substring match on the model name, e.g. 'claude' or 'seedance'."
}
},
"additionalProperties": false
}输出模式
{
"type": "object",
"properties": {
"models": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The exact model name to pass to other tools."
},
"category": {
"type": "string",
"description": "Capability category: text, image, video, music, embedding or other."
},
"description": {
"type": "string",
"description": "Human-readable description, when the platform publishes one."
},
"vendor": {
"type": "string",
"description": "Upstream vendor, e.g. Anthropic, Google, Suno."
},
"groups": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "Token groups that can reach this model."
},
"endpoints": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "API endpoint families this model supports."
},
"tool": {
"type": "string",
"description": "Which MCP tool to call for this model. Absent means no MCP tool drives it — reach it through the REST API instead."
}
},
"required": [
"name",
"category"
],
"additionalProperties": false
},
"description": "Models available to the calling key."
},
"total": {
"type": "integer",
"description": "Number of models returned."
},
"note": {
"type": "string",
"description": "Guidance about the result set."
}
},
"required": [
"models",
"total"
],
"additionalProperties": false
}推荐提示词
get_balanceget_balancelist_modelslist_modelslist_modelsget_balance社区
证据