# YouTube Channel Management

## Links

- Product page URL: https://www.agentpmt.com/marketplace/youtube-api
- Product markdown URL: https://www.agentpmt.com/marketplace/youtube-api?format=agent-md
- Product JSON URL: https://www.agentpmt.com/marketplace/youtube-api?format=agent-json

## Overview

- Product ID: 697bf0c272d3d1646732c184
- Vendor: Apoth3osis
- Type: function
- Unit type: request
- Price: 0 credits
- Categories: Automation, Video & Motion Graphics, Social Media Management, Marketing Automation, Content Management & Publishing, Video & Streaming
- Generated at: 2026-05-30T20:17:45.456Z

### Page Description

Upload File Manager videos to YouTube, set metadata, thumbnails, captions, privacy, and publish timing, then organize channel content with playlists, channel sections, branding, and watermarks.

### Agent Description

Upload File Manager videos, update video metadata, privacy, localizations, thumbnails, captions, playlists, playlist items, channel sections, channel branding, watermarks, and discover YouTube categories/capabilities.

## Details

### Details

Upload File Manager videos to YouTube, set metadata, thumbnails, captions, privacy, and publish timing, then organize channel content with playlists, channel sections, branding, and watermarks.

### Actions

- `upload_video`: Upload a video from AgentPMT File Manager to YouTube with metadata, privacy, scheduling, and optional playlist placement.
- `get_video`: Fetch a YouTube video by ID with supported read parts.
- `update_video`: Update mutable YouTube video fields using fetch-merge-update semantics to preserve omitted metadata.
- `delete_video`: Delete a YouTube video by ID.
- `set_video_thumbnail`: Set a custom video thumbnail from an AgentPMT File Manager image.
- `create_playlist`: Create a YouTube playlist.
- `list_playlists`: List playlists for the connected YouTube channel.
- `get_playlist`: Fetch a playlist by ID.
- `update_playlist`: Update mutable playlist fields using fetch-merge-update semantics.
- `delete_playlist`: Delete a playlist.
- `add_video_to_playlist`: Add a YouTube video to a playlist.
- `list_playlist_items`: List items in a playlist.
- `remove_playlist_item`: Remove a playlist item by playlistItem ID.
- `remove_video_from_playlist`: Remove one or all playlist items matching a video ID from a playlist.
- `list_captions`: List caption tracks associated with a video.
- `upload_caption`: Upload a caption file from AgentPMT File Manager.
- `update_caption`: Update a caption file, draft status, or both.
- `download_caption`: Download a caption track and save it to AgentPMT File Manager.
- `delete_caption`: Delete a caption track.
- `get_my_channel`: Fetch channel details for the connected account or a supplied channel ID.
- `update_channel_branding`: Update safe channel branding fields using fetch-merge-update semantics.
- `list_channel_sections`: List channel sections for the connected account, a channel, or a section ID.
- `create_channel_section`: Create a channel section such as singlePlaylist, multiplePlaylists, multipleChannels, recentUploads, or popularUploads.
- `update_channel_section`: Update a channel section.
- `delete_channel_section`: Delete a channel section.
- `set_channel_watermark`: Set a channel watermark from an AgentPMT File Manager image.
- `unset_channel_watermark`: Remove a channel watermark.
- `list_video_categories`: List supported YouTube video categories for a region.
- `get_youtube_capabilities`: Return supported and unsupported YouTube public API capabilities.

### Use Cases

Upload YouTube Shorts or standard videos from File Manager; update titles, descriptions, tags, privacy, licensing, synthetic media disclosure, publish scheduling, and localizations; set custom thumbnails; upload, update, download, list, and delete captions; create and manage playlists and playlist items; manage channel sections for connected video organization; update safe channel branding fields; set or unset channel watermarks; discover categories and API capability limits.

### Workflows Using This Tool

No public workflows currently reference this product.

### Related Content

No related content is currently linked to this product.

## Integration Details

### DynamicMCP

