Skip to content

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/mcp
the first call
do {  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.

  1. 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
  2. 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 app
    • refresh_tokenRefresh token from the same sign-in; the access token is renewed from it
    • client_idGoogle OAuth client id
    • client_secretGoogle OAuth client secret
    account { op: "connections.requirements", service: "youtube" }
    # free: exactly what to paste, and what is found for you
  3. 03

    Make the first call. Check before a write.

    Ask in plain words; Claude picks the action. Before anything changes, check validates 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 v3www.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
  1. Video

    91

    38 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.

ActionWhat it doesEffectSame name in
youtube.videos.listList videosList videos by id, by chart (most popular) or by the caller's rating.readcontent.file.list77 connectors
youtube.playlists.listList playlistsRetrieves a list of resources, possibly filtered.readcontent.folder.list62 connectors
youtube.playlist_items.listList playlist itemsRetrieves a list of resources, possibly filtered.readcontent.file.list77 connectors
youtube.comment_threads.listList comment threadsList top-level comment threads on a video, a channel or a post.readcontent.file_comment.list12 connectors
youtube.playlists.createCreate playlistsInserts a new resource into this collection.writecontent.folder.create62 connectors
youtube.channels.listList channelsList channels by id, handle, username, or the authenticated user's own channel.readcomm.channel.list27 connectors
youtube.videos.deleteDelete videosDelete a video the authenticated channel owns.destructivecontent.file.delete68 connectors
youtube.comments.listList commentsList comments by id or the replies to a parent comment.readcontent.file_comment.list12 connectors
youtube.channels.getGet one channelFetch a single channel by id with its snippet, content details and statistics.readcomm.channel.get23 connectors
youtube.third_party_links.createCreate third party linksInserts a new resource into this collection.writecontent.file_link.create18 connectors
youtube.third_party_links.listList third party linksRetrieves a list of resources, possibly filtered.readcontent.file_link.list12 connectors
youtube.live_chat_messages.createCreate live chat messagesInserts a new resource into this collection.writecomm.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.

  1. Readread

    Which YouTube files changed this week, and who changed them?

    callsyoutube.videos.list

  2. Planwrite

    Create and start a live broadcast in YouTube. Ask me before anything is sent or changed.

    callsyoutube.live_broadcasts.createyoutube.live_streams.createyoutube.live_broadcasts.bindyoutube.live_streams.listyoutube.live_broadcasts.transition

  3. Plandestructive

    Ban an abusive viewer from live chat in YouTube. Ask me before anything is sent or changed.

    callsyoutube.live_broadcasts.listyoutube.live_chat_moderators.listyoutube.live_chat_messages.listyoutube.live_chat_messages.deleteyoutube.live_chat_bans.create

  4. Writewrite

    Create playlists in YouTube. Show me exactly what you will send before you save it.

    callsyoutube.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.

  1. 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.

    Effect
    read
    Steps
    6 · loops
    Needs
    start date and end date
    Install
    youtube-weekly-channel-performance-report
  2. 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 decidesOverwrite tags and category on video count videos from playlist playlist id. Existing tags on those videos will be replaced.

    Effect
    write
    Steps
    5 · loops
    Needs
    playlist id and tags
    Install
    youtube-bulk-tag-recent-uploads
  3. 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 decidesSet moderation status 'moderation status' on held count held YouTube comments on channel channel id.

    Effect
    write
    Steps
    5 · loops
    Needs
    channel id
    Install
    youtube-moderate-comment-backlog
  4. 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 decidesTransition broadcast 'title' (id) to live now — viewers will see it immediately.

    Effect
    write
    Steps
    6
    Needs
    title and scheduled start time
    Install
    youtube-go-live-broadcast
  5. 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 decidesCreate a recurring bulk reporting job 'job name' for report type report type id — it generates reports daily until deleted.

    Effect
    write
    Steps
    8
    Needs
    job name and report type id
    Install
    youtube-schedule-bulk-reporting-job
  6. 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 decidesDelete message message id and permanently ban channel offender channel id from the live chat of 'title'.

    Effect
    destructive
    Steps
    7
    Needs
    broadcast id and offender channel id
    Install
    youtube-live-chat-ban-abusive-viewer
  7. 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 decidesPermanently delete playlist 'title' and its item count items. This cannot be undone.

    Effect
    destructive
    Steps
    7 · loops
    Needs
    playlist id
    Install
    youtube-retire-stale-playlist
install a plan
account { op: "plans.install", slug: "youtube-weekly-channel-performance-report" }
# then ask for it by name; a schedule can run it on a timetable

Governance for YouTube

Destructive actions wait for a yes.

17 YouTube actions are destructive. These are all of them:

  • Delete videosyoutube.videos.delete
  • Delete playlist itemsyoutube.playlist_items.delete
  • Delete playlistsyoutube.playlists.delete
  • Delete commentsyoutube.comments.delete
  • Delete third party linksyoutube.third_party_links.delete
  • Delete live chat messagesyoutube.live_chat_messages.delete
  • Delete live streamsyoutube.live_streams.delete
  • Delete live broadcastsyoutube.live_broadcasts.delete
  • Delete channel sectionsyoutube.channel_sections.delete
  • Delete live chat moderatorsyoutube.live_chat_moderators.delete
  • Delete live chat bansyoutube.live_chat_bans.delete
  • Delete captionsyoutube.captions.delete
  • Delete playlist imagesyoutube.playlist_images.delete
  • Delete subscriptionsyoutube.subscriptions.delete
  • Delete analytics groupsyoutube.analytics_groups.delete
  • Delete reporting jobsyoutube.reporting_jobs.delete
  • Delete analytics group itemsyoutube.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.

doyoutube.videos.deleteconfirm_policy: human

Delete videos?

intent: the user asked me to delete videos

run suspended · waiting for a named person · key youtube-agent cannot confirm itself
In the console, or from an emailed signed link.
a key for this connector
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]" }  ]}
Illustrative. Scoped to YouTube only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

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

