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.

Run with Naftiko GoogleYoutubeAPI

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

google-youtube-capability.yaml Raw ↑
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