{
  "protocolVersion": "2025-06-18",
  "schema_version": "2025-06-18",
  "serverInfo": {
    "name": "clipia",
    "title": "Clipia — AI media, chat & presentations",
    "description": "Generate AI images, video, speech, music and presentations; chat with text models, plan scenes, compose finished videos, browse models and prompt templates, and check your Clipia credit balance.",
    "version": "1.0.6"
  },
  "name": "clipia",
  "title": "Clipia — AI media, chat & presentations",
  "description": "Generate AI images, video, speech, music and presentations; chat with text models, plan scenes, compose finished videos, browse models and prompt templates, and check your Clipia credit balance.",
  "version": "1.0.6",
  "vendor": {
    "name": "Clipia",
    "url": "https://clipia.ai",
    "support": "support@clipia.ai"
  },
  "documentation": "https://clipia.ai/en/docs/mcp",
  "transport": {
    "type": "streamable-http",
    "url": "https://mcp.clipia.ai/mcp",
    "endpoint": "https://mcp.clipia.ai/mcp"
  },
  "authentication": {
    "type": "oauth2",
    "required": true,
    "authorization_servers": [
      "https://api.clipia.ai"
    ],
    "protected_resource_metadata": "https://mcp.clipia.ai/.well-known/oauth-protected-resource",
    "scopes": [
      "mcp"
    ],
    "schemes": [
      {
        "type": "oauth2",
        "authorizationServer": "https://api.clipia.ai",
        "scopes": [
          "mcp"
        ]
      },
      {
        "type": "bearer",
        "header": "Authorization",
        "description": "Clipia API key from https://clipia.ai/en/developer, sent as Bearer clipia_..."
      }
    ],
    "api_key": {
      "header": "Authorization",
      "scheme": "Bearer",
      "prefix": "clipia_"
    }
  },
  "capabilities": {
    "tools": {},
    "prompts": {},
    "resources": {},
    "extensions": {
      "io.modelcontextprotocol/ui": {
        "mimeTypes": [
          "text/html;profile=mcp-app"
        ]
      }
    }
  },
  "tools": [
    {
      "name": "generate_image",
      "description": "Generate image(s) from a text prompt, optionally with reference images (editing / image-to-image). Waits briefly and usually returns the finished image inline. Cost in credits is returned."
    },
    {
      "name": "generate_video",
      "description": "Start a video generation from a text prompt (text-to-video) or a start image (image-to-video). Returns request_id and cost immediately — renders take 1–10 min; poll with wait_generation."
    },
    {
      "name": "generate_audio",
      "description": "Generate speech from text (text-to-speech): pick a voice and language, get an mp3 back. Returns request_id and cost; poll with wait_generation until COMPLETED for output.audio.url. Use the request_id as a voiceover in compose_video, or the mp3 on its own."
    },
    {
      "name": "generate_music",
      "description": "Generate background music / a soundtrack from a text description (mood, genre, tempo, instruments). Instrumental by default — ideal under narration. Returns request_id and cost; poll with wait_generation until COMPLETED for output.audio.url. Use the request_id as audio_request_id in compose_video, or the mp3 on its own."
    },
    {
      "name": "chat",
      "description": "Chat with a text LLM and get the reply text plus token usage and credit cost. Pass either a single prompt or a full messages array. Charged in credits from the connected account."
    },
    {
      "name": "generate_scenario",
      "description": "Plan a multi-scene video from a brief: an LLM director returns per-scene English prompts with durations, plus a soundtrack prompt. Feed each scene prompt to generate_video, then stitch with compose_video. Charged in credits like chat."
    },
    {
      "name": "compose_video",
      "description": "Stitch 2–20 finished video scenes into ONE final clip server-side (normalized frame/fps, concatenated, optional voiceover and soundtrack, optional burned-in subtitles). Requires idempotency_key. Reuse the same key only when retrying the identical unchanged request after a transport or ambiguous failure; use a new key for a changed request. Returns request_id (cmp_*) — poll with wait_generation; output.video.url is the final mp4."
    },
    {
      "name": "wait_generation",
      "description": "Long-poll a generation until COMPLETED, FAILED or CANCELED. Returns output URLs (and an inline preview) when done."
    },
    {
      "name": "get_generation",
      "description": "Get the current status/result of a generation without waiting. When COMPLETED returns output.images[].url (preview) and original_url (full quality)."
    },
    {
      "name": "list_models",
      "description": "List available AI models with type (text/image/video/audio), capabilities and pricing in credits."
    },
    {
      "name": "get_model",
      "description": "Get model details and pricing: input schema for generation, context and per-token rates for text models."
    },
    {
      "name": "get_balance",
      "description": "Get the credit balance of the connected account and 30-day usage of the API key."
    },
    {
      "name": "search_templates",
      "description": "Search 3500+ curated prompt templates (hybrid text+semantic, RU or EN). Each result has a ready prompt and a recommended model."
    },
    {
      "name": "generate_presentation",
      "description": "Render a NEW slide deck (editable PPTX + PDF + PNG previews) from a DeckSpec you compose: title, language (ru/en), theme picked to fit the subject, optional brand, and 3–20 slides. Each slide has a layout (cover, section, bullets, two-col, image-full, quote, stats, closing); set image.prompt (English) for an AI illustration or skip for text-only. Returns request_id (prs_*) — poll with wait_generation; output has pptx_url, pdf_url, preview_urls[]. Costs credits (render fee + illustrations)."
    },
    {
      "name": "edit_presentation",
      "description": "Edit an existing deck instead of regenerating it: change slide text, title, theme, add/remove/reorder slides. The deck is rebuilt from its saved spec and previously generated illustrations are reused without another illustration charge — a text fix costs only the render fee. Indexes are 0-based positions in the current deck. Illustrations are redrawn (and billed) only for slides whose image.prompt changed or that you list in regenerate_images. Returns request_id (prs_*) — poll with wait_generation."
    }
  ]
}