See pricing

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 reportswrite
  • youtube.activities.listList activitiesread
  • youtube.analytics_group_items.createCreate analytics group itemswrite
  • youtube.analytics_group_items.deleteDelete analytics group itemsdestructive
  • youtube.analytics_group_items.listList analytics group itemsread
  • youtube.analytics_groups.createCreate analytics groupswrite
  • youtube.analytics_groups.deleteDelete analytics groupsdestructive
  • youtube.analytics_groups.listList analytics groupsread
  • youtube.analytics_groups.updateUpdate analytics groupswrite
  • youtube.analytics_reports.queryQuery analytics reportsread
  • youtube.captions.deleteDelete captionsdestructive
  • youtube.captions.listList captionsread
  • youtube.captions.updateUpdate captionswrite
  • youtube.channel_sections.createCreate channel sectionswrite
  • youtube.channel_sections.deleteDelete channel sectionsdestructive
  • youtube.channel_sections.listList channel sectionsread
  • youtube.channel_sections.updateUpdate channel sectionswrite
  • youtube.channels.getGet one channelread
  • youtube.channels.listList channelsread
  • youtube.channels.updateUpdate channelswrite
  • youtube.comment_threads.createCreate comment threadswrite
  • youtube.comment_threads.listList comment threadsread
  • youtube.comments.createCreate commentswrite
  • youtube.comments.deleteDelete commentsdestructive
  • youtube.comments.listList commentsread
  • youtube.comments.mark_as_spamMark as spam commentswrite
  • youtube.comments.set_moderation_statusSet moderation status commentswrite
  • youtube.comments.updateUpdate commentswrite
  • youtube.i18n_languages.listList i18n languagesread
  • youtube.i18n_regions.listList i18n regionsread
  • youtube.live_broadcasts.bindBind live broadcastswrite
  • youtube.live_broadcasts.createCreate live broadcastswrite
  • youtube.live_broadcasts.deleteDelete live broadcastsdestructive
  • youtube.live_broadcasts.insert_cuepointInsert cuepoint live broadcastswrite
  • youtube.live_broadcasts.listList live broadcastsread
  • youtube.live_broadcasts.transitionTransition live broadcastswrite
  • youtube.live_broadcasts.updateUpdate live broadcastswrite
  • youtube.live_chat_bans.createCreate live chat banswrite
  • youtube.live_chat_bans.deleteDelete live chat bansdestructive
  • youtube.live_chat_messages.createCreate live chat messageswrite
  • youtube.live_chat_messages.deleteDelete live chat messagesdestructive
  • youtube.live_chat_messages.listList live chat messagesread
  • youtube.live_chat_messages.transitionTransition live chat messageswrite
  • youtube.live_chat_moderators.createCreate live chat moderatorswrite
  • youtube.live_chat_moderators.deleteDelete live chat moderatorsdestructive
  • youtube.live_chat_moderators.listList live chat moderatorsread
  • youtube.live_streams.createCreate live streamswrite
  • youtube.live_streams.deleteDelete live streamsdestructive
  • youtube.live_streams.listList live streamsread
  • youtube.live_streams.updateUpdate live streamswrite
  • youtube.members.listList membersread
  • youtube.memberships_levels.listList memberships levelsread
  • youtube.playlist_images.deleteDelete playlist imagesdestructive
  • youtube.playlist_images.listList playlist imagesread
  • youtube.playlist_items.createCreate playlist itemswrite
  • youtube.playlist_items.deleteDelete playlist itemsdestructive
  • youtube.playlist_items.listList playlist itemsread
  • youtube.playlist_items.updateUpdate playlist itemswrite
  • youtube.playlists.createCreate playlistswrite
  • youtube.playlists.deleteDelete playlistsdestructive
  • youtube.playlists.getGet one playlistread
  • youtube.playlists.listList playlistsread
  • youtube.playlists.updateUpdate playlistswrite
  • youtube.reporting_job_reports.getGet reporting job reportsread
  • youtube.reporting_job_reports.listList reporting job reportsread
  • youtube.reporting_jobs.createCreate reporting jobswrite
  • youtube.reporting_jobs.deleteDelete reporting jobsdestructive
  • youtube.reporting_jobs.getGet reporting jobsread
  • youtube.reporting_jobs.listList reporting jobsread
  • youtube.reporting_report_types.listList reporting report typesread
  • youtube.search.listList searchread
  • youtube.subscriptions.createCreate subscriptionswrite
  • youtube.subscriptions.deleteDelete subscriptionsdestructive
  • youtube.subscriptions.listList subscriptionsread
  • youtube.super_chat_events.listList super chat eventsread
  • youtube.third_party_links.createCreate third party linkswrite
  • youtube.third_party_links.deleteDelete third party linksdestructive
  • youtube.third_party_links.listList third party linksread
  • youtube.third_party_links.updateUpdate third party linkswrite
  • youtube.video_abuse_report_reasons.listList video abuse report reasonsread
  • youtube.video_categories.listList video categoriesread
  • youtube.video_trainability.getGet video trainabilityread
  • youtube.videos.batch_get_statsBatch get stats videosread
  • youtube.videos.deleteDelete videosdestructive
  • youtube.videos.getGet one videoread
  • youtube.videos.get_ratingGet rating videosread
  • youtube.videos.listList videosread
  • youtube.videos.rateRate videoswrite
  • youtube.videos.report_abuseReport abuse videoswrite
  • youtube.videos.updateUpdate videoswrite
  • youtube.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.