Connectors · Marketing & media
YouTube MCP server for AI agents.
actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to YouTube and the rest of your systems. It gives your agent 91 YouTube actions (38 reads, 36 writes and 17 that wait for a confirmation) and holds the YouTube credential itself, so the agent never does. It paces YouTube's limits and records every call. Connecting YouTube needs your own YouTube OAuth app and one admin sign-in.
100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.
claude mcp add --transport http actionlake https://connect.actionlake.com/mcpdo { action: "youtube.videos.list", intent: "check which YouTube account is connected"}# List videos · read · 1 upstream call- 91actionsin one signed file
- 38readlook, never change
- 36writecreate and update
- 17wait for a yesdestructive, confirmed first
Set up
Connect YouTube in three steps.
- 01
Add actionlake to Claude.
Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.
https://connect.actionlake.com/mcp - 02
Connect YouTube.
OAuth 2.0, authorization code with PKCE. You register your own OAuth app with YouTube, an admin signs in once, and you paste the app's client id and secret and the tokens from that sign-in; actionlake renews the access token from then on. actionlake stores what you paste write-only, sealed under your tenant's key.
Before the first sign-in, YouTube needs an OAuth app of your own, registered in its developer portal. actionlake has no YouTube app to lend you.
access_tokenAccess token from one sign-in with your own OAuth apprefresh_tokenRefresh token from the same sign-in; the access token is renewed from itclient_idGoogle OAuth client idclient_secretGoogle OAuth client secret
account { op: "connections.requirements", service: "youtube" } # free: exactly what to paste, and what is found for you - 03
Make the first call. Check before a write.
Ask in plain words; Claude picks the action. Before anything changes,
checkvalidates the call and prices it, for free.do { action: "youtube.videos.list" }# list videos · read · 1 upstream callcheck { action: "youtube.playlists.create", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent
YouTube at a glance
- Sign-in
- OAuth 2.0, authorization code with PKCE. You register your own OAuth app with YouTube, an admin signs in once, and you paste the app's client id and secret and the tokens from that sign-in; actionlake renews the access token from then on.
- You provide
access_tokenrefresh_tokenclient_idclient_secret- Limits we pace to
- 300 calls a minute, per connection
- API covered
- YouTube API v3
www.googleapis.com/youtube/v3 - Built from
- YouTube's documentation, read 20 September 2026googleapis.comgoogleapis.comgoogleapis.com
- Service file
- Version 1.0.0, signed (Ed25519)
- Cached reads
- 38 of 38 reads, for up to an hour; a write clears what it affects
- Ready-made plans
- 8 in the store
- Shared entities
- 4, so ask can line YouTube up with your other systems
- Data
- Processed and stored in Sydney, Australia. No US region yet
Capabilities
What an AI agent can do in YouTube.
91 actions in 1 area. Every one carries its effect, so a key can allow the reads and hold the rest.
- 38readlook, never change
- 36writecreate and update
- 17destructivewait for a confirmation
Video
9138 read · 36 write · 17 destructive
List videos · List playlists · List playlist items · List comment threads
Top actions
The YouTube API, shaped for agents.
The ids your agent types, what each does, and the one name it shares with other systems. 67 of YouTube's 69 action names are shared with at least one other connector, so an agent learns them once.
| Action | What it does | Effect | Same name in |
|---|---|---|---|
youtube.videos.listList videos | List videos by id, by chart (most popular) or by the caller's rating. | read | content.file.list77 connectors |
youtube.playlists.listList playlists | Retrieves a list of resources, possibly filtered. | read | content.folder.list62 connectors |
youtube.playlist_items.listList playlist items | Retrieves a list of resources, possibly filtered. | read | content.file.list77 connectors |
youtube.comment_threads.listList comment threads | List top-level comment threads on a video, a channel or a post. | read | content.file_comment.list12 connectors |
youtube.playlists.createCreate playlists | Inserts a new resource into this collection. | write | content.folder.create62 connectors |
youtube.channels.listList channels | List channels by id, handle, username, or the authenticated user's own channel. | read | comm.channel.list27 connectors |
youtube.videos.deleteDelete videos | Delete a video the authenticated channel owns. | destructive | content.file.delete68 connectors |
youtube.comments.listList comments | List comments by id or the replies to a parent comment. | read | content.file_comment.list12 connectors |
youtube.channels.getGet one channel | Fetch a single channel by id with its snippet, content details and statistics. | read | comm.channel.get23 connectors |
youtube.third_party_links.createCreate third party links | Inserts a new resource into this collection. | write | content.file_link.create18 connectors |
youtube.third_party_links.listList third party links | Retrieves a list of resources, possibly filtered. | read | content.file_link.list12 connectors |
youtube.live_chat_messages.createCreate live chat messages | Inserts a new resource into this collection. | write | comm.message.create25 connectors |
Try it
Prompts to paste into Claude.
Each one names the YouTube actions it will call, so you know what it reads and what it changes before you send it.
- Readread
Which YouTube files changed this week, and who changed them?
calls
youtube.videos.list - Planwrite
Create and start a live broadcast in YouTube. Ask me before anything is sent or changed.
calls
youtube.live_broadcasts.createyoutube.live_streams.createyoutube.live_broadcasts.bindyoutube.live_streams.listyoutube.live_broadcasts.transition - Plandestructive
Ban an abusive viewer from live chat in YouTube. Ask me before anything is sent or changed.
calls
youtube.live_broadcasts.listyoutube.live_chat_moderators.listyoutube.live_chat_messages.listyoutube.live_chat_messages.deleteyoutube.live_chat_bans.create - Writewrite
Create playlists in YouTube. Show me exactly what you will send before you save it.
calls
youtube.playlists.create
The plan store
Ready-made plans for YouTube.
8 plans in the store. Install one and your agent runs it by name; the reply says which connections are still missing. A schedule can run a plan on a timetable. There are no triggers or webhooks, by design.
Weekly channel performance report
Use it when Someone asks how the YouTube channel performed over a period and wants views, watch time and the videos behind the numbers.
Build a playlist from a search
Use it when Someone wants a playlist assembled automatically from a topic search rather than adding videos one by one.
Bulk retag recent uploads
Use it when A batch of recently uploaded videos needs the same tags, category or description boilerplate applied in one pass.
A person decides
Overwrite tags and category on video count videos from playlist playlist id. Existing tags on those videos will be replaced.
Moderate the held comment backlog
Use it when Held-for-review YouTube comments have piled up and someone wants them triaged in one pass with a human sign-off.
A person decides
Set moderation status 'moderation status' on held count held YouTube comments on channel channel id.
Create and start a live broadcast
Use it when Someone wants to set up a YouTube live stream end to end and take it live once the encoder is pushing video.
A person decides
Transition broadcast 'title' (id) to live now — viewers will see it immediately.
Schedule a bulk reporting job and collect it
Use it when Someone needs recurring bulk YouTube reporting data rather than one-off analytics queries.
A person decides
Create a recurring bulk reporting job 'job name' for report type report type id — it generates reports daily until deleted.
Ban an abusive viewer from live chat
Use it when A viewer is abusing a live chat during a broadcast and a moderator wants the message removed and the account banned.
A person decides
Delete message message id and permanently ban channel offender channel id from the live chat of 'title'.
Retire a stale playlist
Use it when A playlist is obsolete and someone wants it emptied and deleted with a record of what it held and a human sign-off.
A person decides
Permanently delete playlist 'title' and its item count items. This cannot be undone.
account { op: "plans.install", slug: "youtube-weekly-channel-performance-report" }
# then ask for it by name; a schedule can run it on a timetableGovernance for YouTube
Destructive actions wait for a yes.
17 YouTube actions are destructive. These are all of them:
- Delete videos
youtube.videos.delete - Delete playlist items
youtube.playlist_items.delete - Delete playlists
youtube.playlists.delete - Delete comments
youtube.comments.delete - Delete third party links
youtube.third_party_links.delete - Delete live chat messages
youtube.live_chat_messages.delete - Delete live streams
youtube.live_streams.delete - Delete live broadcasts
youtube.live_broadcasts.delete - Delete channel sections
youtube.channel_sections.delete - Delete live chat moderators
youtube.live_chat_moderators.delete - Delete live chat bans
youtube.live_chat_bans.delete - Delete captions
youtube.captions.delete - Delete playlist images
youtube.playlist_images.delete - Delete subscriptions
youtube.subscriptions.delete - Delete analytics groups
youtube.analytics_groups.delete - Delete reporting jobs
youtube.reporting_jobs.delete - Delete analytics group items
youtube.analytics_group_items.delete
A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.
Delete videos?
intent: the user asked me to delete videos
account { op: "keys.create", name: "youtube-agent", allowed_actions: ["youtube.*"], cap_calls: 2000, confirm_policy: "human_for_writes", approval_rules: [ { match: "youtube.videos.delete", approver: "[email protected]" }, { match: "youtube.playlist_items.delete", approver: "[email protected]" }, { match: "youtube.playlists.delete", approver: "[email protected]" } ]}Cost
What YouTube costs on actionlake.
Every YouTube action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call YouTube refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.
- 1upstream call per actionall 91 YouTube actions
- 30actions pageeach page of a long list is one call
- 38reads can be cacheda cache hit costs nothing
- 100,000calls a month, freepaid plans from US$49 a month for 250,000
Action index
Every YouTube action.
91 actions by area: the id your agent calls, what it does, and its effect.
Video91
youtube.abuse_reports.createCreate abuse reportswriteyoutube.activities.listList activitiesreadyoutube.analytics_group_items.createCreate analytics group itemswriteyoutube.analytics_group_items.deleteDelete analytics group itemsdestructiveyoutube.analytics_group_items.listList analytics group itemsreadyoutube.analytics_groups.createCreate analytics groupswriteyoutube.analytics_groups.deleteDelete analytics groupsdestructiveyoutube.analytics_groups.listList analytics groupsreadyoutube.analytics_groups.updateUpdate analytics groupswriteyoutube.analytics_reports.queryQuery analytics reportsreadyoutube.captions.deleteDelete captionsdestructiveyoutube.captions.listList captionsreadyoutube.captions.updateUpdate captionswriteyoutube.channel_sections.createCreate channel sectionswriteyoutube.channel_sections.deleteDelete channel sectionsdestructiveyoutube.channel_sections.listList channel sectionsreadyoutube.channel_sections.updateUpdate channel sectionswriteyoutube.channels.getGet one channelreadyoutube.channels.listList channelsreadyoutube.channels.updateUpdate channelswriteyoutube.comment_threads.createCreate comment threadswriteyoutube.comment_threads.listList comment threadsreadyoutube.comments.createCreate commentswriteyoutube.comments.deleteDelete commentsdestructiveyoutube.comments.listList commentsreadyoutube.comments.mark_as_spamMark as spam commentswriteyoutube.comments.set_moderation_statusSet moderation status commentswriteyoutube.comments.updateUpdate commentswriteyoutube.i18n_languages.listList i18n languagesreadyoutube.i18n_regions.listList i18n regionsreadyoutube.live_broadcasts.bindBind live broadcastswriteyoutube.live_broadcasts.createCreate live broadcastswriteyoutube.live_broadcasts.deleteDelete live broadcastsdestructiveyoutube.live_broadcasts.insert_cuepointInsert cuepoint live broadcastswriteyoutube.live_broadcasts.listList live broadcastsreadyoutube.live_broadcasts.transitionTransition live broadcastswriteyoutube.live_broadcasts.updateUpdate live broadcastswriteyoutube.live_chat_bans.createCreate live chat banswriteyoutube.live_chat_bans.deleteDelete live chat bansdestructiveyoutube.live_chat_messages.createCreate live chat messageswriteyoutube.live_chat_messages.deleteDelete live chat messagesdestructiveyoutube.live_chat_messages.listList live chat messagesreadyoutube.live_chat_messages.transitionTransition live chat messageswriteyoutube.live_chat_moderators.createCreate live chat moderatorswriteyoutube.live_chat_moderators.deleteDelete live chat moderatorsdestructiveyoutube.live_chat_moderators.listList live chat moderatorsreadyoutube.live_streams.createCreate live streamswriteyoutube.live_streams.deleteDelete live streamsdestructiveyoutube.live_streams.listList live streamsreadyoutube.live_streams.updateUpdate live streamswriteyoutube.members.listList membersreadyoutube.memberships_levels.listList memberships levelsreadyoutube.playlist_images.deleteDelete playlist imagesdestructiveyoutube.playlist_images.listList playlist imagesreadyoutube.playlist_items.createCreate playlist itemswriteyoutube.playlist_items.deleteDelete playlist itemsdestructiveyoutube.playlist_items.listList playlist itemsreadyoutube.playlist_items.updateUpdate playlist itemswriteyoutube.playlists.createCreate playlistswriteyoutube.playlists.deleteDelete playlistsdestructiveyoutube.playlists.getGet one playlistreadyoutube.playlists.listList playlistsreadyoutube.playlists.updateUpdate playlistswriteyoutube.reporting_job_reports.getGet reporting job reportsreadyoutube.reporting_job_reports.listList reporting job reportsreadyoutube.reporting_jobs.createCreate reporting jobswriteyoutube.reporting_jobs.deleteDelete reporting jobsdestructiveyoutube.reporting_jobs.getGet reporting jobsreadyoutube.reporting_jobs.listList reporting jobsreadyoutube.reporting_report_types.listList reporting report typesreadyoutube.search.listList searchreadyoutube.subscriptions.createCreate subscriptionswriteyoutube.subscriptions.deleteDelete subscriptionsdestructiveyoutube.subscriptions.listList subscriptionsreadyoutube.super_chat_events.listList super chat eventsreadyoutube.third_party_links.createCreate third party linkswriteyoutube.third_party_links.deleteDelete third party linksdestructiveyoutube.third_party_links.listList third party linksreadyoutube.third_party_links.updateUpdate third party linkswriteyoutube.video_abuse_report_reasons.listList video abuse report reasonsreadyoutube.video_categories.listList video categoriesreadyoutube.video_trainability.getGet video trainabilityreadyoutube.videos.batch_get_statsBatch get stats videosreadyoutube.videos.deleteDelete videosdestructiveyoutube.videos.getGet one videoreadyoutube.videos.get_ratingGet rating videosreadyoutube.videos.listList videosreadyoutube.videos.rateRate videoswriteyoutube.videos.report_abuseReport abuse videoswriteyoutube.videos.updateUpdate videoswriteyoutube.watermarks.unsetUnset watermarkswrite
Questions
The YouTube MCP server, answered.
Is there a YouTube MCP server for Claude?
Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 91 YouTube actions, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by YouTube.
What do I need to connect YouTube?
Your own YouTube OAuth app, registered with YouTube (its client id and client secret), and the access and refresh tokens from one admin sign-in. actionlake has no YouTube app of its own, so this is not a one-step consent. actionlake renews the access token as it expires. The free call account { op: "connections.requirements", service: "youtube" } lists exactly what to paste.
Can an AI agent delete or change things in YouTube?
Only if its key allows it, and only with an explicit confirmation. 17 YouTube actions are destructive, including delete videos, delete playlist items and delete playlists. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.
Will an AI agent use up my YouTube API limit?
actionlake paces every call to the limits in the YouTube service file: 300 calls a minute per connection. Repeated reads are answered from cache (38 YouTube actions can be), which never reaches YouTube.
What does a YouTube action cost?
One upstream call, the only unit actionlake bills. A list that pages bills one call per page (30 YouTube actions page). Cache hits, searches, dry runs and calls YouTube refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.
Which YouTube API does it cover?
The YouTube API v3 at www.googleapis.com/youtube/v3. It is built from YouTube's documentation as read on 20 September 2026. 91 actions in 1 area, each one in the signed service file (version 1.0.0).
Does actionlake keep my YouTube data, and where?
actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to an hour, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your YouTube credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.
Which AI clients can use it?
Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.
Give your agent YouTube today.
Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.