Docs

TubeMagic MCP

Everything you need to connect your AI to TubeMagic and get the most out of its 85 tools.

Introduction

TubeMagic runs a Model Context Protocol (MCP) server. Any AI app that supports MCP can use your TubeMagic account to research, create, and plan YouTube videos, with the same plan, limits, and credits as the app.

MCP URLhttps://tubemagic.com/api/mcp

85

tools available

OAuth

or MCP keys

HTTP

Streamable transport

Quick start

Three steps, no installs.

  1. 01

    Add TubeMagic

    Paste the MCP URL as a custom connector in ChatGPT, Claude, Cursor, or any MCP client.

  2. 02

    Sign in

    Approve access with your TubeMagic account. Prefer keys? Create one in Settings → Developers.

  3. 03

    Just ask

    Your AI picks the right TubeMagic tool and follows your plan, limits, and credits.

Open Settings → Developers

Connect a client

Pick your AI app. Clients that support OAuth open a TubeMagic sign-in the first time you connect.

  1. 1Open Claude and go to Settings → Connectors.
  2. 2Choose Add custom connector, name it TubeMagic, and paste the MCP URL.
  3. 3Click Connect, sign in to TubeMagic, and approve access.

Works on claude.ai and the Claude desktop app on plans that support custom connectors.

Authentication

Choose OAuth for apps like ChatGPT and Claude, or an MCP key for scripts and clients without OAuth.

OAuth

Recommended

OAuth 2.1 with PKCE and dynamic client registration. Clients discover sign-in from the protected resource metadata, so you only paste the MCP URL.

Access tokens last 60 minutes and refresh automatically for 30 days.

MCP keys

Create up to 10 keys in Settings → Developers. Keys start with tubemagic_mcp_ and are shown only once.

Send the key as a bearer token on every request.

Request header
Authorization: Bearer tubemagic_mcp_your_key

Discovery: https://tubemagic.com/.well-known/oauth-protected-resource/api/mcp

Plans, limits & credits

MCP follows the exact same rules as the TubeMagic app.

  • Paid plan

    Most tools need a paid TubeMagic plan, the same as in the app. Account tools like usage, logs, and sessions work on every plan.

  • Daily limits

    Free models share the app’s daily limits, usually 100 generations per tool every 24 hours. Ask your AI to run get_usage_limits to see what’s left.

  • Credits

    Premium models and credit tools spend credits: thumbnails cost 20 credits, chat replies cost 2 to 16. Failed generations are refunded.

  • Same account

    Everything your AI creates is saved to your TubeMagic account, so you can open it in the app anytime.

Tools reference

Every tool your AI can call, grouped like the TubeMagic app. Open a tool to see its parameters.

Tools

Video Ideas

generate_video_ideaWrites

Generate YouTube video idea

Generate a new video idea for a YouTube channel, based on its latest videos and matching the channel's style and language. Returns a title and why it should work for the channel's audience. Needs a paid TubeMagic plan. Free models allow 100 ideas per 24 hours; premium models spend credits instead.

  • channelrequired

    string

    The YouTube channel: a handle like @mkbhd, a channel URL, or a channel ID

  • model

    enum · default "anthropic/claude-sonnet-5.5"

    AI model to use. Defaults to anthropic/claude-sonnet-5.5 (Sonnet 5.5). anthropic/claude-sonnet-5.5 = Sonnet 5.5 (free, 100 per 24 hours) google/gemini-3-flash-preview = Gemini 3 Flash (free, 100 per 24 hours) anthropic/claude-opus-5.5 = Opus 5.5 (premium, 5 credits per generation) anthropic/claude-fable-5.1 = Fable 5.1 (premium, 10 credits per generation) openai/gpt-6-astra = GPT-6 Astra (premium, 10 credits per generation)

  • avoidIdeas

    string[]

    Up to 5 titles of ideas already suggested, so the new idea is different from them

Community Posts

generate_community_postWrites

Generate YouTube community post

Write a YouTube community tab post (a text post or a poll) for a channel, in the channel owner's voice, based on its recent videos. Posts for non-English channels are written in the channel's language. Needs a paid TubeMagic plan. Free models allow 100 posts per 24 hours; premium models spend credits instead.

  • channelrequired

    string

    The YouTube channel: a handle like @mkbhd, a channel URL, or a channel ID

  • type

    enum · default "post"

    post for a text post, poll for a poll with one question and several options

  • model

    enum · default "anthropic/claude-sonnet-5.5"

    AI model to use. Defaults to anthropic/claude-sonnet-5.5 (Sonnet 5.5). anthropic/claude-sonnet-5.5 = Sonnet 5.5 (free, 100 per 24 hours) google/gemini-3-flash-preview = Gemini 3 Flash (free, 100 per 24 hours) anthropic/claude-opus-5.5 = Opus 5.5 (premium, 5 credits per generation) anthropic/claude-fable-5.1 = Fable 5.1 (premium, 10 credits per generation) openai/gpt-6-astra = GPT-6 Astra (premium, 10 credits per generation)

Keyword Research

research_keywordWrites

Research YouTube keyword

Research a YouTube keyword: monthly search volume, difficulty, and Magic Score for the exact keyword and related keywords. Magic Score runs from 1 to 10, and higher means less competition, so a better opportunity. Needs a paid TubeMagic plan. Allows 100 searches per 24 hours.

  • keywordrequired

    string

    The keyword or search phrase to research, like "home workout"

Niche Explorer

search_nichesRead only

Search YouTube niches

Search the TubeMagic Niche Explorer: YouTube niche categories with their score, demand, competition, and monetization (0 to 100), and the niches in each with approximate RPM and an example channel. Matches the search text against niche and category names, like the Niche Explorer page. Needs a paid TubeMagic plan. Returns up to 25 niches per category by default; use page to see more of each category.

  • search

    string

    Text to match in niche or category names. Leave empty for every niche

  • category

    string

    Only this category, by ID or name (like "wealth")

  • sortBy

    enum · default "rpm"

    Sort niches by: rpm = RPM (Approx.), name = Niche, exampleChannelUrl = Example Channel

  • sortDirection

    enum · default "asc"

    ascdesc
  • limit

    integer · default 25

    Niches to return per category, up to 100

  • page

    integer · default 1

    Page of niches within each category, starting at 1

