youtube_analytics_ audience_ retentionPass video=VIDEO_ID (exactly one — a list is rejected): the retention curve for that video at 100 evenly spaced points.
Ask which videos gained the most subscribers last month, where viewers drop off in a video, which search terms find your channel, or how Shorts compare with long-form, and get the rows back straight away.
PopMCPYouTube Analytics
Every report and group tool on the connection: preset reports with metric combinations YouTube accepts, a raw report runner, analytics groups, and the threshold triggers.
40 tools in the full catalog: 35 read and 5 write. 26 load by default, and the rest are found with tool search.
youtube_analytics_ audience_ retentionPass video=VIDEO_ID (exactly one — a list is rejected): the retention curve for that video at 100 evenly spaced points.
youtube_analytics_ channel_ summaryHeadline numbers for the whole channel over a date range: views, watch time, average view duration and percentage, subscribers gained and lost, likes, dislikes, comments and shares.
youtube_analytics_ citiesViews and watch time by city.
youtube_analytics_ content_ type_ breakdownViews and watch time split by the kind of content: SHORTS, VIDEO_ON_DEMAND, LIVE_STREAM, STORY.
youtube_analytics_ demographicsAudience age and gender as a PERCENTAGE of views (viewerPercentage), the only metric this report accepts — there are no view counts here, and the percentages are of viewers who are signed in.
youtube_analytics_ devicesViews and watch time by device type: MOBILE, DESKTOP, TV, TABLET, GAME_CONSOLE.
youtube_analytics_ external_ traffic_ sourcesThe websites and apps outside YouTube that sent viewers, ranked by views — Google Search, Reddit, a newsletter, an embed on your own site.
youtube_analytics_ geographyViews, watch time and subscribers gained by country (ISO 3166-1 two-letter codes; ZZ is unknown).
youtube_analytics_ live_ vs_ on_ demandViews and watch time split between LIVE and ON_DEMAND playback.
youtube_analytics_ playback_ locationsWhere playback happened: WATCH (the video page), CHANNEL, EMBEDDED (another site), BROWSE, SEARCH, MOBILE, YT_OTHER.
youtube_analytics_ playlist_ detailPass playlist=PLAYLIST_ID (or group=GROUP_ID of a playlist group): daily performance of that playlist.
youtube_analytics_ revenue_ over_ timeEstimated revenue, ad revenue, YouTube Premium partner revenue, gross revenue, CPM, playback CPM, ad impressions and monetized playbacks, per day.
youtube_analytics_ run_ reportRun an arbitrary YouTube Analytics report — any dimensions × metrics × filters combination.
youtube_analytics_ search_ termsThe YouTube search queries that brought viewers to the channel, ranked by views.
youtube_analytics_ sharing_ servicesWhere viewers shared the channel's videos — WhatsApp, Facebook, Instagram, copy-link and 130+ others — ranked by share count.
youtube_analytics_ subscribed_ statusViews and watch time split between SUBSCRIBED and UNSUBSCRIBED viewers.
youtube_analytics_ subscriber_ growthSubscribers gained and lost per day.
youtube_analytics_ suggested_ video_ sourcesThe videos that suggested yours (the "Suggested videos" rail), ranked by views.
youtube_analytics_ top_ playlistsThe channel's playlists ranked by views, with watch time, playlist starts, views per start and average time in playlist.
youtube_analytics_ top_ videosThe channel's best-performing videos over the range, ranked by views, with watch time, average view duration and percentage, subscribers gained, likes, comments and shares.
youtube_analytics_ traffic_ sourcesWhere views came from, by source TYPE: YT_SEARCH, RELATED_VIDEO, SHORTS, BROWSE-style surfaces, PLAYLIST, EXT_URL, NOTIFICATION, SUBSCRIBER and the rest.
youtube_analytics_ us_ statesViews and watch time by US state (ISO 3166-2 codes such as US-CA).
youtube_analytics_ video_ daily_ performancePass video=VIDEO_ID: day-by-day performance of that ONE video.
youtube_analytics_ views_ over_ timeDaily trend of views, watch time, average view duration and subscriber change.
youtube_analytics_ list_ group_ itemsList the videos or playlists inside one analytics group.
youtube_analytics_ list_ groupsList the analytics groups on this account.
youtube_analytics_ ad_ performanceGross revenue, ad impressions and CPM broken down by ad format (auctionInstream, reservedBumperInstream, auctionDisplay …).
youtube_analytics_ card_ performanceCard and card-teaser impressions, clicks and click-through rates for the range, as one aggregate row.
youtube_analytics_ concurrent_ viewersPass video=VIDEO_ID of a live stream: average and peak concurrent viewers through it, minute by minute.
youtube_analytics_ embedded_ playersThe specific pages embedding the channel's videos, ranked by views.
youtube_analytics_ membership_ cancellationsWhy channel members cancelled, by survey reason.
youtube_analytics_ operating_ systemsViews and watch time by operating system.
youtube_analytics_ playlist_ traffic_ sourcesThe playlists that drove views to the channel's videos, ranked by views.
youtube_analytics_ views_ by_ monthThe same trend aggregated by calendar month (YYYY-MM).
youtube_analytics_ youtube_ productViews and watch time by which YouTube app the viewing happened in: CORE, MUSIC, KIDS, GAMING.
youtube_analytics_ add_ group_ itemAdd one video or playlist to an analytics group.
youtube_analytics_ create_ groupCreate an empty analytics group, then fill it with add_group_item.
youtube_analytics_ delete_ groupDelete an analytics group.
youtube_analytics_ remove_ group_ itemRemove one item from an analytics group.
youtube_analytics_ update_ groupRename an analytics group.
Authorize once, then an endpoint your client signs into. Nothing to deploy, and nothing to install on the YouTube Analytics side.
Enable the YouTube Analytics API and YouTube Data API v3 in your Google Cloud project, create a Web application OAuth client with PopMCP's callback URL, paste its Client ID and Secret, authorize, then pick the channel and its workspace.
1234567890-abc.apps.googleusercontent.com••••••••••••3f7aReports only read. The writes are analytics groups: create_group, add_group_item, remove_group_item and delete_group change the saved sets reports filter on. New connections are read-only, and only clients ticked on the PopMCP consent screen reach it.
Drop the PopMCP URL into Claude, ChatGPT, Claude Code, Codex or any other supported client. It signs in through PopMCP with OAuth, so your YouTube Analytics credential never leaves the server.
app.popmcp.com/mcpAsk for something harmless before the agent changes anything. Writes run as soon as it calls them, so confirm it reads the right account first.
Which of my videos gained the most subscribers in the last 90 days?
youtube_analytics_top_videosok
Then just ask for the work
“Which of my videos gained the most subscribers in the last 90 days?”
“Where do viewers drop off in this video, and is that better or worse than similar videos?”
“What search terms brought people to my channel last month, and how much of my traffic was search?”
“Compare Shorts with long-form on views and watch time for this quarter”
One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.
Add the PopMCP URL under Customize → Connectors and the tools appear in every chat.
The same endpoint, registered in the browser. Nothing to install on the machine you are working from.
Register PopMCP as a custom connector, then let ChatGPT read and update the account.
Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.
Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.
Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.
FAQ
What teams ask before putting YouTube Analytics behind an AI client.
YouTube Analytics answers targeted questions on demand: pick a report, a date range and filters, and the rows come back in the same call. YouTube Data manages the channel itself, with videos, playlists, comments and captions. YouTube Reporting schedules daily bulk CSV exports for archives and warehouses. Analytics rows are keyed by bare video and playlist ids, so pair this connector with YouTube Data when you want titles next to the numbers.
YouTube finalises a day's analytics two to three days late, so the end of a range that finishes near today is incomplete rather than a real drop. The report tools default to the last 28 days ending yesterday, and channel_summary works with no arguments at all. When there is no data for a range, the response simply has no rows. Pick an end date three or more days back when you compare periods.
Not on an ordinary creator channel. YouTube only returns revenue and ad-performance metrics on content owner reports, so revenue_over_time and ad_performance return an error on a channel connection whatever permissions were granted. That is YouTube's restriction, not a setup mistake, and earnings stay in YouTube Studio. The Revenue dropped trigger has the same limit. Everything else, from watch time to traffic sources and audience demographics, works for any channel you own.
Exactly one. After you authorize, PopMCP lists the channels the Google account owns, and you choose which to connect and which workspace each belongs in. Every report is then pinned to that channel, and the content owner parameter is stripped, so the connection cannot widen to other channels. If the list is empty, that Google account has no channel: reconnect, and for a Brand Account pick it on Google's account chooser.
Three read-only scopes and no write scope: yt-analytics.readonly for reports, yt-analytics-monetary.readonly for the revenue view, and youtube.readonly, which Google requires alongside analytics for reports and group items. Nothing on the consent screen asks to manage your channel. One setup step matters: if your project's Audience says Testing, publish the app before connecting, because Google expires Testing tokens after 7 days and the connection would stop.
Eight thresholds, each with a level you choose. They fire when daily views drop against the previous period, watch time falls, subscriber losses spike in a day, one video's views take off, views from YouTube search drop, likes, comments and shares fall, the split between Shorts and long-form moves past your line, or estimated revenue drops, which only works on content owner accounts. Each hands the numbers to whatever runs next.
No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.
Any client that supports a remote Streamable HTTP MCP server: Claude Desktop, Claude Web, Claude Code, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.
Connect YouTube Analytics in PopMCP first, then run claude mcp add --transport http popmcp https://app.popmcp.com/mcp in a terminal. Inside Claude Code, run /mcp and sign in to PopMCP in the browser window it opens, ticking YouTube Analytics on the consent screen. The YouTube Analytics tools are then available in that session, and no YouTube Analytics credential is stored on your machine.
Loading 40 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 26-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. Every tool stays searchable, and on Scale the owner can load the full catalog for a teammate's connection.
A tool is something your AI calls, and there are 40 here. A trigger is something PopMCP watches for you: 8 YouTube Analytics events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into YouTube Analytics.
Launch a hosted MCP endpoint for YouTube Analytics, keep tool access under control, and start testing real workflow prompts right away.