- Setup page URL: https://www.agentpmt.com/dynamic-mcp
- Claude setup guide: https://www.agentpmt.com/dynamic-mcp?platform=claude#videos
- ChatGPT setup guide: https://www.agentpmt.com/dynamic-mcp?platform=chatgpt#videos
- Cursor setup guide: https://www.agentpmt.com/dynamic-mcp?platform=cursor#videos
- Windsurf setup guide: https://www.agentpmt.com/dynamic-mcp?platform=windsurf#videos

Use the local router for command-based MCP clients. It forwards requests to `https://api.agentpmt.com/mcp` and does not execute tools locally.

```bash
npm install -g @agentpmt/mcp-router
agentpmt-setup
```

### REST API

The live page renders cURL, Python, JavaScript, and Node.js examples. Logged-in users see those examples prefilled with their own API and budget credentials.

- Purchase endpoint: https://api.agentpmt.com/products/purchase
- Authorization format: `Bearer <base64(apiKey:budgetKey)>`

```bash
curl -X POST "https://api.agentpmt.com/products/purchase" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eW91ci1hcGkta2V5LWhlcmU6eW91ci1idWRnZXQta2V5LWhlcmU=" \
  -d '{
    "product_id": "697bf0c272d3d1646732c184",
    "parameters": {
      "action": "upload_video",
      "source_file_id": "example_source_file_id",
      "title": "example_title"
    }
  }'
```

### Autonomous Agents

Autonomous agents can access this tool through AgentAddress credit balances or direct x402 payments. Use the Autonomous Agent API reference for endpoint shapes after choosing the access pattern below.

- Autonomous Agent API reference URL: https://www.agentpmt.com/docs/api-reference/autonomous-agents
- Autonomous Agent API reference markdown URL: https://www.agentpmt.com/docs/api-reference/autonomous-agents?format=agent-md
- Credit-Based Access Using AgentAddress: https://www.agentpmt.com/docs/autonomous-agents/credit-based-tool-usage-with-agentaddress
- AgentAddress is preferred for persistent file access, stored platform state, and maximum tool use ability across repeated calls.
- Direct x402 is for independent one-off tool calls that do not require shared files or stored platform state.
- Direct x402 public payments: USDC on Base, Arbitrum, Optimism, Polygon, and Avalanche.

### Schema

#### Credentials

These runtime credentials should be provided under `parameters._credentials` when required.

- Google OAuth (`google_oauth`, oauth_token, required)
  Help: Connect your Google account.
  Connection ID: 69616abea90ed54743f01957

#### Parameters

- Schema type: actions