generate_sub_nichesWrites

Generate YouTube sub-niches

Generate 5 fresh sub-niche ideas inside a Niche Explorer category, each with a search keyword, estimated RPM, score (0 to 100), and competition. Costs 5 credits per generation, refunded if it fails. Ideas are saved to the user's My Niches and never repeat earlier ones. Needs a paid TubeMagic plan.

  • categoryrequired

    string

    The category to generate in, by ID or name (like "wealth"). Use search_niches to see the categories

  • seedKeyword

    string

    Optional direction for the ideas, like "AI", "for men", or "under 5 minutes"

  • audience

    enum · default "beginners"

    Audience: beginners = Beginners, intermediate = Intermediate, pros = Pros

  • style

    enum · default "faceless"

    Channel style: faceless = Faceless, personal = Personal, documentary = Docu

list_my_nichesRead only

List my generated niches

List the sub-niches the user has generated (My Niches), newest first by default, with search, category filter, and sorting. Results are paged: pass nextCursor back as cursor to get the next page. Needs a paid TubeMagic plan.

  • search

    string

    Text to match in the niche title or keyword

  • category

    string

    Only niches from this category, by ID or name

  • sortBy

    enum · default "createdAt"

    Sort by: createdAt = Generated, score = Score, rpm = Est. RPM, title = Niche

  • sortDirection

    enum · default "desc"

    ascdesc
  • cursor

    string

    nextCursor from the previous page

Warp Upload

generate_upload_packageWrites

Generate YouTube upload package

Warp Upload: generate everything needed to upload a YouTube video in one call: 3 title options, an SEO description, and tags. Give either a YouTube video or Shorts URL (it reads the transcript and matches the channel style) or a written description of the video, not both. Saved to the user's TubeMagic projects. Needs a paid TubeMagic plan. Free models allow 100 uploads per 24 hours; premium models spend credits instead.

  • videoUrl

    string

    A YouTube video or Shorts URL, like https://youtu.be/VIDEO_ID

  • videoDescription

    string

    What the video is about, if there is no URL. Written in the video's language

  • model

    enum · default "anthropic/claude-sonnet-5.5"

    AI model to use. Defaults to anthropic/claude-sonnet-5.5 (Sonnet 5.5). anthropic/claude-sonnet-5.5 = Sonnet 5.5 (free, 100 per 24 hours) google/gemini-3-flash-preview = Gemini 3 Flash (free, 100 per 24 hours) anthropic/claude-opus-5.5 = Opus 5.5 (premium, 10 credits per generation) anthropic/claude-fable-5.1 = Fable 5.1 (premium, 20 credits per generation) openai/gpt-6-astra = GPT-6 Astra (premium, 20 credits per generation)

Video Titles

generate_video_titlesWrites

Generate YouTube video titles

Generate 3 click-worthy YouTube title options for a video, in its language and in the channel’s title style. Give either a YouTube video or Shorts URL (it reads the transcript and matches the channel style) or a written description of the video, not both. Needs a paid TubeMagic plan. Free models allow 100 per 24 hours; premium models spend credits instead.

  • videoUrl

    string

    A YouTube video or Shorts URL, like https://youtu.be/VIDEO_ID

  • videoDescription

    string

    What the video is about, if there is no URL. Written in the video's language

  • model

    enum · default "anthropic/claude-sonnet-5.5"

    AI model to use. Defaults to anthropic/claude-sonnet-5.5 (Sonnet 5.5). anthropic/claude-sonnet-5.5 = Sonnet 5.5 (free, 100 per 24 hours) google/gemini-3-flash-preview = Gemini 3 Flash (free, 100 per 24 hours) anthropic/claude-opus-5.5 = Opus 5.5 (premium, 5 credits per generation) anthropic/claude-fable-5.1 = Fable 5.1 (premium, 10 credits per generation) openai/gpt-6-astra = GPT-6 Astra (premium, 10 credits per generation)

Video Description

generate_video_descriptionWrites

Generate YouTube video description

Write an SEO-optimized YouTube video description ending with two hashtags, in the video’s language. Give either a YouTube video or Shorts URL (it reads the transcript and matches the channel style) or a written description of the video, not both. Needs a paid TubeMagic plan. Free models allow 100 per 24 hours; premium models spend credits instead.

  • videoUrl

    string

    A YouTube video or Shorts URL, like https://youtu.be/VIDEO_ID

  • videoDescription

    string

    What the video is about, if there is no URL. Written in the video's language

  • wordCount

    integer · default 100

    Description length in words, 50 to 200

  • model

    enum · default "anthropic/claude-sonnet-5.5"

    AI model to use. Defaults to anthropic/claude-sonnet-5.5 (Sonnet 5.5). anthropic/claude-sonnet-5.5 = Sonnet 5.5 (free, 100 per 24 hours) google/gemini-3-flash-preview = Gemini 3 Flash (free, 100 per 24 hours) anthropic/claude-opus-5.5 = Opus 5.5 (premium, 5 credits per generation) anthropic/claude-fable-5.1 = Fable 5.1 (premium, 10 credits per generation) openai/gpt-6-astra = GPT-6 Astra (premium, 10 credits per generation)

Video Tags

generate_video_tagsWrites

Generate YouTube video tags

Generate about 30 SEO-friendly YouTube tags for a video, in its language, within YouTube’s tag length. Give either a YouTube video or Shorts URL (it reads the transcript and matches the channel style) or a written description of the video, not both. Needs a paid TubeMagic plan. Free models allow 100 per 24 hours; premium models spend credits instead.

  • videoUrl

    string

    A YouTube video or Shorts URL, like https://youtu.be/VIDEO_ID

  • videoDescription

    string

    What the video is about, if there is no URL. Written in the video's language

  • model

    enum · default "anthropic/claude-sonnet-5.5"

    AI model to use. Defaults to anthropic/claude-sonnet-5.5 (Sonnet 5.5). anthropic/claude-sonnet-5.5 = Sonnet 5.5 (free, 100 per 24 hours) google/gemini-3-flash-preview = Gemini 3 Flash (free, 100 per 24 hours) anthropic/claude-opus-5.5 = Opus 5.5 (premium, 5 credits per generation) anthropic/claude-fable-5.1 = Fable 5.1 (premium, 10 credits per generation) openai/gpt-6-astra = GPT-6 Astra (premium, 10 credits per generation)

