SimilarClip

mcp · rest · llms.txt

Let your AI agent run the channel.

SimilarClip speaks MCP and REST. Any agent with your API key can generate narrated, illustrated videos, buy plans and credit (you approve every payment), and publish to your YouTube channels.

  1. 01

    Create a key

    Sign up, pick a plan, and create an API key in Settings → API. One key works for both MCP and REST.

  2. 02

    Connect your agent

    Add the MCP server to Claude, Cursor or any MCP client, or call the REST API from your own code.

  3. 03

    Let it ship

    Your agent picks a style and voice, generates the video, buys credit with your approval, and publishes to YouTube.

Connect

The MCP server lives at https://similarclip.com/mcp (Streamable HTTP, stateless). The REST API lives under https://similarclip.com/api/v1. Both take Authorization: Bearer sc_live_….

Claude Code
claude mcp add --transport http similarclip https://similarclip.com/mcp --header "Authorization: Bearer sc_live_YOUR_KEY"
Cursor · Windsurf · VS Code (mcpServers JSON)
{
  "mcpServers": {
    "similarclip": {
      "type": "http",
      "url": "https://similarclip.com/mcp",
      "headers": {
        "Authorization": "Bearer sc_live_YOUR_KEY"
      }
    }
  }
}
stdio-only clients (via mcp-remote)
{
  "mcpServers": {
    "similarclip": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://similarclip.com/mcp",
        "--header",
        "Authorization: Bearer sc_live_YOUR_KEY"
      ]
    }
  }
}
REST · create a video and publish it when done
curl -X POST https://similarclip.com/api/v1/videos \
  -H "Authorization: Bearer sc_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"topic": "why octopuses have three hearts", "duration_min": 5, "publish": {"visibility": "unlisted"}}'

Tools

Every capability exists both as an MCP tool and as a REST endpoint, with the same parameters.