```json
{
  "actions": {
    "upload_video": {
      "description": "Upload a video from AgentPMT File Manager to YouTube with metadata, privacy, scheduling, and optional playlist placement.",
      "properties": {
        "source_file_id": {
          "type": "string",
          "description": "File Manager video file_id.",
          "required": true
        },
        "title": {
          "type": "string",
          "description": "Video title.",
          "required": true
        },
        "description": {
          "type": "string",
          "description": "Video description. Plain text links are supported here.",
          "required": false
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Video tags.",
          "required": false
        },
        "category_id": {
          "type": "string",
          "description": "YouTube video category ID.",
          "required": false
        },
        "default_language": {
          "type": "string",
          "description": "Default metadata language such as en.",
          "required": false
        },
        "localizations": {
          "type": "object",
          "description": "Localized metadata keyed by locale. Each value may contain title and description.",
          "properties": {},
          "required": false
        },
        "privacy_status": {
          "type": "string",
          "enum": [
            "public",
            "unlisted",
            "private"
          ],
          "description": "Video privacy status. Defaults to unlisted.",
          "required": false
        },
        "publish_at": {
          "type": "string",
          "description": "Scheduled publish time. Requires privacy_status private.",
          "required": false
        },
        "made_for_kids": {
          "type": "boolean",
          "description": "Set status.selfDeclaredMadeForKids.",
          "required": false
        },
        "license": {
          "type": "string",
          "enum": [
            "youtube",
            "creativeCommon"
          ],
          "description": "Video license.",
          "required": false
        },
        "embeddable": {
          "type": "boolean",
          "description": "Whether the video can be embedded.",
          "required": false
        },
        "public_stats_viewable": {
          "type": "boolean",
          "description": "Whether public stats are visible.",
          "required": false
        },
        "contains_synthetic_media": {
          "type": "boolean",
          "description": "Synthetic media disclosure.",
          "required": false
        },
        "recording_date": {
          "type": "string",
          "description": "Recording date for recordingDetails.recordingDate.",
          "required": false
        },
        "notify_subscribers": {
          "type": "boolean",
          "description": "Notify subscribers on upload. Defaults to false.",
          "required": false
        },
        "playlist_id": {
          "type": "string",
          "description": "Optional playlist ID to add the uploaded video to.",
          "required": false
        },
        "position": {
          "type": "integer",
          "description": "Optional playlist item position.",
          "required": false
        },
        "source_content_type": {
          "type": "string",
          "description": "Optional video MIME type override.",
          "required": false
        },
        "chunk_size_bytes": {
          "type": "integer",
          "description": "Resumable upload chunk size in bytes.",
          "required": false
        }
      }
    },
    "get_video": {
      "description": "Fetch a YouTube video by ID with supported read parts.",
      "properties": {
        "video_id": {
          "type": "string",
          "description": "YouTube video ID.",
          "required": true
        }
      }
    },
    "update_video": {
      "description": "Update mutable YouTube video fields using fetch-merge-update semantics to preserve omitted metadata.",
      "properties": {
        "video_id": {
          "type": "string",
          "description": "YouTube video ID.",
          "required": true
        },
        "title": {
          "type": "string",
          "description": "Video title.",
          "required": false
        },
        "description": {
          "type": "string",
          "description": "Video description.",
          "required": false
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Video tags.",
          "required": false
        },
        "category_id": {
          "type": "string",
          "description": "YouTube video category ID.",
          "required": false
        },
        "default_language": {
          "type": "string",
          "description": "Default metadata language.",
          "required": false
        },
        "localizations": {
          "type": "object",
          "description": "Localized metadata keyed by locale. Each value may contain title and description.",
          "properties": {},
          "required": false
        },
        "privacy_status": {
          "type": "string",
          "enum": [
            "public",
            "unlisted",
            "private"
          ],
          "description": "Video privacy status.",
          "required": false
        },
        "publish_at": {
          "type": "string",
          "description": "Scheduled publish time. Requires privacy_status private.",
          "required": false
        },
        "made_for_kids": {
          "type": "boolean",
          "description": "Set status.selfDeclaredMadeForKids.",
          "required": false
        },
        "license": {
          "type": "string",
          "enum": [
            "youtube",
            "creativeCommon"
          ],
          "description": "Video license.",
          "required": false
        },
        "embeddable": {
          "type": "boolean",
          "description": "Whether the video can be embedded.",
          "required": false
        },
        "public_stats_viewable": {
          "type": "boolean",
          "description": "Whether public stats are visible.",
          "required": false
        },
        "contains_synthetic_media": {
          "type": "boolean",
          "description": "Synthetic media disclosure.",
          "required": false
        },
        "recording_date": {
          "type": "string",
          "description": "Recording date.",
          "required": false
        }
      }
    },
    "delete_video": {
      "description": "Delete a YouTube video by ID.",
      "properties": {
        "video_id": {
          "type": "string",
          "description": "YouTube video ID.",
          "required": true
        }
      }
    },
    "set_video_thumbnail": {
      "description": "Set a custom video thumbnail from an AgentPMT File Manager image.",
      "properties": {
        "video_id": {
          "type": "string",
          "description": "YouTube video ID.",
          "required": true
        },
        "thumbnail_file_id": {
          "type": "string",
          "description": "File Manager image file_id.",
          "required": true
        },
        "thumbnail_content_type": {
          "type": "string",
          "description": "Optional thumbnail MIME type override.",
          "required": false
        }
      }
    },
    "create_playlist": {
      "description": "Create a YouTube playlist.",
      "properties": {
        "title": {
          "type": "string",
          "description": "Playlist title.",
          "required": true
        },
        "description": {
          "type": "string",
          "description": "Playlist description.",
          "required": false
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Playlist tags.",
          "required": false
        },
        "privacy_status": {
          "type": "string",
          "enum": [
            "public",
            "unlisted",
            "private"
          ],
          "description": "Playlist privacy status. Defaults to unlisted.",
          "required": false
        }
      }
    },
    "list_playlists": {
      "description": "List playlists for the connected YouTube channel.",
      "properties": {
        "max_results": {
          "type": "integer",
          "description": "Maximum results per page, 1-50.",
          "required": false
        },
        "page_token": {
          "type": "string",
          "description": "Pagination token.",
          "required": false
        }
      }
    },
    "get_playlist": {
      "description": "Fetch a playlist by ID.",
      "properties": {
        "playlist_id": {
          "type": "string",
          "description": "YouTube playlist ID.",
          "required": true
        }
      }
    },
    "update_playlist": {
      "description": "Update mutable playlist fields using fetch-merge-update semantics.",
      "properties": {
        "playlist_id": {
          "type": "string",
          "description": "YouTube playlist ID.",
          "required": true
        },
        "title": {
          "type": "string",
          "description": "Playlist title.",
          "required": false
        },
        "description": {
          "type": "string",
          "description": "Playlist description.",
          "required": false
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Playlist tags.",
          "required": false
        },
        "privacy_status": {
          "type": "string",
          "enum": [
            "public",
            "unlisted",
            "private"
          ],
          "description": "Playlist privacy status.",
          "required": false
        }
      }
    },
    "delete_playlist": {
      "description": "Delete a playlist.",
      "properties": {
        "playlist_id": {
          "type": "string",
          "description": "YouTube playlist ID.",
          "required": true
        }
      }
    },
    "add_video_to_playlist": {
      "description": "Add a YouTube video to a playlist.",
      "properties": {
        "playlist_id": {
          "type": "string",
          "description": "YouTube playlist ID.",
          "required": true
        },
        "video_id": {
          "type": "string",
          "description": "YouTube video ID.",
          "required": true
        },
        "position": {
          "type": "integer",
          "description": "Optional playlist item position.",
          "required": false
        }
      }
    },
    "list_playlist_items": {
      "description": "List items in a playlist.",
      "properties": {
        "playlist_id": {
          "type": "string",
          "description": "YouTube playlist ID.",
          "required": true
        },
        "max_results": {
          "type": "integer",
          "description": "Maximum results per page, 1-50.",
          "required": false
        },
        "page_token": {
          "type": "string",
          "description": "Pagination token.",
          "required": false
        }
      }
    },
    "remove_playlist_item": {
      "description": "Remove a playlist item by playlistItem ID.",
      "properties": {
        "playlist_item_id": {
          "type": "string",
          "description": "YouTube playlistItem ID.",
          "required": true
        }
      }
    },
    "remove_video_from_playlist": {
      "description": "Remove one or all playlist items matching a video ID from a playlist.",
      "properties": {
        "playlist_id": {
          "type": "string",
          "description": "YouTube playlist ID.",
          "required": true
        },
        "video_id": {
          "type": "string",
          "description": "YouTube video ID.",
          "required": true
        },
        "remove_all": {
          "type": "boolean",
          "description": "Remove all matching playlist items. Defaults to true.",
          "required": false
        }
      }
    },
    "list_captions": {
      "description": "List caption tracks associated with a video.",
      "properties": {
        "video_id": {
          "type": "string",
          "description": "YouTube video ID.",
          "required": true
        }
      }
    },
    "upload_caption": {
      "description": "Upload a caption file from AgentPMT File Manager.",
      "properties": {
        "video_id": {
          "type": "string",
          "description": "YouTube video ID.",
          "required": true
        },
        "caption_file_id": {
          "type": "string",
          "description": "File Manager caption file_id.",
          "required": true
        },
        "language": {
          "type": "string",
          "description": "Caption language code.",
          "required": true
        },
        "name": {
          "type": "string",
          "description": "Caption track name.",
          "required": true
        },
        "is_draft": {
          "type": "boolean",
          "description": "Caption draft status.",
          "required": false
        },
        "caption_content_type": {
          "type": "string",
          "description": "Optional caption MIME type override.",
          "required": false
        }
      }
    },
    "update_caption": {
      "description": "Update a caption file, draft status, or both.",
      "properties": {
        "caption_id": {
          "type": "string",
          "description": "YouTube caption track ID.",
          "required": true
        },
        "caption_file_id": {
          "type": "string",
          "description": "Optional File Manager caption file_id.",
          "required": false
        },
        "is_draft": {
          "type": "boolean",
          "description": "Caption draft status.",
          "required": false
        },
        "caption_content_type": {
          "type": "string",
          "description": "Optional caption MIME type override.",
          "required": false
        }
      }
    },
    "download_caption": {
      "description": "Download a caption track and save it to AgentPMT File Manager.",
      "properties": {
        "caption_id": {
          "type": "string",
          "description": "YouTube caption track ID.",
          "required": true
        },
        "caption_format": {
          "type": "string",
          "enum": [
            "sbv",
            "scc",
            "srt",
            "ttml",
            "vtt"
          ],
          "description": "Caption output format.",
          "required": false
        },
        "translation_language": {
          "type": "string",
          "description": "Optional translation language.",
          "required": false
        },
        "output_filename": {
          "type": "string",
          "description": "Output filename in File Manager.",
          "required": false
        }
      }
    },
    "delete_caption": {
      "description": "Delete a caption track.",
      "properties": {
        "caption_id": {
          "type": "string",
          "description": "YouTube caption track ID.",
          "required": true
        }
      }
    },
    "get_my_channel": {
      "description": "Fetch channel details for the connected account or a supplied channel ID.",
      "properties": {
        "channel_id": {
          "type": "string",
          "description": "Optional YouTube channel ID. Omit for mine=true.",
          "required": false
        }
      }
    },
    "update_channel_branding": {
      "description": "Update safe channel branding fields using fetch-merge-update semantics.",
      "properties": {
        "channel_id": {
          "type": "string",
          "description": "Optional YouTube channel ID. Omit for mine=true.",
          "required": false
        },
        "channel_description": {
          "type": "string",
          "description": "Channel branding description.",
          "required": false
        },
        "keywords": {
          "type": "string",
          "description": "Channel keywords.",
          "required": false
        },
        "country": {
          "type": "string",
          "description": "Channel country code.",
          "required": false
        },
        "default_language": {
          "type": "string",
          "description": "Channel default language.",
          "required": false
        },
        "unsubscribed_trailer_video_id": {
          "type": "string",
          "description": "Channel trailer video ID.",
          "required": false
        }
      }
    },
    "list_channel_sections": {
      "description": "List channel sections for the connected account, a channel, or a section ID.",
      "properties": {
        "channel_id": {
          "type": "string",
          "description": "Optional YouTube channel ID.",
          "required": false
        },
        "channel_section_id": {
          "type": "string",
          "description": "Optional YouTube channelSection ID.",
          "required": false
        }
      }
    },
    "create_channel_section": {
      "description": "Create a channel section such as singlePlaylist, multiplePlaylists, multipleChannels, recentUploads, or popularUploads.",
      "properties": {
        "section_type": {
          "type": "string",
          "description": "Channel section type.",
          "required": true
        },
        "section_title": {
          "type": "string",
          "description": "Section title, required by multiplePlaylists and multipleChannels.",
          "required": false
        },
        "section_position": {
          "type": "integer",
          "description": "Section position.",
          "required": false
        },
        "playlist_id": {
          "type": "string",
          "description": "Single playlist ID shortcut.",
          "required": false
        },
        "playlist_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Playlist IDs for playlist-based sections.",
          "required": false
        },
        "channel_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Channel IDs for multipleChannels sections.",
          "required": false
        }
      }
    },
    "update_channel_section": {
      "description": "Update a channel section.",
      "properties": {
        "channel_section_id": {
          "type": "string",
          "description": "YouTube channelSection ID.",
          "required": true
        },
        "section_type": {
          "type": "string",
          "description": "Channel section type.",
          "required": true
        },
        "section_title": {
          "type": "string",
          "description": "Section title.",
          "required": false
        },
        "section_position": {
          "type": "integer",
          "description": "Section position.",
          "required": false
        },
        "playlist_id": {
          "type": "string",
          "description": "Single playlist ID shortcut.",
          "required": false
        },
        "playlist_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Playlist IDs for playlist-based sections.",
          "required": false
        },
        "channel_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Channel IDs for multipleChannels sections.",
          "required": false
        }
      }
    },
    "delete_channel_section": {
      "description": "Delete a channel section.",
      "properties": {
        "channel_section_id": {
          "type": "string",
          "description": "YouTube channelSection ID.",
          "required": true
        }
      }
    },
    "set_channel_watermark": {
      "description": "Set a channel watermark from an AgentPMT File Manager image.",
      "properties": {
        "channel_id": {
          "type": "string",
          "description": "YouTube channel ID.",
          "required": true
        },
        "watermark_file_id": {
          "type": "string",
          "description": "File Manager image file_id.",
          "required": true
        },
        "watermark_content_type": {
          "type": "string",
          "description": "Optional watermark MIME type override.",
          "required": false
        },
        "watermark_timing_type": {
          "type": "string",
          "enum": [
            "offsetFromStart",
            "offsetFromEnd"
          ],
          "description": "Watermark timing type.",
          "required": false
        },
        "watermark_offset_ms": {
          "type": "integer",
          "description": "Watermark offset in milliseconds.",
          "required": false
        },
        "watermark_duration_ms": {
          "type": "integer",
          "description": "Watermark duration in milliseconds.",
          "required": false
        },
        "target_channel_id": {
          "type": "string",
          "description": "Target channel ID linked from the watermark.",
          "required": false
        }
      }
    },
    "unset_channel_watermark": {
      "description": "Remove a channel watermark.",
      "properties": {
        "channel_id": {
          "type": "string",
          "description": "YouTube channel ID.",
          "required": true
        }
      }
    },
    "list_video_categories": {
      "description": "List supported YouTube video categories for a region.",
      "properties": {
        "region_code": {
          "type": "string",
          "description": "ISO region code. Defaults to US.",
          "required": false
        },
        "hl": {
          "type": "string",
          "description": "Localized category language.",
          "required": false
        }
      }
    },
    "get_youtube_capabilities": {
      "description": "Return supported and unsupported YouTube public API capabilities."
    }
  }
}
```