Video Research

search_youtube_videosRead only

Search YouTube videos

Video Research: search YouTube videos with views, views per hour, engagement rate, and Outlier Score (views compared to the channel average; above 1x beat the average). Filter by type, duration, upload date, features, region, and language. Use nextPageToken for more results. Without a query, or when nothing matches, it returns videos from the user's saved videos and tracked channels instead (fromYourLibrary is true). Needs a paid TubeMagic plan. Uses the shared Video Research limit of 500 operations per 24 hours.

  • query

    string

    What to search for, at least 2 characters

  • type

    enum

    Only regular videos or only Shorts

  • duration

    enum

    short = under 4 minutes, medium = 4 to 20 minutes, long = over 20 minutes

  • sortBy

    enum

    Sort results (default relevance)

  • uploadDate

    enum

    Only videos uploaded within this period

    hourtodayweekmonthyear
  • features

    enum[]

    Only videos with all of these features

    HDsubtitlesCCommons3DLivePurchased4K360LocationHDRVR180
  • region

    string

    Two-letter country code, like US or IN

  • language

    string

    Language code, like en or hi

  • localOnly

    boolean

    Prefer results local to the region

  • pageToken

    string

    nextPageToken from the previous results, with the same query and filters

autocomplete_video_searchRead only

Autocomplete YouTube search

Get YouTube search suggestions for a partial query, to find popular search phrases. Uses the shared Video Research limit of 500 operations per 24 hours.

  • queryrequired

    string

    The partial search text

  • limit

    integer · default 8

    Suggestions to return, up to 12

get_related_videosRead only

Get related video suggestions

Suggest new videos related to the videos saved in one of the user's Video Research folders, excluding ones already in it. Seeds are picked at random from the folder, so each call can return different videos. Uses the shared Video Research limit of 500 operations per 24 hours.

  • folderIdrequired

    string

    The saved-videos folder id. Use list_video_folders to find it

  • type

    enum

    Only regular videos or only Shorts

  • duration

    enum

    short = under 4 minutes, medium = 4 to 20 minutes, long = over 20 minutes

  • sortBy

    enum

    Sort results (default relevance)

  • uploadDate

    enum

    Only videos uploaded within this period

    hourtodayweekmonthyear
  • features

    enum[]

    Only videos with all of these features

    HDsubtitlesCCommons3DLivePurchased4K360LocationHDRVR180
  • region

    string

    Two-letter country code, like US or IN

  • language

    string

    Language code, like en or hi

  • localOnly

    boolean

    Prefer results local to the region

  • limit

    integer · default 12

    Videos to return, up to 30

search_channels_to_trackRead only

Search channels to track

Search YouTube channels by name or handle, to add to a tracking database. Pass trackingId to mark channels already in that database. Uses the shared Video Research limit of 500 operations per 24 hours.

  • queryrequired

    string

    Channel name or handle

  • trackingId

    string

    Optional tracking database id

  • limit

    integer · default 12

    Channels to return, up to 12

list_saved_videosRead only

List saved videos

List the user's saved Video Research videos with their note, tags, folders, views, engagement, and Outlier Score. Search matches titles, channels, notes, tags, and folder names. Filter by folder, tags, likes, Outlier Score, subscribers, duration, and publish date. Uses the shared Video Research limit of 500 operations per 24 hours.

  • search

    string

    Text to search for

  • folderId

    string

    Only videos in this folder

  • tagIds

    string[]

    Only videos with any of these tags

  • minLikes

    number

    Minimum likes

  • maxLikes

    number

    Maximum likes

  • minOutlierScore

    number

    Minimum Outlier Score, like 2 for 2x the channel average

  • maxOutlierScore

    number

    Maximum Outlier Score

  • minSubscribers

    number

    Minimum channel subscribers

  • maxSubscribers

    number

    Maximum channel subscribers

  • minDurationSeconds

    number

    Minimum duration in seconds

  • maxDurationSeconds

    number

    Maximum duration in seconds

  • durationBucket

    enum · default "any"

    short = under 4 minutes, medium = 4 to 20, long = over 20

    anyshortmediumlong
  • publishedRange

    enum · default "any"

    Only videos published within this period

    anyhourtodayweekmonthyear
  • sortBy

    enum · default "updatedAt"

    updatedAtlikesoutliersubscribersdurationpublishedviews
  • sortDirection

    enum · default "desc"

    ascdesc
  • page

    integer · default 1

    Page number, starting at 1

  • limit

    integer · default 20

    Results per page, up to 50

save_videoWrites

Save a video

Save a YouTube video to Video Research, or update a saved one, with an optional note, folders, and tags. By default folders and tags are added to the existing ones and the note is kept unless given; set replace to true to overwrite them all. Uses the shared Video Research limit of 500 operations per 24 hours.

  • videorequired

    string

    A YouTube video ID or URL

  • note

    string | null

    A note about the video; null clears it

  • folderIds

    string[]

    Folders to put the video in

  • tagIds

    string[]

    Tags to add to the video

  • replace

    boolean · default false

    Replace the note, folders, and tags instead of adding to them

remove_saved_videoDestructive

Remove a saved video

Remove a video from the user's saved Video Research videos. Uses the shared Video Research limit of 500 operations per 24 hours.

  • videorequired

    string

    A YouTube video ID or URL

list_video_foldersRead only

List saved-video folders

List the user's Video Research folders for saved videos. Search matches folder names and keywords. Uses the shared Video Research limit of 500 operations per 24 hours.

  • search

    string

    Text to match in folder names

  • page

    integer · default 1

    Page number, starting at 1

  • limit

    integer · default 20

    Results per page, up to 50

create_video_folderWrites

Create a saved-video folder

