Tools
The C21 Live Control MCP server exposes two layers of tools:
- Business-workflow tools — a small curated set named in
snake_case. Each one wraps a complete operator-facing workflow (rather than a single REST verb) and is always advertised by the server, independently of the profile. - CRUD wrappers — autogenerated tools, one per public REST operation. Their names are the operation's OpenAPI
operationIdverbatim (camelCase). Which subset is advertised on connect depends on the active profile (voice/readonly/operator/full— see MCP server).
A business-workflow tool may call into one or more REST operations internally; the client only sees the curated name. The two layers coexist on the same connection — a voice client sees both.
Business-workflow tools (snake_case)
Four tools, always exposed, named in operator language rather than after API verbs:
| Tool | Workflow |
|---|---|
start_livestream | Start a Live stream end-to-end. |
stop_livestream | Stop a Live stream end-to-end. |
toggle_destination | Toggle a bound Destination's primary / backup path on a running Live stream. |
update_destination_stream_key | Rotate the stream key of a bound Destination. |
These are the operator-facing surface the voice profile is built around. They are advertised on every profile, including readonly (the readonly profile blocks mutating REST operations, but the curated workflows above remain visible — clients are expected not to invoke the mutating ones in observation contexts).
CRUD wrappers (camelCase operationId)
The rest of the tool catalogue is generated from the OpenAPI spec — one tool per operation, named after the operationId literally. Examples:
| Tool | Underlying operation |
|---|---|
getAllLivestreams | GET /c21apiv2/livestreams |
getLivestreamById | GET /c21apiv2/livestreams/{livestreamId} |
startLivestream | POST /c21apiv2/livestreams/{livestreamId}/start |
stopLivestream | POST /c21apiv2/livestreams/{livestreamId}/stop |
runtimeApplyLogo | POST /c21apiv2/livestreams/{livestreamId}/runtimeOptions/logo |
runtimeApplyBlackout | POST /c21apiv2/livestreams/{livestreamId}/runtimeOptions/blackout |
runtimeTogglePublishings | POST /c21apiv2/livestreams/{livestreamId}/runtimeOptions/publishings |
getAllChannels | GET /c21apiv2/channels |
getAllPublishings | GET /c21apiv2/publishings |
getAllSchedules | GET /c21apiv2/schedules |
getRecordings | GET /c21apiv2/recordings |
getDevicesLiveStatus | GET /c21apiv2/devices/livestatus |
listAssets | GET /c21apiv2/assets |
The CRUD wrappers retain the API identifier Publishing (rather than the operator-facing label Destination) for the same reason the REST surface does: they are literal operationId strings — they mirror the OpenAPI schema. The business-workflow toggle is toggle_destination; the autogenerated CRUD wrapper around the same backend call is runtimeTogglePublishings. Both reach the same operation.
The effective source of truth is the tool catalogue the server announces on connect — it reflects the active profile. For an exhaustive per-operation reference, consult the OpenAPI spec.
Tools by resource
Each table below lists the CRUD-wrapper tools available against a resource. The set of tools an MCP client can actually call is the intersection of these operations with the active profile (and the user's role).
Live streams
| Tool | Purpose |
|---|---|
getAllLivestreams | List Live streams. |
getLivestreamById | Fetch one Live stream by id. |
getLivestreamStatus | Fetch the runtime status of one Live stream. |
getLivestreamsStatus | Fetch the runtime status of every Live stream in one call. |
getLivestreamStartConfig | Fetch the start-config preconditions (idEncoderGroup, last startConfig[], startAllowed). |
getLivestreamEnriched | Fetch a Live stream with enriched references resolved. |
addLivestream | Create a Live stream. |
updateLivestream | Update a Live stream. |
deleteLivestream | Delete a Live stream. |
startLivestream | Start a Live stream. |
stopLivestream | Stop a Live stream. |
runtimeApplyLogo | Apply or clear the logo on a running Live stream. |
runtimeApplyBlackout | Apply or clear the blackout / file replacement on a running Live stream. |
runtimeApplySourceSwitch | Switch the source of a running Live stream. |
runtimeTogglePublishings | Toggle the primary / backup state of bound Destinations on a running Live stream. |
runtimePushMetadata | Push metadata to a running Live stream. |
runtimeSetAdValues | Set ad-value markers on a running Live stream. |
setLivestreamText | Set the overlay text on a Live stream. |
updateLivestreamOptions | Update Live stream runtime options. |
Channels (Sources)
| Tool | Purpose |
|---|---|
getAllChannels | List Channels. |
getChannelById | Fetch one Channel. |
addChannel | Create a Channel. |
updateChannel | Update a Channel. |
deleteChannel | Delete a Channel. |
Destinations
| Tool | Purpose |
|---|---|
getAllPublishings | List Destinations. |
getPublishingById | Fetch one Destination. |
addPublishing | Create a Destination. |
updatePublishing | Update a Destination. |
deletePublishing | Delete a Destination. |
getAllPublishingGroups | List Destination groups. |
addPublishingGroup | Create a Destination group. |
updatePublishingGroup | Update a Destination group. |
deletePublishingGroup | Delete a Destination group. |
Encodings
| Tool | Purpose |
|---|---|
getAllEncodings | List Encodings. |
getEncodingById | Fetch one Encoding. |
addEncoding | Create an Encoding. |
updateEncoding | Update an Encoding. |
deleteEncoding | Delete an Encoding. |
getAllEncodingGroups | List Encoding groups. |
addEncodingGroup | Create an Encoding group. |
updateEncodingGroup | Update an Encoding group. |
deleteEncodingGroup | Delete an Encoding group. |
Schedules
| Tool | Purpose |
|---|---|
getAllSchedules | List Schedules. |
getScheduleById | Fetch one Schedule. |
addSchedule | Create a Schedule. |
updateSchedule | Update a Schedule. |
deleteSchedule | Delete a Schedule. |
enableSchedule | Enable a Schedule. |
disableSchedule | Disable a Schedule. |
getScheduleOccurrences | Expand a Schedule into its concrete occurrences over a date window. |
Recordings
| Tool | Purpose |
|---|---|
getRecordings | List Recordings. |
getRecording | Fetch one Recording. |
getRecordingTracks | List the captured tracks of a Recording. |
deleteRecording | Delete a Recording. |
Devices
| Tool | Purpose |
|---|---|
getAllDevices | List Devices. |
getDeviceById | Fetch one Device. |
addDevice | Register a Device (one-time registration with register_username / register_password). |
updateDevice | Update a Device. |
deleteDevice | Delete a Device. |
getDevicesStatus | Fetch summary status across Devices. |
getDevicesLiveStatus | Fetch the live status of the Live streams running on the Devices. |
getAllDeviceGroups | List Device groups. |
createDeviceGroup | Create a Device group. |
updateDeviceGroup | Update a Device group. |
deleteDeviceGroup | Delete a Device group. |
Assets
| Tool | Purpose |
|---|---|
listAssets | List Assets, filterable by fileType (logos, files, clips). |
uploadAsset | Upload an Asset to the named bucket. |
readAsset | Fetch an Asset by filename. |
deleteAsset | Delete an Asset by filename. |
DRM
| Tool | Purpose |
|---|---|
getAllDrmProviders | List DRM providers. |
getDrmProviderById | Fetch one DRM provider. |
addDrmProvider | Register a DRM provider. |
updateDrmProvider | Update a DRM provider. |
deleteDrmProvider | Delete a DRM provider. |
validateDrmProvider | Validate the credentials of a DRM provider. |
C21 Live Cloud
| Tool | Purpose |
|---|---|
getAllC21LiveCloudAccounts | List C21 Live Cloud accounts. |
getC21LiveCloudAccountById | Fetch one C21 Live Cloud account. |
addC21LiveCloudAccount | Register a C21 Live Cloud account. |
updateC21LiveCloudAccount | Update a C21 Live Cloud account. |
deleteC21LiveCloudAccount | Delete a C21 Live Cloud account. |
validateC21LiveCloudAccount | Revalidate a C21 Live Cloud account against the upstream platform. |
MediaCopilot
| Tool | Purpose |
|---|---|
getMediaCopilotAccount | Read the MediaCopilot account currently bound to this C21 Live Control instance. |
getMediaCopilotConfig | Read the MediaCopilot integration configuration (tenant URL, default collection, default template). |
updateMediaCopilotConfig | Write the MediaCopilot integration configuration. System Administrator only. |
getMediaCopilotCollections | List the collections exposed by the bound MediaCopilot tenant. Used by the configuration form's collection picker. |
getMediaCopilotTemplates | List the processing templates exposed by the bound MediaCopilot tenant. |
getMediaCopilotAssetStatus | Read the processing status of an asset previously handed off to MediaCopilot, by asset id. |
The MediaCopilot integration itself requires a MediaCopilot account contracted through Cires21 plus the C21LiveEditor license on the Live Control instance — see MediaCopilot for the integration model.
Security
| Tool | Purpose |
|---|---|
createApiToken | Create an API token (System Administrator only). |
listApiTokens | List API tokens. |
revokeApiToken | Revoke an API token. |
Return shape conventions
List operations return the standard {rows, pagination} envelope. Single-resource operations return the resource directly under data. Errors follow the standard envelope documented in Pagination and errors.
What MCP does not expose
- Event subscriptions. There is no
subscribe_events-style streaming tool today. To observe state changes, poll the relevantgetLivestreamStatusorgetDevicesLiveStatusendpoint. - Webhook management. The product does not expose a webhook subscription surface.