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.
https://tubemagic.com/api/mcp88
tools available
OAuth
or MCP keys
HTTP
Streamable transport
Quick start
Three steps, no installs.
- 01
Add TubeMagic
Paste the MCP URL as a custom connector in ChatGPT, Claude, Cursor, or any MCP client.
- 02
Sign in
Approve access with your TubeMagic account. Prefer keys? Create one in Settings → MCP.
- 03
Just ask
Your AI picks the right TubeMagic tool and follows your plan, limits, and credits.
Connect a client
Pick your AI app. Clients that support OAuth open a TubeMagic sign-in the first time you connect.
- 1Open Claude and go to Settings → Connectors.
- 2Choose Add custom connector, name it TubeMagic, and paste the MCP URL.
- 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
RecommendedOAuth 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 → MCP. Keys start with tubemagic_mcp_ and are shown only once.
Send the key as a bearer token on every request.
Authorization: Bearer tubemagic_mcp_your_keyDiscovery: 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 and each TubeMagic Agent reply costs 10, plus what the tools it runs use. 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
TubeMagic Agent
get_agent_optionsRead onlyGet TubeMagic Agent options
get_agent_optionsRead onlyGet TubeMagic Agent options
Get what TubeMagic Agent costs per reply, the user's credits, the connected YouTube channels the Agent can focus on, and example requests.
No parameters
send_agent_messageWritesSend a message to TubeMagic Agent
send_agent_messageWritesSend a message to TubeMagic Agent
Ask TubeMagic Agent to do YouTube work end to end: research outliers and formats, analyse the user's channels, write scripts, generate thumbnails, write titles, descriptions, tags and full upload packages, generate video ideas and community posts, research keywords, explore niches, suggest channel names, get video transcripts, and save ideas. It runs TubeMagic's tools itself and returns its reply, each step it ran, and results merged by type (scripts, thumbnails, videos with outlier scores, formats, ideas, titles) with links. Leave chatId empty to start a new chat, or pass one to continue it. To let the Agent use apps the user connected (like Vid.AI for making videos), pass them in connectors; get_agent_options lists them. Paste YouTube video, channel or playlist links and web page links straight into the message; the Agent opens them, and can read many videos' transcripts to compare them. Attach images, PDFs or text files with attachments, as public links, plain text or base64. Each reply costs 10 credits plus whatever its tools use, and needs a paid TubeMagic plan; failed replies are refunded. When awaitingApproval is returned, the Agent paused before a delete, a credit-spending action or a model choice: ask the user, then call answer_agent_approval.
messagerequiredstring
What the Agent should do
chatIdstring
Agent chat to continue. Leave empty to start a new chat
channelIdstring
Optional connected channel ID (from get_agent_options) for the Agent to focus on
attachmentsobject[]
Up to 5 files for the Agent to read: Images (PNG, JPG, WebP, GIF), PDF, TXT, MD, CSV, JSON, SRT and VTT. Give each file as exactly one of url (public link), text (contents of a text file) or base64 (an image or PDF). The Agent sees images and reads the text of PDFs and text files. For YouTube or web page links, put them in the message instead
connectorsstring[]
Connected apps the Agent may use in this message, by connectorId or name from get_agent_options (for example ["Vid.AI"]). Leave empty to use none
answer_agent_approvalWritesAnswer a TubeMagic Agent approval
answer_agent_approvalWritesAnswer a TubeMagic Agent approval
Approve or skip the actions the Agent paused on (awaitingApproval from send_agent_message or get_agent_chat), then let it continue and return its reply. Actions left out are skipped. For actions with modelOptions, pass the model the user picked (defaults to defaultModel). Continuing costs 10 credits plus what the approved actions use.
chatIdrequiredstring
The Agent chat id
messageIdrequiredstring
awaitingApproval.messageId
decisionsrequiredobject[]
One decision per action
channelIdstring
Optional connected channel ID (from get_agent_options) for the Agent to focus on
retry_agent_replyWritesRetry a TubeMagic Agent reply
retry_agent_replyWritesRetry a TubeMagic Agent reply
Get the Agent's reply to the last message of a chat when it has none yet, for example after a failed reply. Costs 10 credits plus what its tools use.
chatIdrequiredstring
The Agent chat id
channelIdstring
Optional connected channel ID (from get_agent_options) for the Agent to focus on
connectorsstring[]
Connected apps the Agent may use in this message, by connectorId or name from get_agent_options (for example ["Vid.AI"]). Leave empty to use none
list_agent_chatsRead onlyList TubeMagic Agent chats
list_agent_chatsRead onlyList TubeMagic Agent chats
List the user's TubeMagic Agent chats (including older TubeMagic Chat conversations), most recently updated first. Search matches titles and messages.
searchstring
Text to match in chat titles and messages
pageinteger · default 1
limitinteger · default 10
Chats per page, up to 50
get_agent_chatRead onlyGet a TubeMagic Agent chat
get_agent_chatRead onlyGet a TubeMagic Agent chat
Get an Agent chat and its messages, oldest first, a page at a time, with the steps and result cards of each Agent reply and any approval it is waiting on. Use pagination.totalPages to jump to the latest messages.
chatIdrequiredstring
The Agent chat id
pageinteger · default 1
Page number, starting at 1
limitinteger · default 20
Messages per page, up to 50
rename_agent_chatWritesRename a TubeMagic Agent chat
rename_agent_chatWritesRename a TubeMagic Agent chat
Rename a TubeMagic Agent chat.
chatIdrequiredstring
The Agent chat id
titlerequiredstring
The new chat title
delete_agent_chatDestructiveDelete a TubeMagic Agent chat
delete_agent_chatDestructiveDelete a TubeMagic Agent chat
Delete a TubeMagic Agent chat and its messages. Confirm with the user first.
chatIdrequiredstring
The Agent chat id
list_agent_filesRead onlyList TubeMagic Agent files
list_agent_filesRead onlyList TubeMagic Agent files
List the files attached to TubeMagic Agent chats (images, PDFs and text files), newest first, with their chat, size, pages and word count. Pass chatId for one chat. Use get_agent_file to read one.
chatIdstring
Only files from this Agent chat
pageinteger · default 1
Page number, starting at 1
limitinteger · default 20
Files per page, up to 50
get_agent_fileRead onlyGet a TubeMagic Agent file
get_agent_fileRead onlyGet a TubeMagic Agent file
Get a file attached to a TubeMagic Agent chat: its details, a download link that works for 60 minutes, and for PDFs and text files the text the Agent read from it.
fileIdrequiredstring
The file id
maxCharsinteger · default 20000
Characters of extracted text to return. 0 for none
Video Research
search_youtube_videosRead onlySearch YouTube videos
search_youtube_videosRead onlySearch 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, language, minimum Outlier Score, and channel subscriber range. 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.
querystring
What to search for, at least 2 characters
typeenum
Only regular videos or only Shorts
durationenum
short = under 4 minutes, medium = 4 to 20 minutes, long = over 20 minutes
sortByenum
Sort results (default relevance)
uploadDateenum
Only videos uploaded within this period
hourtodayweekmonthyearfeaturesenum[]
Only videos with all of these features
HDsubtitlesCCommons3DLivePurchased4K360LocationHDRVR180regionstring
Two-letter country code, like US or IN
languagestring
Language code, like en or hi
localOnlyboolean
Prefer results local to the region
minOutlierScorenumber
Only videos with at least this Outlier Score, like 3 for 3x the channel average
minSubscribersinteger
Only videos from channels with at least this many subscribers
maxSubscribersinteger
Only videos from channels with at most this many subscribers
pageTokenstring
nextPageToken from the previous results, with the same query and filters
autocomplete_video_searchRead onlyAutocomplete YouTube search
autocomplete_video_searchRead onlyAutocomplete 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.
queryrequiredstring
The partial search text
limitinteger · default 8
Suggestions to return, up to 12
get_related_videosRead onlyGet related video suggestions
get_related_videosRead onlyGet 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.
folderIdrequiredstring
The saved-videos folder id. Use list_video_folders to find it
typeenum
Only regular videos or only Shorts
durationenum
short = under 4 minutes, medium = 4 to 20 minutes, long = over 20 minutes
sortByenum
Sort results (default relevance)
uploadDateenum
Only videos uploaded within this period
hourtodayweekmonthyearfeaturesenum[]
Only videos with all of these features
HDsubtitlesCCommons3DLivePurchased4K360LocationHDRVR180regionstring
Two-letter country code, like US or IN
languagestring
Language code, like en or hi
localOnlyboolean
Prefer results local to the region
limitinteger · default 12
Videos to return, up to 30
search_channels_to_trackRead onlySearch channels to track
search_channels_to_trackRead onlySearch 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.
queryrequiredstring
Channel name or handle
trackingIdstring
Optional tracking database id
limitinteger · default 12
Channels to return, up to 12
list_saved_videosRead onlyList saved videos
list_saved_videosRead onlyList 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.
searchstring
Text to search for
folderIdstring
Only videos in this folder
tagIdsstring[]
Only videos with any of these tags
minLikesnumber
Minimum likes
maxLikesnumber
Maximum likes
minOutlierScorenumber
Minimum Outlier Score, like 2 for 2x the channel average
maxOutlierScorenumber
Maximum Outlier Score
minSubscribersnumber
Minimum channel subscribers
maxSubscribersnumber
Maximum channel subscribers
minDurationSecondsnumber
Minimum duration in seconds
maxDurationSecondsnumber
Maximum duration in seconds
durationBucketenum · default "any"
short = under 4 minutes, medium = 4 to 20, long = over 20
anyshortmediumlongpublishedRangeenum · default "any"
Only videos published within this period
anyhourtodayweekmonthyearsortByenum · default "updatedAt"
updatedAtlikesoutliersubscribersdurationpublishedviewssortDirectionenum · default "desc"
ascdescpageinteger · default 1
Page number, starting at 1
limitinteger · default 20
Results per page, up to 50
save_videoWritesSave a video
save_videoWritesSave 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.
videorequiredstring
A YouTube video ID or URL
notestring | null
A note about the video; null clears it
folderIdsstring[]
Folders to put the video in
tagIdsstring[]
Tags to add to the video
replaceboolean · default false
Replace the note, folders, and tags instead of adding to them
remove_saved_videoDestructiveRemove a saved video
remove_saved_videoDestructiveRemove 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.
videorequiredstring
A YouTube video ID or URL
list_video_foldersRead onlyList saved-video folders
list_video_foldersRead onlyList 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.
searchstring
Text to match in folder names
pageinteger · default 1
Page number, starting at 1
limitinteger · default 20
Results per page, up to 50
create_video_folderWritesCreate a saved-video folder
create_video_folderWritesCreate 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.
namerequiredstring
Folder name
videostring
A YouTube video ID or URL
list_video_tagsRead onlyList saved-video tags
list_video_tagsRead onlyList 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.
searchstring
Text to match in tag names
pageinteger · default 1
Page number, starting at 1
limitinteger · default 20
Results per page, up to 50
create_video_tagWritesCreate a saved-video tag
create_video_tagWritesCreate 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.
namerequiredstring
Tag name
list_tracking_databasesRead onlyList tracking databases
list_tracking_databasesRead onlyList 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.
searchstring
Text to match in database names
isPinnedboolean
Only pinned or only unpinned databases
pageinteger · default 1
Page number, starting at 1
limitinteger · default 20
Results per page, up to 50
create_tracking_databaseWritesCreate a tracking database
create_tracking_databaseWritesCreate 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.
namerequiredstring
Database name
isPinnedboolean · default false
Pin it to the top
update_tracking_databaseWritesRename or pin a tracking database
update_tracking_databaseWritesRename 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.
trackingIdrequiredstring
The tracking database id. Use list_tracking_databases to find it
namestring
New name
isPinnedboolean
Pin or unpin it
delete_tracking_databaseDestructiveDelete a tracking database
delete_tracking_databaseDestructiveDelete 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.
trackingIdrequiredstring
The tracking database id. Use list_tracking_databases to find it
list_tracked_channelsRead onlyList tracked channels
list_tracked_channelsRead onlyList 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.
trackingIdrequiredstring
The tracking database id. Use list_tracking_databases to find it
searchstring
Text to match in channel name, handle, or id
minSubscribersnumber
Minimum subscribers
maxSubscribersnumber
Maximum subscribers
minVideosnumber
Minimum videos
maxVideosnumber
Maximum videos
minAvgViewsnumber
Minimum average views
maxAvgViewsnumber
Maximum average views
minTotalViewsnumber
Minimum total views
maxTotalViewsnumber
Maximum total views
minAvgDurationSecondsnumber
Minimum average video duration in seconds
maxAvgDurationSecondsnumber
Maximum average video duration in seconds
durationBucketenum · default "any"
By average video duration: short = under 4 minutes, medium = 4 to 20, long = over 20
anyshortmediumlongsortByenum · default "videos"
namesubscribersvideosavgViewstotalViewsavgDurationtotalDurationsortDirectionenum · default "desc"
ascdescpageinteger · default 1
Page number, starting at 1
limitinteger · default 20
Results per page, up to 50
add_tracked_channelWritesAdd a channel to a tracking database
add_tracked_channelWritesAdd 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.
trackingIdrequiredstring
The tracking database id. Use list_tracking_databases to find it
channelrequiredstring
Channel ID (UC...), handle like @mkbhd, channel URL, or name
remove_tracked_channelDestructiveRemove a channel from a tracking database
remove_tracked_channelDestructiveRemove 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.
trackingIdrequiredstring
The tracking database id. Use list_tracking_databases to find it
channelIdrequiredstring
The channel ID (UC...) as listed by list_tracked_channels
list_tracked_videosRead onlyList tracked videos
list_tracked_videosRead onlyList 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.
trackingIdrequiredstring
The tracking database id. Use list_tracking_databases to find it
searchstring
Text to match in titles, descriptions, and channel names
minViewsnumber
Minimum views
maxViewsnumber
Maximum views
minOutlierScorenumber
Minimum Outlier Score, like 2 for 2x the channel average
maxOutlierScorenumber
Maximum Outlier Score
minDurationSecondsnumber
Minimum duration in seconds
maxDurationSecondsnumber
Maximum duration in seconds
durationBucketenum · default "any"
short = under 4 minutes, medium = 4 to 20, long = over 20
anyshortmediumlongpublishedRangeenum · default "any"
Only videos published within this period
anyhourtodayweekmonthyeardetailsModeenum · default "any"
full = only videos with description, thumbnail, and duration
anyfullsortByenum · default "published"
updatedAtviewspublisheddurationoutlierlikessortDirectionenum · default "desc"
ascdescpageinteger · default 1
Page number, starting at 1
limitinteger · default 20
Results per page, up to 50
suggest_channels_to_trackRead onlySuggest channels to track
suggest_channels_to_trackRead onlySuggest 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.
trackingIdrequiredstring
The tracking database id. Use list_tracking_databases to find it
limitinteger · default 10
Suggestions to return, up to 10
refreshboolean · default false
Ignore cached suggestions
list_video_formatsRead onlyList video formats
list_video_formatsRead onlyList 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.
trackingIdstring
Optional tracking database id. Without it, formats come from the user's general search feed
searchstring
Text to match in formats, titles, channels, and notes
sortByenum · 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
sortDirectionenum · default "desc"
ascdescpageinteger · default 1
Page number, starting at 1
limitinteger · default 20
Results per page, up to 50
update_video_format_notesWritesUpdate video format notes
update_video_format_notesWritesUpdate 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.
formatIdrequiredstring
The format id from list_video_formats
notesrequiredstring | null
The notes, up to 2000 characters; null clears them
trackingIdstring
Optional tracking database id. Without it, formats come from the user's general search feed
list_video_format_channelsRead onlyList channels for format generation
list_video_format_channelsRead onlyList 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.
trackingIdstring
Optional tracking database id. Without it, formats come from the user's general search feed
pageinteger · default 1
Page number, starting at 1
limitinteger · default 20
Results per page, up to 50
generate_video_formatsWritesGenerate video formats
generate_video_formatsWritesGenerate 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.
trackingIdstring
Optional tracking database id. Without it, formats come from the user's general search feed
channelsobject[]
Advanced mode: the channels to use. Leave empty for default mode
YouTube Links and Transcripts
get_youtube_videoRead onlyGet a YouTube video
get_youtube_videoRead onlyGet a YouTube video
Get any public YouTube video from its link or ID: title, description, channel, views, likes, duration, publish date, tags, category, caption languages and its Outlier Score (views ÷ the median views of its channel's latest uploads). Use it when the user pastes a video link. For what the video says, use get_video_transcripts. Uses the shared Video Research limit of 500 operations per 24 hours.
videorequiredstring
A YouTube video link (watch, youtu.be, shorts, live) or an 11-character video ID
get_youtube_channelRead onlyGet a YouTube channel
get_youtube_channelRead onlyGet a YouTube channel
Look up any YouTube channel from a link, @handle, channel ID or one of its video links: name, handle, subscribers, video count, description, and its 5 latest videos with their Outlier Scores. Use it when the user pastes a channel link. To go through its videos use list_channel_videos, and for what it says in them use get_channel_transcripts. Uses the shared Video Research limit of 500 operations per 24 hours.
channelrequiredstring
The channel: a channel link (youtube.com/@handle, /channel/UC…, /c/name), an @handle, a channel ID, or a link to any of its videos
list_channel_videosRead onlyList a channel's videos
list_channel_videosRead onlyList a channel's videos
List any YouTube channel's long-form videos, Shorts or past live streams, newest, most popular or oldest first, with views, duration, publish time and an Outlier Score (views ÷ the median views of the channel's latest uploads; above 1x beat its usual video). Up to 200 per call; use nextPageToken for more. Use the video IDs with get_video_transcripts, or use get_channel_transcripts to list and read them in one step. Uses the shared Video Research limit of 500 operations per 24 hours.
channelstring
The channel (a link, @handle, channel ID or one of its video links). Not needed with pageToken
typeenum · default "videos"
videos = long-form uploads, shorts = Shorts, live = past live streams
sortenum · default "newest"
newest first, most popular (by views) first, or oldest first
limitinteger · default 30
Videos to return, up to 200
pageTokenstring
nextPageToken from the previous call, to continue the list
list_playlist_videosRead onlyList a playlist's videos
list_playlist_videosRead onlyList a playlist's videos
List the videos in any public YouTube playlist, in playlist order, with views, duration, channel and an Outlier Score against each video's own channel. Up to 200 per call; use nextPageToken for more. Use it when the user pastes a playlist link, then get_video_transcripts for what the videos say. Uses the shared Video Research limit of 500 operations per 24 hours.
playliststring
A YouTube playlist link (with list=…) or playlist ID. Not needed with pageToken
limitinteger · default 50
Videos to return, up to 200
pageTokenstring
nextPageToken from the previous call, to continue the list
get_video_transcriptsRead onlyGet video transcripts
get_video_transcriptsRead onlyGet video transcripts
Get what is said in one or more YouTube videos from their captions: the full transcript, only the intro or outro, or a time range, optionally with [m:ss] timestamps. Use it to analyse what videos say, how they hook viewers, their structure, calls to action, or to compare many videos. For a whole channel use get_channel_transcripts instead. Videos without captions come back with status no_captions. Up to 50 videos per call and about 80,000 characters in total; every 10 videos count as one Video Research operation.
videosrequiredstring[]
Video links or IDs, up to 50
sectionenum · default "full"
full = whole transcript, intro = the first `seconds`, outro = the last `seconds`, range = from startSeconds to endSeconds. Use intro or outro to compare openings or endings across many videos
secondsinteger · default 60
For intro and outro: how many seconds to take, like 30 for a hook or 60 for an intro
startSecondsnumber
For range: where to start, in seconds
endSecondsnumber
For range: where to stop, in seconds. Leave empty for the end of the video
languagestring · default "en"
Preferred caption language, like en or es. Falls back to the video's own language
includeTimestampsboolean · default false
Put [m:ss] timestamps before each caption line
maxCharsPerVideointeger · default 12000
Cut each transcript after this many characters
get_channel_transcriptsRead onlyGet a channel's transcripts
get_channel_transcriptsRead onlyGet a channel's transcripts
Go through a YouTube channel's videos and get what is said in each, in one call: lists the channel's latest, most popular or oldest videos (or Shorts), then returns each one's transcript, intro, outro or time range. Use it for questions across a channel's videos, like the common themes of their intros (section intro, seconds 30 to 90), how they end videos and ask for subscribers (section outro), recurring topics, phrases or structure (section full). Up to 50 videos per call. Up to 50 videos per call and about 80,000 characters in total; every 10 videos count as one Video Research operation.
channelrequiredstring
The channel: a channel link (youtube.com/@handle, /channel/UC…, /c/name), an @handle, a channel ID, or a link to any of its videos
typeenum · default "videos"
videos = long-form uploads, shorts = Shorts, live = past live streams
sortenum · default "newest"
newest first, most popular (by views) first, or oldest first
limitinteger · default 20
How many of the channel's videos to read, up to 50
sectionenum · default "full"
full = whole transcript, intro = the first `seconds`, outro = the last `seconds`, range = from startSeconds to endSeconds. Use intro or outro to compare openings or endings across many videos
secondsinteger · default 60
For intro and outro: how many seconds to take, like 30 for a hook or 60 for an intro
startSecondsnumber
For range: where to start, in seconds
endSecondsnumber
For range: where to stop, in seconds. Leave empty for the end of the video
languagestring · default "en"
Preferred caption language, like en or es. Falls back to the video's own language
includeTimestampsboolean · default false
Put [m:ss] timestamps before each caption line
maxCharsPerVideointeger · default 12000
Cut each transcript after this many characters
read_web_pageRead onlyRead a web page
read_web_pageRead onlyRead a web page
Read the text of a public web page or online PDF from its link: title, description and the main text, with headings and lists kept. Use it when the user pastes an article, blog post, product page, news story or document link. For YouTube links use the YouTube tools instead. Does not count toward the Video Research limit.
urlrequiredstring
The page link
maxCharsinteger · default 20000
Cut the text after this many characters, up to 60000
Script Writer
get_script_writer_optionsRead onlyGet Script Writer options
get_script_writer_optionsRead onlyGet 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.
wordsinteger · default 1000
Script length to price
referenceCountinteger · default 0
Number of references to price
write_scriptWritesWrite a YouTube script
write_scriptWritesWrite 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).
topicrequiredstring
What the video is about: a topic, brief, or outline, at least 5 words
wordsinteger · 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
frameworksenum[] · default all
Scriptwriting frameworks to apply. Defaults to all of them
Viral Hook DatabaseIntro FrameworksValue Loop StructureStrategic OrderingTension and PacingEmotional WavesPayoff StructuringAdvanced PsychologyOutro StrategyAlgorithm Optimizationreferencesobject[] · default []
Up to 3 references: youtube video URLs or pdf URLs
modelenum · 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.2 = Fable 5.2 (premium, 40 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 onlyList my scripts
list_my_scriptsRead onlyList my scripts
List the user's saved scripts (My Scripts), newest first, with a preview of each.
pageinteger · default 1
limitinteger · default 20
Scripts per page, up to 50
get_scriptRead onlyGet a script
get_scriptRead onlyGet a script
Get a saved script in full, with its topic, length, frameworks, model, references, and paragraphs numbered for rewrite_script_paragraph.
scriptIdrequiredstring
The script id from write_script or list_my_scripts
update_scriptWritesUpdate a script
update_scriptWritesUpdate a script
Replace the text of a saved script, for example after the user edits it. Paragraphs are separated by blank lines.
scriptIdrequiredstring
The script id from write_script or list_my_scripts
scriptrequiredstring
The full new script text
delete_scriptDestructiveDelete a script
delete_scriptDestructiveDelete a script
Delete a script from My Scripts. Confirm with the user first.
scriptIdrequiredstring
The script id from write_script or list_my_scripts
generate_script_hooksWritesGenerate alternative script hooks
generate_script_hooksWritesGenerate 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.
scriptIdrequiredstring
The script id from write_script or list_my_scripts
replace_script_hookWritesReplace a script hook
replace_script_hookWritesReplace a script hook
Replace a saved script's opening hook (its first paragraph) with new text, such as one from generate_script_hooks.
scriptIdrequiredstring
The script id from write_script or list_my_scripts
hookrequiredstring
The new opening hook
rewrite_script_paragraphWritesRewrite a script paragraph
rewrite_script_paragraphWritesRewrite 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.
scriptIdrequiredstring
The script id from write_script or list_my_scripts
paragraphNumberrequiredinteger
The paragraph to rewrite, starting at 1
instructionrequiredstring
How to rewrite it
Thumbnail Generator
get_thumbnail_generator_optionsRead onlyGet Thumbnail Generator options
get_thumbnail_generator_optionsRead onlyGet 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 onlyList thumbnail projects
list_thumbnail_projectsRead onlyList thumbnail projects
List the user's thumbnail projects, most recently updated first, with the latest thumbnail of each. Search matches project names.
searchstring
Text to match in project names
pageinteger · default 1
limitinteger · default 12
Projects per page, up to 50
get_thumbnail_projectRead onlyGet a thumbnail project
get_thumbnail_projectRead onlyGet 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.
projectIdrequiredstring
The thumbnail project id
pageinteger · default 1
Page number, starting at 1
limitinteger · default 20
Thumbnails per page, up to 50
generate_thumbnailWritesGenerate a YouTube thumbnail
generate_thumbnailWritesGenerate 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.
promptrequiredstring
The thumbnail idea: subject, text, mood, and anything it must show
formatenum · default "youtube-video"
Thumbnail format: youtube-video = YouTube video (16:9), youtube-shorts = YouTube Shorts (9:16)
youtubeVideoUrlstring
Optional YouTube video URL. Its title, description, and transcript are used to make the thumbnail fit the video
channelIdstring
Optional connected channel ID (from get_thumbnail_generator_options) whose latest thumbnails set the style
faceImageUrlstring
Optional public URL of a face photo (image/jpeg, image/png, image/webp, up to 5 MB) of the person to feature
edit_thumbnailWritesEdit a thumbnail
edit_thumbnailWritesEdit 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.
projectIdrequiredstring
The thumbnail project id
instructionrequiredstring
The change to make
imageIdstring
The thumbnail to edit (from get_thumbnail_project). Defaults to the latest one
formatenum
Thumbnail format: youtube-video = YouTube video (16:9), youtube-shorts = YouTube Shorts (9:16). Defaults to the edited thumbnail's format
youtubeVideoUrlstring
Optional YouTube video URL. Its title, description, and transcript are used to make the thumbnail fit the video
rename_thumbnail_projectWritesRename a thumbnail project
rename_thumbnail_projectWritesRename a thumbnail project
Rename a thumbnail project.
projectIdrequiredstring
The thumbnail project id
titlerequiredstring
The new project name
delete_thumbnail_projectDestructiveDelete a thumbnail project
delete_thumbnail_projectDestructiveDelete a thumbnail project
Delete a thumbnail project and all its thumbnails. Confirm with the user first.
projectIdrequiredstring
The thumbnail project id
Ideas Manager
list_idea_channelsRead onlyList Ideas Manager channels
list_idea_channelsRead onlyList Ideas Manager channels
List the user's Ideas Manager channels (boards that hold video ideas), with how many active ideas each has. The Daily Ideas channel (isDailyIdeas) holds ideas saved from the Today page and does not count toward the limit of 10 channels.
No parameters
create_idea_channelWritesCreate an Ideas Manager channel
create_idea_channelWritesCreate an Ideas Manager channel
Create an Ideas Manager channel to collect video ideas in. Up to 10 channels.
namerequiredstring
The channel name
rename_idea_channelWritesRename an Ideas Manager channel
rename_idea_channelWritesRename an Ideas Manager channel
Rename an Ideas Manager channel.
channelIdrequiredstring
The idea channel ID from list_idea_channels
namerequiredstring
The new channel name
list_ideasRead onlyList ideas
list_ideasRead onlyList 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.
channelIdrequiredstring
The idea channel ID from list_idea_channels
statusenum · default "active"
active, completed, archived, or all
searchstring
Text to match in idea titles and descriptions
pageinteger · default 1
Page number, starting at 1
limitinteger · default 20
Ideas per page, up to 50
add_ideaWritesAdd an idea
add_ideaWritesAdd an idea
Add a video idea to the end of an Ideas Manager channel, for example one from get_today_briefing or TubeMagic Agent.
channelIdrequiredstring
The idea channel ID from list_idea_channels
titlerequiredstring
The idea title
descriptionstring
Notes about the idea
thumbnailUrlstring
Optional image URL to show as the idea thumbnail
scheduledDatestring
Optional date to make the video, like 2026-10-15
import_youtube_ideaWritesImport a YouTube video as an idea
import_youtube_ideaWritesImport 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.
channelIdrequiredstring
The idea channel ID from list_idea_channels
videoUrlrequiredstring
A YouTube video or Shorts URL
update_ideaWritesUpdate an idea
update_ideaWritesUpdate an idea
Update an idea: title, description, scheduled date, thumbnail URL, progress (scripted, recorded, edited), completed, or archived. Only the fields given change.
channelIdrequiredstring
The idea channel ID from list_idea_channels
ideaIdrequiredstring
The idea ID from list_ideas
titlestring
descriptionstring
scheduledDatestring | null
A date like 2026-10-15, or null to clear it
thumbnailUrlstring | null
Image URL, or null to remove the thumbnail
progressenum[]
The steps done so far, from: SCRIPTED, RECORDED, EDITED
completedboolean
Mark the idea completed or active again
archivedboolean
Archive or un-archive the idea
reorder_ideasWritesReorder ideas
reorder_ideasWritesReorder 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.
channelIdrequiredstring
The idea channel ID from list_idea_channels
ideaIdsrequiredstring[]
Idea IDs in the order they should appear
upload_idea_thumbnailWritesUpload an idea thumbnail
upload_idea_thumbnailWritesUpload 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.
channelIdrequiredstring
The idea channel ID from list_idea_channels
ideaIdrequiredstring
The idea ID from list_ideas
imageUrlrequiredstring
Public URL of the image
Repurpose Idea
repurpose_ideaWritesRepurpose a video idea
repurpose_ideaWritesRepurpose 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 any idea, for example one from get_today_briefing or the Ideas Manager. Needs a paid TubeMagic plan. Allows 100 repurposes per 24 hours for each source.
titlerequiredstring
The original idea title
descriptionstring
Why the original idea works, if known
typeenum · 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)
channelNamestring
Optional channel name or handle the idea is for
fromenum · default "video-idea"
Where the idea came from: video-idea or community-post
Video Timestamps
generate_video_timestampsWritesGenerate YouTube video timestamps
generate_video_timestampsWritesGenerate 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.
videoUrlrequiredstring
A YouTube video URL, like https://youtu.be/VIDEO_ID
Today
Today
get_today_overviewRead onlyGet Today overview
get_today_overviewRead onlyGet Today overview
The Today page for a connected YouTube channel: subscribers, average views, views and uploads in the last 28 days, and the latest video with its outlier score. Also lists every connected channel.
channelIdstring
Connected channel ID (from get_today_overview). Defaults to the first connected channel
get_today_briefingWritesGet today's briefing
get_today_briefingWritesGet today's briefing
Today's daily briefing for a connected channel, the same as the Today page: breakout videos in the channel's niche this week and 3 video ideas for today, each with why it should work, the video that inspired it and a generated thumbnail. The briefing is made once a day; the first call of the day can take up to a minute. Needs a paid TubeMagic plan.
channelIdstring
Connected channel ID (from get_today_overview). Defaults to the first connected channel
retryboolean
Try again after a failed briefing
save_today_ideaWritesSave a Today idea
save_today_ideaWritesSave a Today idea
Save one of today's ideas to the Daily Ideas folder in the Ideas Manager, with its reason, source video and thumbnail. Saving twice keeps one copy.
ideaIdrequiredstring
An idea id from get_today_briefing
mark_today_idea_writtenWritesMark a Today idea as written
mark_today_idea_writtenWritesMark a Today idea as written
Mark one of today's ideas as written, for example after writing its script.
ideaIdrequiredstring
An idea id from get_today_briefing
My Channels
Channels
list_my_channelsRead onlyList my YouTube channels
list_my_channelsRead onlyList 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 onlySearch YouTube channels
search_youtube_channelsRead onlySearch YouTube channels
Search YouTube for channels by name or handle, to find one to connect. Each result says whether it is already connected.
queryrequiredstring
Channel name or handle to search for
connect_youtube_channelWritesConnect a YouTube channel
connect_youtube_channelWritesConnect 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.
channelrequiredstring
The channel ID (UC...), a handle like @mkbhd, or a channel URL
disconnect_youtube_channelDestructiveDisconnect a YouTube channel
disconnect_youtube_channelDestructiveDisconnect 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.
channelrequiredstring
A connected channel: its channel ID, handle like @mkbhd, or name
Videos and Analytics
list_my_channel_videosRead onlyList my channel videos
list_my_channel_videosRead onlyList 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.
channelrequiredstring
A connected channel: its channel ID, handle like @mkbhd, or name
searchstring
Text to match in video titles
timeRangeenum · default "all"
Published within: all = All time, 7d = Last 7 Days, 30d = Last 30 Days, year = Last Year
sortenum · default "latest"
Sort by: latest = Latest, oldest = Oldest, most_views = Most views, least_views = Least views, outlier = Outlier Score
pageinteger · default 1
limitinteger · default 12
Videos per page, up to 24
get_my_channels_overviewRead onlyGet my channels overview
get_my_channels_overviewRead onlyGet 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 onlyGet one of my videos
get_my_videoRead onlyGet 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.
videorequiredstring
A YouTube video ID or URL
Dashboard
Recent Projects
get_recent_projectsRead onlyGet recent projects
get_recent_projectsRead onlyGet recent projects
Get the user's most recent TubeMagic work, like the dashboard: Agent chats, saved videos, scripts, and thumbnail projects, newest first, with links to open each in TubeMagic.
limitinteger · default 10
Items per type, up to 25
My Generations
list_my_generationsRead onlyList my generations
list_my_generationsRead onlyList my generations
List everything the user generated, like the My Generations page: thumbnails, scripts and upload packages (titles, description, tags), newest first, with links to open each in TubeMagic. Filter by type and search by title.
typesenum[]
Only these types. Leave empty for all
thumbnailscriptupload-packagesearchstring
Text to match in titles
offsetinteger · default 0
Items to skip. Use nextOffset from the previous page
limitinteger · default 20
Items per page, up to 20
Settings
Profile
get_userRead onlyGet TubeMagic user
get_userRead onlyGet TubeMagic user
Get the signed-in TubeMagic user: name, email, plan, and remaining credits.
No parameters
Sessions
list_sessionsRead onlyList signed-in sessions
list_sessionsRead onlyList signed-in sessions
List the devices and browsers currently signed in to the user's TubeMagic account, newest first.
No parameters
log_out_sessionDestructiveLog out a session
log_out_sessionDestructiveLog 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.
sessionIdrequiredstring
The sessionId from list_sessions
Logs
list_usage_logsRead onlyList usage logs
list_usage_logsRead onlyList 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.
toolstring
Only this tool, by name from list_usage_log_tools
dateFromstring
Only logs on or after this date or time
dateTostring
Only logs on or before this date or time
pageinteger · default 1
Page number, starting at 1
limitinteger · default 20
Logs per page, up to 50
list_usage_log_toolsRead onlyList usage log tools
list_usage_log_toolsRead onlyList usage log tools
List the tool names the user has logs for, to filter list_usage_logs.
No parameters
Credit Logs
list_credit_logsRead onlyList credit logs
list_credit_logsRead onlyList 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.
sourceenum
Only this source: PAYMENT = purchases, PROJECT = tool usage and refunds, ADMIN = admin changes
dateFromstring
Only logs on or after this date or time
dateTostring
Only logs on or before this date or time
pageinteger · default 1
Page number, starting at 1
limitinteger · default 10
Credit logs per page, up to 50
Usage
get_usage_limitsRead onlyGet daily usage limits
get_usage_limitsRead onlyGet 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. Tools marked availableThrough run inside TubeMagic Agent. Premium models and credit-based tools (thumbnails, Agent replies, 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 TubeMagic Agent replies spend credits.
How do I disconnect an app?+
Open Settings → MCP in TubeMagic and revoke the OAuth client or MCP key. Access stops right away.