YouTube Data · Capability
YouTube Data API
The YouTube Data API v3 lets you incorporate YouTube functionality into your own application. You can use the API to fetch search results, retrieve and manage video resources, manage channels and playlists, and access subscription and activity data.
What You Can Do
GET
Listvideos
— List videos
/videos
GET
Listchannels
— List channels
/channels
GET
Listplaylists
— List playlists
/playlists
POST
Insertplaylist
— Create a playlist
/playlists
GET
Listplaylistitems
— List playlist items
/playlistItems
GET
Search
— Search for content
/search
GET
Listsubscriptions
— List subscriptions
/subscriptions
GET
Listcommentthreads
— List comment threads
/commentThreads
GET
Listactivities
— List activities
/activities
MCP Tools
listvideos
List videos
read-only
idempotent
listchannels
List channels
read-only
idempotent
listplaylists
List playlists
read-only
idempotent
insertplaylist
Create a playlist
listplaylistitems
List playlist items
read-only
idempotent
search
Search for content
read-only
idempotent
listsubscriptions
List subscriptions
read-only
idempotent
listcommentthreads
List comment threads
read-only
idempotent
listactivities
List activities
read-only
idempotent
Capability Spec
naftiko: 1.0.0-alpha2
info:
label: YouTube Data API
description: The YouTube Data API v3 lets you incorporate YouTube functionality into your own application. You can use the
API to fetch search results, retrieve and manage video resources, manage channels and playlists, and access subscription
and activity data.
tags:
- Google
- Youtube
- API
created: '2026-05-06'
modified: '2026-05-06'
capability:
consumes:
- type: http
namespace: google-youtube
baseUri: https://youtube.googleapis.com/youtube/v3
description: YouTube Data API HTTP API.
authentication:
type: bearer
token: '{{GOOGLE_YOUTUBE_TOKEN}}'
resources:
- name: videos
path: /videos
operations:
- name: listvideos
method: GET
description: List videos
inputParameters:
- name: part
in: query
type: string
required: true
description: The part parameter specifies a comma-separated list of one or more video resource properties.
- name: id
in: query
type: string
description: The id parameter specifies a comma-separated list of YouTube video IDs.
- name: maxResults
in: query
type: integer
description: The maximum number of items to return.
- name: pageToken
in: query
type: string
description: Identifies a specific page in the result set.
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: channels
path: /channels
operations:
- name: listchannels
method: GET
description: List channels
inputParameters:
- name: part
in: query
type: string
required: true
- name: id
in: query
type: string
- name: mine
in: query
type: boolean
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: playlists
path: /playlists
operations:
- name: listplaylists
method: GET
description: List playlists
inputParameters:
- name: part
in: query
type: string
required: true
- name: channelId
in: query
type: string
- name: mine
in: query
type: boolean
- name: maxResults
in: query
type: integer
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: insertplaylist
method: POST
description: Create a playlist
inputParameters:
- name: part
in: query
type: string
required: true
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: playlistitems
path: /playlistItems
operations:
- name: listplaylistitems
method: GET
description: List playlist items
inputParameters:
- name: part
in: query
type: string
required: true
- name: playlistId
in: query
type: string
required: true
- name: maxResults
in: query
type: integer
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: search
path: /search
operations:
- name: search
method: GET
description: Search for content
inputParameters:
- name: part
in: query
type: string
required: true
- name: q
in: query
type: string
description: The search query term.
- name: type
in: query
type: string
description: Restricts a search to a particular type of resource.
- name: maxResults
in: query
type: integer
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: subscriptions
path: /subscriptions
operations:
- name: listsubscriptions
method: GET
description: List subscriptions
inputParameters:
- name: part
in: query
type: string
required: true
- name: mine
in: query
type: boolean
- name: channelId
in: query
type: string
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: commentthreads
path: /commentThreads
operations:
- name: listcommentthreads
method: GET
description: List comment threads
inputParameters:
- name: part
in: query
type: string
required: true
- name: videoId
in: query
type: string
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: activities
path: /activities
operations:
- name: listactivities
method: GET
description: List activities
inputParameters:
- name: part
in: query
type: string
required: true
- name: channelId
in: query
type: string
- name: mine
in: query
type: boolean
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
exposes:
- type: rest
port: 8080
namespace: google-youtube-rest
description: REST adapter for YouTube Data API.
resources:
- path: /videos
name: listvideos
operations:
- method: GET
name: listvideos
description: List videos
call: google-youtube.listvideos
outputParameters:
- type: object
mapping: $.
- path: /channels
name: listchannels
operations:
- method: GET
name: listchannels
description: List channels
call: google-youtube.listchannels
outputParameters:
- type: object
mapping: $.
- path: /playlists
name: listplaylists
operations:
- method: GET
name: listplaylists
description: List playlists
call: google-youtube.listplaylists
outputParameters:
- type: object
mapping: $.
- path: /playlists
name: insertplaylist
operations:
- method: POST
name: insertplaylist
description: Create a playlist
call: google-youtube.insertplaylist
outputParameters:
- type: object
mapping: $.
- path: /playlistItems
name: listplaylistitems
operations:
- method: GET
name: listplaylistitems
description: List playlist items
call: google-youtube.listplaylistitems
outputParameters:
- type: object
mapping: $.
- path: /search
name: search
operations:
- method: GET
name: search
description: Search for content
call: google-youtube.search
outputParameters:
- type: object
mapping: $.
- path: /subscriptions
name: listsubscriptions
operations:
- method: GET
name: listsubscriptions
description: List subscriptions
call: google-youtube.listsubscriptions
outputParameters:
- type: object
mapping: $.
- path: /commentThreads
name: listcommentthreads
operations:
- method: GET
name: listcommentthreads
description: List comment threads
call: google-youtube.listcommentthreads
outputParameters:
- type: object
mapping: $.
- path: /activities
name: listactivities
operations:
- method: GET
name: listactivities
description: List activities
call: google-youtube.listactivities
outputParameters:
- type: object
mapping: $.
- type: mcp
port: 9090
namespace: google-youtube-mcp
transport: http
description: MCP adapter for YouTube Data API for AI agent use.
tools:
- name: listvideos
description: List videos
hints:
readOnly: true
destructive: false
idempotent: true
call: google-youtube.listvideos
with:
part: tools.part
id: tools.id
maxResults: tools.maxResults
pageToken: tools.pageToken
inputParameters:
- name: part
type: string
description: The part parameter specifies a comma-separated list of one or more video resource properties.
required: true
- name: id
type: string
description: The id parameter specifies a comma-separated list of YouTube video IDs.
- name: maxResults
type: integer
description: The maximum number of items to return.
- name: pageToken
type: string
description: Identifies a specific page in the result set.
outputParameters:
- type: object
mapping: $.
- name: listchannels
description: List channels
hints:
readOnly: true
destructive: false
idempotent: true
call: google-youtube.listchannels
with:
part: tools.part
id: tools.id
mine: tools.mine
inputParameters:
- name: part
type: string
description: part
required: true
- name: id
type: string
description: id
- name: mine
type: boolean
description: mine
outputParameters:
- type: object
mapping: $.
- name: listplaylists
description: List playlists
hints:
readOnly: true
destructive: false
idempotent: true
call: google-youtube.listplaylists
with:
part: tools.part
channelId: tools.channelId
mine: tools.mine
maxResults: tools.maxResults
inputParameters:
- name: part
type: string
description: part
required: true
- name: channelId
type: string
description: channelId
- name: mine
type: boolean
description: mine
- name: maxResults
type: integer
description: maxResults
outputParameters:
- type: object
mapping: $.
- name: insertplaylist
description: Create a playlist
hints:
readOnly: false
destructive: false
idempotent: false
call: google-youtube.insertplaylist
with:
part: tools.part
inputParameters:
- name: part
type: string
description: part
required: true
outputParameters:
- type: object
mapping: $.
- name: listplaylistitems
description: List playlist items
hints:
readOnly: true
destructive: false
idempotent: true
call: google-youtube.listplaylistitems
with:
part: tools.part
playlistId: tools.playlistId
maxResults: tools.maxResults
inputParameters:
- name: part
type: string
description: part
required: true
- name: playlistId
type: string
description: playlistId
required: true
- name: maxResults
type: integer
description: maxResults
outputParameters:
- type: object
mapping: $.
- name: search
description: Search for content
hints:
readOnly: true
destructive: false
idempotent: true
call: google-youtube.search
with:
part: tools.part
q: tools.q
type: tools.type
maxResults: tools.maxResults
inputParameters:
- name: part
type: string
description: part
required: true
- name: q
type: string
description: The search query term.
- name: type
type: string
description: Restricts a search to a particular type of resource.
- name: maxResults
type: integer
description: maxResults
outputParameters:
- type: object
mapping: $.
- name: listsubscriptions
description: List subscriptions
hints:
readOnly: true
destructive: false
idempotent: true
call: google-youtube.listsubscriptions
with:
part: tools.part
mine: tools.mine
channelId: tools.channelId
inputParameters:
- name: part
type: string
description: part
required: true
- name: mine
type: boolean
description: mine
- name: channelId
type: string
description: channelId
outputParameters:
- type: object
mapping: $.
- name: listcommentthreads
description: List comment threads
hints:
readOnly: true
destructive: false
idempotent: true
call: google-youtube.listcommentthreads
with:
part: tools.part
videoId: tools.videoId
inputParameters:
- name: part
type: string
description: part
required: true
- name: videoId
type: string
description: videoId
outputParameters:
- type: object
mapping: $.
- name: listactivities
description: List activities
hints:
readOnly: true
destructive: false
idempotent: true
call: google-youtube.listactivities
with:
part: tools.part
channelId: tools.channelId
mine: tools.mine
inputParameters:
- name: part
type: string
description: part
required: true
- name: channelId
type: string
description: channelId
- name: mine
type: boolean
description: mine
outputParameters:
- type: object
mapping: $.
binds:
- namespace: env
keys:
GOOGLE_YOUTUBE_TOKEN: GOOGLE_YOUTUBE_TOKEN