Skip to content

CCAPI

by ccapi.ai · remote · no sign-in to list tools · v1.0.1 · published by ai.ccapi

Image, video, music and text generation across 100+ models through one endpoint.

Final · 1Changes · 7

11 tools: 1 do something that can't be undone, 7 change things and 3 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http ccapi https://api.ccapi.ai/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "chat_completion" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"idempotentHint":false}; The description's first verb is "send": a word for sending, and what is sent cannot be taken back.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

11 tools

Can't be undone 1Claude Code: ask
  • chat_completionSend a conversation to any text model available through CCAPI (Claude, GPT, Gemini, DeepSeek, GLM, MiniMax, Kimi, Qwen…) and get the reply.1 finding

    Why it is in this group

    • The description's first verb is "send": a word for sending, and what is sent cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "chat_completion" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"idempotentHint":false}; The description's first verb is "send": a word for sending, and what is sent cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    Send a conversation to any text model available through CCAPI (Claude, GPT, Gemini, DeepSeek, GLM, MiniMax, Kimi, Qwen…) and get the reply. Useful for consulting a second model for a different perspective, running a cheap model over bulk work, or reaching a model the current client does not have configured. Responses are non-streaming.

    Annotations the server declares

    • idempotentHint: false
    • readOnlyHint: true
Changes things 7Claude Code: ask
  • edit_imageEdit existing images according to an instruction, using the dedicated image edit endpoint.No findings

    Why it is in this group

    • The name "edit_image" says "edit": a word for a change.
    Description, as the server wrote it
    Edit existing images according to an instruction, using the dedicated image edit endpoint. Provide at least one source image. For pure text-to-image, or for models that take references through the generation endpoint, use generate_image instead.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
    • readOnlyHint: false
  • extend_musicContinue an existing song from a given timestamp, producing a longer version.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Continue an existing song from a given timestamp, producing a longer version. Requires the clip_id of a previously generated song, which appears in the 'raw' payload of a completed generate_music task. Asynchronous — poll with get_task.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
    • readOnlyHint: false
  • generate_imageGenerate an image from a text prompt, optionally guided by reference images (image-to-image).No findings

    Why it is in this group

    • The name "generate_image" says "generate": a word for a change.
    Description, as the server wrote it
    Generate an image from a text prompt, optionally guided by reference images (image-to-image). Returns image URLs directly. Most models finish in 10-60 seconds; if your client times out, set async=true to get a task_id you can poll instead. This call costs money — do not retry speculatively.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
    • readOnlyHint: false
  • generate_lyricsWrite song lyrics from a description, without generating audio.No findings

    Why it is in this group

    • The name "generate_lyrics" says "generate": a word for a change.
    Description, as the server wrote it
    Write song lyrics from a description, without generating audio. Useful as a first step before generate_music with custom=true, so the user can approve the words before paying for audio. Asynchronous — poll with get_task.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
    • readOnlyHint: false
  • generate_musicGenerate a song with vocals or instrumental.No findings

    Why it is in this group

    • The name "generate_music" says "generate": a word for a change.
    Description, as the server wrote it
    Generate a song with vocals or instrumental. Two modes: simple (custom=false) where you describe the song and the model writes the lyrics, or custom (custom=true) where you supply lyrics, title and style tags. Asynchronous — returns a task_id you poll with get_task; generation usually takes 30-120 seconds and normally yields two variations.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
    • readOnlyHint: false
  • generate_videoGenerate a video from a text prompt, optionally driven by reference images (image-to-video, first/last frame).No findings

    Why it is in this group

    • The name "generate_video" says "generate": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
    • readOnlyHint: false
  • upscale_imageIncrease the resolution of an existing image 2x with ccapi-upscale-v1.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Increase the resolution of an existing image 2x with ccapi-upscale-v1. Input must be between 256x256 and 1024x1024 and under 5 MB; for larger inputs, regenerate with a high-resolution model instead.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
    • readOnlyHint: false
Only reads 3Claude Code: allow
  • get_balanceReport the remaining and used balance for this CCAPI key.No findings

    Why it is in this group

    • The name "get_balance" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • idempotentHint: false
    • readOnlyHint: true
  • get_taskCheck the status of an asynchronous generation task submitted by generate_video, generate_music, generate_lyrics, extend_music, or generate_image with async=true.No findings

    Why it is in this group

    • The name "get_task" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • idempotentHint: false
    • readOnlyHint: true
  • list_modelsList the AI models this CCAPI key can actually call, with their capability category and the MCP tool that drives them.No findings

    Why it is in this group

    • The name "list_models" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • idempotentHint: false
    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.1. Values in angle brackets are yours to fill in.

claude mcp add --transport http ccapi https://api.ccapi.ai/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__ccapi__get_balance",
      "mcp__ccapi__get_task",
      "mcp__ccapi__list_models"
    ],
    "ask": [
      "mcp__ccapi__chat_completion",
      "mcp__ccapi__edit_image",
      "mcp__ccapi__extend_music",
      "mcp__ccapi__generate_image",
      "mcp__ccapi__generate_lyrics",
      "mcp__ccapi__generate_music",
      "mcp__ccapi__generate_video",
      "mcp__ccapi__upscale_image"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as ccapi. Review it before you use it.