CCAPI
Image, video, music and text generation across 100+ models through one endpoint.
Sollte ich dies verwenden
Qualität und Sicherheit
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"mcp": {
"url": "https://api.ccapi.ai/mcp"
}
}
}Remote-Endpunkte
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-httpWas es kann
Tool-Inventar
Tools (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.
Eingabe-Schema
{
"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
}Ausgabe-Schema
{
"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.
Eingabe-Schema
{
"type": "object",
"additionalProperties": false
}Ausgabe-Schema
{
"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.
Eingabe-Schema
{
"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
}Ausgabe-Schema
{
"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.
Eingabe-Schema
{
"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
}Ausgabe-Schema
{
"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
}Empfohlene Prompts
get_balanceget_balancelist_modelslist_modelslist_modelsget_balanceCommunity
Nachweis