Kinoseed

MCP server

Image and video generation for your AI agent

Connect Claude, Claude Code, Cursor or any MCP client to Kinoseed. Your agent picks from Kling, Veo, Seedance, Nano Banana and more, and pays with your credits.

The agent quotes the price before it spends.

The quote tool prices a run without charging, so the agent can tell you what it costs and wait for your OK. A failed run is refunded automatically, and a retried call never starts a second run.

Setup in three steps

  1. Step 1

    Create an API key

    On your account page. It starts with ks_live_ and spends that account's credits.

  2. Step 2

    Add the config

    Pick your client below and paste the block, with your key in place of ks_live_YOUR_KEY.

  3. Step 3

    Ask

    Start with a question that costs nothing: "What does a 5-second Kling 3.0 clip cost on Kinoseed? Quote it, do not generate."

Set up your client

Server URL https://kinoseed.app/api/mcp, streamable HTTP, header Authorization: Bearer ks_live_… (or X-Kinoseed-Key: ks_live_… where a client cannot set Authorization). These are the same configs as the MCP docs.

Claude Desktop works today through a small bridge. The claude.ai connector dialog needs OAuth, which is coming.

Claude Desktop

Settings, Developer, Edit config (claude_desktop_config.json)

Claude Desktop
{
  "mcpServers": {
    "kinoseed": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://kinoseed.app/api/mcp",
        "--header",
        "Authorization:${KINOSEED_AUTH}"
      ],
      "env": {
        "KINOSEED_AUTH": "Bearer ks_live_YOUR_KEY"
      }
    }
  }
}

The custom connector dialog (Settings, Connectors, Add custom connector) asks for a URL and signs in with OAuth, which Kinoseed does not offer yet. Until it does, the config above bridges the same server through mcp-remote with your key in the header. Restart Claude Desktop after saving.

claude.ai custom connector

Settings, Connectors, Add custom connector

Not yet: this dialog needs OAuth sign-in, and Kinoseed signs in with an API key for now. Use the Claude Desktop config above, or Claude Code.

Recipes

Copy a prompt into your agent. Each one tells it to call quote first and ask you before it generates. Swap the example.com links for your own public https image links: the MCP tools take links, not uploads. Prices are per run at the headline credit price.

110 credits ($2.20) a run

Photo to dance clip

One photo of a person becomes a 5-second vertical dance clip.

  • generate_video · Kling 3.0 · 110 credits
Prompt
Use the Kinoseed MCP tools. Turn this photo into a short vertical dance clip: https://example.com/your-photo.jpg

Plan:
1. generate_video with model kling-3 (Kling 3.0): model: "kling-3", startImageUrl: "https://example.com/your-photo.jpg", aspect: "9:16", duration: 5, audio: false. Prompt: the person from the photo dances an upbeat, smooth routine, full body in frame, steady camera, same outfit and face.

Before generating anything, call quote for every step with exactly these arguments (kind "image" for generate_image, "video" for generate_video), add it up and tell me the total in credits and dollars. It should come to about 110 credits. Then stop and wait for my OK. Only after I approve, run the steps in order, follow video jobs with get_job, and send me the result URLs.

91 credits ($1.82) a run: 16 + 75

Product to UGC ad

A product photo becomes a creator-style frame, then an 8-second talking clip with sound.

  • generate_image · Nano Banana 2 · 16 credits
  • generate_video · Google Veo 3.1 Lite · 75 credits
Prompt
Use the Kinoseed MCP tools. Make a UGC-style vertical ad for this product: https://example.com/your-product.jpg

Plan:
1. generate_image with model nano-banana (Nano Banana 2): model: "nano-banana", referenceImageUrls: ["https://example.com/your-product.jpg"], aspect: "9:16", count: 1. Prompt: a friendly creator holds the product up to the phone camera in a bright kitchen, natural light, selfie framing. Use the image URL it returns as the next step's startImageUrl.
2. generate_video with model veo-3-1-lite (Google Veo 3.1 Lite): model: "veo-3-1-lite", startImageUrl: "https://example.com/step-1-image.jpg", aspect: "9:16", duration: 8, resolution: "720p", audio: true. Prompt: the creator talks to camera about why they love the product, one short sentence, warm and casual. Pass the step 1 image as startImageUrl.

