
YouTube Channel Management
Available ActionsEach successful request consumes credits as outlined below.
Details
Automate your YouTube content management with full programmatic access to video uploads, metadata editing, and playlist organization. This tool enables AI agents to upload videos directly to YouTube using resumable uploads from AgentPMT storage, update video titles, descriptions, tags, and privacy settings, and schedule videos for future publication. Manage your channel's playlists by creating new playlists, adding or removing videos, reordering items, and keeping your content organized. Ideal for content creators who want to automate their publishing workflows, marketing teams managing multiple video campaigns, and developers building content management systems that integrate with YouTube. All operations use the official YouTube Data API v3 with your connected Google account.
Use Cases
Upload videos to YouTube from AgentPMT storage, Create and manage YouTube playlists, Add or remove videos from playlists, Update video titles and descriptions and tags, Schedule video publishing for future dates, Automate content publishing workflows, Organize channel content into playlists, Retrieve video and playlist metadata, Build automated video publishing pipelines, Manage video privacy settings
Connect Your Agent In 5 Min
Watch the setup guide for your platform
Or Install Locally
STDIO connector for Claude Code, Codex, Cursor, Zed, and other LLMs that require STDIO or custom connections. This lightweight connector routes requests to https://api.agentpmt.com/mcp. All tool execution happens in the cloud and the server cannot edit any files on your computer.
npm install -g @agentpmt/mcp-routeragentpmt-setupcurl -X POST "https://api.agentpmt.com/products/purchase" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ********" \
-d '{
"product_id": "697bf0c272d3d1646732c184",
"parameters": {
"action": "upload_video",
"title": "example_title",
"notify_subscribers": false,
"chunk_size_bytes": 8388608
}
}'import requests
import json
url = "https://api.agentpmt.com/products/purchase"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer ********"
}
data = {
"product_id": "697bf0c272d3d1646732c184",
"parameters": {
"action": "upload_video",
"title": "example_title",
"notify_subscribers": false,
"chunk_size_bytes": 8388608
}
}
response = requests.post(url, headers=headers, json=data)
print(response.status_code)
print(response.json())const url = "https://api.agentpmt.com/products/purchase";
const headers = {
"Content-Type": "application/json",
"Authorization": "Bearer ********"
};
const data = {
product_id: "697bf0c272d3d1646732c184",
parameters: {
"action": "upload_video",
"title": "example_title",
"notify_subscribers": false,
"chunk_size_bytes": 8388608
}
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error("Error:", error));const axios = require('axios');
const url = "https://api.agentpmt.com/products/purchase";
const headers = {
"Content-Type": "application/json",
"Authorization": "Bearer ********"
};
const data = {
product_id: "697bf0c272d3d1646732c184",
parameters: {
"action": "upload_video",
"title": "example_title",
"notify_subscribers": false,
"chunk_size_bytes": 8388608
}
};
axios.post(url, data, { headers })
.then(response => {
console.log(response.status);
console.log(response.data);
})
.catch(error => {
console.error("Error:", error.message);
});Login to view your API and budget keys. The example above uses placeholder values. Sign in to see personalized code with your bearer token.
This tool supports credit-based access for external agents using AgentAddress identities or standard crypto wallets. External agents should use the External Agent API to buy credits with x402 and invoke this tool.
1. Buy Credits
Purchase credits via x402 payment (500 credit minimum, 100 credits = $1).
# Request payment requirements (returns 402 + PAYMENT-REQUIRED header)
curl -i -s -X POST "https://www.agentpmt.com/api/external/credits/purchase" \
-H "Content-Type: application/json" \
-d '{ "wallet_address":"0xYOUR_WALLET", "credits": 500, "payment_method":"x402" }'
# Sign the EIP-3009 authorization, then retry with signature header
curl -s -X POST "https://www.agentpmt.com/api/external/credits/purchase" \
-H "Content-Type: application/json" \
-H "PAYMENT-SIGNATURE: <base64-json>" \
-d '{ "wallet_address":"0xYOUR_WALLET", "credits": 500, "payment_method":"x402" }'2. Create a Session Nonce (nonce used in signed balance/invoke)
curl -s -X POST "https://www.agentpmt.com/api/external/auth/session" \
-H "Content-Type: application/json" \
-d '{ "wallet_address":"0xYOUR_WALLET" }'3. Invoke This Tool
Sign the message with your wallet (EIP-191 personal-sign), then POST to the invoke endpoint.
# Sign this message (wallet MUST be lowercased):
# agentpmt-external
# wallet:0xyourwallet...
# session:<session_nonce>
# request:<request_id>
# action:invoke
# product:697bf0c272d3d1646732c184
# payload:<sha256(canonical_json(parameters))>
curl -s -X POST "https://www.agentpmt.com/api/external/tools/697bf0c272d3d1646732c184/invoke" \
-H "Content-Type: application/json" \
-d '{
"wallet_address": "0xYOUR_WALLET",
"session_nonce": "<session_nonce>",
"request_id": "invoke-uuid",
"signature": "0x<signature>",
"parameters": {
"action": "your_action",
"your_param": "value"
}
}'Credentials
Manage credentials in your dashboard.
Actions(13)
upload_video16 params(1 required)Upload a video to YouTube using resumable upload. Optionally add it to a playlist in the same call. Provide either source_file_id (preferred) or source_file_url.
upload_video16 params(1 required)Upload a video to YouTube using resumable upload. Optionally add it to a playlist in the same call. Provide either source_file_id (preferred) or source_file_url.
titlerequiredstringVideo title
source_file_idstringAgentPMT storage file_id containing the video to upload (recommended)
source_file_urlstringPublic URL to fetch the video bytes (fallback if not using source_file_id)
source_filenamestringOptional filename hint for source_file_url (used to infer content-type)
source_file_size_bytesintegerRequired if source_file_url does not provide Content-Length
source_content_typestringOptional MIME type override for upload (e.g., video/mp4)
descriptionstringVideo description
tagsarrayTags for the video
category_idstringYouTube video category ID
privacy_statusstringPrivacy status for the video (default: unlisted)
publish_atstringScheduled publish datetime (RFC3339 / ISO 8601). Use with privacy_status 'private'.
made_for_kidsbooleanIf set, updates selfDeclaredMadeForKids flag on the video
notify_subscribersbooleanIf true, notify subscribers when uploading (default: false)
falseplaylist_idstringYouTube playlist ID to auto-add the video to after upload
positionintegerPosition in the playlist (0-based). Omit to append at end.
chunk_size_bytesintegerResumable upload chunk size in bytes. Must be a multiple of 262144 (256 KiB). Default: 8 MiB.
8388608get_video1 param(1 required)Retrieve details for a specific YouTube video including snippet, status, and content details.
get_video1 param(1 required)Retrieve details for a specific YouTube video including snippet, status, and content details.
video_idrequiredstringYouTube video ID
update_video8 params(1 required)Update metadata on an existing video. Fetches current values first and merges only provided fields. At least one updatable field must be provided.
update_video8 params(1 required)Update metadata on an existing video. Fetches current values first and merges only provided fields. At least one updatable field must be provided.
video_idrequiredstringYouTube video ID
titlestringNew video title
descriptionstringNew video description
tagsarrayNew tags for the video
category_idstringYouTube video category ID
privacy_statusstringPrivacy status for the video
publish_atstringScheduled publish datetime (RFC3339 / ISO 8601)
made_for_kidsbooleanIf set, updates selfDeclaredMadeForKids flag
delete_video1 param(1 required)Permanently delete a video from YouTube.
delete_video1 param(1 required)Permanently delete a video from YouTube.
video_idrequiredstringYouTube video ID to delete
create_playlist4 params(1 required)Create a new YouTube playlist.
create_playlist4 params(1 required)Create a new YouTube playlist.
titlerequiredstringPlaylist title
descriptionstringPlaylist description
tagsarrayTags for the playlist
privacy_statusstringPrivacy status for the playlist (default: unlisted)
list_playlists2 paramsList playlists owned by the authenticated user with pagination.
list_playlists2 paramsList playlists owned by the authenticated user with pagination.
max_resultsintegerMax results per page (1-50, default: 25)
25page_tokenstringPagination token from a previous response's nextPageToken
get_playlist1 param(1 required)Retrieve details for a specific YouTube playlist.
get_playlist1 param(1 required)Retrieve details for a specific YouTube playlist.
playlist_idrequiredstringYouTube playlist ID
update_playlist5 params(1 required)Update an existing playlist's metadata. Fetches current values first and merges only provided fields. At least one updatable field must be provided.
update_playlist5 params(1 required)Update an existing playlist's metadata. Fetches current values first and merges only provided fields. At least one updatable field must be provided.
playlist_idrequiredstringYouTube playlist ID
titlestringNew playlist title
descriptionstringNew playlist description
tagsarrayNew tags for the playlist
privacy_statusstringPrivacy status for the playlist
delete_playlist1 param(1 required)Permanently delete a playlist from YouTube.
delete_playlist1 param(1 required)Permanently delete a playlist from YouTube.
playlist_idrequiredstringYouTube playlist ID to delete
add_video_to_playlist3 params(2 required)Add a video to a playlist at an optional position.
add_video_to_playlist3 params(2 required)Add a video to a playlist at an optional position.
playlist_idrequiredstringYouTube playlist ID
video_idrequiredstringYouTube video ID to add
positionintegerPosition in the playlist (0-based). Omit to append at end.
list_playlist_items3 params(1 required)List all items in a playlist with pagination.
list_playlist_items3 params(1 required)List all items in a playlist with pagination.
playlist_idrequiredstringYouTube playlist ID
max_resultsintegerMax results per page (1-50, default: 25)
25page_tokenstringPagination token from a previous response's nextPageToken
remove_playlist_item1 param(1 required)Remove a specific playlist item by its playlist item ID.
remove_playlist_item1 param(1 required)Remove a specific playlist item by its playlist item ID.
playlist_item_idrequiredstringYouTube playlistItem ID to remove
remove_video_from_playlist3 params(2 required)Remove a video from a playlist by video ID. Searches through all playlist items and removes matches.
remove_video_from_playlist3 params(2 required)Remove a video from a playlist by video ID. Searches through all playlist items and removes matches.
playlist_idrequiredstringYouTube playlist ID to remove the video from
video_idrequiredstringYouTube video ID to remove
remove_allbooleanIf true, remove all occurrences of the video. If false, remove only the first match. Default: true.
trueUsage Instructions
Usage guidance provided directly by the developer for this product.
YouTube API
Overview
Upload videos to YouTube, manage playlists, and organize playlist items using the YouTube Data API v3. Supports resumable video uploads from stored files or public URLs, full CRUD on videos and playlists, and playlist item management.
Actions
upload_video
Upload a video to YouTube using resumable upload. Optionally add it to a playlist in the same call.
Required fields: source_file_id or source_file_url, title
Optional fields: description, tags (array of strings), category_id, privacy_status (default: "unlisted"), publish_at (ISO 8601), made_for_kids (boolean), notify_subscribers (default: false), playlist_id (auto-adds to playlist after upload), position (0-based position in playlist), source_filename, source_file_size_bytes, source_content_type, chunk_size_bytes (default: 8388608, must be multiple of 262144, range: 262144-67108864)
{
"action": "upload_video",
"source_file_id": "abc123def456",
"title": "Product Demo Q1 2026",
"description": "Walkthrough of new features released in Q1.",
"tags": ["demo", "product", "walkthrough"],
"privacy_status": "unlisted",
"notify_subscribers": false
}
Upload from URL example:
{
"action": "upload_video",
"source_file_url": "https://example.com/videos/intro.mp4",
"source_file_size_bytes": 52428800,
"source_content_type": "video/mp4",
"title": "Company Introduction",
"privacy_status": "public",
"playlist_id": "PLxxxxxxxxxxxxxxxx",
"position": 0
}
get_video
Retrieve details for a specific YouTube video including snippet, status, and content details.
Required fields: video_id
{
"action": "get_video",
"video_id": "dQw4w9WgXcQ"
}
update_video
Update metadata on an existing video. Fetches current values first, then merges your changes (only provided fields are overwritten).
Required fields: video_id, plus at least one of: title, description, tags, category_id, privacy_status, publish_at, made_for_kids
{
"action": "update_video",
"video_id": "dQw4w9WgXcQ",
"title": "Updated Title",
"description": "New description for the video.",
"tags": ["updated", "tags"],
"privacy_status": "public"
}
delete_video
Permanently delete a video from YouTube.
Required fields: video_id
{
"action": "delete_video",
"video_id": "dQw4w9WgXcQ"
}
create_playlist
Create a new YouTube playlist.
Required fields: title
Optional fields: description, tags (array of strings), privacy_status (default: "unlisted")
{
"action": "create_playlist",
"title": "Tutorial Series",
"description": "Step-by-step tutorials for getting started.",
"tags": ["tutorials", "beginner"],
"privacy_status": "public"
}
list_playlists
List playlists owned by the authenticated user.
Optional fields: max_results (1-50, default: 25), page_token
{
"action": "list_playlists",
"max_results": 10
}
get_playlist
Retrieve details for a specific playlist.
Required fields: playlist_id
{
"action": "get_playlist",
"playlist_id": "PLxxxxxxxxxxxxxxxx"
}
update_playlist
Update an existing playlist's metadata. Fetches current values first, then merges your changes.
Required fields: playlist_id, plus at least one of: title, description, tags, privacy_status
{
"action": "update_playlist",
"playlist_id": "PLxxxxxxxxxxxxxxxx",
"title": "Updated Playlist Title",
"privacy_status": "unlisted"
}
delete_playlist
Permanently delete a playlist from YouTube.
Required fields: playlist_id
{
"action": "delete_playlist",
"playlist_id": "PLxxxxxxxxxxxxxxxx"
}
add_video_to_playlist
Add a video to a playlist at an optional position.
Required fields: playlist_id, video_id
Optional fields: position (0-based index; omit to append at end)
{
"action": "add_video_to_playlist",
"playlist_id": "PLxxxxxxxxxxxxxxxx",
"video_id": "dQw4w9WgXcQ",
"position": 0
}
list_playlist_items
List all items in a playlist with pagination.
Required fields: playlist_id
Optional fields: max_results (1-50, default: 25), page_token
{
"action": "list_playlist_items",
"playlist_id": "PLxxxxxxxxxxxxxxxx",
"max_results": 50
}
remove_playlist_item
Remove a specific playlist item by its playlist item ID.
Required fields: playlist_item_id
{
"action": "remove_playlist_item",
"playlist_item_id": "UExxxxxxxxxxxxxxxYYY"
}
remove_video_from_playlist
Remove a video from a playlist by video ID. Searches through all playlist items and removes matches.
Required fields: playlist_id, video_id
Optional fields: remove_all (default: true; if false, removes only the first occurrence)
{
"action": "remove_video_from_playlist",
"playlist_id": "PLxxxxxxxxxxxxxxxx",
"video_id": "dQw4w9WgXcQ",
"remove_all": true
}
Common Workflows
Upload a Video and Organize It
- Use
upload_videowithsource_file_id,title,description, andplaylist_idto upload and auto-add to a playlist in one call. - Use
get_videowith the returnedvideo_idto confirm the upload status and metadata. - Use
update_videoto adjust the title, description, or privacy after processing completes.
Build and Manage a Playlist
- Use
create_playlistwith a title, description, and privacy status. - Use
add_video_to_playlistrepeatedly with the newplaylist_idand eachvideo_id, usingpositionto control order. - Use
list_playlist_itemsto verify the playlist contents and order.
Reorganize Playlist Content
- Use
list_playlist_itemsto get all current items and theirplaylist_item_idvalues. - Use
remove_playlist_itemto remove items you want to reposition. - Use
add_video_to_playlistwith the desiredpositionto re-insert them in the correct order.
Important Notes
- Default privacy: Both
upload_videoandcreate_playlistdefault to "unlisted" ifprivacy_statusis omitted. - Subscriber notifications:
notify_subscribersdefaults to false for uploads. Set to true only when you want channel subscribers notified. - File source preference: Use
source_file_id(platform file storage) oversource_file_urlwhen possible for reliable size detection and content type handling. - URL uploads: When using
source_file_url, providesource_file_size_bytesif the server does not return a Content-Length header, otherwise the upload will fail. - Chunk size: The
chunk_size_bytesmust be a multiple of 262144 (256 KiB). Default is 8 MiB. Range: 256 KiB to 64 MiB. - Update behavior:
update_videoandupdate_playlistfetch the current resource first and merge only the fields you provide, preserving all other existing values. - remove_video_from_playlist: Paginates through all playlist items to find matches. With
remove_all: true(default), removes every occurrence of the video. Setremove_all: falseto remove only the first match. - Pagination: Use
page_tokenfrom the response'snextPageTokenfield to fetch subsequent pages forlist_playlists,list_playlist_items. - Scheduled publishing: Use
publish_at(ISO 8601 datetime) withprivacy_status: "private"to schedule a video for future publication. - Made for kids: Setting
made_for_kidsupdates theselfDeclaredMadeForKidsflag on videos, which affects available features (comments, notifications, etc.). - Resumable uploads: Uploads use YouTube's resumable upload protocol with automatic retry and resume on failure (up to 5 retries per chunk).
About The Developer

Apoth3osis
Joined Agent Payment: August 14, 2025
We build tools that enable AI agents to excel in the mathematical realm.
Our small team develops experimental and unique solutions in the AI arena, with a strong focus on modular computing for agentic applications and custom model deployment. We have handled projects for a variety of applications across many sectors, from algorithmic trading and financial analysis, to molecular simulations and predictions, to habitat and biodiversity monitoring and wildlife conservation.
Dependencies
3 dependencies will be automatically added when you enable this product.
Dependencies are not available to view right now.