### Usage Instructions

# YouTube Channel Management

Upload File Manager videos, edit video metadata/privacy, manage thumbnails, captions, playlists, channel sections, branding, and watermarks.

## Video Actions

### `upload_video`
Required: `source_file_id`, `title`
Optional: `description`, `tags`, `category_id`, `default_language`, `localizations`, `privacy_status` (`public`/`unlisted`/`private`, default `unlisted`), `publish_at`, `made_for_kids`, `license` (`youtube`/`creativeCommon`), `embeddable`, `public_stats_viewable`, `contains_synthetic_media`, `recording_date`, `notify_subscribers` (default `false`), `playlist_id`, `position`, `source_content_type`, `chunk_size_bytes`

```json
{"action":"upload_video","source_file_id":"file_abc123","title":"Product Demo","description":"Short walkthrough","privacy_status":"unlisted","notify_subscribers":false}
```

### `get_video`
Required: `video_id`

```json
{"action":"get_video","video_id":"dQw4w9WgXcQ"}
```

### `update_video`
Required: `video_id` plus at least one video metadata/status field from `upload_video`.

```json
{"action":"update_video","video_id":"dQw4w9WgXcQ","title":"Updated Title","license":"creativeCommon","embeddable":true}
```

### `delete_video`
Required: `video_id`