Create a folder for saved Video Research videos. Give a video to seed the folder with its channel's keywords. Uses the shared Video Research limit of 500 operations per 24 hours.

  • namerequired

    string

    Folder name

  • video

    string

    A YouTube video ID or URL

list_video_tagsRead only

List saved-video tags

List the user's Video Research tags for saved videos. Uses the shared Video Research limit of 500 operations per 24 hours.

  • search

    string

    Text to match in tag names

  • page

    integer · default 1

    Page number, starting at 1

  • limit

    integer · default 20

    Results per page, up to 50

create_video_tagWrites

Create a saved-video tag

Create a Video Research tag for saved videos. If a tag with the same name exists, it is returned instead. Uses the shared Video Research limit of 500 operations per 24 hours.

  • namerequired

    string

    Tag name

list_tracking_databasesRead only

List tracking databases

List the user's Video Research tracking databases: named groups of YouTube channels whose videos TubeMagic tracks. Pinned ones come first. Uses the shared Video Research limit of 500 operations per 24 hours.

  • search

    string

    Text to match in database names

  • isPinned

    boolean

    Only pinned or only unpinned databases

  • page

    integer · default 1

    Page number, starting at 1

  • limit

    integer · default 20

    Results per page, up to 50

create_tracking_databaseWrites

Create a tracking database

Create a Video Research tracking database. If one with the same name exists (even a deleted one), it is reused. Uses the shared Video Research limit of 500 operations per 24 hours.

  • namerequired

    string

    Database name

  • isPinned

    boolean · default false

    Pin it to the top

update_tracking_databaseWrites

Rename or pin a tracking database

Rename a tracking database or pin/unpin it. Uses the shared Video Research limit of 500 operations per 24 hours.

  • trackingIdrequired

    string

    The tracking database id. Use list_tracking_databases to find it

  • name

    string

    New name

  • isPinned

    boolean

    Pin or unpin it

delete_tracking_databaseDestructive

Delete a tracking database

Delete a tracking database and hide its video formats. Confirm with the user first. Uses the shared Video Research limit of 500 operations per 24 hours.

  • trackingIdrequired

    string

    The tracking database id. Use list_tracking_databases to find it

list_tracked_channelsRead only

List tracked channels

List the channels in a tracking database with subscribers, videos, average and total views, and durations, with filters and sorting. Uses the shared Video Research limit of 500 operations per 24 hours.

  • trackingIdrequired

    string

    The tracking database id. Use list_tracking_databases to find it

  • search

    string

    Text to match in channel name, handle, or id

  • minSubscribers

    number

    Minimum subscribers

  • maxSubscribers

    number

    Maximum subscribers

  • minVideos

    number

    Minimum videos

  • maxVideos

    number

    Maximum videos

  • minAvgViews

    number

    Minimum average views

  • maxAvgViews

    number

    Maximum average views

  • minTotalViews

    number

    Minimum total views

  • maxTotalViews

    number

    Maximum total views

  • minAvgDurationSeconds

    number

    Minimum average video duration in seconds

  • maxAvgDurationSeconds

    number

    Maximum average video duration in seconds

  • durationBucket

    enum · default "any"

    By average video duration: short = under 4 minutes, medium = 4 to 20, long = over 20

    anyshortmediumlong
  • sortBy

    enum · default "videos"

    namesubscribersvideosavgViewstotalViewsavgDurationtotalDuration
  • sortDirection

    enum · default "desc"

    ascdesc
  • page

    integer · default 1

    Page number, starting at 1

  • limit

    integer · default 20

    Results per page, up to 50

add_tracked_channelWrites

Add a channel to a tracking database

Add a YouTube channel to a tracking database. TubeMagic first syncs all of its videos, which can take a minute for big channels. Channels with more than 2000 videos are not supported. Uses the shared Video Research limit of 500 operations per 24 hours.

  • trackingIdrequired

    string

    The tracking database id. Use list_tracking_databases to find it

  • channelrequired

    string

    Channel ID (UC...), handle like @mkbhd, channel URL, or name

remove_tracked_channelDestructive

Remove a channel from a tracking database

Remove a channel from a tracking database. Its videos stop appearing in the database. Uses the shared Video Research limit of 500 operations per 24 hours.

  • trackingIdrequired

    string

    The tracking database id. Use list_tracking_databases to find it

  • channelIdrequired

    string

    The channel ID (UC...) as listed by list_tracked_channels

list_tracked_videosRead only

List tracked videos

List videos from all channels in a tracking database with views, engagement, and Outlier Score, plus whether each is saved. Filter by views, Outlier Score, duration, and publish date; sort and page through results. Uses the shared Video Research limit of 500 operations per 24 hours.

  • trackingIdrequired

    string

    The tracking database id. Use list_tracking_databases to find it

  • search

    string

    Text to match in titles, descriptions, and channel names

  • minViews

    number

    Minimum views

  • maxViews

    number

    Maximum views

  • minOutlierScore

    number

    Minimum Outlier Score, like 2 for 2x the channel average

  • maxOutlierScore

    number

    Maximum Outlier Score

  • minDurationSeconds

    number

    Minimum duration in seconds

  • maxDurationSeconds

    number

    Maximum duration in seconds

  • durationBucket

    enum · default "any"

    short = under 4 minutes, medium = 4 to 20, long = over 20

    anyshortmediumlong
  • publishedRange

    enum · default "any"

    Only videos published within this period

    anyhourtodayweekmonthyear
  • detailsMode

    enum · default "any"

    full = only videos with description, thumbnail, and duration

    anyfull
  • sortBy

    enum · default "published"

    updatedAtviewspublisheddurationoutlierlikes
  • sortDirection

    enum · default "desc"

    ascdesc
  • page

    integer · default 1

    Page number, starting at 1

  • limit

    integer · default 20

    Results per page, up to 50

suggest_channels_to_trackRead only

Suggest channels to track

Suggest new YouTube channels similar to the ones in a tracking database, found from videos related to its channels. Results are cached for 30 minutes unless refresh is true. Uses the shared Video Research limit of 500 operations per 24 hours.

  • trackingIdrequired

    string

    The tracking database id. Use list_tracking_databases to find it

  • limit

    integer · default 10

    Suggestions to return, up to 10

  • refresh

    boolean · default false

    Ignore cached suggestions