get_accountGET /api/v1/me
Who the API key belongs to, plan/subscription status, AI credit balance, connected YouTube channels and saved defaults (style, voice, description footer). Call this first to see what the account can do.
get_optionsGET /api/v1/options
Every valid value for create_video and create_schedule: visual style presets (with their art direction), TTS providers and voices, narration vibes, speeds, duration limits and visibilities. Also returns this account's saved defaults.
get_billingGET /api/v1/billing
Credit balance (plan credit + credit packs), the current plan, the purchasable plans (monthly and annual), credit packs and the estimated cost per minute of video. Use it to work out whether a video is affordable before creating it.
create_checkoutPOST /api/v1/billing/checkout
Start a purchase for the account: a subscription plan (monthly or annual) or a one-time credit pack (needs an active plan). Returns a checkout_url that a HUMAN must open to pay (agents never handle card details). Share the link with your user, wait for them to confirm, then check get_billing.
estimate_video_costGET /api/v1/videos/estimate
Estimated USD cost of a video of the given length, compared with the current balance. Calibrated from this account's own recent videos when it has at least 3 (else the platform rate), and scaled by seconds_per_image and image_check, since images are most of the cost. Real billing is metered at exact AI cost; get_video.cost_breakdown shows where a finished video's money went.
create_videoPOST /api/v1/videos
Generate a narrated, fully illustrated video. Give EITHER `topic` (SimilarClip researches it, picks an angle and writes an original script) OR `youtube_url` (it reimagines that clip with a fresh script, new visuals and a new voice; the source needs captions). Generation is asynchronous and takes several minutes: poll get_video until status is "completed" or "failed". Set `publish` to upload to YouTube automatically when done.
list_videosGET /api/v1/videos
The account's videos, newest first. Filter by status to find running or finished ones.
get_videoGET /api/v1/videos/{id}
Full status of one video: progress, current pipeline step, errors (and whether they are resumable), the downloadable MP4 and thumbnail URLs once completed, generated YouTube SEO metadata, the latest YouTube publication, the resolved creative settings, and `render`: what the last render actually contained (motion, transition, caption style, pop-up word count, music, sound-effect count). Check `render` when a setting seems to have no effect.
start_videoPOST /api/v1/videos/{id}/start
Start generating a draft video (one created with start=false, or refused earlier for billing).
resume_videoPOST /api/v1/videos/{id}/resume
Resume a paused video, or retry a failed one from the step it stopped at (when error.resumable is true).
pause_videoPOST /api/v1/videos/{id}/pause
Pause a queued or processing video at the next step boundary. Resume later with resume_video.
stop_videoPOST /api/v1/videos/{id}/stop
Stop a running or paused video for good (it cannot be resumed afterwards).
delete_videoDELETE /api/v1/videos/{id}
Permanently delete a video and its files. Running videos must be stopped first. Already-published YouTube uploads are not touched.
publish_videoPOST /api/v1/videos/{id}/publish
Upload a completed video to one of the account's connected YouTube channels, with the generated thumbnail. Title/description/tags default to the AI-generated SEO metadata. The upload runs in the background: poll get_video and read `publication` for the YouTube URL.
get_scriptGET /api/v1/videos/{id}/script
The video's script, line by line (one line per scene), with word count and estimated narration length. Use it on a script_ready video before approve_script, or on any video to read what is narrated.
update_scriptPOST /api/v1/videos/{id}/script
Replace the script of a script_ready video. Send every line in order: lines with a scene_id keep that scene (its text replaced), lines without one are new scenes, and scenes you leave out are deleted. To change lines of an already rendered video use edit_scene_line instead.
approve_scriptPOST /api/v1/videos/{id}/script/approve
Render a script_ready video: narration, images, captions, music and the final video. This is where most of the cost is spent, so it passes the same credit check as start_video.
list_scenesGET /api/v1/videos/{id}/scenes
Every scene of a video in order: its narration line, timing, and each image (slide) shown during it, with the image URL, the exact words it illustrates, the storyboarded visual it was drawn from, and the image check result (passed, redraws, issues). Also returns the key subjects every image was told to draw accurately. Use the ids with edit_scene_line, regenerate_scene_image and regenerate_slide_image.
edit_scene_linePOST /api/v1/videos/{id}/scenes/{scene_id}
Change one scene's narration on a completed or failed video. Only that line is re-voiced and only its images are redrawn; every other scene, the SEO and the thumbnail are kept, and the video is re-rendered.
regenerate_scene_imagePOST /api/v1/videos/{id}/scenes/{scene_id}/regenerate-images
Redraw every image of one scene (text and voice untouched), then re-render the video.
regenerate_slide_imagePOST /api/v1/videos/{id}/slides/{slide_id}/regenerate
Redraw a single image (slide) — e.g. one with a mangled hand or a poor match — then re-render the video. Everything else is kept.
regenerate_voicePOST /api/v1/videos/{id}/regenerate-voice
Re-narrate a completed or failed video, optionally with a different voice, vibe or speed. Images, SEO and thumbnail are kept; image timing follows the new narration.
update_video_settingsPOST /api/v1/videos/{id}/settings
Change a video's creative settings. On a completed or failed video, caption, pop-word, motion, transition, music and sound-effect changes re-render it from the existing images and voice (cheap, no new AI generation). seconds_per_image, hook_style and image_check only affect steps that haven't run yet.
set_video_metadataPOST /api/v1/videos/{id}/metadata
Set your own YouTube title, description, tags and/or thumbnail headline (pick from get_video.seo_options or write your own). Applies now on a finished video and survives any later re-render. Changing thumbnail_headline also redraws the thumbnail.
regenerate_thumbnailPOST /api/v1/videos/{id}/thumbnail/regenerate
Redraw a completed video's thumbnail, optionally with a new headline (e.g. one of get_video.seo_options.thumbnail_headlines). Call it again for another variant.
get_video_statsGET /api/v1/youtube/stats
Live YouTube views, likes and comments for the account's published videos, next to the settings each was made with (topic, style, voice, vibe, creative settings, length), so you can learn what works. Pass video ids, or omit them for the 50 most recent.
list_youtube_channelsGET /api/v1/youtube/channels
The YouTube channels connected to the account for publishing. Connecting a channel needs a human (Google OAuth): if none are connected, give your user the connect_url.
list_schedulesGET /api/v1/schedules
Autopilot schedules: each turns a queue of topics into videos on a cadence (daily, every 2 days, weekly) and can auto-publish them to YouTube.
get_scheduleGET /api/v1/schedules/{id}
One schedule with its topic queue (pending, generating, completed, failed topics and their video ids).
create_schedulePOST /api/v1/schedules
Put a channel on autopilot: SimilarClip produces one video per run from the topic queue (queue topics via `topics`, add_schedule_topics or generate_schedule_topics; a run with an empty queue is skipped) and optionally auto-publishes each to YouTube.
add_schedule_topicsPOST /api/v1/schedules/{id}/topics
Append topics to a schedule's queue (duplicates are skipped). One topic is consumed per run.
generate_schedule_topicsPOST /api/v1/schedules/{id}/topics/generate
Have the AI brainstorm fresh, non-duplicate topics from the schedule's niche and append them to its queue.
update_schedulePOST /api/v1/schedules/{id}
Change any of a schedule's settings. Only the fields you send change. Changing frequency, time_of_day or timezone re-plans the next run.
delete_scheduleDELETE /api/v1/schedules/{id}
Delete a schedule and its topic queue. Videos it already made are kept.
delete_schedule_topicDELETE /api/v1/schedules/{id}/topics/{topic_id}
Remove a pending topic from a schedule's queue (topics already turned into videos stay in the history).
set_schedule_enabledPOST /api/v1/schedules/{id}/enabled
Turn a schedule on or off.
run_schedule_nowPOST /api/v1/schedules/{id}/run
Produce the schedule's next video immediately instead of waiting for its next slot.
update_account_settingsPOST /api/v1/me/settings
Account-wide defaults that create_video and create_schedule use when a field is omitted: style, custom_style_prompt and voice (provider, voice, vibe, instructions, speed), plus description_footer, appended to every YouTube description this account publishes (links, socials, a call to action). Omitted fields are left as they are; "" clears custom_style_prompt, voice.instructions or description_footer. Returns the saved settings.
list_webhooksGET /api/v1/webhooks
The account's webhook endpoints, the events each receives, and how the last delivery went.
create_webhookPOST /api/v1/webhooks
Have SimilarClip POST to your HTTPS endpoint when a video's script is ready, it completes or fails, or a publish succeeds or fails, instead of polling. The response includes the signing secret ONCE: verify X-SimilarClip-Signature (t=<unix>,v1=<hex HMAC-SHA256 of "<t>.<raw body>">) with it. Failed deliveries retry with backoff for about 15 minutes.
delete_webhookDELETE /api/v1/webhooks/{id}
Stop sending events to an endpoint.

For machines

/llms.txt
Short index for LLMs (llmstxt.org format).
/llms-full.txt
The full agent manual: workflows, every tool, errors, limits.
/openapi.json
OpenAPI 3.1 spec of the REST API.
/.well-known/mcp.json
MCP discovery card: endpoint, auth and tools.

Payments always need a human: purchase tools return a Stripe checkout link for you to approve. Connecting a YouTube channel also needs you, through Google sign-in.