Skip to main content
Glama

Create show failover

create_show_failover

Create a live-show failover watchdog that detects cook stalls or errors, crossfades to a fallback source, and optionally auto-recovers when healthy.

Instructions

Build a live-show watchdog: a Switch TOP (blend=1 cross-dissolve) between a primary source TOP (NDI/camera/Spout/Syphon path, or a synthetic noiseTOP when none is given) and an MP4 fallback (or a constantTOP when no file is given), driven by an Info CHOP + watchdog CHOP-Execute DAT that trips on cook stall (total_cooks delta stays flat for stall_ms) and, optionally, primary cook errors. A Filter CHOP smooths the integer Switch index into a fade_ms crossfade. Sticky-recover auto-returns to primary after recover_ms healthy; otherwise stays on fallback until Reset. Exposes Active / Stall_Ms / Fade_Ms / Sticky_Recover / Reset / Force_Fallback controls and a Null CHOP of status channels for bind_to_channel. Returns the container, output TOP, status CHOP, control names, and the operator paths.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fade_msNoCrossfade duration in ms (0 = hard cut). Drives the Filter CHOP that smooths the Switch TOP index.
stall_msNoConsecutive ms of zero cook progress before failover trips.
recover_msNoHealthy duration before auto-recover (only used when sticky_recover=true).
parent_pathNoWhere to create the show_failover system container./project1
primary_pathNoAbsolute TD path to the primary source TOP (NDI/camera/Spout/Syphon/any TOP). Empty → builds a synthetic noiseTOP so the network is offline-safe.
watch_errorsNoAlso trip on primary cook errors (`errors > 0`), not just on stall.
fallback_fileNoFilesystem path to the fallback MP4 / still. Empty → a constantTOP (dark grey) is used as a safe fallback.
status_overlayNoComposite a small LIVE/FALLBACK badge (textTOP + compTOP) into the output.
sticky_recoverNoWhen true, auto-switch back to primary after `recover_ms` of healthy cooking. When false, stays on fallback until Reset is pressed.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint=false, openWorldHint=true, destructiveHint=false) are minimal, but the description adds substantial behavioral detail: the exact chain of operators (Switch TOP, Filter CHOP, Info CHOP), how stall detection works (total_cooks delta), sticky-recover logic, and what happens when no primary or fallback is provided (noiseTOP/constantTOP). It also discloses the controls exposed and return values, going far beyond the annotation booleans.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but purposeful. The first sentence establishes the core purpose, and subsequent sentences explain the mechanism, controls, and return values. No sentence is wasted; each adds specific technical detail (e.g., 'blend=1 cross-dissolve', 'total_cooks delta', 'Filter CHOP smooths') that helps an agent understand the tool's behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description explicitly states what is returned ('container, output TOP, status CHOP, control names, operator paths'). It covers major behavioral aspects including defaults (noiseTOP/constantTOP), sticky-recover, error watching, and exposed controls. Given the complexity of the 9-parameter system, the description provides a complete and intelligible overview.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with each parameter already having a detailed description. The tool description does not add new per-parameter semantics but does mention some parameters (fade_ms, stall_ms, sticky_recover) within the overall system context, reinforcing their role. This matches the baseline of 3 for full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Build a live-show watchdog' which is a specific verb+resource, and immediately distinguishes this tool from siblings like create_safety_blackout_chain or create_panic by detailing the failover mechanism (Switch TOP, Info CHOP, watchdog CHOP-Execute). It clearly states what the tool produces: a container, output TOP, status CHOP, control names, and operator paths.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies the use case: creating an automatic failover system for live shows that detects cook stalls and optionally primary errors. It explains the behavior and controls, giving context on when it would be relevant. However, it does not explicitly name alternative tools or state when not to use this tool, so it stops short of full exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lucasmaher-hash/touch-designer-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server