list_video_formatsRead only

List video formats

List generated video formats: reusable title templates like "I Tried [THING] for [TIME]" with their variables, why they work, example titles, and the source video stats. Formats belong to a tracking database or to the user's general feed. Up to 100 formats, a page at a time. Uses the shared Video Research limit of 500 operations per 24 hours.

  • trackingId

    string

    Optional tracking database id. Without it, formats come from the user's general search feed

  • search

    string

    Text to match in formats, titles, channels, and notes

  • sortBy

    enum · default "updatedAt"

    Sort by: updatedAt = Recently updated, outlierScore = Outlier score, views = Video views, subscribers = Channel subscribers, averageViews = Average channel views, publishedAt = Video publish date, channelName = Channel name

  • sortDirection

    enum · default "desc"

    ascdesc
  • page

    integer · default 1

    Page number, starting at 1

  • limit

    integer · default 20

    Results per page, up to 50

update_video_format_notesWrites

Update video format notes

Save the user's notes on a video format. Notes are kept per tracking database or general feed. Uses the shared Video Research limit of 500 operations per 24 hours.

  • formatIdrequired

    string

    The format id from list_video_formats

  • notesrequired

    string | null

    The notes, up to 2000 characters; null clears them

  • trackingId

    string

    Optional tracking database id. Without it, formats come from the user's general search feed

list_video_format_channelsRead only

List channels for format generation

List the channels that can be picked for advanced format generation, a page at a time: the channels in a tracking database, or a sample of up to 50 channels from the user's general search feed (returned as one page). Uses the shared Video Research limit of 500 operations per 24 hours.

  • trackingId

    string

    Optional tracking database id. Without it, formats come from the user's general search feed

  • page

    integer · default 1

    Page number, starting at 1

  • limit

    integer · default 20

    Results per page, up to 50

generate_video_formatsWrites

Generate video formats

Generate video formats (reusable title templates) from high-performing videos, for a tracking database or the user's general search feed. Default mode picks 10 source videos automatically and reserves 10 credits. Advanced mode: pass channels with how many formats each (up to 50 in total); use list_video_format_channels to pick them. Charges 1 credit per format actually saved, refunds the rest, and refunds everything if it fails. Needs a paid TubeMagic plan.

  • trackingId

    string

    Optional tracking database id. Without it, formats come from the user's general search feed

  • channels

    object[]

    Advanced mode: the channels to use. Leave empty for default mode

Script Writer

get_script_writer_optionsRead only

Get Script Writer options

List the Script Writer frameworks, script lengths, reference limits, and exact credit costs for a given length and number of references, plus free scripts left today.

  • words

    integer · default 1000

    Script length to price

  • referenceCount

    integer · default 0

    Number of references to price

write_scriptWrites

Write a YouTube script

Write a full YouTube video script from a topic or brief, using viral scriptwriting frameworks, at a chosen length. Optionally give up to 3 references (YouTube videos up to 30 minutes with captions, or PDF URLs) for the script to draw on without copying. The script is saved to My Scripts and its scriptId can be used to edit it. Long scripts take a minute or two. Needs a paid TubeMagic plan; free models allow 100 scripts per 24 hours, premium models spend credits (see get_script_writer_options).

  • topicrequired

    string

    What the video is about: a topic, brief, or outline, at least 5 words

  • words

    integer · default 1000

    Script length in words, one of 100, 150, 200, 250, 300, 500, 750, 1000, 1250, 1500, 1750, 2000, 2250, 2500, 2750, 3000. Up to 300 is a Short

  • frameworks

    enum[] · default all

    Scriptwriting frameworks to apply. Defaults to all of them

    Viral Hook DatabaseIntro FrameworksValue Loop StructureStrategic OrderingTension and PacingEmotional WavesPayoff StructuringAdvanced PsychologyOutro StrategyAlgorithm Optimization
  • references

    object[] · default []

    Up to 3 references: youtube video URLs or pdf URLs

  • model

    enum · default "anthropic/claude-sonnet-5.5"

    AI model to use. Defaults to anthropic/claude-sonnet-5.5 (Sonnet 5.5). anthropic/claude-sonnet-5.5 = Sonnet 5.5 (free, 100 per 24 hours) google/gemini-3-flash-preview = Gemini 3 Flash (free, 100 per 24 hours) anthropic/claude-opus-5.5 = Opus 5.5 (premium, 20 credits for 1000 words without references; more for longer scripts and references) anthropic/claude-fable-5.1 = Fable 5.1 (premium, 40 credits for 1000 words without references; more for longer scripts and references) openai/gpt-6-astra = GPT-6 Astra (premium, 40 credits for 1000 words without references; more for longer scripts and references)

list_my_scriptsRead only

List my scripts

List the user's saved scripts (My Scripts), newest first, with a preview of each.

  • page

    integer · default 1

  • limit

    integer · default 20

    Scripts per page, up to 50

get_scriptRead only

Get a script

Get a saved script in full, with its topic, length, frameworks, model, references, and paragraphs numbered for rewrite_script_paragraph.

  • scriptIdrequired

    string

    The script id from write_script or list_my_scripts

update_scriptWrites

Update a script

Replace the text of a saved script, for example after the user edits it. Paragraphs are separated by blank lines.

  • scriptIdrequired

    string

    The script id from write_script or list_my_scripts

  • scriptrequired

    string

    The full new script text

delete_scriptDestructive

Delete a script

Delete a script from My Scripts. Confirm with the user first.

  • scriptIdrequired

    string

    The script id from write_script or list_my_scripts

generate_script_hooksWrites

Generate alternative script hooks

Write alternative opening hooks (first lines) for a saved script, each using a different angle. Use replace_script_hook to swap one in. No credits; needs a paid TubeMagic plan and is blocked once the free daily script limit is reached.

  • scriptIdrequired

    string

    The script id from write_script or list_my_scripts

replace_script_hookWrites

Replace a script hook

Replace a saved script's opening hook (its first paragraph) with new text, such as one from generate_script_hooks.

  • scriptIdrequired

    string

    The script id from write_script or list_my_scripts

  • hookrequired

    string

    The new opening hook