```json
{"action":"delete_video","video_id":"dQw4w9WgXcQ"}
```

### `set_video_thumbnail`
Required: `video_id`, `thumbnail_file_id`
Optional: `thumbnail_content_type`

```json
{"action":"set_video_thumbnail","video_id":"dQw4w9WgXcQ","thumbnail_file_id":"file_thumb123"}
```

## Caption Actions

### `list_captions`
Required: `video_id`

```json
{"action":"list_captions","video_id":"dQw4w9WgXcQ"}
```

### `upload_caption`
Required: `video_id`, `caption_file_id`, `language`, `name`
Optional: `is_draft`, `caption_content_type`

```json
{"action":"upload_caption","video_id":"dQw4w9WgXcQ","caption_file_id":"file_srt123","language":"en","name":"English","is_draft":false}
```

### `update_caption`
Required: `caption_id` and at least one of `caption_file_id`, `is_draft`
Optional: `caption_content_type`

```json
{"action":"update_caption","caption_id":"caption123","is_draft":true}
```

### `download_caption`
Required: `caption_id`
Optional: `caption_format` (`sbv`/`scc`/`srt`/`ttml`/`vtt`), `translation_language`, `output_filename`

```json
{"action":"download_caption","caption_id":"caption123","caption_format":"srt","output_filename":"captions.srt"}
```