Before generating anything, call quote for every step with exactly these arguments (kind "image" for generate_image, "video" for generate_video), add it up and tell me the total in credits and dollars. It should come to about 91 credits. Then stop and wait for my OK. Only after I approve, run the steps in order, follow video jobs with get_job, and send me the result URLs.

16 credits ($0.32) a run

Pet to plushie

A photo of your pet becomes a soft plush toy portrait.

  • generate_image · Nano Banana 2 · 16 credits
Prompt
Use the Kinoseed MCP tools. Turn my pet into a plush toy: https://example.com/your-pet.jpg

Plan:
1. generate_image with model nano-banana (Nano Banana 2): model: "nano-banana", referenceImageUrls: ["https://example.com/your-pet.jpg"], aspect: "1:1", count: 1. Prompt: this exact pet as a soft handmade plush toy, visible stitching and felt texture, sitting on a wooden shelf, studio light.

Before generating anything, call quote for every step with exactly these arguments (kind "image" for generate_image, "video" for generate_video), add it up and tell me the total in credits and dollars. It should come to about 16 credits. Then stop and wait for my OK. Only after I approve, run the steps in order, follow video jobs with get_job, and send me the result URLs.

75 credits ($1.50) a run: 3 × 25

Hook variants

Three different 5-second opening hooks from one product shot, to test which one stops the scroll.

  • 3 × generate_video · Seedance 1.5 Pro · 25 credits
Prompt
Use the Kinoseed MCP tools. Make three different opening hooks for a vertical ad from this product shot: https://example.com/your-product.jpg

Plan:
1. 3 calls to generate_video with model seedance-1-5-pro (Seedance 1.5 Pro): model: "seedance-1-5-pro", startImageUrl: "https://example.com/your-product.jpg", aspect: "9:16", duration: 5, resolution: "720p", audio: false. Write three different hook prompts (for example a fast push-in reveal, a drop into frame, a hand grabbing it) and make one call per hook.

Before generating anything, call quote for every step with exactly these arguments (kind "image" for generate_image, "video" for generate_video), add it up and tell me the total in credits and dollars. It should come to about 75 credits. Then stop and wait for my OK. Only after I approve, run the steps in order, follow video jobs with get_job, and send me the result URLs.

110 credits ($2.20) a run

Bullet-time product shot

A frozen moment with the camera orbiting the product, 5 seconds, widescreen.

  • generate_video · Kling 3.0 · 110 credits
Prompt
Use the Kinoseed MCP tools. Make a bullet-time product shot from this photo: https://example.com/your-product.jpg

Plan:
1. generate_video with model kling-3 (Kling 3.0): model: "kling-3", startImageUrl: "https://example.com/your-product.jpg", aspect: "16:9", duration: 5, audio: false. Prompt: time freezes, splashes and particles hang in the air, the camera orbits 180 degrees around the product, cinematic light.

Before generating anything, call quote for every step with exactly these arguments (kind "image" for generate_image, "video" for generate_video), add it up and tell me the total in credits and dollars. It should come to about 110 credits. Then stop and wait for my OK. Only after I approve, run the steps in order, follow video jobs with get_job, and send me the result URLs.

Six tools

list_models
The model catalog: ids, inputs, aspects, durations and an example price in credits.
get_credits
The balance behind the key and the plan, if any.
quote
What a run would cost, without starting it. Call it before every generate.
generate_image
Start an image run. Waits for the result by default and returns the image URLs.
generate_video
Start a video run. Returns the job at once by default; follow it with get_job.
get_job
One job, optionally held until it finishes.

Read more