rewrite_script_paragraphWrites

Rewrite a script paragraph

Rewrite one paragraph of a saved script following an instruction (like "make it funnier" or "add a statistic"), keeping its length and the script's tone, and save it. Get paragraph numbers from get_script. No credits; needs a paid TubeMagic plan.

  • scriptIdrequired

    string

    The script id from write_script or list_my_scripts

  • paragraphNumberrequired

    integer

    The paragraph to rewrite, starting at 1

  • instructionrequired

    string

    How to rewrite it

Thumbnail Generator

get_thumbnail_generator_optionsRead only

Get Thumbnail Generator options

List the thumbnail formats, the credit cost per thumbnail, the user's credits, the connected YouTube channels that can be used as a style reference, and the face image limits.

No parameters

list_thumbnail_projectsRead only

List thumbnail projects

List the user's thumbnail projects, most recently updated first, with the latest thumbnail of each. Search matches project names.

  • search

    string

    Text to match in project names

  • page

    integer · default 1

  • limit

    integer · default 12

    Projects per page, up to 50

get_thumbnail_projectRead only

Get a thumbnail project

Get a thumbnail project and its thumbnails, oldest first, a page at a time, including image URLs and the prompt used for each. latestImageId is always the newest thumbnail.

  • projectIdrequired

    string

    The thumbnail project id

  • page

    integer · default 1

    Page number, starting at 1

  • limit

    integer · default 20

    Thumbnails per page, up to 50

generate_thumbnailWrites

Generate a YouTube thumbnail

Create a new thumbnail project and generate its first YouTube thumbnail from an idea. Optionally use a YouTube video for context, a connected channel's latest thumbnails as the style reference, and a face image URL so the person in it appears in the thumbnail. Use edit_thumbnail for changes after that. Takes up to a couple of minutes. Costs 20 credits per thumbnail (refunded if it fails) and needs a paid TubeMagic plan.

  • promptrequired

    string

    The thumbnail idea: subject, text, mood, and anything it must show

  • format

    enum · default "youtube-video"

    Thumbnail format: youtube-video = YouTube video (16:9), youtube-shorts = YouTube Shorts (9:16)

  • youtubeVideoUrl

    string

    Optional YouTube video URL. Its title, description, and transcript are used to make the thumbnail fit the video

  • channelId

    string

    Optional connected channel ID (from get_thumbnail_generator_options) whose latest thumbnails set the style

  • faceImageUrl

    string

    Optional public URL of a face photo (image/jpeg, image/png, image/webp, up to 5 MB) of the person to feature

edit_thumbnailWrites

Edit a thumbnail

Generate a new version of a thumbnail in a project by describing the change, like "make the text bigger" or "use a red background". Edits the latest thumbnail in the project unless imageId is given, keeps everything else, and adds the result to the project. Costs 20 credits (refunded if it fails) and needs a paid TubeMagic plan.

  • projectIdrequired

    string

    The thumbnail project id

  • instructionrequired

    string

    The change to make

  • imageId

    string

    The thumbnail to edit (from get_thumbnail_project). Defaults to the latest one

  • format

    enum

    Thumbnail format: youtube-video = YouTube video (16:9), youtube-shorts = YouTube Shorts (9:16). Defaults to the edited thumbnail's format

  • youtubeVideoUrl

    string

    Optional YouTube video URL. Its title, description, and transcript are used to make the thumbnail fit the video

rename_thumbnail_projectWrites

Rename a thumbnail project

Rename a thumbnail project.

  • projectIdrequired

    string

    The thumbnail project id

  • titlerequired

    string

    The new project name

delete_thumbnail_projectDestructive

Delete a thumbnail project

Delete a thumbnail project and all its thumbnails. Confirm with the user first.

  • projectIdrequired

    string

    The thumbnail project id

TubeMagic Chat

get_chat_optionsRead only

Get TubeMagic Chat options

List the TubeMagic Chat models with their credit cost per reply, the user's credits, the connected YouTube channels the chat can focus on, and suggested prompts.

No parameters

send_chat_messageWrites

Send a TubeMagic Chat message

Ask TubeMagic Chat, a YouTube assistant that can read the user's connected channels and videos, and get its reply. Leave chatId empty to start a new chat, or pass one to continue it with its history. It only answers YouTube questions (channels, videos, ideas, titles, thumbnails, SEO, analytics, growth). Every reply spends credits based on the model (see get_chat_options) and needs a paid TubeMagic plan; failed replies are refunded.

  • messagerequired

    string

    The message to send

  • chatId

    string

    Chat to continue. Leave empty to start a new chat

  • model

    enum · default "anthropic/claude-sonnet-5.5"

    AI model for the reply. Defaults to anthropic/claude-sonnet-5.5. Every reply spends credits: ~deepseek/deepseek-v4-flash-latest = DeepSeek V4 Flash (Low, 2 credits per reply) anthropic/claude-sonnet-5.5 = Claude Sonnet 5.5 (Medium, 5 credits per reply) anthropic/claude-opus-5.5 = Claude Opus 5.5 (High, 8 credits per reply) anthropic/claude-fable-5.1 = Claude Fable 5.1 (Extra High, 16 credits per reply) openai/gpt-6-astra = GPT-6 Astra (Extra High, 16 credits per reply)

  • channelId

    string

    Optional connected channel ID (from get_chat_options) to focus the answer on

retry_chat_replyWrites

Retry a TubeMagic Chat reply

Get a reply to the last message of a chat when it has none yet, for example after a failed reply. Spends credits like send_chat_message.

  • chatIdrequired

    string

    The chat id

  • model

    enum · default "anthropic/claude-sonnet-5.5"

    AI model for the reply. Defaults to anthropic/claude-sonnet-5.5. Every reply spends credits: ~deepseek/deepseek-v4-flash-latest = DeepSeek V4 Flash (Low, 2 credits per reply) anthropic/claude-sonnet-5.5 = Claude Sonnet 5.5 (Medium, 5 credits per reply) anthropic/claude-opus-5.5 = Claude Opus 5.5 (High, 8 credits per reply) anthropic/claude-fable-5.1 = Claude Fable 5.1 (Extra High, 16 credits per reply) openai/gpt-6-astra = GPT-6 Astra (Extra High, 16 credits per reply)

  • channelId

    string

    Optional connected channel ID (from get_chat_options) to focus the answer on