### `delete_caption`
Required: `caption_id`

```json
{"action":"delete_caption","caption_id":"caption123"}
```

## Playlist Actions

### `create_playlist`
Required: `title`
Optional: `description`, `tags`, `privacy_status` (`public`/`unlisted`/`private`, default `unlisted`)

```json
{"action":"create_playlist","title":"Customer Stories Q2","privacy_status":"private"}
```

### `list_playlists`
Optional: `max_results` (1-50, default `25`), `page_token`

```json
{"action":"list_playlists","max_results":10}
```

### `get_playlist`, `update_playlist`, `delete_playlist`
Required: `playlist_id`; update also needs one of `title`, `description`, `tags`, `privacy_status`.

```json
{"action":"update_playlist","playlist_id":"PLxxxxxxxx","title":"Updated Playlist"}
```

### `add_video_to_playlist`
Required: `playlist_id`, `video_id`
Optional: `position`

```json
{"action":"add_video_to_playlist","playlist_id":"PLxxxxxxxx","video_id":"dQw4w9WgXcQ","position":0}
```

### `list_playlist_items`
Required: `playlist_id`
Optional: `max_results` (1-50), `page_token`

```json
{"action":"list_playlist_items","playlist_id":"PLxxxxxxxx","max_results":50}
```

### `remove_playlist_item`, `remove_video_from_playlist`
Use `remove_playlist_item` with `playlist_item_id`, or `remove_video_from_playlist` with `playlist_id`, `video_id`, optional `remove_all`.

