YouTube Data · Capability

YouTube Data API

YouTube Data API. 9 operations. Lead operation: List activities. Self-contained Naftiko capability covering one Google Youtube business surface.

Run with Naftiko Google YoutubeYouTube Data API

What You Can Do

GET
Listactivities — List activities
/v1/activities
GET
Listchannels — List channels
/v1/channels
GET
Listcommentthreads — List comment threads
/v1/commentthreads
GET
Listplaylistitems — List playlist items
/v1/playlistitems
GET
Listplaylists — List playlists
/v1/playlists
POST
Insertplaylist — Create a playlist
/v1/playlists
GET
Search — Search for content
/v1/search
GET
Listsubscriptions — List subscriptions
/v1/subscriptions
GET
Listvideos — List videos
/v1/videos

MCP Tools

list-activities

List activities

read-only idempotent
list-channels

List channels

read-only idempotent
list-comment-threads

List comment threads

read-only idempotent
list-playlist-items

List playlist items

read-only idempotent
list-playlists

List playlists

read-only idempotent
create-playlist

Create a playlist

search-content

Search for content

read-only idempotent
list-subscriptions

List subscriptions

read-only idempotent
list-videos

List videos

read-only idempotent

Capability Spec

youtube.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: YouTube Data API
  description: 'YouTube Data API. 9 operations. Lead operation: List activities. Self-contained Naftiko capability covering
    one Google Youtube business surface.'
  tags:
  - Google Youtube
  - YouTube Data API
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    GOOGLE_YOUTUBE_API_KEY: GOOGLE_YOUTUBE_API_KEY
capability:
  consumes:
  - type: http
    namespace: youtube
    baseUri: https://youtube.googleapis.com/youtube/v3
    description: YouTube Data API business capability. Self-contained, no shared references.
    resources:
    - name: activities
      path: /activities
      operations:
      - name: listactivities
        method: GET
        description: List activities
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: part
          in: query
          type: string
          required: true
        - name: channelId
          in: query
          type: string
        - name: mine
          in: query
          type: boolean
    - name: channels
      path: /channels
      operations:
      - name: listchannels
        method: GET
        description: List channels
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: part
          in: query
          type: string
          required: true
        - name: id
          in: query
          type: string
        - name: mine
          in: query
          type: boolean
    - name: commentThreads
      path: /commentThreads
      operations:
      - name: listcommentthreads
        method: GET
        description: List comment threads
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: part
          in: query
          type: string
          required: true
        - name: videoId
          in: query
          type: string
    - name: playlistItems
      path: /playlistItems
      operations:
      - name: listplaylistitems
        method: GET
        description: List playlist items
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: part
          in: query
          type: string
          required: true
        - name: playlistId
          in: query
          type: string
          required: true
        - name: maxResults
          in: query
          type: integer
    - name: playlists
      path: /playlists
      operations:
      - name: listplaylists
        method: GET
        description: List playlists
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        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
      - name: insertplaylist
        method: POST
        description: Create a playlist
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: part
          in: query
          type: string
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: search
      path: /search
      operations:
      - name: search
        method: GET
        description: Search for content
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        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
    - name: subscriptions
      path: /subscriptions
      operations:
      - name: listsubscriptions
        method: GET
        description: List subscriptions
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: part
          in: query
          type: string
          required: true
        - name: mine
          in: query
          type: boolean
        - name: channelId
          in: query
          type: string
    - name: videos
      path: /videos
      operations:
      - name: listvideos
        method: GET
        description: List videos
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: part
          in: query
          type: string
          description: The part parameter specifies a comma-separated list of one or more video resource properties.
          required: true
        - 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.
    authentication:
      type: bearer
      token: '{{env.GOOGLE_YOUTUBE_API_KEY}}'
  exposes:
  - type: rest
    namespace: youtube-rest
    port: 8080
    description: REST adapter for YouTube Data API. One Spectral-compliant resource per consumed operation, prefixed with
      /v1.
    resources:
    - path: /v1/activities
      name: activities
      description: REST surface for activities.
      operations:
      - method: GET
        name: listactivities
        description: List activities
        call: youtube.listactivities
        with:
          part: rest.part
          channelId: rest.channelId
          mine: rest.mine
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/channels
      name: channels
      description: REST surface for channels.
      operations:
      - method: GET
        name: listchannels
        description: List channels
        call: youtube.listchannels
        with:
          part: rest.part
          id: rest.id
          mine: rest.mine
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/commentthreads
      name: commentthreads
      description: REST surface for commentThreads.
      operations:
      - method: GET
        name: listcommentthreads
        description: List comment threads
        call: youtube.listcommentthreads
        with:
          part: rest.part
          videoId: rest.videoId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/playlistitems
      name: playlistitems
      description: REST surface for playlistItems.
      operations:
      - method: GET
        name: listplaylistitems
        description: List playlist items
        call: youtube.listplaylistitems
        with:
          part: rest.part
          playlistId: rest.playlistId
          maxResults: rest.maxResults
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/playlists
      name: playlists
      description: REST surface for playlists.
      operations:
      - method: GET
        name: listplaylists
        description: List playlists
        call: youtube.listplaylists
        with:
          part: rest.part
          channelId: rest.channelId
          mine: rest.mine
          maxResults: rest.maxResults
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: insertplaylist
        description: Create a playlist
        call: youtube.insertplaylist
        with:
          part: rest.part
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/search
      name: search
      description: REST surface for search.
      operations:
      - method: GET
        name: search
        description: Search for content
        call: youtube.search
        with:
          part: rest.part
          q: rest.q
          type: rest.type
          maxResults: rest.maxResults
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/subscriptions
      name: subscriptions
      description: REST surface for subscriptions.
      operations:
      - method: GET
        name: listsubscriptions
        description: List subscriptions
        call: youtube.listsubscriptions
        with:
          part: rest.part
          mine: rest.mine
          channelId: rest.channelId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/videos
      name: videos
      description: REST surface for videos.
      operations:
      - method: GET
        name: listvideos
        description: List videos
        call: youtube.listvideos
        with:
          part: rest.part
          id: rest.id
          maxResults: rest.maxResults
          pageToken: rest.pageToken
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: youtube-mcp
    port: 9090
    transport: http
    description: MCP adapter for YouTube Data API. One tool per consumed operation, routed inline through this capability's
      consumes block.
    tools:
    - name: list-activities
      description: List activities
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: youtube.listactivities
      with:
        part: tools.part
        channelId: tools.channelId
        mine: tools.mine
      outputParameters:
      - type: object
        mapping: $.
    - name: list-channels
      description: List channels
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: youtube.listchannels
      with:
        part: tools.part
        id: tools.id
        mine: tools.mine
      outputParameters:
      - type: object
        mapping: $.
    - name: list-comment-threads
      description: List comment threads
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: youtube.listcommentthreads
      with:
        part: tools.part
        videoId: tools.videoId
      outputParameters:
      - type: object
        mapping: $.
    - name: list-playlist-items
      description: List playlist items
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: youtube.listplaylistitems
      with:
        part: tools.part
        playlistId: tools.playlistId
        maxResults: tools.maxResults
      outputParameters:
      - type: object
        mapping: $.
    - name: list-playlists
      description: List playlists
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: youtube.listplaylists
      with:
        part: tools.part
        channelId: tools.channelId
        mine: tools.mine
        maxResults: tools.maxResults
      outputParameters:
      - type: object
        mapping: $.
    - name: create-playlist
      description: Create a playlist
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: youtube.insertplaylist
      with:
        part: tools.part
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: search-content
      description: Search for content
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: youtube.search
      with:
        part: tools.part
        q: tools.q
        type: tools.type
        maxResults: tools.maxResults
      outputParameters:
      - type: object
        mapping: $.
    - name: list-subscriptions
      description: List subscriptions
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: youtube.listsubscriptions
      with:
        part: tools.part
        mine: tools.mine
        channelId: tools.channelId
      outputParameters:
      - type: object
        mapping: $.
    - name: list-videos
      description: List videos
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: youtube.listvideos
      with:
        part: tools.part
        id: tools.id
        maxResults: tools.maxResults
        pageToken: tools.pageToken
      outputParameters:
      - type: object
        mapping: $.