list_chatsRead only

List TubeMagic chats

List the user's TubeMagic chats, most recently updated first, with the latest message of each. Search matches titles and messages.

  • search

    string

    Text to match in chat titles and messages

  • page

    integer · default 1

  • limit

    integer · default 10

    Chats per page, up to 50

get_chatRead only

Get a TubeMagic chat

Get a TubeMagic chat and its messages, oldest first, a page at a time. Use pagination.totalPages to jump to the latest messages.

  • chatIdrequired

    string

    The chat id

  • page

    integer · default 1

    Page number, starting at 1

  • limit

    integer · default 20

    Messages per page, up to 50

rename_chatWrites

Rename a TubeMagic chat

Rename a TubeMagic chat.

  • chatIdrequired

    string

    The chat id

  • titlerequired

    string

    The new chat title

delete_chatDestructive

Delete a TubeMagic chat

Delete a TubeMagic chat and its messages. Confirm with the user first.

  • chatIdrequired

    string

    The chat id

Ideas Manager

list_idea_channelsRead only

List Ideas Manager channels

List the user's Ideas Manager channels (boards that hold video ideas), with how many active ideas each has. Up to 10 channels.

No parameters

create_idea_channelWrites

Create an Ideas Manager channel

Create an Ideas Manager channel to collect video ideas in. Up to 10 channels.

  • namerequired

    string

    The channel name

rename_idea_channelWrites

Rename an Ideas Manager channel

Rename an Ideas Manager channel.

  • channelIdrequired

    string

    The idea channel ID from list_idea_channels

  • namerequired

    string

    The new channel name

list_ideasRead only

List ideas

List the ideas in an Ideas Manager channel in board order, filtered like its tabs: active, completed, or archived. Each idea has its progress (scripted, recorded, edited), scheduled date, and thumbnail.

  • channelIdrequired

    string

    The idea channel ID from list_idea_channels

  • status

    enum · default "active"

    active, completed, archived, or all

  • search

    string

    Text to match in idea titles and descriptions

  • page

    integer · default 1

    Page number, starting at 1

  • limit

    integer · default 20

    Ideas per page, up to 50

add_ideaWrites

Add an idea

Add a video idea to the end of an Ideas Manager channel, for example one from generate_video_idea.

  • channelIdrequired

    string

    The idea channel ID from list_idea_channels

  • titlerequired

    string

    The idea title

  • description

    string

    Notes about the idea

  • thumbnailUrl

    string

    Optional image URL to show as the idea thumbnail

  • scheduledDate

    string

    Optional date to make the video, like 2026-10-15

import_youtube_ideaWrites

Import a YouTube video as an idea

Add a YouTube video to an Ideas Manager channel as an idea, with its title, thumbnail, and views, to use as inspiration.

  • channelIdrequired

    string

    The idea channel ID from list_idea_channels

  • videoUrlrequired

    string

    A YouTube video or Shorts URL

update_ideaWrites

Update an idea

Update an idea: title, description, scheduled date, thumbnail URL, progress (scripted, recorded, edited), completed, or archived. Only the fields given change.

  • channelIdrequired

    string

    The idea channel ID from list_idea_channels

  • ideaIdrequired

    string

    The idea ID from list_ideas

  • title

    string

  • description

    string

  • scheduledDate

    string | null

    A date like 2026-10-15, or null to clear it

  • thumbnailUrl

    string | null

    Image URL, or null to remove the thumbnail

  • progress

    enum[]

    The steps done so far, from: SCRIPTED, RECORDED, EDITED

  • completed

    boolean

    Mark the idea completed or active again

  • archived

    boolean

    Archive or un-archive the idea

reorder_ideasWrites

Reorder ideas

Change the order of ideas on an Ideas Manager channel board. The ideas given move to the top in that order; the rest keep their order after them.

  • channelIdrequired

    string

    The idea channel ID from list_idea_channels

  • ideaIdsrequired

    string[]

    Idea IDs in the order they should appear

upload_idea_thumbnailWrites

Upload an idea thumbnail

Upload an image from a public URL (image/jpeg, image/png, image/webp, up to 10 MB) as an idea's thumbnail, hosted by TubeMagic. Needs the Premium plan, like the website.

  • channelIdrequired

    string

    The idea channel ID from list_idea_channels

  • ideaIdrequired

    string

    The idea ID from list_ideas

  • imageUrlrequired

    string

    Public URL of the image

Repurpose Idea

repurpose_ideaWrites

Repurpose a video idea

Turn an existing video idea or community post idea into a new one: a different angle, a Short, a series, a hot take, a beginner version, or a collab. Returns a new title and why it works. Use it on results from generate_video_idea or generate_community_post. Needs a paid TubeMagic plan. Allows 100 repurposes per 24 hours for each source.

  • titlerequired

    string

    The original idea title

  • description

    string

    Why the original idea works, if known

  • type

    enum · default "different-angle"

    different-angle = Different Angle (Fresh perspective on same topic), make-short = Make it a Short (Adapt for YouTube Shorts), series = Series Expansion (Turn into a multi-part series), controversial = Hot Take (Add a provocative spin), beginner = Beginner Friendly (Reframe for newcomers), collab = Collab Concept (Reimagine as a collab)

  • channelName

    string

    Optional channel name or handle the idea is for

  • from

    enum · default "video-idea"

    Where the idea came from: video-idea or community-post

Video Timestamps

generate_video_timestampsWrites

Generate YouTube video timestamps

Generate chapter timestamps (like "00:00 - Introduction") for a YouTube video from its transcript, ready to paste into the description. Works for videos up to 60 minutes long that have captions. Needs a paid TubeMagic plan. Allows 100 per 24 hours.

  • videoUrlrequired

    string

    A YouTube video URL, like https://youtu.be/VIDEO_ID

Micro Tools

Channel Name Generator