```json
{"action":"remove_video_from_playlist","playlist_id":"PLxxxxxxxx","video_id":"dQw4w9WgXcQ","remove_all":true}
```

## Channel Actions

### `get_my_channel`
Optional: `channel_id` (omit to use the connected account's channel)

```json
{"action":"get_my_channel"}
```

### `update_channel_branding`
Optional filter: `channel_id`
Required: at least one of `channel_description`, `keywords`, `country`, `default_language`, `unsubscribed_trailer_video_id`

```json
{"action":"update_channel_branding","channel_description":"Official product videos and tutorials","country":"US"}
```

### Channel sections
Actions: `list_channel_sections`, `create_channel_section`, `update_channel_section`, `delete_channel_section`
Use `section_type`, `section_title`, `section_position`, `playlist_ids`, `channel_ids`, and `channel_section_id` as required by the action.

```json
{"action":"create_channel_section","section_type":"multiplePlaylists","section_title":"Product Videos","playlist_ids":["PLxxxxxxxx"]}
```

### Watermarks
Actions: `set_channel_watermark`, `unset_channel_watermark`
Set requires `channel_id`, `watermark_file_id`; optional `watermark_timing_type`, `watermark_offset_ms`, `watermark_duration_ms`, `target_channel_id`, `watermark_content_type`.
Watermark position is fixed to YouTube's top-right corner placement; timing is configurable.

```json
{"action":"set_channel_watermark","channel_id":"UCxxxx","watermark_file_id":"file_watermark123","watermark_offset_ms":0}
```

## Discovery

### `list_video_categories`
Optional: `region_code` (default `US`), `hl`

```json
{"action":"list_video_categories","region_code":"US"}
```

### `get_youtube_capabilities`
Returns supported API-backed features and unsupported Studio-only surfaces.

```json
{"action":"get_youtube_capabilities"}
```

## Notes

- Video, thumbnail, caption, and watermark uploads require File Manager file IDs.
- Update actions fetch current YouTube resources and merge supplied fields to avoid clearing omitted metadata.
- Links in descriptions are supported as description text. Public API support is not available for cards, end screens, or custom in-video linked-video elements; use playlists and channel sections for connected video organization.

### Frequently Asked Questions

#### How do I connect this tool to an external agent?

- Page URL: https://www.agentpmt.com/faq
- Markdown URL: https://www.agentpmt.com/faq?format=agent-md

You can install the local MCP server by opening a terminal and running:

```
npm install -g @agentpmt/mcp-router
agentpmt-setup
```

This will connect you to local agents like Claude Code, Windsurf, Grok Build, Cursor, etc.

Alternatively you can connect to the hosted version with this config block, no installation required:

```
{
  "mcpServers": {
    "agentpmt": {
      "type": "streamable-http",
      "url": "https://api.agentpmt.com/mcp",
      "headers": {
        "Authorization": "Bearer <AGENTPMT_BEARER_TOKEN>",
        "x-instance-metadata": "{\"client\":\"generic-mcp\",\"platform\":\"remote\"}"
      }
    }
  }
}
```

[View MCP Connection Instructions](/docs/mcp-reference/connection) for more details.

#### How does an external agent use this tool?

- Page URL: https://www.agentpmt.com/faq
- Markdown URL: https://www.agentpmt.com/faq?format=agent-md

After the external agent is connected to an Agent Group that can use this tool, paste this prompt into the agent:

> Call the AgentPMT-Tool-Search-and-Execution tool with action 'get\_schema' and tool\_id 697bf0c272d3d1646732c184 ("YouTube Channel Management"). Then call the same tool with action 'call\_tool', tool\_id 697bf0c272d3d1646732c184, and the parameters needed for my request.

The agent should fetch the tool schema first, collect the required parameters for your request, and then call the tool through AgentPMT.

### Dependencies

These products are automatically added when this product is enabled on the page UI.

#### File Management

Upload, list, retrieve, share, download, delete, and manage files stored in AgentPMT cloud storage. This product now owns the full file lifecycle, including signed upload URLs for files up to 10MB and for files over 10MB up to 100MB, budget-scoped file listing with preview URLs, fresh signed download URLs, direct base64 download for smaller files, password-protected sharing, metadata and tag updates, access-history inspection, and expiration extension. All file operations are scoped to the current budget for isolation and are designed to let one budget create persistent files that can be revisited across later agent runs.

- Page URL: https://www.agentpmt.com/marketplace/file-management
- Markdown URL: https://www.agentpmt.com/marketplace/file-management?format=agent-md