Agent Workflows
Compound MCP tools designed for AI agent use — publish video, YouTube sync, and more.
The Rad TV MCP server includes 8 compound workflow tools that combine multiple operations into single calls. These are designed specifically for AI agents, reducing the number of tool calls and handling complex coordination automatically.
verify_connection
Start here. The agent "hello world" — confirms auth is working and shows what the agent can do.
{
"name": "verify_connection",
"arguments": {}
}Returns: user info, channel, subscription plan, and a permissions array (content:create, content:publish, content:enhance, virality:predict).
channel_dashboard
Get a complete view of the user's channel: info, recent content with transcode status, and playlists.
{
"name": "channel_dashboard",
"arguments": {}
}Returns: channel metadata, recent content (with transcodeJob status and outputAssets), and playlists. Useful for "show me my channel" requests.
publish_video
End-to-end video publishing. Supports two modes:
Mode 1: URL (server-side download)
{
"name": "publish_video",
"arguments": {
"title": "My Video",
"summary": "Description",
"sourceUrl": "https://example.com/video.mp4",
"contentType": "landscape",
"enhance": true,
"publish": true
}
}Server downloads the video, creates content, transcodes, and publishes.
Mode 2: Local file (upload)
{
"name": "publish_video",
"arguments": {
"title": "My Video",
"filename": "video.mp4",
"size": 524288000,
"contentType": "landscape",
"publish": true
}
}Returns an upload endpoint and curl command. After upload completes, the server auto-finalizes (transcodes and publishes).
Arguments
| Argument | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Content title |
summary | string | No | Description |
channel | DID | No | Target channel (defaults to user's) |
sourceUrl | URL | Mode 1 | Video URL for server download |
filename | string | Mode 2 | Local file name |
size | number | Mode 2 | File size in bytes |
contentType | string | No | landscape, portrait, vr, short |
layout | string | No | LANDSCAPE, PORTRAIT, VR |
enhance | boolean | No | AI upscaling + audio upmixing (Creator+) |
publish | boolean | No | Auto-publish after transcoding |
releaseDate | string | No | Scheduled release (ISO 8601) |
thumbnailUrl | URL | No | Custom thumbnail URL |
finalize_content_upload
Fallback for Mode 2 publish_video if auto-finalize didn't trigger. Manually submits for transcoding and publishes.
{
"name": "finalize_content_upload",
"arguments": {
"contentId": "did:rad.live:content/feature/123",
"layout": "LANDSCAPE",
"enhance": false,
"publish": true
}
}import_youtube_and_publish
Import a YouTube video and optionally publish in one call:
{
"name": "import_youtube_and_publish",
"arguments": {
"videoId": "dQw4w9WgXcQ",
"publish": true
}
}import_youtube_library
Batch import from the connected YouTube account:
{
"name": "import_youtube_library",
"arguments": {
"maxResults": 50,
"publishedAfter": "2024-01-01",
"autoPublish": true
}
}Returns count of imported, failed, and per-video results.
create_playlist_with_items
Create a playlist and add content in one call:
{
"name": "create_playlist_with_items",
"arguments": {
"title": "My Playlist",
"summary": "Curated collection",
"contentIds": [
"did:rad.live:content/feature/123",
"did:rad.live:content/feature/456"
]
}
}wait_for_processing
Server-side blocking wait for transcode completion. Eliminates agent-side polling loops.
{
"name": "wait_for_processing",
"arguments": {
"contentId": "did:rad.live:content/feature/123",
"timeoutSeconds": 300
}
}Returns when the job completes, errors, or hits the timeout. The response includes the final job status and output assets if complete.
get_processing_status
Non-blocking status check — returns the current transcode state immediately.
{
"name": "get_processing_status",
"arguments": {
"contentId": "did:rad.live:content/feature/123"
}
}When to Use Compound vs Individual Tools
Use compound tools when you want the simplest path to a result. publish_video handles 4-5 individual operations in one call.
Use individual tools when you need fine-grained control — for example, creating content first, then deciding whether to upload based on some condition before publishing.
| Scenario | Recommended Tool |
|---|---|
| Publish a video from URL | publish_video (Mode 1) |
| Upload and publish local file | publish_video (Mode 2) |
| Import one YouTube video | import_youtube_and_publish |
| Import many YouTube videos | import_youtube_library |
| Check what I can do | verify_connection |
| Show my channel overview | channel_dashboard |
| Wait for transcoding | wait_for_processing |
| Quick status check | get_processing_status |