generate_channel_namesWrites

Generate YouTube channel names

Generate 3 catchy YouTube channel name ideas from a short description of what the channel is about. Needs a paid TubeMagic plan. Allows 100 generations per 24 hours.

  • descriptionrequired

    string

    What the channel is about, in 4 to 50 words

Formatted Transcript

get_formatted_transcriptWrites

Get a formatted YouTube transcript

Get the transcript of a YouTube video, cleaned up with punctuation, casing, and paragraphs without changing the words. Works for videos up to 1 hour long that have captions. Can leave out sponsor segments. Needs a paid TubeMagic plan. Allows 100 transcripts per 24 hours.

  • videoUrlrequired

    string

    A YouTube video or Shorts URL, like https://youtu.be/VIDEO_ID

  • skipSponsors

    boolean · default false

    Leave out sponsor and promotion segments

My Channels

Channels

list_my_channelsRead only

List my YouTube channels

List the YouTube channels connected to the user's TubeMagic account (My Channels), with subscribers, video count, and average views. Up to 10 channels can be connected.

No parameters

search_youtube_channelsRead only

Search YouTube channels

Search YouTube for channels by name or handle, to find one to connect. Each result says whether it is already connected.

  • queryrequired

    string

    Channel name or handle to search for

connect_youtube_channelWrites

Connect a YouTube channel

Connect a YouTube channel to the user's My Channels so TubeMagic tracks its videos and stats. Up to 10 channels. A connected channel can only be disconnected after 90 days, so confirm with the user first. Connecting a channel that is already connected does nothing.

  • channelrequired

    string

    The channel ID (UC...), a handle like @mkbhd, or a channel URL

disconnect_youtube_channelDestructive

Disconnect a YouTube channel

Disconnect a YouTube channel from the user's My Channels. Only possible 90 days after it was connected. Confirm with the user first.

  • channelrequired

    string

    A connected channel: its channel ID, handle like @mkbhd, or name

Videos and Analytics

list_my_channel_videosRead only

List my channel videos

List videos of a connected channel with views and Outlier Score (views divided by the channel average; above 1 means it beat the average). Supports search, time range, sorting, and pages.

  • channelrequired

    string

    A connected channel: its channel ID, handle like @mkbhd, or name

  • search

    string

    Text to match in video titles

  • timeRange

    enum · default "all"

    Published within: all = All time, 7d = Last 7 Days, 30d = Last 30 Days, year = Last Year

  • sort

    enum · default "latest"

    Sort by: latest = Latest, oldest = Oldest, most_views = Most views, least_views = Least views, outlier = Outlier Score

  • page

    integer · default 1

  • limit

    integer · default 12

    Videos per page, up to 24

get_my_channels_overviewRead only

Get my channels overview

Totals across all of the user's connected channels: subscribers, views, indexed videos, average views and likes per video, and the latest upload date.

No parameters

get_my_videoRead only

Get one of my videos

Get full details of a video from one of the user's connected channels: views, likes, duration, publish date, and description.

  • videorequired

    string

    A YouTube video ID or URL

Dashboard

Recent Projects

get_recent_projectsRead only

Get recent projects

Get the user's most recent TubeMagic work, like the dashboard: chats, saved videos, scripts, and thumbnail projects, newest first, with links to open each in TubeMagic.

  • limit

    integer · default 10

    Items per type, up to 25

Settings

Profile

get_userRead only

Get TubeMagic user

Get the signed-in TubeMagic user: name, email, plan, and remaining credits.

No parameters

Sessions

list_sessionsRead only

List signed-in sessions

List the devices and browsers currently signed in to the user's TubeMagic account, newest first.

No parameters

log_out_sessionDestructive

Log out a session

Sign out one device or browser from the user's TubeMagic account, using a sessionId from list_sessions. Confirm with the user first.

  • sessionIdrequired

    string

    The sessionId from list_sessions

Logs

list_usage_logsRead only

List usage logs

List everything the user generated with TubeMagic tools (the Logs page), newest first, with the input and a preview of the output. Filter by tool (see list_usage_log_tools) and date range.

  • tool

    string

    Only this tool, by name from list_usage_log_tools

  • dateFrom

    string

    Only logs on or after this date or time

  • dateTo

    string

    Only logs on or before this date or time

  • page

    integer · default 1

    Page number, starting at 1

  • limit

    integer · default 20

    Logs per page, up to 50

list_usage_log_toolsRead only

List usage log tools

List the tool names the user has logs for, to filter list_usage_logs.

No parameters

Credit Logs

list_credit_logsRead only

List credit logs

List the user's credit history, newest first: credits spent on tools, added by payments, refunded, or changed by an admin. Also returns the current balance.

  • source

    enum

    Only this source: PAYMENT = purchases, PROJECT = tool usage and refunds, ADMIN = admin changes

  • dateFrom

    string

    Only logs on or after this date or time

  • dateTo

    string

    Only logs on or before this date or time

  • page

    integer · default 1

    Page number, starting at 1

  • limit

    integer · default 10

    Credit logs per page, up to 50

Usage

get_usage_limitsRead only

Get daily usage limits

Show how much of each TubeMagic tool's daily free allowance the user has used in the last 24 hours and how much is left, like Settings > Usage, plus the credit balance. Premium models and credit-based tools (thumbnails, chat, sub-niches, video formats) spend credits instead.

No parameters

FAQ

What is MCP?+

The Model Context Protocol is an open standard that lets AI apps use outside tools. TubeMagic’s MCP server gives your AI the same tools you use in the app.

Which AI apps work with TubeMagic?+

ChatGPT, Claude, Claude Code, Cursor, VS Code, Windsurf, and any other client that supports remote MCP servers over Streamable HTTP.

Do I need a paid plan?+

Most tools need a paid TubeMagic plan, just like in the app. Account tools like usage, logs, and sessions work on every plan.

Does it cost extra?+

No. MCP uses the same daily limits and credits as the app. Free models count toward your daily limits; premium models, thumbnails, and chat spend credits.

How do I disconnect an app?+

Open Settings → Developers in TubeMagic and revoke the OAuth client or MCP key. Access stops right away.