Claude ATEM MCP
Logs every program cut as a CMX 3600 EDL and exports markers as a Resolve markers EDL for conforming in DaVinci Resolve.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Claude ATEM MCPPut camera 2 on program and dissolve to it"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Claude ATEM MCP
Control a Blackmagic ATEM switcher by talking to Claude, and log every cut as an EDL for DaVinci Resolve.
Untested on real hardware. The EDL logging feature and the Links Live Media additions have not yet been tested with a
real ATEM switcher (including the Constellation 4K) or conformed in DaVinci Resolve. They have only been checked against a
simulated switcher (test-edl-sim.mjs). Don't rely on this for a live show until you've run your own test session.
Feedback and bug reports are welcome in Issues.
This is Links Live Media's build of Guy Cochran's atem-mcp-server. On top of the original 58 tools it adds:
EDL logging (CMX 3600) for switchers without ISO recording, such as the Constellation 4K. Every program cut on an M/E is logged with timecode, whether it comes from the panel, ATEM Software Control, Claude or auto-switch. The
.edlis rewritten after every cut, and markers export as a Resolve markers EDL. New tools:atem_edl_start,atem_edl_marker,atem_edl_status,atem_edl_stop. See docs/EDL-LOGGING.md.A 3-page quick manual (PDF) covering setup, every command, the EDL workflow and troubleshooting: docs/ATEM-MCP-Quick-Manual.pdf.
A Claude Desktop installer script:
./add-to-claude-desktop.sh <ATEM_IP>(quit Claude Desktop first).
Quick start (macOS)
git clone https://github.com/La8Grt8/claude-atem-mcp.git ~/mcp-servers/claude-atem-mcp
cd ~/mcp-servers/claude-atem-mcp
npm install --include=dev && npm run build
./add-to-claude-desktop.sh 192.168.1.240 # your ATEM's IP; quit Claude Desktop firstThen reopen Claude Desktop and say "Show me the switcher status."
For EDL logging: "Start the EDL for Episode 12", then "Mark that", then "Stop the EDL". Files go to
~/Movies/ATEM EDLs/. Sync the camera timecode to the switcher first; see the EDL guide.
Test the EDL logger without a switcher: npm run build && node test-edl-sim.mjs
Original project documentation follows. MIT License © 2026 Guy Cochran; EDL additions © 2026 Links Live Media, MIT.
ATEM MCP Server
Control Blackmagic ATEM video switchers with AI assistants using the Model Context Protocol. Works with Claude Desktop, claude.ai, Claude Mobile, Cursor, and any MCP-compatible client.
Talk to your switcher in plain English: "Put camera 2 on program and dissolve to it" or "Start streaming and recording" or "Run macro 3."
Supports both local (stdio) and remote (Streamable HTTP with OAuth 2.0) transports.
Related MCP server: resolve-mcp
How It Works
You (natural language)
│
▼
Claude (Anthropic Cloud)
│ translates to MCP tool calls
▼
ATEM MCP Server (your Mac/PC)
│ uses atem-connection library
▼
ATEM Switcher (network)
│ executes commands
▼
ATEM Software Control / hardware
│ reflects changes in real timeSupported ATEM Models
The underlying atem-connection library (by NRK/Sofie) supports every ATEM generation:
ATEM Mini, Mini Pro, Mini Pro ISO, Mini Extreme, Mini Extreme ISO
ATEM Television Studio HD, HD8, HD8 ISO
ATEM 1 M/E, 2 M/E, 4 M/E Production Studio / Constellation
ATEM SDI, SDI Pro ISO, SDI Extreme ISO
And all other Blackmagic ATEM models
Quick Start
1. Install
cd atem-mcp-server
npm install
npm run build2. Configure Claude Desktop
Edit your Claude Desktop config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"atem": {
"command": "/opt/homebrew/bin/node",
"args": ["/path/to/atem-mcp-server/dist/index.js"],
"env": {
"ATEM_HOST": "192.168.1.100"
}
}
}
}Note: Replace
/opt/homebrew/bin/nodewith your full Node.js path (runwhich nodeto find it). Replace the IP with your ATEM's address.
3. Restart Claude Desktop
Quit and relaunch Claude Desktop. You should see the hammer (🔨) icon indicating MCP tools are available.
4. Start Talking to Your Switcher
"Connect to my ATEM at 192.168.1.100"
"Show me the current switcher status"
"Put camera 3 on preview and dissolve to it"
"Fade to black"
Environment Variables
Variable | Description | Default |
| ATEM IP address (enables auto-connect) | — |
| ATEM port |
|
| Transport mode: |
|
| HTTP server port (when |
|
| Public URL for OAuth endpoints (when behind a tunnel/proxy) |
|
If ATEM_HOST is set, the server auto-connects on startup. Otherwise, use atem_connect to connect manually.
Remote Access (claude.ai, Claude Mobile, HTTP)
The HTTP transport exposes the MCP server as a web endpoint with built-in OAuth 2.0. This enables remote access from claude.ai, Claude Mobile, and any HTTP-capable MCP client.
Quick Start (HTTP Mode)
TRANSPORT=http BASE_URL=https://atem.yourdomain.com ATEM_HOST=192.168.1.100 node dist/index.jsThe server starts on port 3000 with:
MCP endpoint:
POST /mcp(Bearer token required)OAuth 2.0: Full auto-provisioning flow (discovery, registration, authorization, token exchange)
Health check:
GET /health
Connect from claude.ai
Click Add custom connector
Enter your MCP URL (e.g.,
https://atem.yourdomain.com/mcp)Click Connect — the OAuth flow completes automatically
Start a conversation and control your ATEM remotely
Connect from Claude Desktop (Remote)
{
"mcpServers": {
"atem": {
"url": "https://atem.yourdomain.com/mcp"
}
}
}No command or args needed — the server runs remotely.
OAuth 2.0 Implementation
The HTTP server implements a complete OAuth 2.0 flow for MCP authentication:
Endpoint | Purpose |
| RFC 9728 resource metadata |
| Authorization server metadata |
| Dynamic Client Registration (DCR) |
| Authorization endpoint (auto-approves) |
| Token exchange (issues Bearer tokens) |
The OAuth server auto-provisions tokens without user interaction — designed for personal/trusted use. For production environments, consider adding proper authentication.
Expose with Cloudflare Tunnel
Use a named Cloudflare Tunnel for a permanent URL — no port forwarding, no dynamic DNS, no changing URLs.
Prerequisites
A free Cloudflare account
A domain managed by Cloudflare DNS
cloudflaredCLI installed (brew install cloudflaredon macOS)
Setup
1. Authenticate and create tunnel
cloudflared login
cloudflared tunnel create atem-mcpNote the tunnel ID (a UUID).
2. Route DNS
cloudflared tunnel route dns atem-mcp atem.yourdomain.com3. Create config file (~/.cloudflared/config.yml)
tunnel: <TUNNEL_ID>
credentials-file: ~/.cloudflared/<TUNNEL_ID>.json
ingress:
- hostname: atem.yourdomain.com
service: http://localhost:3000
- service: http_status:4044. Start the server and tunnel
# Terminal 1: MCP server
TRANSPORT=http BASE_URL=https://atem.yourdomain.com ATEM_HOST=192.168.1.100 node dist/index.js
# Terminal 2: Cloudflare tunnel
cloudflared tunnel run atem-mcpYour MCP endpoint is now live at https://atem.yourdomain.com/mcp.
Critical: Disable Cloudflare AI Bot Blocking
If you use Cloudflare and connect from claude.ai, you must disable AI bot blocking or claude.ai's requests will be silently blocked with a 403.
Claude.ai's backend uses the Claude-User user agent from Google Cloud Platform IPs. Cloudflare's "Block AI training bots" managed rule blocks these requests before they reach your server.
To fix:
Go to Cloudflare Dashboard > select your domain
On the Overview page, find "Block AI training bots" on the right sidebar
Change from "Block on all pages" to "Do not block (allow crawlers)"
You can verify in Security > Analytics > Events — blocked requests show as Service: Managed rules, Rule: Manage AI bots, User agent: Claude-User.
Run as a Background Service (macOS)
sudo cloudflared service installThis creates a launch daemon that starts the tunnel on boot.
Useful Commands
cloudflared tunnel list # List all tunnels
cloudflared tunnel info atem-mcp # Show tunnel details
cloudflared tunnel cleanup atem-mcp # Remove stale connections
cloudflared tunnel delete atem-mcp # Delete the tunnel entirelyAvailable Tools (58 tools)
Connection
Tool | Description |
| Connect to an ATEM switcher by IP |
| Disconnect from the ATEM |
| Get model, inputs, program/preview state |
Switching
Tool | Description |
| Set program (live) input |
| Set preview (next) input |
| Hard cut transition |
| Auto transition (dissolve/wipe/etc.) |
| Toggle Fade to Black |
| Set preview + auto transition in one call |
Transitions
Tool | Description |
| Set mix, dip, wipe, DVE, or stinger |
| Set transition duration in frames |
| Manual T-bar position (0.0–1.0) |
| Get current transition settings |
Routing & Keyers
Tool | Description |
| Route input to aux output |
| Get current aux routing |
| Downstream keyer on/off air |
| Auto transition for DSK |
| Set DSK fill and key sources |
| Upstream keyer on/off air |
| Set USK fill and cut sources |
Macros
Tool | Description |
| Run a macro by index |
| Stop running macro |
| Continue paused macro |
| List all defined macros |
Recording & Streaming
Tool | Description |
| Start recording |
| Stop recording |
| Start streaming |
| Stop streaming |
| Get recording/streaming status |
Super Source
Tool | Description |
| Get all box positions, sources, art, and border settings |
| Configure a single box (source, position, size, crop) |
| Set layout with presets (side-by-side, 2x2 grid, PiP, etc.) |
| Configure art fill/cut source, foreground/background |
| Configure border width, color, bevel, light source |
| 2x2 gallery grid: host + 3 guests, prioritizes active speakers via audio levels |
| Cut full-screen to whoever is currently talking (detected via audio levels) |
| Start auto-switching: program mode (full-screen), ssrc_box mode (Super Source box), or host_ssrc mode (host full-screen + guest side-by-side) |
| Stop auto-switching mode |
| Check if auto-switch is running, see stats |
| Save current Super Source layout as a named "look" (boxes, art, border) |
| Load a saved look and apply it — optionally override sources for different guests |
| List all saved looks with descriptions and box counts |
| Delete a saved look |
Audio Mixer (Fairlight + Classic)
Audio tools auto-detect the mixer type. Fairlight is used on ATEM Mini Extreme, Constellation, and newer models. Classic is used on ATEM Mini, Mini Pro, and older models.
Tool | Description |
| Set input gain, fader, balance, mix mode (Fairlight or Classic) |
| Set master output gain/fader |
| Get full audio mixer state (reports mixer type) |
Fairlight EQ & Dynamics
Full parametric EQ, compressor, limiter, and gate/expander control for ATEM models with Fairlight audio (Mini Extreme, Constellation, and newer). Includes EQ presets for common use cases.
Tool | Description |
| Set individual EQ band (shape, frequency, gain, Q) on an input |
| Apply EQ preset: vocal, podcast, music, de_mud, or flat |
| Set compressor (threshold, ratio, attack, hold, release) |
| Set limiter (threshold, attack, hold, release) |
| Set noise gate/expander (threshold, range, ratio, attack, release) |
| Get full EQ + dynamics state for an input |
| Set EQ band on master output |
| Set compressor on master output |
| Set limiter on master output |
| Set makeup gain on an input |
| Reset compressor/limiter/gate to factory defaults |
| Reset EQ to factory defaults |
Common Input IDs
ID | Source |
1–20 | Physical SDI/HDMI inputs |
1000 | Color Bars |
2001 | Color Generator 1 |
2002 | Color Generator 2 |
3010 | Media Player 1 |
3011 | Media Player 1 Key |
3020 | Media Player 2 |
3021 | Media Player 2 Key |
6000 | Super Source |
10010 | Black |
10011 | Clean Feed 1 (Program) |
10012 | Clean Feed 2 |
Example Conversations
Basic switching:
"Put camera 1 on program"
"Set preview to camera 3 and do a 2-second dissolve"
"Cut to color bars"
Show setup:
"Set transition style to mix with a 45-frame rate"
"Route camera 1 to aux 1 for the confidence monitor"
"Put DSK1 on air for the lower third graphic"
Streaming/Recording:
"Start streaming and recording"
"What's the recording status?"
"Stop streaming but keep recording"
Audio (Fairlight & Classic):
"Lower camera 2 audio by 5 dB" "Set camera 1 audio to audio-follow-video mode" "Mute audio on input 3" "Set master output to -3dB" "Show me the audio mixer state"
Fairlight EQ & Dynamics:
"Apply vocal EQ preset to mic 1" "Boost presence at 3kHz on camera 2 audio" "Add a compressor to mic 1 — 4:1 ratio, threshold at -20dB" "Gate mic 2 so it cuts off below -40dB" "Put a limiter on the master at -3dB" "Show me the EQ and dynamics state for input 1" "Reset all EQ on camera 1 to flat"
Gallery & Active Speaker:
"Go gallery" "Go gallery with guests on cameras 2, 3, and 5" "Cut to active speaker" "Auto switch" (starts following the active speaker continuously) "Auto switch host + active speaker" (host full-screen when talking, side-by-side when guest talks) "Auto switch off" "Set up a side-by-side with cameras 1 and 2" "Cut to host with 3"
Save & Recall Looks:
"Save this look as podcast4" "Load podcast4" "Load podcast4 with cameras 2, 3, 6, 7" (reuses layout geometry with different sources) "What looks do I have saved?" "Delete the old_test look"
Architecture
This server uses the atem-connection library (by NRK/Sofie TV Automation) which implements Blackmagic's proprietary ATEM protocol over UDP. It's the same protocol that ATEM Software Control uses, so all changes are reflected in real time across all connected clients.
The MCP server wraps atem-connection methods as MCP tools that Claude (or any MCP-compatible AI) can call. Each tool maps to one or more ATEM commands.
Transport modes:
stdio (default) — for Claude Desktop, Cursor, and local MCP clients
HTTP (
TRANSPORT=http) — Streamable HTTP with OAuth 2.0, for claude.ai, Claude Mobile, and remote access. Uses Express + rawhttp.createServerfor proper header handling with the MCP SDK.
Production Resilience (systemd)
The server is configured to run as a systemd service for maximum reliability:
Service Configuration (~/.config/systemd/user/atem-mcp.service):
[Unit]
Description=ATEM MCP Server
After=network.target
[Service]
Type=simple
WorkingDirectory=/home/guycochran/atem-mcp-server
Environment="TRANSPORT=http"
Environment="PORT=3002"
Environment="BASE_URL=https://atem-mcp.cochran.cloud"
Environment="ATEM_HOST=192.168.8.237"
ExecStart=/usr/bin/node dist/index.js
Restart=always
RestartSec=10
[Install]
WantedBy=default.targetResilience Features:
Auto-starts on boot — Service enabled with
systemctl --user enable atem-mcpAuto-restarts on crash —
Restart=alwaysensures continuous operation10-second restart delay — Prevents rapid restart loops
Survives power outages — Automatically recovers when system boots
Proper shutdown handling — Gracefully closes ATEM connections
Service Management:
# Check status
systemctl --user status atem-mcp
# Start/stop/restart
systemctl --user start atem-mcp
systemctl --user stop atem-mcp
systemctl --user restart atem-mcp
# View logs
journalctl --user -u atem-mcp -f
# Enable auto-start on boot
systemctl --user enable atem-mcpLive Show Usage
When using this server to control an ATEM during a live production, you need every command to execute instantly — no confirmation dialogs, no approval prompts, no delays. The experience varies by client:
Client Behavior
Client | Tool Approval | Best For |
claude.ai | No approval needed — tools run immediately | Live shows, remote control |
Claude Mobile | No approval needed — tools run immediately | On-the-go control |
Claude Desktop | No approval needed — tools run immediately | Local production control |
Claude Code (CLI) | Requires approval for each tool call | Development and testing only |
Cursor | May require approval depending on settings | Development and testing |
For live production, use claude.ai, Claude Mobile, or Claude Desktop. These clients execute MCP tool calls without interruption — you say "cut to camera 2" and it happens immediately.
Claude Code (the terminal CLI) is designed for software development and has a safety system that prompts for approval before running tools. This is great for coding but unsuitable for live switching where every second counts.
Pre-Show Checklist
Run through this checklist before going live to catch issues early:
Verify connection — "Show me the switcher status"
Test switching — "Put camera 1 on preview, then cut to it"
Test transitions — "Set transition to mix at 30 frames and dissolve to camera 2"
Test audio — "Show me the audio mixer state"
Test recording/streaming — "Start recording" → verify → "Stop recording"
Test Super Source (if using) — "Set up a side-by-side with cameras 1 and 2"
Set your show defaults — transition style, rate, audio levels, EQ presets
Tips for Live Production
Set
ATEM_HOSTin your environment so the server auto-connects on startup — no need to manually connect each timeUse specific language — "Cut to camera 3" is faster than "Can you switch to the third camera please?"
Combine commands — "Put camera 2 on preview and dissolve to it" executes as a single
preview_and_autocallKeep a fallback — Always have ATEM Software Control or a hardware panel available in case of network issues
Troubleshooting
Hammer icon not showing in Claude Desktop:
Make sure you're using the full path to
node(runwhich node)Check logs:
~/Library/Logs/Claude/mcp*.logRestart Claude Desktop completely (quit, not just close window)
Can't connect to ATEM:
Verify the ATEM is on the same network
Try pinging the ATEM IP from terminal
Default ATEM port is 9910 (UDP)
Make sure ATEM Software Control isn't blocking the connection
claude.ai connector shows auth error:
Check Cloudflare "Block AI training bots" is set to "Do not block" (see Cloudflare section)
Check Security > Analytics > Events in Cloudflare dashboard for blocked requests
Verify
BASE_URLmatches your public tunnel URL exactlyTest with
curl -X POST https://your-url/mcp— should return 401 JSON (not 403 HTML)
HTTP server returns 406 Not Acceptable:
The MCP SDK requires
Accept: application/json, text/event-streambut some clients sendAccept: */*The server includes a built-in workaround that patches the Accept header at the raw HTTP level
Commands not working:
Some features require specific ATEM models (e.g., streaming/recording on Mini Pro+)
Check
atem_get_statusto verify connection
Credits
Guy Cochran (Office Hours Global) — Creator and project lead
Claude by Anthropic — AI pair-programming partner
atem-connection by NRK (Norwegian Broadcasting Corporation) — the ATEM protocol library
MCP TypeScript SDK by Anthropic
License
MIT
Available Tools
66 toolsatem_auto_dskAuto Downstream Key TransitionA
Trigger an auto transition for a downstream keyer (mix on/off air).
Args:
dsk (number): Downstream keyer number (0-based)
| Name | Required | Description | Default |
|---|---|---|---|
| dsk | Yes | Downstream keyer number (0-based) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a non-read-only, non-destructive, non-idempotent, closed-world operation. The description adds that it 'triggers' an action and specifies it's for 'mix on/off air', which provides context about the transition effect. However, it doesn't disclose additional behavioral traits like whether it requires specific device states, has rate limits, or what happens on failure. With annotations covering basic safety, the description adds some value but not rich behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized with two sentences: one stating the purpose and effect, and another listing parameters. It's front-loaded with the core functionality. However, the Args section is redundant with the schema, slightly reducing efficiency. Every sentence serves a purpose, but there's minor waste in repeating schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (triggering a transition with one parameter), annotations provide basic safety info, and the schema fully covers inputs. However, there's no output schema, and the description doesn't explain return values or error conditions. For a non-read-only tool that performs an action, more context on outcomes would be helpful. The description is minimally adequate but has gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, fully documenting the single parameter 'dsk' with its type, range, and meaning. The description repeats this parameter info verbatim in the Args section, adding no additional semantic context beyond what the schema already provides. According to the rules, when schema coverage is high (>80%), the baseline score is 3 even with no extra param info in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Trigger an auto transition') and the target resource ('for a downstream keyer'), with additional clarification about what the transition does ('mix on/off air'). This distinguishes it from sibling tools like 'atem_auto_transition' (which appears to be for main transitions) and 'atem_set_dsk_on_air' (which likely sets state rather than triggering a transition).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context through the phrase 'mix on/off air', suggesting this tool is for toggling a downstream keyer's on-air status via an auto transition. However, it doesn't explicitly state when to use this versus alternatives like 'atem_set_dsk_on_air' or 'atem_cut', nor does it mention prerequisites (e.g., needing a configured downstream keyer). The guidance is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_auto_switch_offAuto Switch OffAIdempotent
Stop auto-switching mode. The current program input stays on air — switching simply stops following the active speaker.
Also returns stats: how long auto-switch ran and how many switches it performed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, idempotent, non-destructive, so the safety profile is covered; the description adds real value by stating the on-air state is preserved (non-disruptive effect) and that runtime stats come back. It stops short of saying what happens if auto-switch is not currently running, which the idempotentHint only partially implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and its state consequence, then the return payload. No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, the description carries the burden of return information and does so by naming the two stats returned. Only gap is the no-op case when auto-switch is already off.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Stop auto-switching mode') and immediately clarifies the resulting state ('current program input stays on air — switching simply stops following the active speaker'), which distinguishes it cleanly from atem_auto_switch_on and atem_cut_to_active_speaker.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the semantics of stopping the mode, and the effect statement helps an agent understand the consequence. However, it never names the counterpart tool (atem_auto_switch_on) or points to atem_get_auto_switch_status for checking state before/after, so routing guidance is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_auto_switch_onAuto Switch OnA
Start auto-switching mode — continuously monitors audio levels and switches to the active speaker automatically, Zoom-style.
Three modes:
program (default): Switches the full-screen program input to the active speaker
ssrc_box: Updates a Super Source box source to the active speaker — perfect for "host + active speaker" side-by-side
host_ssrc: Hybrid mode — host talking → cuts to host full-screen; guest talking → updates Super Source box with that guest AND cuts to Super Source (6000). Perfect for talk shows where the host gets their own shot but guests share a side-by-side with the host.
Fast and responsive like Zoom's active speaker switching:
Instant detection — uses real-time audio peaks to detect new speakers immediately
Hold time (default 1s): brief confirmation to filter out coughs/bumps
Cooldown (default 2s): short pause after switching to prevent ping-pong
Smart stickiness — the current speaker uses smoothed audio levels so brief pauses between words don't cause a switch away
Args:
mode (string, optional): "program", "ssrc_box", or "host_ssrc" (default: "program")
ssrcBox (number, optional): Super Source box to update, 1-4 (default: 2). Used in ssrc_box and host_ssrc modes.
guestInputs (array of numbers, optional): Inputs to monitor (default: all inputs 1-8 except host; in host_ssrc mode, host is automatically included)
hostInput (number, optional): Host camera input (default: 7). In host_ssrc mode, this is who gets full-screen when they talk.
holdMs (number, optional): How long a new speaker must talk before switching, in ms (default: 1000)
cooldownMs (number, optional): Minimum ms between switches (default: 2000)
transition (string, optional): "cut" or "auto" (default: "cut"). Only used in program mode.
me (number, optional): Mix Effect bus (default: 0)
Examples:
"Auto switch" → starts following the active speaker (full-screen)
"Auto switch box 2 to active speaker" → mode="ssrc_box", ssrcBox=2
"Host full-screen when talking, side-by-side when guest talks" → mode="host_ssrc", ssrcBox=2
"Auto switch with dissolves" → transition="auto"
"Auto switch on all cameras" → guestInputs=[1,2,3,4,5,6,7,8], hostInput=0
| Name | Required | Description | Default |
|---|---|---|---|
| me | No | Mix Effect bus (default: 0) | |
| mode | No | Mode: "program" switches full-screen, "ssrc_box" updates a Super Source box source, "host_ssrc" host full-screen + guest in Super Source | program |
| holdMs | No | Hold time in ms — new speaker must talk this long before switching (default: 1000) | |
| ssrcBox | No | Super Source box to update (1-4, default: 2). Only used in ssrc_box mode. | |
| hostInput | No | Host camera to exclude (default: 7). Set to 0 to include all inputs. | |
| cooldownMs | No | Cooldown in ms — minimum time between switches (default: 2000) | |
| intervalMs | No | Level check interval in ms (default: 250) | |
| transition | No | Transition type: "cut" or "auto" (default: "cut"). Only used in program mode. | cut |
| guestInputs | No | Camera inputs to monitor (default: all 1-8 except host) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only indicate this is a non-readonly, non-idempotent, non-destructive operation, but the description adds substantial behavioral detail: continuous monitoring, real-time audio detection, hold time, cooldown, and speaker stickiness. It also explains how each mode behaves, which is far beyond the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and modes, then behavior, arguments, and examples. It is longer than a minimal definition but proportional to a nine-parameter stateful tool, with only minor redundancy around defaults.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex stateful auto-switching tool with nine parameters and no output schema, the description covers modes, timing behavior, defaults, and examples well. It does not describe the return value or explicitly say to use atem_auto_switch_off to stop the mode, leaving small gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all nine parameters, including intervalMs. The description adds useful mode-specific semantics for ssrcBox, hostInput, guestInputs, transition, and examples, though it omits intervalMs from its Args list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: start auto-switching mode, continuously monitoring audio and switching to the active speaker. It also distinguishes the three operational modes clearly, so an agent can tell this apart from one-shot switching tools like atem_cut_to_active_speaker.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context through mode descriptions and examples, including which mode to use for full-screen, side-by-side, and host/guest talk-show scenarios. It does not explicitly reference the sibling stop/status tools, so the when-not-to-use boundary is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_auto_transitionAuto TransitionA
Trigger an auto transition (dissolve, wipe, etc.) from preview to program using the current transition settings.
Args:
me (number, optional): Mix Effect bus number (default: 0 for ME1)
| Name | Required | Description | Default |
|---|---|---|---|
| me | No | Mix Effect bus (0=ME1, 1=ME2, etc.) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-readonly, non-destructive, non-idempotent action. The description adds useful context about using 'current transition settings' and the preview-to-program flow, but doesn't disclose potential side effects (e.g., on-air changes), rate limits, or authentication needs. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose clearly, second documents the single parameter. Efficient and front-loaded, though the Args section is somewhat redundant given the schema. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter action tool with full schema coverage and annotations covering safety profile, the description is adequate. However, without an output schema, it doesn't explain what happens after triggering (e.g., success confirmation, error conditions). Could benefit from more behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents the 'me' parameter. The description's Args section repeats the schema info without adding meaningful semantics beyond it. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('trigger an auto transition'), specifies the transition types ('dissolve, wipe, etc.'), and defines the scope ('from preview to program using current transition settings'). It distinguishes from siblings like 'atem_cut' (immediate cut) and 'atem_preview_and_auto' (sets preview then auto transitions).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when wanting to execute a transition with current settings, but doesn't explicitly state when to use this vs. alternatives like 'atem_cut' (for immediate cuts) or 'atem_set_transition_position' (for manual control). No explicit exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_connectConnect to ATEM SwitcherAIdempotent
Connect to a Blackmagic ATEM video switcher on the network.
Args:
host (string): IP address of the ATEM switcher (e.g., "192.168.1.100")
port (number, optional): Port number (default: 9910)
Returns: Connection confirmation with ATEM model info.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | IP address of the ATEM switcher | |
| port | No | Port number (default: 9910) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a non-destructive, idempotent operation with open-world semantics, which the description doesn't contradict. The description adds valuable context beyond annotations: it specifies the default port (9910) and mentions that it returns connection confirmation with model info, which helps the agent understand the tool's behavior and expected outcomes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by a structured 'Args' and 'Returns' section that efficiently covers key details without redundancy. Every sentence serves a clear purpose, making it highly concise and well-organized for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (network connection with two parameters), rich annotations, and no output schema, the description is fairly complete. It covers the purpose, parameters, and return info, though it could benefit from more behavioral context (e.g., error handling, network timeouts) to fully guide the agent in a production environment.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the input schema already fully documents both parameters (host and port). The description adds minimal value beyond the schema, only restating the IP address example and default port. This meets the baseline of 3 since the schema handles the heavy lifting, but no additional semantic insights are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Connect to') and target resource ('Blackmagic ATEM video switcher on the network'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from its sibling 'atem_disconnect', which handles disconnection, though the distinction is implied by the verb 'Connect'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying it's for connecting to a network device, but provides no explicit guidance on when to use this tool versus alternatives (e.g., prerequisites, timing relative to other operations like 'atem_get_status'). It doesn't mention any exclusions or direct alternatives, leaving usage somewhat open-ended.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_cutCut TransitionA
Perform a hard cut transition — instantly switches preview to program.
Args:
me (number, optional): Mix Effect bus number (default: 0 for ME1)
| Name | Required | Description | Default |
|---|---|---|---|
| me | No | Mix Effect bus (0=ME1, 1=ME2, etc.) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover key behavioral traits (non-readOnly, non-destructive, non-idempotent, non-openWorld). The description adds context about the transition being 'hard' and 'instant', which clarifies the action beyond annotations, but doesn't detail side effects like on-air changes or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by a brief parameter note. It's appropriately sized with no wasted words, though the parameter section could be slightly more integrated for optimal flow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (a single optional parameter) and lack of output schema, the description is adequate but could benefit from more context on effects (e.g., immediate on-air change) or error conditions, as annotations don't fully cover behavioral nuances.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the schema fully documenting the 'me' parameter. The description adds minimal value by noting it's optional with a default, but doesn't provide additional meaning beyond what's in the schema, aligning with the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verb ('perform a hard cut transition') and resource ('preview to program'), distinguishing it from siblings like 'atem_auto_transition' or 'atem_set_transition_style' which imply different transition types or configurations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for instant switching from preview to program, but provides no explicit guidance on when to use this vs. alternatives like 'atem_auto_transition' or 'atem_set_transition_style', nor does it mention any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_cut_to_active_speakerCut to Active SpeakerA
Cut full-screen to the active speaker — the guest with the highest audio level (loudest VU meters).
Uses real-time Fairlight audio level data to detect who is currently talking and puts them on program.
Args:
guestInputs (array of numbers, optional): Guest camera inputs to consider (default: all inputs 1-8 except host). Only guests in this list are eligible.
hostInput (number, optional): Host camera input to exclude from active speaker detection (default: 7)
transition (string, optional): How to switch — "cut" (instant) or "auto" (use current transition settings). Default: "cut"
me (number, optional): Mix Effect bus (default: 0 for ME1)
Examples:
"Cut to active speaker" → detects loudest guest, hard cuts to them
"Cut to active speaker with a dissolve" → transition="auto"
| Name | Required | Description | Default |
|---|---|---|---|
| me | No | Mix Effect bus (default: 0 for ME1) | |
| hostInput | No | Host camera to exclude from detection (default: 7) | |
| transition | No | Transition type: "cut" (instant) or "auto" (dissolve/wipe). Default: "cut" | cut |
| guestInputs | No | Guest camera inputs to consider (default: all inputs 1-8 except host) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and idempotentHint=false, so the mutation profile is known. The description adds useful behavioral context: detection uses real-time Fairlight audio levels, only listed guest inputs are eligible, and the host is excluded by default. It does not disclose what happens when no guest is speaking or whether preview state changes, which limits it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is front-loaded with the core behavior, followed by params and examples, and is easy to scan. The Args section is somewhat redundant with the fully covered schema, but the examples justify their space by mapping natural language to parameter choices.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a switching mutation with no output schema, the description covers the detection source, default input ranges, host exclusion, transition behavior, and ME bus. It omits edge-case behavior (e.g., silence, no eligible guests) that an agent might want before invoking it, but overall it is sufficient to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters with defaults. The description's Args section largely restates the schema, though it adds a small semantic hint that 'only guests in this list are eligible' and reinforces host exclusion from detection.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb and resource ('cut full-screen to the active speaker') and defines the selection rule (highest audio level from Fairlight VU data). This cleanly distinguishes it from manual switching siblings like atem_cut and atem_set_program without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The examples show the practical invocation pattern, including how to get a dissolve via transition="auto". However, it never states when NOT to use this (e.g., when no guests are present) or explicitly routes to alternatives such as atem_set_program for manual selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_delete_lookDelete Saved LookBDestructiveIdempotent
Delete a previously saved Super Source look.
Args:
name (string): Name of the look to delete
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the saved look to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered structurally. The description adds only that the target is a Super Source look; it does not say what happens if the name does not exist (error vs silent no-op), which matters for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in one short sentence with no padding. The trailing Args block duplicates the schema and is the only wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter delete whose annotations already flag destructiveness and idempotency, the description is adequate. It stops short of describing failure behavior on an unknown name, which is the main remaining gap for a destructive tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single required parameter already documented as 'Name of the saved look to delete'. The description's Args block merely restates it, adding no format, case-sensitivity, or lookup-behavior detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (delete) and resource (a previously saved Super Source look), so the agent knows exactly what is removed. It does not explicitly distinguish itself from the sibling look-management tools (atem_save_look, atem_load_look, atem_list_looks), though the verb makes the distinction obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to use this versus atem_save_look or atem_load_look, and no prerequisites or exclusions. The phrase 'previously saved' implies the look must already exist, but that is inference rather than guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_disconnectDisconnect from ATEMAIdempotent
Disconnect from the currently connected ATEM switcher.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide key behavioral hints (non-readOnly, non-destructive, idempotent), but the description adds valuable context by specifying it disconnects from an existing connection. It doesn't contradict annotations and clarifies the precondition, though it could mention side effects like terminating ongoing operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that directly states the tool's function without any redundant or unnecessary information. Every word contributes to understanding, making it highly efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no output schema) and rich annotations, the description is mostly complete. It covers the core action and precondition, but could slightly enhance completeness by noting idempotency or effects on sibling tools, though annotations partly address this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, maintaining focus on the tool's purpose. A baseline of 4 is applied since it handles the zero-parameter case effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Disconnect') and resource ('currently connected ATEM switcher'), distinguishing it from all sibling tools which perform different operations like connecting, controlling, or querying the switcher. It precisely defines what the tool does without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly indicates when to use this tool: when there is a 'currently connected ATEM switcher' to disconnect from. It implies an alternative (using 'atem_connect' to connect instead) and excludes use when no connection exists, providing clear contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_edl_markerAdd EDL MarkerB
Drop a timeline marker at the current moment while EDL logging (e.g. "mark that", "clip that for social"). Exported as a Resolve markers EDL.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Marker note | Marker |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the agent knows this is a non-destructive, non-idempotent write. The description adds the useful downstream detail that markers are exported as a Resolve markers EDL, but omits the failure mode when no EDL session is active and whether the marker is confirmed in an EDL file or only in memory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the action, and the parenthetical examples add color without bloat. The phrasing 'while EDL logging' is slightly compressed and could be mistaken for an adverbial clause rather than a precondition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, no-output-schema tool with annotations covering safety, the description supplies adequate purpose and export context. The main missing piece is the session prerequisite and the behavior when it is unmet, which matters because this tool only makes sense mid-session.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single optional parameter at 100% schema description coverage ('Marker note', default 'Marker'), the schema fully documents the input. The description adds no information about the note field, which is acceptable at this coverage level but is not additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Drop a timeline marker at the current moment') and scopes it to an active EDL logging session, which clearly separates it from the state-management siblings atem_edl_start/stop/status. It stops short of an explicit statement about what 'current moment' means (wall clock vs. last edit point), but an agent can still tell what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'while EDL logging' plus the voice-trigger examples ('mark that', 'clip that for social') implies usage during a logging session, which is reasonable guidance. However, it never states that atem_edl_start must have been called first, nor what happens if the tool is invoked outside a session, and it doesn't route to any alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_edl_startStart EDL LoggingA
Start logging every program switch on an M/E bus to a CMX 3600 EDL for DaVinci Resolve. Captures switches from any source (hardware panel, ATEM Software Control, Claude, auto-switch). The .edl file is rewritten after every switch, so it is always up to date on disk.
Use when the user says things like "start the EDL", "log this show", "start recording the cuts".
Args:
title: show/episode name used in the EDL and filename
me: M/E bus to log (0 = M/E 1, the main program output)
tc_source: "atem" (switcher's timecode, default) or "clock" (Mac time-of-day). Use whichever matches the timecode recorded in the camera files.
drop_frame: override drop-frame (default: drop-frame at 29.97/59.94)
record_start_tc: timeline start timecode (default 01:00:00:00)
reel_names: map of ATEM input number to reel name, e.g. {"1":"CAM1","2":"CAM2"}. Default is each input's short name.
output_dir: folder for the files (default ~/Movies/ATEM EDLs)
| Name | Required | Description | Default |
|---|---|---|---|
| me | No | M/E bus (0=ME1) | |
| title | No | Show or episode name | |
| tc_source | No | Timecode source | atem |
| drop_frame | No | Force drop-frame on/off | |
| output_dir | No | Output folder | |
| reel_names | No | Input number -> reel name | |
| record_start_tc | No | Timeline start TC, default 01:00:00:00 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say it's a non-readonly, non-idempotent, non-destructive local operation. The description adds substantive context beyond that: it captures switches from any source (hardware panel, Software Control, Claude, auto-switch) and the .edl file is rewritten after every switch so the on-disk copy is always current. It doesn't say whether a second call restarts or conflicts with an existing session.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and behavior come first, then triggers, then parameters—a sensible front-loaded order with no filler prose. The Args block is long and partly re-states schema descriptions, which costs a little efficiency but carries defaults the schema omits.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does explain the artifact (filename derived from title, always-current .edl on disk), which is what an agent needs to confirm success. It omits the return payload and the already-running case, leaving minor gaps for a 7-parameter stateful logging tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description goes well beyond it: tc_source guidance ("use whichever matches the timecode recorded in the camera files"), the drop-frame default rule at 29.97/59.94, the actual output_dir default (~/Movies/ATEM EDLs), and a nested-object example for reel_names. These are decision-relevant details the schema truncates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (start logging program switches on an M/E bus to a CMX 3600 EDL for DaVinci Resolve), plus the exact artifact produced. It clearly separates itself from the EDL siblings (atem_edl_stop, atem_edl_status, atem_edl_marker) which handle stopping, querying, and marking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete trigger phrases ("start the EDL", "log this show", "start recording the cuts") that map user intent to this tool. It does not state when not to use it—e.g. what happens if logging is already active—nor does it point at atem_edl_stop as the companion call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_edl_statusEDL Logging StatusARead-onlyIdempotent
Show whether EDL logging is running, the current timecode, number of switches and markers logged, and the output file.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds useful detail about the returned status fields, but does not explain behavior when logging is not running or when the device is disconnected, so it adds only modest context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence lists the returned information with no wasted words. Every clause contributes to understanding what the status call provides.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, zero-parameter, read-only status tool with annotations and no output schema, the description is mostly complete because it names the returned fields. It could be slightly stronger by noting behavior when logging is inactive or the device is not connected, but no essential calling information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate. The baseline score of 4 applies for a no-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Show') and resource ('EDL logging'), enumerating exactly what status is returned: running state, timecode, switch/marker counts, and output file. It is clearly distinct in intent from siblings like atem_edl_start, atem_edl_stop, and atem_edl_marker, though it does not explicitly name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the status-oriented wording: an agent can infer this is the read path for EDL logging while start/stop/marker are the mutation paths. However, there is no explicit when-to-use guidance, no mention of prerequisites such as an active connection, and no direct routing to alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_edl_stopStop EDL LoggingA
Stop EDL logging and finalize the .edl file (and markers EDL if any markers were added). Returns file paths for import into DaVinci Resolve.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations declaring readOnlyHint=false and destructiveHint=false, the description usefully adds that the file is finalized and that a markers EDL is produced only when markers were added, which explains conditional side effects. It also discloses the return payload (file paths for Resolve import). Minor gap: no note on behavior when stopping with no active session.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short clauses with zero waste: the action comes first, the conditional markers detail and the return value follow. Nothing to trim and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description covers the action, the side effects, the conditional markers file, and what is returned (file paths). An agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so there is nothing for the description to disambiguate; baseline applies. The absence of a session-id or path argument is worth understanding, but that is a schema fact, not a description gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Stop EDL logging'), plus the concrete outcome of finalizing the .edl file. This is clearly distinguished from atem_edl_start and atem_edl_marker by the 'stop/finalize' framing, though it does not name those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: call this to end an EDL logging session and produce an importable file. There is no explicit statement of prerequisites (e.g. that atem_edl_start must have been called) or what to do if no session is active, and no alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_fade_to_blackFade to BlackA
Toggle Fade to Black (FTB). If currently live, fades to black. If already in FTB, fades back up.
Args:
me (number, optional): Mix Effect bus number (default: 0 for ME1)
| Name | Required | Description | Default |
|---|---|---|---|
| me | No | Mix Effect bus (0=ME1, 1=ME2, etc.) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover basic hints (non-readOnly, non-destructive, etc.), but the description adds valuable behavioral context: it's a toggle with state-dependent behavior (fades to black if live, fades back up if already in FTB). This goes beyond annotations by explaining the dual-state operation, though it doesn't mention rate limits or specific permission needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear purpose statement followed by parameter details. It's appropriately sized (two sentences plus Args), though the Args section could be integrated more seamlessly. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (stateful toggle), annotations provide safety hints, and schema fully covers the single parameter. The description explains the core behavior well, though it lacks output details (no output schema) and doesn't mention error cases or visual feedback. It's mostly complete for a toggle operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with clear documentation of the 'me' parameter. The description's Args section repeats the schema info without adding extra meaning (e.g., why ME matters, typical use cases). Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action: 'Toggle Fade to Black (FTB)' with precise behavior: 'If currently live, fades to black. If already in FTB, fades back up.' It distinguishes from siblings like 'atem_cut' (instant transition) and 'atem_auto_transition' (auto fade) by specifying toggle behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context through 'Toggle Fade to Black' and the conditional logic, but doesn't explicitly state when to use this vs. alternatives like 'atem_cut' or 'atem_auto_transition'. No explicit exclusions or prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_get_audio_stateGet Audio Mixer StateARead-onlyIdempotent
Get the current audio mixer state. Returns all input levels, mix options, fader positions, and master output. Automatically reads from Fairlight or classic mixer depending on ATEM model.
Returns: JSON with mixer type, master settings, and per-input audio state.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: it transparently reads from Fairlight or the classic mixer depending on ATEM model, which an agent cannot infer from structured fields. Return shape is only summarized, not detailed, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core verb and resource, followed by scope and model-dependent behavior. The separate 'Returns:' sentence slightly restates the enumerated fields, but it usefully frames them as a JSON payload, so it earns most of its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must convey return values, and it does at a high level (mixer type, master settings, per-input state). For a zero-parameter read tool with full annotation coverage, this is nearly complete; only the shape of per-input state and master settings is left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so the baseline is 4. The description instead spends its words on the return payload, which is the relevant semantic surface for a zero-arg getter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the current audio mixer state') and enumerates what it covers: input levels, mix options, fader positions, master output. Clearly distinguishable from the sibling setters like atem_set_audio_mixer_input and atem_set_audio_master_output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The read-only nature and the sibling set imply this is the inspection counterpart to the audio setters, and the Fairlight/classic note hints at when the result differs. However, there is no explicit statement like 'call this before adjusting levels' or any exclusion of alternatives, so usage remains inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_get_auto_switch_statusAuto Switch StatusARead-onlyIdempotent
Check if auto-switch mode is currently running and get its configuration and stats.
Returns: running state, monitored inputs, hold time, transition type, current speaker, switch count, and runtime.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds the return payload (running state, monitored inputs, hold time, transition type, current speaker, switch count, runtime), which is genuinely useful since no output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences: the purpose first, then a compact enumerated return list. No filler, and the critical action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the return-field enumeration does the work an agent needs to decide whether this tool answers its question. Only minor gap is the absence of any note on freshness/liveness of the stats or relation to atem_get_status.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero input parameters, so there is nothing for the description to disambiguate; baseline applies. The description correctly makes no parameter claims.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Check if auto-switch mode is currently running and get its configuration and stats.' This distinguishes it from general reads like atem_get_status, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the name and description — an agent knows this is the read counterpart to atem_auto_switch_on/off — but there is no explicit guidance on when to call it versus atem_get_status or whether polling is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_get_aux_sourceGet Aux Output SourcesARead-onlyIdempotent
Get the current source routing for all auxiliary outputs.
Returns: JSON object mapping each aux output to its current source input.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, and idempotent behavior, so the description adds value by specifying the return format ('JSON object mapping each aux output to its current source input'). It does not disclose rate limits or auth needs, but with annotations covering safety, this is sufficient for good transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the purpose and followed by return details. Every sentence adds essential information without redundancy, making it highly efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no output schema) and rich annotations, the description is mostly complete. It covers purpose and return format but could benefit from more explicit usage guidelines or error handling details, though not critical for this low-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so no parameter documentation is needed. The description does not add param details, but this is appropriate given the lack of inputs, warranting a baseline score of 4 for adequate handling.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'current source routing for all auxiliary outputs', specifying the exact scope. It distinguishes from siblings like 'atem_set_aux_source' by focusing on retrieval rather than modification, making the purpose specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving current routing information, which is clear in context. However, it does not explicitly state when to use this tool versus alternatives like 'atem_get_status' or 'atem_get_audio_state', nor does it mention prerequisites or exclusions, leaving some guidance gaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_get_fairlight_eq_stateGet Fairlight EQ & Dynamics StateARead-onlyIdempotent
Get the current EQ bands, compressor, limiter, and gate/expander settings for a Fairlight audio input. Returns human-readable values (dB, Hz, ms).
Args:
input (number): Audio input number (1=Camera 1, 2=Camera 2, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | Audio input number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds genuine value beyond them by stating the return is human-readable in dB, Hz, and ms, which matters since there is no output schema. It does not mention connection prerequisites or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus a one-line arg note; the purpose and return format are front-loaded with no filler. The args block lightly restates the required param but earns its place through the camera-to-number mapping.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A simple one-param read tool with no output schema; the description covers what is read, the units returned, and how to identify the input. Missing only the shape of the returned state (e.g., number of EQ bands) for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single required integer, so the baseline is 3. The description exceeds that by decoding the parameter ('1=Camera 1, 2=Camera 2, etc.'), giving semantic meaning the bare schema text 'Audio input number' lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'Get the current EQ bands, compressor, limiter, and gate/expander settings' scoped to a Fairlight audio input. This clearly separates it from the set_* Fairlight siblings and from the broader atem_get_audio_state, so an agent can pick it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the read-only 'get current ...' framing (read before you set), but no explicit when-to-use or when-not guidance is given. It never names an alternative such as atem_get_audio_state for general mixer state, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_get_recording_statusGet Recording/Streaming StatusBRead-onlyIdempotent
Get the current recording and streaming status from the ATEM.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover key behavioral traits (read-only, non-destructive, idempotent, closed-world), so the description's burden is lower. It adds value by specifying the scope ('recording and streaming status'), but does not disclose additional context like rate limits, error conditions, or what 'status' entails beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any fluff. It is front-loaded and every word contributes to understanding, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, annotations provided, no output schema), the description is adequate but minimal. It lacks details on return values or error handling, which could be helpful for an agent, though annotations reduce the need for extensive explanation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0 parameters and 100% schema description coverage, the baseline is high. The description does not need to explain parameters, and it appropriately focuses on the tool's function without redundant details, earning a near-perfect score for clarity in a parameterless context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and the specific resource ('current recording and streaming status from the ATEM'), making the purpose evident. However, it does not explicitly differentiate from sibling tools like 'atem_get_status' or 'atem_get_audio_state', which might provide overlapping status information, so it falls short of a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'atem_get_status' and 'atem_start_recording', there is no indication of context, prerequisites, or exclusions, leaving the agent to infer usage based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_get_statusGet ATEM StatusARead-onlyIdempotent
Get current ATEM switcher status including model info, current program/preview inputs, and connection state.
Returns: JSON object with model, firmware version, current program input, current preview input, and available inputs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety and idempotency. The description adds valuable context by specifying what information is returned (model, firmware, inputs, connection state) and that it returns a JSON object, which isn't covered by annotations. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences that are front-loaded with the core purpose and follow with return details. Every sentence adds value: the first defines the scope, the second specifies the return format and content. No wasted words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, idempotent tool with no parameters and no output schema, the description is mostly complete. It covers what the tool does and what it returns. However, it doesn't mention potential errors (e.g., if not connected) or usage context, leaving minor gaps given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, focusing instead on the return value. Baseline for 0 parameters is 4, as it efficiently handles the lack of inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Get current ATEM switcher status') and resource ('ATEM switcher'), listing the exact information returned. It distinguishes from siblings like 'atem_get_audio_state' or 'atem_get_transition_state' by specifying it provides overall status including model info, program/preview inputs, and connection state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving current switcher status, but doesn't explicitly state when to use this tool versus alternatives like 'atem_get_audio_state' or 'atem_get_transition_state' for more specific status checks. No guidance on prerequisites (e.g., connection state) or exclusions is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_get_supersource_stateGet Super Source StateARead-onlyIdempotent
Get the current Super Source state including all box positions/sources, art settings, and border settings.
Args:
ssrcId (number, optional): Super Source index (default: 0). Most ATEMs have only one Super Source.
Returns: JSON object with boxes (array of 4 box states), art properties, and border settings.
| Name | Required | Description | Default |
|---|---|---|---|
| ssrcId | No | Super Source index (0 = first, default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds something annotations cannot: it discloses the returned state composition (4 box states, art properties, border settings), which is valuable because no output schema exists. It stops short of noting freshness/caching behavior or error cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core statement, then Args and Returns in a compact structure. The Returns line partially restates the opening sentence, but it earns its place since there is no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-optional-parameter read-only getter with no output schema, the description covers purpose, the parameter's default and typical cardinality, and the shape of the returned object. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents ssrcId with default 0 and range 0-3. The description adds only a small operational note ("Most ATEMs have only one Super Source"), which explains why the default is usually sufficient but gives no further format or selection guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Get the current Super Source state") and enumerates the contents: box positions/sources, art settings, border settings. That distinguishes it from the sibling setters (atem_set_supersource_box/layout/art/border), though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: a 'get' tool whose setter counterparts exist elsewhere in the tool list suggests it is the read side of a read-modify-write flow. There is no explicit when-to-use statement, no mention of taking a snapshot before calling the set_* tools, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_get_transition_stateGet Transition StateARead-onlyIdempotent
Get current transition settings for a Mix Effect bus including style, rates, and in-transition status.
Args:
me (number, optional): Mix Effect bus number (default: 0 for ME1)
Returns: JSON with current transition style, rates per type, and whether a transition is currently in progress.
| Name | Required | Description | Default |
|---|---|---|---|
| me | No | Mix Effect bus (0=ME1, 1=ME2, etc.) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, and idempotent behavior, which the description aligns with by using 'Get'. The description adds valuable context beyond annotations by specifying the return format ('JSON with current transition style, rates per type, and whether a transition is currently in progress') and the default parameter value, enhancing transparency without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by a structured 'Args' and 'Returns' section. Every sentence adds specific value without redundancy, making it efficient and well-organized for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one optional parameter), rich annotations covering safety, and no output schema, the description is largely complete. It explains what the tool does, the parameter, and the return format. A slight gap exists in not detailing potential error cases or system-specific constraints, but it suffices for basic use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the schema fully documenting the 'me' parameter. The description adds minimal value beyond the schema by mentioning the default value (0 for ME1) and implying the parameter's optionality, but does not provide additional semantic details. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Get current transition settings') and resources ('for a Mix Effect bus'), including what information is retrieved ('style, rates, and in-transition status'). It distinguishes itself from siblings like atem_set_transition_style or atem_set_transition_rate by focusing on retrieval rather than modification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing to check transition settings, but does not explicitly state when to use this tool versus alternatives like atem_get_status or other get_* tools. It provides clear context by specifying the target (Mix Effect bus) but lacks explicit exclusions or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_get_usk_stateGet Upstream Keyer StateARead-onlyIdempotent
Get the current state of upstream keyers on a mix effect bus — type, sources, on-air status, DVE position/size, and key settings.
Args:
me (number, optional): Mix Effect bus (default: 0 for ME1)
Returns all upstream keyers with their complete state.
| Name | Required | Description | Default |
|---|---|---|---|
| me | No | Mix Effect bus (0=ME1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds useful return-content context — type, sources, on-air status, DVE position/size, key settings — though it says nothing about output shape limits or per-keyer ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and return fields in one sentence. The Args block largely duplicates the schema, but the overall length is appropriate and there is little wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-optional-parameter read tool with no output schema, the description is nearly complete: annotations cover safety, and the field list compensates for the absent output schema. Only alternative-tool routing is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already documents me with default 0 and the 0=ME1 mapping. The description merely restates the parameter and default, adding no syntax or range detail beyond the schema (which has minimum 0, maximum 3).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (upstream keyers on a mix effect bus) and enumerates the state fields returned. It is clearly distinguishable from the many atem_set_usk_* siblings that mutate the same resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the read-only getter nature and the setters among siblings, but the description never says when to use this versus alternatives like atem_get_transition_state or atem_get_supersource_state, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_go_galleryGo GalleryAIdempotent
Set up a 2×2 gallery grid with the host camera and 3 guest cameras, then cut to Super Source.
Prioritizes guests who are currently speaking (detected via real-time audio levels from the Fairlight mixer). The guest with the highest audio level appears in box 2 (top-right), next in box 3 (bottom-left), next in box 4 (bottom-right).
If audio level data is unavailable, falls back to the first 3 guests from the guest list.
Args:
hostInput (number, optional): Host camera input (default: 7)
guestInputs (array of numbers, optional): All possible guest camera inputs to choose from (default: [1, 2, 3, 4, 5, 6, 8]). The tool picks the 3 most active.
cutToProgram (boolean, optional): Automatically cut Super Source to program (default: true)
ssrcId (number, optional): Super Source index (default: 0)
Examples:
"Go gallery" → 2x2 grid with host (cam 7) + 3 most active guests
"Go gallery with guests on 2, 3, 5" → picks 3 most active from cameras 2, 3, 5
| Name | Required | Description | Default |
|---|---|---|---|
| ssrcId | No | Super Source index (default: 0) | |
| hostInput | No | Host camera input number (default: 7) | |
| guestInputs | No | Guest camera inputs to choose from (default: all inputs except host). Picks the 3 most active. | |
| cutToProgram | No | Cut Super Source to program output (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish mutate-but-idempotent and non-destructive, and the description honors that by disclosing selection logic (Fairlight audio levels), the exact box mapping (2 top-right, 3 bottom-left, 4 bottom-right), and a documented fallback to the first 3 guests when audio data is missing. This is real added context. It omits what happens to any pre-existing Super Source layout or art on that ssrcId, which is the main remaining behavioral gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Behavior and selection rules are front-loaded in two tight paragraphs, then examples, so the important information arrives first. The 'Args:' block is largely redundant against a 100%-covered schema, which costs it a point, but the overall length stays proportionate to a tool with non-obvious selection semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-optional-parameter mutation with no output schema, the definition covers the combination logic, defaults, box ordering, and the no-audio fallback. What remains unclear is the effect on existing Super Source state for the chosen ssrcId and what the caller should expect back. Adequate, with a small but real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description genuinely adds meaning: it identifies hostInput as the camera occupying the grid's host position, explains that guestInputs is a candidate pool from which the three most active are chosen, and maps audio rank to specific box numbers. The default guest list is written out explicitly, which is more usable than the schema's 'all inputs except host' phrasing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a concrete verb and composite outcome: builds a 2x2 grid from the host camera plus three guests, then cuts Super Source to program. That is enough for an agent to pick this over atem_set_supersource_layout or atem_cut_to_active_speaker. It stops short of a 5 because no sibling is named, so the agent must infer the difference from sibling names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The two examples ('Go gallery', 'Go gallery with guests on 2, 3, 5') imply the intended invocation context, and the audio-priority plus fallback explanation tells the agent when the result will differ. There is still no explicit when-not-to-use guidance and no named alternative for cases where the caller wants layout without cutting to program. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_list_looksList Saved LooksARead-onlyIdempotent
List all saved Super Source looks. Shows each look's name, description, creation date, and number of active boxes.
Looks are stored in ~/.atem-mcp/looks/ as JSON files.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful context: the fields each look reports (name, description, creation date, active box count) and where the data lives on disk. It stops short of describing ordering or behavior on an empty store.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and scope, then return fields, then storage location. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters, full annotation coverage, and no output schema, the description carries the return-shape burden itself and does so by enumerating the reported fields. An agent has everything needed to call it and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so the baseline is 4 and there is nothing further the description could clarify. The added note about the JSON storage path is a bonus rather than a parameter concern.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("List") and resource ("saved Super Source looks"), which is clearly distinguishable from the save/load/delete siblings by verb alone. It doesn't explicitly name or route away from those siblings, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance or mention of atem_load_look / atem_delete_look as the natural follow-up actions. Usage is only implied by the nature of a list operation over saved looks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_list_macrosList MacrosARead-onlyIdempotent
List all defined macros on the ATEM switcher.
Returns: JSON array of macros with their index, name, and whether they are valid/used.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, and idempotent behavior, but the description adds valuable context by specifying the return format ('JSON array of macros with their index, name, and whether they are valid/used'). This clarifies what data is returned, which annotations do not cover. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the purpose, and the second details the return format. Every sentence earns its place by providing essential information without redundancy, making it front-loaded and efficiently structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no output schema), the description is complete. It covers the purpose, output details, and behavioral context, which is sufficient for an agent to understand and invoke this tool correctly without needing additional explanation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0 parameters and 100% schema description coverage, the baseline is 4. The description does not need to explain parameters, and it appropriately focuses on the tool's output instead, adding value beyond the empty input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('all defined macros on the ATEM switcher'), making the purpose specific and unambiguous. It distinguishes this tool from siblings like atem_macro_run, atem_macro_stop, and atem_macro_continue by focusing on listing rather than executing or controlling macros.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing to retrieve macro information, but does not explicitly state when to use this tool versus alternatives. It lacks guidance on prerequisites (e.g., whether the switcher must be connected) or exclusions, though the context of listing macros is clear from the purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_load_lookLoad Super Source LookAIdempotent
Load a previously saved Super Source look and apply it to the ATEM. Restores all box positions, sizes, crops, art settings, and border settings.
Optionally override the source assignments — great for reusing the same layout geometry with different cameras/guests.
Args:
name (string): Name of the saved look to load
sources (array of numbers, optional): Override source assignments for each box (box 1-4). Only enabled boxes are affected. Example: [2, 3, 6, 7] assigns cameras 2/3/6/7 to the 4 boxes.
cutToProgram (boolean, optional): Automatically cut Super Source to program after loading (default: false)
ssrcId (number, optional): Super Source index to apply to (default: 0)
Examples:
"Load podcast4" → name="podcast4"
"Load podcast4 with cameras 2,3,6,7" → name="podcast4", sources=[2,3,6,7]
"Load interview and go live" → name="interview", cutToProgram=true
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the saved look to load | |
| ssrcId | No | Super Source index to apply to (default: 0) | |
| sources | No | Override source assignments for each box (in order of box 1-4) | |
| cutToProgram | No | Cut Super Source (6000) to program after loading (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, idempotent, non-destructive, closed-world, so the description is free to focus on semantics — and it does: it discloses what fields get overwritten, that source overrides only affect enabled boxes, and that cutToProgram pushes the result live. It does not cover failure behavior for an unknown look name, which is the main remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and restore-scope are front-loaded, then usage value, then args and examples — a sensible order. The Args block partially restates schema descriptions verbatim (name, ssrcId, cutToProgram), which is mild duplication, but the examples earn their space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter, non-destructive, idempotent tool with full schema coverage and no output schema, the description gives enough to invoke correctly, including the override-only-enabled-boxes nuance. An agent would still be guessing about the response/confirmation and about behavior when the named look does not exist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3, but the description adds genuine meaning beyond the schema: the box-1-to-4 ordering constraint, that only enabled boxes are affected by 'sources', and a worked example array plus the default for ssrcId and cutToProgram. Only the ssrcId range (0-3) is left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Load a previously saved Super Source look and apply it to the ATEM') and enumerates exactly what state is restored (box positions, sizes, crops, art, border). This clearly separates it from siblings like atem_save_look, atem_list_looks, and atem_set_supersource_layout.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the primary use case (re-apply saved geometry) and the reuse pattern ('great for reusing the same layout geometry with different cameras/guests'), plus concrete trigger examples mapped to arguments. It stops short of explicitly naming the paired alternatives (atem_list_looks to discover names, atem_save_look to create them), so a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_macro_continueContinue MacroB
Continue a paused macro.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a non-read-only, non-destructive, non-idempotent operation, which the description aligns with by implying a state change (continuing). However, the description adds minimal behavioral context beyond annotations—it doesn't specify effects like whether it resumes from a pause point or requires specific conditions, though with annotations covering safety, this is acceptable but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no wasted words, making it highly concise and front-loaded. Every word earns its place by clearly stating the action without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a state-changing operation with no parameters) and lack of output schema, the description is minimally adequate. It states what the tool does but lacks details on behavior, prerequisites, or output, which could be helpful for an agent, though annotations provide some safety context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add param info, which is fine here, but it doesn't compensate for any gaps since there are none—baseline 4 is appropriate for zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Continue') and resource ('a paused macro'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'atem_macro_run' or 'atem_macro_stop', which would require more context about what distinguishes continuing from running or stopping a macro.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., that a macro must be paused first) or compare it to siblings like 'atem_macro_run' or 'atem_macro_stop', leaving the agent to infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_macro_runRun MacroB
Run an ATEM macro by index number.
Args:
index (number): Macro slot number (0-based, so macro 0 = first macro slot)
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | Macro index (0-based) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a non-read-only, non-destructive, non-idempotent, closed-world operation. The description adds that it runs a macro by index, implying it triggers an action sequence, which aligns with annotations. However, it doesn't disclose additional behavioral traits like potential side effects, execution time, or error conditions beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the core purpose, followed by parameter details. It avoids unnecessary words, though the parameter explanation could be integrated more seamlessly rather than as a separate 'Args' section.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (executing a macro), lack of output schema, and rich annotations, the description is minimally adequate. It covers what the tool does but lacks details on return values, error handling, or interaction with other tools like 'atem_list_macros', leaving gaps for an agent to infer usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the schema fully documenting the 'index' parameter's type, range, and 0-based nature. The description repeats this information without adding meaningful context like macro slot mapping or execution consequences, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Run') and resource ('ATEM macro'), specifying it's executed by index number. It distinguishes from siblings like 'atem_macro_continue' and 'atem_macro_stop' by focusing on initiation, but doesn't explicitly differentiate from other macro-related tools beyond the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'atem_macro_continue' or 'atem_macro_stop', nor does it mention prerequisites such as needing a connected ATEM device or macro availability. The description only states what it does, not when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_macro_stopStop MacroAIdempotent
Stop the currently running macro.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable context beyond annotations: it specifies that the tool stops a 'currently running' macro, which implies it only works when a macro is active. Annotations already indicate it's non-destructive, idempotent, and not read-only, but the description provides operational context that enhances understanding of when the tool is applicable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the essential information ('Stop the currently running macro'). There is no wasted language, and it directly addresses the tool's purpose without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, parameterless tool with annotations covering safety (non-destructive, idempotent) and no output schema, the description is complete enough. It specifies the action and context ('currently running'), though it could slightly enhance completeness by mentioning what happens after stopping (e.g., if the macro can be resumed).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0 parameters and 100% schema description coverage, the baseline is 4. The description reinforces that no parameters are needed by focusing on the action ('Stop the currently running macro') without mentioning any inputs, which is appropriate and adds clarity for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Stop') and target resource ('the currently running macro'), distinguishing it from siblings like atem_macro_continue and atem_macro_run. It uses precise language that directly conveys the tool's function without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly indicates when to use this tool: 'Stop the currently running macro.' This implies it should be used only when a macro is actively running, distinguishing it from alternatives like atem_macro_run (to start) or atem_macro_continue (to resume). The context is clear and specific.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_preview_and_autoSet Preview and Auto TransitionA
Convenience tool: sets a preview input then immediately triggers an auto transition to bring it on air. Equivalent to selecting a source and pressing AUTO.
Args:
input (number): Input source number to transition to
me (number, optional): Mix Effect bus number (default: 0 for ME1)
| Name | Required | Description | Default |
|---|---|---|---|
| me | No | Mix Effect bus (0=ME1, 1=ME2, etc.) | |
| input | Yes | Input source number to transition to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a non-read-only, non-idempotent, non-destructive operation, which the description aligns with by describing a state-changing action. However, the description adds minimal behavioral context beyond annotations—it doesn't mention potential side effects, timing considerations, or error conditions. With annotations covering basic safety, a 3 is appropriate as the description adds some value but not rich behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by a clear analogy. The parameter section is brief and directly relevant. Every sentence earns its place with no wasted words, making it easy to scan and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two parameters, 100% schema coverage, and annotations covering basic behavioral hints, the description is reasonably complete. It explains the combined action and when to use it. However, without an output schema, it doesn't describe return values or potential errors, leaving a minor gap in full context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters ('input' and 'me') fully documented in the schema. The description repeats the parameter definitions verbatim from the schema without adding extra meaning or context. Baseline 3 is correct when the schema does the heavy lifting, though the description adds no additional semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action: 'sets a preview input then immediately triggers an auto transition to bring it on air.' It distinguishes from siblings like 'atem_set_preview' (only sets preview) and 'atem_auto_transition' (only triggers auto transition) by combining both operations. The analogy 'Equivalent to selecting a source and pressing AUTO' reinforces the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly positions this as a 'Convenience tool' and names the equivalent manual action ('selecting a source and pressing AUTO'). This provides clear context for when to use it: when you want to both set preview and trigger an auto transition in one step, avoiding separate calls to sibling tools like 'atem_set_preview' and 'atem_auto_transition'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_reset_fairlight_dynamicsReset Fairlight DynamicsAIdempotent
Reset dynamics processors to factory defaults on a Fairlight audio input.
Args:
input (number): Audio input number (1=Camera 1, 2=Camera 2, etc.)
compressor (boolean, optional): Reset compressor to defaults
limiter (boolean, optional): Reset limiter to defaults
expander (boolean, optional): Reset gate/expander to defaults
dynamics (boolean, optional): Reset all dynamics to defaults
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | Audio input number | |
| limiter | No | Reset limiter | |
| dynamics | No | Reset all dynamics | |
| expander | No | Reset gate/expander | |
| compressor | No | Reset compressor |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description usefully adds that the reset lands on factory defaults (i.e. custom settings are lost and the operation is repeatable), but says nothing about permissions, whether the change is applied live on air, or the response shape. There is mild tension with destructiveHint=false, since user-configured dynamics are discarded, but not an outright contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The operative sentence is front-loaded and the Args block is scannable. The parameter list largely mirrors the schema, so it is slightly redundant, but it is short and each line remains readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation tool with no output schema, the description covers what is reset and to what values, but leaves an important behavior undefined: whether omitting all optional flags performs a full reset or a no-op. That ambiguity is what an agent most needs resolved before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns a notch more by annotating the input number with a concrete mapping (1=Camera 1, 2=Camera 2, etc.) and clarifying that 'expander' covers gate/expander, details the schema does not carry.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: reset dynamics processors to factory defaults on a Fairlight audio input, and enumerates the three processors covered. This separates it in spirit from atem_set_fairlight_compressor/limiter/gate (set vs. reset) and atem_reset_fairlight_eq, though it never names those siblings explicitly, leaving the agent to infer the distinction from tool names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The optional flags imply a partial-vs-full reset pattern, but the description never says when to use this instead of the individual set_* Fairlight tools, nor what happens when all flags are omitted. Guidance is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_reset_fairlight_eqReset Fairlight EQAIdempotent
Reset EQ to factory defaults on a Fairlight audio input.
Args:
input (number): Audio input number (1=Camera 1, 2=Camera 2, etc.)
band (number, optional): Reset a specific band (0-5). If omitted, resets all bands.
| Name | Required | Description | Default |
|---|---|---|---|
| band | No | Specific band to reset (0-5), or omit for all | |
| input | Yes | Audio input number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare that this is a non-read-only, idempotent, non-destructive operation. The description adds useful behavioral detail by specifying that it resets to factory defaults and that omitting band resets all bands.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the action and target, and uses an Args list only for the details an agent needs. Every sentence and parameter note is directly relevant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter mutation tool with full schema coverage and annotations, the description is mostly complete. The remaining gap is that it does not explain when to choose this reset over the related set/preset EQ tools or note connection prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema by mapping input numbers to cameras (1=Camera 1, etc.). It also reinforces the band range and the omit-for-all behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: reset the EQ to factory defaults on a Fairlight audio input. This clearly distinguishes it from sibling tools such as atem_set_fairlight_eq and atem_set_fairlight_eq_preset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The first sentence implies the tool is for resetting EQ rather than setting EQ values, but it does not explicitly compare it with alternatives like atem_set_fairlight_eq or atem_set_fairlight_eq_preset. It also does not mention prerequisites such as needing an active connection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_save_lookSave Super Source LookAIdempotent
Snapshot the current Super Source state (all 4 box positions/sources, art settings, border settings) and save it as a named "look" that can be recalled later.
Looks are saved as JSON files in ~/.atem-mcp/looks/ and persist across server restarts.
Args:
name (string): Name for this look (e.g., "podcast4", "interview_2cam", "panel_discussion"). Used as the filename — alphanumeric, dashes, underscores.
description (string, optional): Human-readable description of what this look is for
ssrcId (number, optional): Super Source index to snapshot (default: 0)
Examples:
"Save this look as podcast4" → name="podcast4"
"Save this as interview setup" → name="interview_setup", description="Host left, guest right, side-by-side"
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for this look (used as filename) | |
| ssrcId | No | Super Source index to snapshot (default: 0) | |
| description | No | Description of what this look is for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-destructive, idempotent, non-read-only write, and the description adds genuinely new context: the file location (~/.atem-mcp/looks/), JSON format, and persistence across server restarts. The notable gap is overwrite semantics — with idempotentHint=true, an agent needs to know whether reusing an existing name silently replaces a saved look, and the description never says so.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then persistence/location facts, then args and examples. The Args section largely mirrors the schema, but each entry carries extra detail (filename rules, naming examples) and the whole block is short with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-output-schema write tool the description covers what state is captured, where it lands, and that it survives restarts. It is short of complete only on the overwrite/collision behavior and on what the agent gets back on success, both of which matter for confirming the save went through.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description goes beyond it by spelling out filename character constraints (alphanumeric, dashes, underscores) and giving realistic name/description examples that convey naming conventions and intended granularity. ssrcId is only restated from the schema, so the value added is uneven but real.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: snapshot the current Super Source state (box positions/sources, art, border) and persist it as a named look. That is clearly distinct from the sibling persistence tools (atem_list_looks, atem_load_look, atem_delete_look) and from the atem_set_supersource_* mutators, so an agent can select it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete invocation examples ("Save this look as podcast4") and implies the workflow via the phrase "can be recalled later," which points at atem_load_look. It does not explicitly name the alternatives or state the when-not case (e.g., when to prefer configuring boxes live via atem_set_supersource_box instead), so it is clear context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_audio_master_outputSet Audio Master OutputBIdempotent
Configure the master audio output level. Works with both Fairlight and classic audio mixers.
Args:
gain (number, optional): Master output gain/fader in dB (-100 to +10)
followFadeToBlack (boolean, optional): Whether master audio follows Fade to Black
| Name | Required | Description | Default |
|---|---|---|---|
| gain | No | Master gain/fader in dB | |
| followFadeToBlack | No | Follow Fade to Black |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotent=true, destructiveHint=false and closed-world, so the safety profile is covered. The description adds genuinely useful context that the tool works across both Fairlight and classic mixer modes. It does not say what happens when both optional args are omitted (no-op vs. query) or whether the change takes effect immediately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One-sentence purpose with the key compatibility detail up front, followed by a compact Args list. The Args section duplicates the schema descriptions, which is mild waste but keeps the definition readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-optional-parameter setter with full annotations and full schema coverage, little is required, and no output schema means return values need no explanation. However, the all-optional nature of the call leaves the no-argument behavior undefined, which is the one gap an agent would actually hit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are already documented with units and ranges, so the description's Args block mostly restates structured data. It adds the explicit -100 to +10 range and 'fader' terminology, but no guidance on partial updates or interaction between gain and followFadeToBlack.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Configure the master audio output level'), which distinguishes it from the sibling atem_set_audio_mixer_input and the Fairlight master EQ/dynamics tools. The added note about Fairlight and classic mixers reinforces scope but the description never explicitly contrasts the input-level sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the name and the 'works with both' compat note, but there is no explicit when-to-use guidance, no prerequisites, and no named alternative for per-input level changes (atem_set_audio_mixer_input). An agent must infer the boundary itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_audio_mixer_inputSet Audio Input PropertiesAIdempotent
Configure an audio input on the ATEM. Automatically uses Fairlight audio (ATEM Mini Extreme, Constellation) or classic mixer (ATEM Mini, Mini Pro) depending on the model.
Args:
input (number): Audio input number (matches video input numbers, e.g. 1=Camera 1, 2=Camera 2)
mixOption (string, optional): "on" (always on), "off" (muted), or "afv" (audio-follow-video — audio is live only when this input is on program)
gain (number, optional): Input gain in dB (-60 to +6). On Fairlight this is the pre-fader gain knob.
faderGain (number, optional): Fader level in dB (-100 to +10). Fairlight only — this is the main channel fader.
balance (number, optional): Stereo balance (-1.0 = full left, 0 = center, 1.0 = full right)
| Name | Required | Description | Default |
|---|---|---|---|
| gain | No | Input gain in dB (-60 to +6) | |
| input | Yes | Audio input number (matches video input, e.g. 1=Camera 1) | |
| balance | No | Balance (-1 left, 0 center, 1 right) | |
| faderGain | No | Fader level in dB (-100 to +10, Fairlight only) | |
| mixOption | No | Mix option: on, off, or afv (audio-follow-video) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-readOnly, idempotent, non-destructive, so the safety profile is covered. The description adds real behavioral context beyond that: the tool silently switches between two different mixer backends depending on hardware model, and faderGain is ignored on classic mixers. It does not say whether this requires an active connection or what happens on unsupported models, keeping it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with a one-line purpose plus the hardware-model caveat, then a compact parameter list. The Args block restates ranges already in the schema, which is mild redundancy, but each entry carries added semantics so nothing is pure waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description covers the things an agent actually needs: required input, the three mixOption states with their on-air meaning, the gain/fader split, and the hardware-dependent backend. Remaining unknowns (connection prerequisite, error behavior) are minor for a setter of this scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3, but the description genuinely adds meaning: 'afv' is expanded into its on-air consequence ('audio is live only when this input is on program'), and gain is framed as the pre-fader knob versus faderGain as the main channel fader — a distinction the schema's enum and range alone do not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Configure an audio input on the ATEM') and immediately clarifies it operates per-input rather than on the master bus, which is the key axis of confusion against atem_set_audio_master_output. It never names a sibling explicitly, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The model-dependent routing note (Fairlight on Mini Extreme/Constellation vs classic mixer on Mini/Mini Pro) is useful operational context, but there is no explicit when-to-use or when-not guidance and no pointer to atem_get_audio_state for reading current values before writing. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_aux_sourceSet Aux Output SourceAIdempotent
Route an input source to an auxiliary output.
Args:
aux (number): Aux output number (0-based, so aux 0 = Aux 1 on the switcher)
input (number): Input source number to route to this aux
Common uses: sending a clean feed to a recorder, routing a specific camera to a confidence monitor, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| aux | Yes | Aux output number (0-based) | |
| input | Yes | Input source number to route |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable context beyond annotations: it explains the 0-based indexing convention for aux outputs, which is crucial for correct usage. Annotations already indicate this is a non-destructive, idempotent write operation, but the description reinforces the routing behavior without contradiction. No rate limits or auth needs are mentioned, but the annotations cover the essential safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly structured: a clear purpose statement first, followed by parameter explanations with important implementation details (0-based indexing), then practical usage examples. Every sentence earns its place with no wasted words, and the information is front-loaded appropriately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter routing tool with good annotations and full schema coverage, the description provides excellent context about what the tool does and when to use it. The only minor gap is the lack of output information (no output schema exists), but for a simple routing operation, the description is nearly complete. The practical examples compensate well for the missing output details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already fully documents both parameters. The description repeats the aux parameter's 0-based indexing but adds no additional semantic meaning beyond what's in the schema. The baseline of 3 is appropriate when the schema does all the parameter documentation work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Route an input source to an auxiliary output') and resource ('auxiliary output'), distinguishing it from siblings like atem_set_preview or atem_set_program which route to different outputs. It uses precise technical language appropriate for the domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('Common uses: sending a clean feed to a recorder, routing a specific camera to a confidence monitor'), giving practical examples. However, it doesn't explicitly state when NOT to use it or mention specific alternatives among the sibling tools (e.g., atem_set_preview for preview bus routing).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_dsk_on_airSet Downstream Key On AirAIdempotent
Put a downstream keyer on or off air. DSKs overlay graphics (logos, lower thirds, etc.) on top of the program output.
Args:
dsk (number): Downstream keyer number (0-based, 0 = DSK1, 1 = DSK2)
onAir (boolean): true to put on air, false to take off air
| Name | Required | Description | Default |
|---|---|---|---|
| dsk | Yes | Downstream keyer number (0-based) | |
| onAir | Yes | true = on air, false = off air |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a non-destructive, idempotent mutation tool (readOnlyHint: false, destructiveHint: false, idempotentHint: true). The description adds valuable context by explaining that DSKs 'overlay graphics (logos, lower thirds, etc.) on top of the program output,' which clarifies the tool's effect beyond the annotations. However, it does not mention rate limits, authentication needs, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by a brief explanation of DSKs, and then a clear Args section. Every sentence earns its place without redundancy, making it efficient and well-structured for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, mutation operation) and rich annotations (covering idempotency, destructiveness, etc.), the description is mostly complete. It explains what DSKs do and how to use the tool, but lacks output details (no output schema) and does not address potential side effects or error handling, which could be useful for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters (dsk and onAir) fully documented in the schema. The description repeats this information in the Args section but adds no additional semantic context beyond what the schema provides, such as examples of when to toggle onAir or implications of dsk values. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Put a downstream keyer on or off air') and resource ('DSKs overlay graphics on top of the program output'), distinguishing it from siblings like atem_set_dsk_sources (which sets sources) and atem_set_usk_on_air (which handles upstream keyers). It provides precise context about what DSKs are used for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for controlling DSK on/off states but does not explicitly state when to use this tool versus alternatives like atem_auto_dsk (which may automate DSK operations) or atem_set_dsk_sources (which configures DSK content). No explicit exclusions or prerequisites are mentioned, leaving usage context inferred rather than clearly defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_dsk_sourcesSet DSK Fill and Key SourcesAIdempotent
Set the fill and/or key (cut) sources for a downstream keyer.
Args:
dsk (number): Downstream keyer number (0-based)
fillSource (number, optional): Input to use as fill source
cutSource (number, optional): Input to use as key/cut source
| Name | Required | Description | Default |
|---|---|---|---|
| dsk | Yes | Downstream keyer number (0-based) | |
| cutSource | No | Key/cut source input number | |
| fillSource | No | Fill source input number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a non-destructive, idempotent write operation. The description adds context by specifying it sets sources for a 'downstream keyer', which clarifies the tool's domain. However, it doesn't mention rate limits, authentication needs, or side effects beyond what annotations cover, missing some behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in one clear sentence, followed by a structured parameter list. However, the parameter section duplicates schema information without adding value, slightly reducing efficiency. Overall, it's well-organized but could be more concise by omitting redundant details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 parameters, no output schema), annotations cover safety and idempotency well. The description provides adequate purpose and parameter overview, but lacks details on error conditions, return values, or integration with sibling tools, leaving some gaps for full agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all parameters documented in the schema. The description repeats the schema's parameter explanations verbatim ('fillSource (number, optional): Input to use as fill source'), adding no additional meaning or usage context beyond what's already structured.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Set') and target resources ('fill and/or key sources for a downstream keyer'). It distinguishes from siblings like 'atem_set_dsk_on_air' (which controls on-air state) and 'atem_set_usk_sources' (which is for upstream keyers), providing precise differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for configuring downstream keyer sources, but offers no explicit guidance on when to use this vs. alternatives like 'atem_set_usk_sources' or 'atem_set_dsk_on_air'. It lacks context about prerequisites or exclusions, leaving the agent to infer from tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_fairlight_compressorSet Fairlight CompressorAIdempotent
Configure the compressor on a Fairlight audio input.
Args:
input (number): Audio input number (1=Camera 1, 2=Camera 2, etc.)
enabled (boolean, optional): Enable/disable compressor
threshold (number, optional): Threshold in dB (-50 to 0)
ratio (number, optional): Compression ratio (1.0 to 20.0, e.g. 4.0 = 4:1)
attack (number, optional): Attack time in ms (0.7 to 100)
hold (number, optional): Hold time in ms (0 to 4000)
release (number, optional): Release time in ms (5 to 4000)
| Name | Required | Description | Default |
|---|---|---|---|
| hold | No | Hold in ms | |
| input | Yes | Audio input number | |
| ratio | No | Ratio (e.g. 4.0 = 4:1) | |
| attack | No | Attack in ms | |
| enabled | No | Enable/disable compressor | |
| release | No | Release in ms | |
| threshold | No | Threshold in dB |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare write, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds unit ranges and an input-to-camera mapping, but for a setter with six optional parameters it does not say whether omitted parameters preserve existing values or reset to defaults — the key behavioral ambiguity here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentence is front-loaded and one line long, and the arg list is scannable. It is slightly redundant against the schema (ranges and units are duplicated), which costs a point but not readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Mislabeled placeholder — ignore. Actual justification: for a 7-parameter closed-world setter with full schema coverage, annotations, and no output schema, the definition covers purpose, units, and bounds adequately. The remaining gap (partial-update semantics) is minor and does not block correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage the baseline is 3, and the schema already enforces min/max bounds that the description repeats. The one genuine addition is the input mapping ('1=Camera 1, 2=Camera 2'), plus the ratio example, which is useful but marginal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Configure the compressor on a Fairlight audio input'), and the phrase 'on a Fairlight audio input' implicitly separates it from atem_set_fairlight_master_compressor and the limiter/gate siblings. It never names those siblings explicitly, so differentiation is inferable rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, no mention of prerequisites (e.g. connecting via atem_connect first), and no routing to alternatives like atem_reset_fairlight_dynamics or the master compressor. Usage is only implied by the tool name and the compressor terminology.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_fairlight_eqSet Fairlight EQ BandAIdempotent
Set an EQ band on a Fairlight audio input. The ATEM Mini Extreme has 6 bands per channel (0-5).
Default band layout: Band 0: HP Filter, 46 Hz (disabled) Band 1: Low Shelf, 49 Hz Band 2: Bell, 171 Hz Band 3: Bell, 798 Hz Band 4: High Shelf, 7260 Hz Band 5: LP Filter, 12900 Hz (disabled)
Args:
input (number): Audio input number (1=Camera 1, 2=Camera 2, etc.)
band (number): EQ band index (0-5)
bandEnabled (boolean, optional): Enable/disable this band
shape (string, optional): Band shape — "bell", "low_shelf", "high_shelf", "high_pass", "low_pass", "notch"
frequency (number, optional): Center frequency in Hz (20-20000)
gain (number, optional): Band gain in dB (-20 to +20)
qFactor (number, optional): Q factor / bandwidth (0.3 to 10.3)
frequencyRange (string, optional): "low", "low_mid", "mid_high", "high"
| Name | Required | Description | Default |
|---|---|---|---|
| band | Yes | EQ band index (0-5) | |
| gain | No | Gain in dB | |
| input | Yes | Audio input number (1=Camera 1) | |
| shape | No | Band shape | |
| qFactor | No | Q factor (bandwidth) | |
| frequency | No | Frequency in Hz | |
| bandEnabled | No | Enable/disable this band | |
| frequencyRange | No | Frequency range |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-destructive, idempotent, closed-world mutation. The description adds meaningful device-specific behavior: the 6-band layout, default filter types/frequencies, and which bands start disabled. It could go further by noting that changes affect live audio, but it substantially supplements the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and the band layout is valuable, but the Args section largely repeats schema content that is already fully documented. It is appropriately sized overall but not maximally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters, no output schema, and annotations covering safety/idempotency, the description provides enough context to invoke the tool correctly. It omits explicit sibling routing and live-audio impact notes, but those are secondary gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is already 100%, so the baseline is 3. The description adds useful meaning beyond the schema with the default band layout and per-band defaults, though many parameter descriptions (ranges, enum values, input mapping) duplicate what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: setting an EQ band on a Fairlight audio input, with the band range (0-5). It implicitly distinguishes itself from master EQ and preset siblings via 'audio input' and 'band,' but it never names those alternatives explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the tool name and the mention of 6 bands per channel, but there is no explicit guidance on when to use this versus atem_set_fairlight_eq_preset, atem_set_fairlight_master_eq, atem_get_fairlight_eq_state, or atem_reset_fairlight_eq.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_fairlight_eq_presetSet Fairlight EQ PresetAIdempotent
Apply a predefined EQ preset to a Fairlight audio input. Sets all 6 bands at once.
Available presets:
"vocal": Clarity for speech — HP at 80Hz, mud cut at 400Hz, presence boost at 3kHz, air at 12kHz
"podcast": Podcast voice — HP at 100Hz, warmth cut at 250Hz, clarity at 2.5kHz
"music": Music playback — warmth boost at 80Hz, slight mid scoop, high shimmer
"de_mud": Cut boxy 200-500Hz frequencies that make audio sound muddy
"flat": Reset all bands to 0 dB gain (factory defaults)
Args:
input (number): Audio input number (1=Camera 1, 2=Camera 2, etc.)
preset (string): Preset name
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | Audio input number | |
| preset | Yes | EQ preset name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-readonly, idempotent, non-destructive, closed-world, so the safety bar is pre-met. The description adds real behavioral context beyond that: all six bands are overwritten in a single atomic operation, and 'flat' returns bands to 0 dB factory defaults, which tells the agent existing per-band settings will be replaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action, then a scannable preset list, then args. Every line carries usable information (preset semantics are the core value), though the frequency detail for 'vocal' is richer than strictly needed to select it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter setter with no output schema and full annotation coverage, the description supplies everything an agent needs: what changes, that all six bands are affected, what each preset targets, and how input indices map. No material gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description genuinely adds meaning: it explains what each enum value does acoustically (HP 80Hz, mud cut 400Hz, etc.) and clarifies that 'input' maps to camera numbering (1=Camera 1). That goes materially beyond the bare enum and 'Audio input number' schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Apply a predefined EQ preset to a Fairlight audio input') and adds the key scope fact ('Sets all 6 bands at once'), which separates it from the manual per-band sibling. It does not name atem_set_fairlight_eq or atem_reset_fairlight_eq explicitly, so differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The preset catalogue lets an agent infer intent ('flat' resets, 'de_mud' fixes muddy audio), but there is no explicit guidance on when to choose this versus atem_set_fairlight_eq for manual band control or atem_reset_fairlight_eq for a reset. Usage is implied, not prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_fairlight_gateSet Fairlight Gate / ExpanderAIdempotent
Configure the noise gate or expander on a Fairlight audio input. Gates cut audio below the threshold; expanders reduce it by a ratio.
Args:
input (number): Audio input number (1=Camera 1, 2=Camera 2, etc.)
enabled (boolean, optional): Enable/disable expander
gateEnabled (boolean, optional): true = hard gate mode, false = expander mode
threshold (number, optional): Threshold in dB (-50 to 0). Audio below this is reduced.
range (number, optional): Range in dB (0 to 60). How much to reduce audio below threshold.
ratio (number, optional): Expansion ratio (1.0 to 4.0)
attack (number, optional): Attack time in ms (0.7 to 100)
hold (number, optional): Hold time in ms (0 to 4000)
release (number, optional): Release time in ms (5 to 4000)
| Name | Required | Description | Default |
|---|---|---|---|
| hold | No | Hold in ms | |
| input | Yes | Audio input number | |
| range | No | Range in dB | |
| ratio | No | Expansion ratio | |
| attack | No | Attack in ms | |
| enabled | No | Enable/disable gate/expander | |
| release | No | Release in ms | |
| threshold | No | Threshold in dB | |
| gateEnabled | No | true = gate mode, false = expander mode |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (idempotent, non-destructive, closed-world), so the description's job is to add domain behavior — which it does, explaining that sub-threshold audio is cut or reduced by range/ratio and that gateEnabled switches modes. It stops short of saying what happens on invalid mode/parameter combinations or whether changes take effect live.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence followed by an efficient per-argument list; every line earns its place. Minor redundancy with the schema on units and bounds keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutation tool with no output schema, the description covers the mode semantics and every parameter's meaning and units, which is enough to call it correctly. It lacks any note on side effects relative to other Fairlight dynamics settings or error conditions, a small remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns a bump by adding meaning the terse schema lacks — input numbering maps to camera numbers, threshold signposts 'audio below this is reduced', and range is framed as how much reduction occurs. It adds real semantic value beyond 'Threshold in dB' / 'Range in dB'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Configure the noise gate or expander on a Fairlight audio input') and immediately defines what gates and expanders do. This distinguishes it cleanly from the sibling dynamics tools (atem_set_fairlight_compressor, atem_set_fairlight_limiter, atem_set_fairlight_eq) which act on different processors for the same input.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the gate-vs-expander semantics (
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_fairlight_limiterSet Fairlight LimiterBIdempotent
Configure the limiter on a Fairlight audio input. The limiter prevents audio from exceeding the threshold.
Args:
input (number): Audio input number (1=Camera 1, 2=Camera 2, etc.)
enabled (boolean, optional): Enable/disable limiter
threshold (number, optional): Threshold in dB (-50 to 0)
attack (number, optional): Attack time in ms (0.7 to 30)
hold (number, optional): Hold time in ms (0 to 4000)
release (number, optional): Release time in ms (5 to 4000)
| Name | Required | Description | Default |
|---|---|---|---|
| hold | No | Hold in ms | |
| input | Yes | Audio input number | |
| attack | No | Attack in ms | |
| enabled | No | Enable/disable limiter | |
| release | No | Release in ms | |
| threshold | No | Threshold in dB |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-readonly, idempotent, non-destructive, closed-world mutation, and the description does not contradict that. The description adds useful domain context (what a limiter does) and parameter ranges, but does not say whether omitted optional params are left untouched or reset, nor how the change is confirmed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two purpose sentences followed by a compact arg list — front-loaded and easy to scan, with no filler prose. Minor redundancy in restating the min/max values the schema already enforces.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter mutation with full annotation coverage and no output schema, the description covers purpose, scope, units, and valid ranges, which is sufficient to call it correctly. The remaining gap is behavioral — no statement about partial-update semantics or how to verify the resulting limiter state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already carries baselines and bounds; the description adds meaning beyond it by mapping 'input' to concrete camera numbers (1=Camera 1, 2=Camera 2) and by labeling units and optionality explicitly. It repeats the schema's ranges but in a single scannable block.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Configure the limiter on a Fairlight audio input') and scopes it to a single input, which distinguishes it from the sibling 'atem_set_fairlight_master_limiter' without naming it explicitly. A short functional gloss ('prevents audio from exceeding the threshold') reinforces intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus the master limiter, the EQ/compressor/gate siblings, or 'atem_reset_fairlight_dynamics'. Nothing states prerequisites (e.g., that the input exists or that Fairlight processing must be enabled) or what happens when optional parameters are omitted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_fairlight_makeup_gainSet Fairlight Makeup GainAIdempotent
Set the makeup gain on a Fairlight audio input. Makeup gain compensates for volume lost during compression.
Args:
input (number): Audio input number (1=Camera 1, 2=Camera 2, etc.)
gain (number): Makeup gain in dB (0 to 20)
| Name | Required | Description | Default |
|---|---|---|---|
| gain | Yes | Makeup gain in dB | |
| input | Yes | Audio input number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the write is non-destructive, idempotent, and mutation-only, so the safety profile is covered. The description adds domain context about what the parameter physically does, but says nothing about whether the change is audible immediately on air or requires the input to exist/be selected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences front-load purpose and the concept definition, followed by a short args block. The args block largely duplicates the schema, so it is slightly redundant, but it is short and the input mapping carries information the schema lacks.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two required scalar parameters, full schema coverage, and no output schema to explain, the description gives everything an agent needs to call it correctly: the operation, the units, the value range, and the input numbering convention.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline would be 3, but the description adds real meaning beyond the schema by mapping input numbers to cameras ('1=Camera 1, 2=Camera 2, etc.') and restating the 0-20 dB valid range for gain. The integer type for input is only clarified verbally, which is a small plus.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Set) and a narrow resource (makeup gain on a Fairlight audio input), and the second sentence defines what makeup gain is functionally. It is clearly distinct from sibling dynamics tools such as atem_set_fairlight_compressor or atem_set_fairlight_limiter, though it does not name them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The explanation that makeup gain 'compensates for volume lost during compression' implies it is used in conjunction with compressor settings, but there is no explicit when-to-use, ordering, or prerequisite guidance (e.g. whether the input must be a Fairlight input, or whether it should be set after compression).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_fairlight_master_compressorSet Fairlight Master CompressorCIdempotent
Configure the compressor on the Fairlight master output.
Args:
enabled (boolean, optional): Enable/disable compressor
threshold (number, optional): Threshold in dB (-50 to 0)
ratio (number, optional): Compression ratio (1.0 to 20.0)
attack (number, optional): Attack in ms (0.7 to 100)
hold (number, optional): Hold in ms (0 to 4000)
release (number, optional): Release in ms (5 to 4000)
| Name | Required | Description | Default |
|---|---|---|---|
| hold | No | Hold in ms | |
| ratio | No | Ratio (e.g. 4.0 = 4:1) | |
| attack | No | Attack in ms | |
| enabled | No | Enable/disable compressor | |
| release | No | Release in ms | |
| threshold | No | Threshold in dB |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-destructive, idempotent, non-open-world behavior, so the safety profile is covered. However, the critical behavioral question for an all-optional setter — whether omitted parameters retain their current values or are reset to defaults — is never addressed, and nothing is said about whether this affects audio in real time or requires a specific connection state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one-line purpose is front-loaded and clear, but the six-line Args block is pure duplication of the input schema and earns no place. Half the description is redundant payload.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter, zero-required-parameter mutation with no output schema, an agent needs merge semantics, defaults, and any prerequisites (e.g., Fairlight audio enabled, connection required). None of that is present, and the annotations only cover the safety profile, leaving the definition materially incomplete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter including ranges; the description's Args block simply restates those same names, units, and bounds verbatim. It adds no semantics beyond the schema (the schema's ratio description is actually richer, giving the 4:1 example), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Configure the compressor on the Fairlight master output'), and the 'master output' scope implicitly separates it from the per-input atem_set_fairlight_compressor sibling. It stops short of naming that sibling explicitly, so the differentiation is inferable rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no mention of the closely related atem_set_fairlight_compressor, atem_reset_fairlight_dynamics, or atem_get_audio_state tools. An agent must guess whether to reach for this or the per-input compressor variant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_fairlight_master_eqSet Fairlight Master EQ BandCIdempotent
Set an EQ band on the Fairlight master output. Same 6-band layout as input EQ.
Args:
band (number): EQ band index (0-5)
bandEnabled (boolean, optional): Enable/disable this band
shape (string, optional): Band shape — "bell", "low_shelf", "high_shelf", "high_pass", "low_pass", "notch"
frequency (number, optional): Center frequency in Hz (20-20000)
gain (number, optional): Band gain in dB (-20 to +20)
qFactor (number, optional): Q factor (0.3 to 10.3)
frequencyRange (string, optional): "low", "low_mid", "mid_high", "high"
| Name | Required | Description | Default |
|---|---|---|---|
| band | Yes | EQ band index (0-5) | |
| gain | No | Gain in dB | |
| shape | No | Band shape | |
| qFactor | No | Q factor | |
| frequency | No | Frequency in Hz | |
| bandEnabled | No | Enable/disable this band | |
| frequencyRange | No | Frequency range |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotency, non-destructiveness, and a closed world, so the description needed to add context such as whether omitted optional params leave existing band values untouched, whether a connection is required, or how partial updates are handled. It adds none of that – the body is a restatement of the schema parameter ranges. It does not contradict the annotations (setting EQ values is a non-destructive mutation), but it contributes almost no behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The two opening sentences are well front-loaded and earn their place, but the seven-line Args block repeats parameter names, types, ranges, and enum values that the 100%-covered schema already provides. Roughly half the text is redundant with structured fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the definition covers what changes (a master EQ band) but omits whether the call requires a live connection, how partial updates interact with existing band state, and what the result reports. Annotations cover the safety profile, so the remaining gaps are moderate rather than fatal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both enums are documented in the schema, so the schema already carries the parameter semantics; the baseline of 3 applies. The description's args block largely duplicates the schema, with the only marginal addition being the '6-band layout' note tying band index 0-5 to an EQ band structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource ('Set an EQ band on the Fairlight master output'), and the follow-up 'Same 6-band layout as input EQ' implicitly separates it from the sibling atem_set_fairlight_eq that touches input channels. The master-vs-input distinction is real but conveyed indirectly through a reference rather than by naming the sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no conditions that route the agent to atem_set_fairlight_eq (input), atem_set_fairlight_eq_preset, or atem_reset_fairlight_eq, and no prerequisite such as requiring an active connection. The agent must infer the usage context from the tool name and the passing mention of input EQ.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_fairlight_master_limiterSet Fairlight Master LimiterBIdempotent
Configure the limiter on the Fairlight master output.
Args:
enabled (boolean, optional): Enable/disable limiter
threshold (number, optional): Threshold in dB (-50 to 0)
attack (number, optional): Attack in ms (0.7 to 30)
hold (number, optional): Hold in ms (0 to 4000)
release (number, optional): Release in ms (5 to 4000)
| Name | Required | Description | Default |
|---|---|---|---|
| hold | No | Hold in ms | |
| attack | No | Attack in ms | |
| enabled | No | Enable/disable limiter | |
| release | No | Release in ms | |
| threshold | No | Threshold in dB |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare openWorld=false, idempotent=true, destructive=false, so the safety profile is covered. The description adds essentially nothing beyond that — critically, it does not say whether omitted optional parameters are left unchanged or reset, which is the main behavioral ambiguity for a five-optional-arg setter. It also does not state whether the change is audible immediately or requires an explicit apply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one-sentence purpose line is well front-loaded, but the entire Args block is verbatim duplication of schema content that the agent already receives. The description would be stronger spending those tokens on behavior (partial update semantics, defaults) instead.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-optional-parameter mutation with no output schema, the definition covers what is changed and the valid ranges. It leaves out the two things an agent would still need: whether calling with a subset of args is a partial update or a full replace, and how to confirm the resulting limiter state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and every parameter already carries its unit and numeric bounds in the schema. The description's Args block restates the identical names, units, and ranges without adding meaning such as typical/default values or interaction between attack/hold/release. Baseline 3 applies because the schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (configure) and a precisely scoped resource (the limiter on the Fairlight master output). The 'master output' qualifier distinguishes it from the per-input atem_set_fairlight_limiter sibling, though the description never names that sibling to make the distinction explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to reach for this tool versus atem_set_fairlight_master_compressor, atem_set_fairlight_limiter (per-input), or atem_reset_fairlight_dynamics. The only guidance is inferable from the tool name and the 'master output' phrase; nothing tells the agent about prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_previewSet Preview InputAIdempotent
Set the preview (next) input on the ATEM switcher.
Args:
input (number): Input source number (same IDs as atem_set_program)
me (number, optional): Mix Effect bus number (default: 0 for ME1)
| Name | Required | Description | Default |
|---|---|---|---|
| me | No | Mix Effect bus (0=ME1, 1=ME2, etc.) | |
| input | Yes | Input source number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a non-destructive, idempotent write operation (readOnlyHint=false, destructiveHint=false, idempotentHint=true). The description adds value by specifying that it sets the 'preview (next) input,' clarifying it affects the preview bus rather than the program output, and references 'atem_set_program' for input ID consistency. It doesn't contradict annotations and provides useful context beyond them, though it could mention side effects like visual feedback on the switcher.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by a brief, structured 'Args' section. Every sentence earns its place by clarifying parameters without redundancy. It's appropriately sized for a simple tool, with zero waste, making it highly efficient and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (a write operation with two parameters), annotations cover safety and idempotency, and the schema fully describes inputs. The description adds context about the preview bus and input ID consistency. However, without an output schema, it doesn't explain return values (e.g., success confirmation or error details), leaving a minor gap. Overall, it's mostly complete but could benefit from output information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, fully documenting both parameters ('input' and 'me') with details like ranges and defaults. The description adds minimal extra meaning, only noting that input IDs are 'same as atem_set_program' and 'me' is optional with a default. This aligns with the baseline score of 3, as the schema does the heavy lifting, and the description provides slight clarification without significant added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Set the preview (next) input') and resource ('on the ATEM switcher'), using a precise verb. It effectively distinguishes this tool from siblings like 'atem_set_program' (which sets the program input) and 'atem_preview_and_auto' (which likely combines preview with auto-transition), making the purpose unambiguous and well-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by referencing 'preview (next) input' and relating input IDs to 'atem_set_program', suggesting it's for configuring the switcher's preview bus. However, it doesn't explicitly state when to use this tool versus alternatives (e.g., 'atem_preview_and_auto' or 'atem_set_program'), nor does it mention prerequisites like needing an active ATEM connection. The guidance is clear but lacks explicit exclusions or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_programSet Program InputAIdempotent
Set the program (live/on-air) input on the ATEM switcher.
Args:
input (number): Input source number (e.g., 1=Input 1, 2=Input 2, 1000=Color Bars, 2001=Color 1, 3010=Media Player 1, 3020=Media Player 2, 6000=Super Source, 10010=Black)
me (number, optional): Mix Effect bus number (default: 0 for ME1)
Common input IDs: 1-20 = physical inputs, 1000 = color bars, 2001/2002 = color generators, 3010/3020 = media players, 6000 = super source, 10010 = black.
| Name | Required | Description | Default |
|---|---|---|---|
| me | No | Mix Effect bus (0=ME1, 1=ME2, etc.) | |
| input | Yes | Input source number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide key behavioral information (readOnlyHint=false, idempotentHint=true, destructiveHint=false). The description adds useful context about what 'program' means ('live/on-air') and provides concrete examples of input IDs, but doesn't disclose additional behavioral traits like error conditions, permission requirements, or rate limits that would be valuable beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with a clear purpose statement followed by well-organized parameter documentation. Every sentence earns its place: the first establishes the core function, the Args section provides essential parameter context, and the Common input IDs section offers practical reference without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter mutation tool with good annotations but no output schema, the description provides adequate context. It explains what the tool does, documents parameters thoroughly with examples, and gives practical input ID references. However, it doesn't describe what happens on success/failure or return values, which would be helpful given the lack of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3. The description adds significant value by providing concrete examples of input values (e.g., '1=Input 1, 1000=Color Bars, 2001=Color 1') and clarifying the optional 'me' parameter's default behavior ('default: 0 for ME1'), which goes beyond the schema's basic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Set the program input') and identifies the target resource ('ATEM switcher'). It distinguishes itself from sibling tools like 'atem_set_preview' (which sets preview input) and 'atem_set_aux_source' (which sets auxiliary outputs) by focusing exclusively on the program/live output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates when to use this tool (to change what's currently live/on-air) but doesn't explicitly state when NOT to use it or name specific alternatives. It provides context about the ATEM switcher environment but lacks explicit exclusion guidance compared to tools like 'atem_set_preview' for preview changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_supersource_artSet Super Source ArtBIdempotent
Configure the Super Source art (background/foreground) key settings. Controls which source is used as the art layer and how it is keyed.
Args:
artFillSource (number, optional): Input source for the art fill
artCutSource (number, optional): Input source for the art key/cut
artOption (string, optional): "background" or "foreground" — whether art appears behind or in front of boxes
artPreMultiplied (boolean, optional): Art source uses pre-multiplied alpha
artClip (number, optional): Key clip level (0-1000)
artGain (number, optional): Key gain level (0-1000)
artInvertKey (boolean, optional): Invert the key signal
ssrcId (number, optional): Super Source index (default: 0)
| Name | Required | Description | Default |
|---|---|---|---|
| ssrcId | No | Super Source index (default: 0) | |
| artClip | No | Key clip level (0-1000) | |
| artGain | No | Key gain level (0-1000) | |
| artOption | No | Art placement: "background" (behind boxes) or "foreground" (in front) | |
| artCutSource | No | Art key/cut input source number | |
| artInvertKey | No | Invert the key signal | |
| artFillSource | No | Art fill input source number | |
| artPreMultiplied | No | Art source uses pre-multiplied alpha |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, idempotent, non-destructive and closed-world behavior, so the safety profile is covered. The description adds the meaning of the keying fields and the ssrcId default, but it never says whether omitted optional parameters are left unchanged or reset — an important behavioral trait for a configure tool with zero required params.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in one clear sentence, but the nine-line Args list duplicates schema text the agent already receives, so a meaningful portion of the description does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 all-optional parameters, full schema coverage and no output schema, the description covers purpose and field roles adequately. The main omission is patch-vs-replace semantics for omitted parameters, which is the one thing an agent still cannot infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already carries the parameter documentation. The Args block largely restates the schema field descriptions verbatim (artOption, artClip, artGain, ssrcId), adding no syntax, units or interaction detail beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("Configure the Super Source art ... key settings") and explains the scope as controlling which source is the art layer and how it is keyed. This separates it reasonably from the box/layout/border siblings, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the purpose statement, but there is no explicit when-to-use guidance, no note about when to prefer atem_set_supersource_box or atem_set_supersource_border instead, and no prerequisite (e.g. connection) or read-back (atem_get_supersource_state) mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_supersource_borderSet Super Source BorderCIdempotent
Configure the Super Source border appearance. Controls border visibility, width, color, bevel, and light source.
Args:
borderEnabled (boolean, optional): Enable or disable the border
borderBevel (string, optional): Bevel style — "none", "in_out", "in", or "out"
borderOuterWidth (number, optional): Outer border width (0-1600)
borderInnerWidth (number, optional): Inner border width (0-1600)
borderOuterSoftness (number, optional): Outer edge softness (0-100)
borderInnerSoftness (number, optional): Inner edge softness (0-100)
borderBevelSoftness (number, optional): Bevel softness (0-100)
borderBevelPosition (number, optional): Bevel position (0-100)
borderHue (number, optional): Border color hue (0-3599, degrees x10)
borderSaturation (number, optional): Border color saturation (0-1000)
borderLuma (number, optional): Border luminance/brightness (0-1000)
borderLightSourceDirection (number, optional): Light source direction (0-3590, degrees x10)
borderLightSourceAltitude (number, optional): Light source altitude (0-100)
ssrcId (number, optional): Super Source index (default: 0)
| Name | Required | Description | Default |
|---|---|---|---|
| ssrcId | No | Super Source index (default: 0) | |
| borderHue | No | Border hue (0-3599, degrees x10) | |
| borderLuma | No | Border luminance (0-1000) | |
| borderBevel | No | Bevel style | |
| borderEnabled | No | Enable or disable the border | |
| borderInnerWidth | No | Inner border width (0-1600) | |
| borderOuterWidth | No | Outer border width (0-1600) | |
| borderSaturation | No | Border saturation (0-1000) | |
| borderBevelPosition | No | Bevel position (0-100) | |
| borderBevelSoftness | No | Bevel softness (0-100) | |
| borderInnerSoftness | No | Inner edge softness (0-100) | |
| borderOuterSoftness | No | Outer edge softness (0-100) | |
| borderLightSourceAltitude | No | Light altitude (0-100) | |
| borderLightSourceDirection | No | Light direction (0-3590, degrees x10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false, and readOnlyHint=false, so the safety profile is covered. The description adds nothing beyond that — it does not state that omitted fields are left untouched, that changes hit the live Super Source immediately, or how the ssrcId selects the target output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is a tight, front-loaded purpose statement, but the 14-item Args list duplicates the schema field-by-field and consumes most of the definition without adding information. Trimming it would leave a stronger, shorter definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 14 all-optional parameters and no output schema, the definition is minimally adequate: the agent knows what each field means. It is missing the one thing not in the schema — that this is a partial update where unset fields are preserved — plus any note on which Super Source instance is affected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the description's Args block is essentially a verbatim restatement of the schema descriptions. No extra semantics (units beyond what the schema states, interaction between outer/inner width, partial-update behavior) are added, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Configure the Super Source border appearance') and enumerates the aspects controlled (visibility, width, color, bevel, light source). It is distinguishable from atem_set_supersource_box/layout/art by the 'border' qualifier, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus atem_set_supersource_box, atem_set_supersource_layout, or atem_set_supersource_art, and no mention of prerequisites (connection state, whether changes apply live). The reader must infer that only the supplied optional fields are changed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_supersource_boxSet Super Source BoxAIdempotent
Configure a single Super Source box. Set its source, position, size, and crop. All properties except box number are optional — only specified values are changed.
Args:
box (number): Box number (0-3, where 0=Box 1)
enabled (boolean, optional): Show or hide this box
source (number, optional): Input source number (1=Input 1, 2=Input 2, 3010=Media Player 1, etc.)
x (number, optional): Horizontal position (-4800 to 4800, 0=center)
y (number, optional): Vertical position (-4800 to 4800, 0=center)
size (number, optional): Box size (70 to 1000, where 1000=full size, 500=half)
cropped (boolean, optional): Enable or disable crop
cropTop (number, optional): Top crop (0-18000)
cropBottom (number, optional): Bottom crop (0-18000)
cropLeft (number, optional): Left crop (0-18000)
cropRight (number, optional): Right crop (0-18000)
ssrcId (number, optional): Super Source index (default: 0)
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Horizontal position (-4800 to 4800, 0=center) | |
| y | No | Vertical position (-4800 to 4800, 0=center) | |
| box | Yes | Box number (0=Box 1, 1=Box 2, 2=Box 3, 3=Box 4) | |
| size | No | Box size (70-1000, 1000=full, 500=half) | |
| source | No | Input source number | |
| ssrcId | No | Super Source index (default: 0) | |
| cropTop | No | Top crop (0-18000) | |
| cropped | No | Enable/disable crop | |
| enabled | No | Show or hide this box | |
| cropLeft | No | Left crop (0-18000) | |
| cropRight | No | Right crop (0-18000) | |
| cropBottom | No | Bottom crop (0-18000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare this is a non-read-only, idempotent, non-destructive, closed-world mutation. The description adds meaningful behavioral context beyond that: only explicitly specified properties are changed, so it is a partial update rather than a full overwrite. It does not discuss permissions or error behavior, but the key mutation semantics are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the purpose and the partial-update rule, then gives a structured argument list. It is appropriately sized for a 12-parameter tool, though most of the argument details duplicate the schema and are not strictly necessary given the 100% schema coverage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 12 parameters, one required field, no output schema, and annotations covering safety, the description provides enough context to invoke the tool correctly. It documents every parameter and clarifies optional partial-update behavior. Minor gaps remain around permissions and error handling, but nothing essential to the call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds semantic value beyond the schema for at least one parameter: source is illustrated with examples such as 1=Input 1 and 3010=Media Player 1. The rest of the parameter descriptions largely mirror the schema, but the added source context and the optionality reminder are useful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: configure a single Super Source box, and it names the exact properties being set (source, position, size, crop). This is sufficient to distinguish it from sibling tools like atem_set_supersource_layout, atem_set_supersource_art, and atem_set_supersource_border without opening their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by explaining that all properties except box are optional and only specified values are changed, which is useful for partial updates. However, it does not explicitly say when to use this tool versus the related Super Source layout, art, or border tools, leaving the agent to infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_supersource_layoutSet Super Source LayoutAIdempotent
Set up a Super Source layout using a preset or custom box configuration. Configures all 4 boxes at once.
Presets arrange boxes with sensible defaults — just provide the input sources.
Args:
preset (string, optional): Layout preset name:
"side_by_side": Two equal boxes side by side (sources: [left, right])
"pip_bottom_right": Full-screen with small PiP bottom-right (sources: [background, pip])
"pip_bottom_left": Full-screen with small PiP bottom-left (sources: [background, pip])
"pip_top_right": Full-screen with small PiP top-right (sources: [background, pip])
"pip_top_left": Full-screen with small PiP top-left (sources: [background, pip])
"grid_2x2": Four equal boxes in 2x2 grid (sources: [topLeft, topRight, bottomLeft, bottomRight])
"three_up": Large left + two stacked right (sources: [large, topRight, bottomRight])
sources (array of numbers, optional): Input source numbers for each box position in the preset
boxes (array of objects, optional): Custom box configs (overrides preset). Each: { enabled, source, x, y, size, cropped, cropTop, cropBottom, cropLeft, cropRight }
ssrcId (number, optional): Super Source index (default: 0)
Examples:
Side-by-side cameras 1 & 2: preset="side_by_side", sources=[1, 2]
2x2 grid all cameras: preset="grid_2x2", sources=[1, 2, 3, 4]
PiP camera 3 over camera 1: preset="pip_bottom_right", sources=[1, 3]
| Name | Required | Description | Default |
|---|---|---|---|
| boxes | No | Custom box configurations (array of up to 4 box objects, overrides preset) | |
| preset | No | Layout preset name | |
| ssrcId | No | Super Source index (default: 0) | |
| sources | No | Input source numbers for each box position in the preset |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotent, non-destructive, non-open-world writes. The description adds meaningful context beyond them: it acts on all four boxes atomically and custom boxes override the preset. It does not say whether unspecified boxes are reset or disabled, which would have completed the picture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then preset definitions, then concrete examples — all useful. The preset bullet list is long but each entry carries ordering semantics not present in the enum, so it earns its space; examples partly overlap with the bullets.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-param, no-output-schema tool with full annotation coverage, the description covers operation, presets, precedence and examples. Remaining gap: no statement about what happens to boxes left unspecified or whether the existing layout is replaced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, yet the description still adds information the schema cannot: the source ordering per preset (e.g. [background, pip] for PiP modes, [topLeft, topRight, bottomLeft, bottomRight] for grid) and the override precedence. This is exactly the value-add parameter semantics should provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Set up a Super Source layout') plus the key differentiator: it configures all 4 boxes at once, distinguishing it from the sibling atem_set_supersource_box which handles one box. An agent can select between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the preset-vs-custom choice and that 'boxes' overrides 'preset', which is real routing guidance. It does not name the sibling tools (set_supersource_box/art/border, get_supersource_state) as alternatives or exclusions, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_transition_positionSet Transition Position (T-Bar)AIdempotent
Manually set the transition position, like moving the T-bar. Useful for manual fades.
Args:
position (number): Position from 0.0 (preview) to 1.0 (program). 0 = fully on current program, 1 = fully transitioned to preview.
me (number, optional): Mix Effect bus number (default: 0 for ME1)
| Name | Required | Description | Default |
|---|---|---|---|
| me | No | Mix Effect bus (0=ME1, 1=ME2, etc.) | |
| position | Yes | Transition position (0.0 to 1.0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover key traits (readOnlyHint=false, destructiveHint=false, idempotentHint=true), but the description adds valuable context: it explains the manual nature of the operation ('like moving the T-bar') and the practical use case ('manual fades'), which helps the agent understand behavioral nuances beyond the structured hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by a concise 'Args' section. Every sentence earns its place by clarifying the tool's use and parameters without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (manual transition control), annotations provide safety and idempotency info, and the schema fully documents parameters. The description adds context on usage and behavior, but lacks output details (no output schema) and could more explicitly differentiate from siblings, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear parameter documentation in the schema. The description's 'Args' section repeats this information without adding significant meaning beyond the schema (e.g., it restates the position range and ME default). This meets the baseline of 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'set' and the resource 'transition position', with the parenthetical 'like moving the T-bar' providing a concrete analogy. It distinguishes from sibling tools like 'atem_auto_transition' (automatic) and 'atem_set_transition_rate' (speed) by emphasizing manual control for fades.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'Useful for manual fades', providing clear context for when to use this tool. However, it does not specify when not to use it or name alternatives among siblings (e.g., 'atem_auto_transition' for automated transitions), which prevents a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_transition_rateSet Transition RateAIdempotent
Set the transition duration/rate in frames for a specific transition type.
Args:
style (string): Which transition to set the rate for — "mix", "dip", "wipe", "dve", or "stinger"
rate (number): Duration in frames (e.g., 30 = 1 second at 30fps, 60 = 2 seconds)
me (number, optional): Mix Effect bus number (default: 0 for ME1)
| Name | Required | Description | Default |
|---|---|---|---|
| me | No | Mix Effect bus (0=ME1, 1=ME2, etc.) | |
| rate | Yes | Duration in frames | |
| style | Yes | Which transition type to configure |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-destructive, idempotent write operation (readOnlyHint=false, destructiveHint=false, idempotentHint=true). The description adds minimal behavioral context beyond this, such as clarifying the rate is in frames with examples (30fps=1 second), but doesn't mention side effects, error conditions, or confirmation of changes. With annotations covering the safety profile, a 3 is appropriate as the description adds some value but not rich behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by a clear, bulleted list of parameters with helpful examples. Every sentence earns its place with no redundant or vague language, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 parameters, 2 required), 100% schema coverage, and annotations providing safety context, the description is adequate but lacks output information (no output schema) and doesn't fully address usage context or error handling. It's complete enough for basic use but leaves gaps for robust agent operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents parameters. The description adds practical examples for the 'rate' parameter (e.g., '30 = 1 second at 30fps'), which clarifies semantics beyond the schema's technical definition. However, it doesn't explain the 'style' enum values or 'me' default implications in detail, keeping it from a perfect score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Set the transition duration/rate') and resource ('for a specific transition type'), distinguishing it from sibling tools like 'atem_set_transition_style' which configures style rather than rate. The verb 'Set' is precise and the scope is well-defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'atem_set_transition_style' or 'atem_auto_transition'. It lacks context about prerequisites (e.g., needing to be connected via 'atem_connect') or typical workflows, leaving the agent to infer usage from tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_transition_styleSet Transition StyleAIdempotent
Set the transition style (mix, dip, wipe, DVE, stinger) for auto transitions.
Args:
style (string): Transition type — "mix", "dip", "wipe", "dve", or "stinger"
me (number, optional): Mix Effect bus number (default: 0 for ME1)
| Name | Required | Description | Default |
|---|---|---|---|
| me | No | Mix Effect bus (0=ME1, 1=ME2, etc.) | |
| style | Yes | Transition style |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide critical behavioral hints (readOnlyHint=false, destructiveHint=false, idempotentHint=true), but the description adds valuable context by specifying this applies to 'auto transitions' and listing the five specific style options. This clarifies the tool's scope beyond what annotations alone convey, though it doesn't mention side effects like visual changes or timing considerations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly structured with a clear purpose statement followed by a concise Args section. Every sentence earns its place, with no redundant information. The two-sentence format efficiently communicates essential information without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, one optional), comprehensive annotations, and full schema coverage, the description provides adequate context. It clearly states what the tool does and lists parameter options, though it doesn't explain return values (no output schema exists) or provide deeper guidance about transition behavior. For a configuration tool with good structured data, this is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the input schema already fully documents both parameters (style with enum values, me with range and default). The description adds minimal value beyond the schema, merely restating the style options and default ME value without providing additional semantic context like what each transition style looks like or when to use specific ME values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Set the transition style') and resource ('for auto transitions'), with explicit enumeration of the five possible style values. It distinguishes this tool from siblings like 'atem_set_transition_position' and 'atem_set_transition_rate' by focusing specifically on style selection rather than position or rate adjustment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context ('for auto transitions') but doesn't explicitly state when to use this tool versus alternatives like 'atem_auto_transition' or 'atem_cut'. No guidance is provided on prerequisites, timing, or exclusions, leaving the agent to infer appropriate usage from the tool name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_usk_dveSet Upstream Key DVE SettingsAIdempotent
Set DVE (Digital Video Effects) properties for an upstream keyer — position, size, rotation, border, mask, shadow.
Use this for picture-in-picture overlays. First set the key type to DVE with atem_set_usk_type, then use this tool to position and size the DVE box.
All values are passed directly to the ATEM protocol (raw units):
sizeX, sizeY: 0 to 1.0 (fraction of full frame, e.g. 0.5 = half, 0.33 = third)
positionX: -1.0 to 1.0 (horizontal position, -1=left edge, 0=center, 1=right edge)
positionY: -1.0 to 1.0 (vertical position, -1=bottom, 0=center, 1=top)
rotation: 0-35999 (hundredths of degrees, e.g. 9000 = 90°)
crop: 0 to 1.0 (fraction of image to crop from each edge)
Args:
me (number, optional): Mix Effect bus (default: 0)
usk (number): Upstream keyer number (0-based)
sizeX (number, optional): Horizontal size 0-1.0
sizeY (number, optional): Vertical size 0-1.0
positionX (number, optional): Horizontal position -1.0 to 1.0
positionY (number, optional): Vertical position -1.0 to 1.0
rotation (number, optional): Rotation 0-35999 (hundredths of degrees)
borderEnabled (boolean, optional): Show border
borderOuterWidth (number, optional): Outer border width 0-1600
borderInnerWidth (number, optional): Inner border width 0-1600
borderHue (number, optional): Border hue 0-3599
borderSaturation (number, optional): Border saturation 0-1000
borderLuma (number, optional): Border luminance 0-1000
borderOpacity (number, optional): Border opacity 0-100
shadowEnabled (boolean, optional): Show drop shadow
maskEnabled (boolean, optional): Enable mask
maskTop (number, optional): Mask top 0-38000
maskBottom (number, optional): Mask bottom 0-38000
maskLeft (number, optional): Mask left 0-52000
maskRight (number, optional): Mask right 0-52000
Example — 3x2 grid element at top-left, 1/3 size: sizeX=0.33, sizeY=0.33, positionX=-0.33, positionY=0.25
| Name | Required | Description | Default |
|---|---|---|---|
| me | No | Mix Effect bus | |
| usk | Yes | Upstream keyer number (0-based) | |
| sizeX | No | Horizontal size (0-1.0, raw ATEM units) | |
| sizeY | No | Vertical size (0-1.0, raw ATEM units) | |
| maskTop | No | Mask top edge | |
| maskLeft | No | Mask left edge | |
| rotation | No | Rotation in hundredths of degrees | |
| borderHue | No | Border hue | |
| maskRight | No | Mask right edge | |
| positionX | No | X position (raw ATEM units) | |
| positionY | No | Y position (raw ATEM units) | |
| borderLuma | No | Border luminance | |
| maskBottom | No | Mask bottom edge | |
| maskEnabled | No | Enable mask | |
| borderEnabled | No | Show border | |
| borderOpacity | No | Border opacity | |
| shadowEnabled | No | Show drop shadow | |
| borderInnerWidth | No | Inner border width | |
| borderOuterWidth | No | Outer border width | |
| borderSaturation | No | Border saturation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnly=false, destructive=false, idempotent=true), and the description reinforces it by explaining values go straight to the ATEM protocol in raw units and by demonstrating ranges. It does not state that unspecified optional params are left untouched (partial-update semantics), which matters for a 20-param setter, but overall it adds real context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well front-loaded: purpose, then usage, then units, then example. The downside is the exhaustive 'Args:' block restating all 20 parameters that the 100%-covered schema already documents, which is pure duplication and significantly inflates length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 20-parameter mutation tool with no output schema, the description supplies units, ranges, an example, and the required prerequisite, which is close to sufficient. The remaining gap is merge behavior (what happens to parameters not passed) and the mask/atem_set_usk_mask overlap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description earns above it by decoding values the schema only labels 'raw ATEM units' — e.g. positionX -1=left, 0=center, 1=right, rotation in hundredths with a 9000=90° example, and a worked 1/3-size grid example. Minor noise: it documents a 'crop' parameter that does not exist in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Set DVE properties for an upstream keyer') and enumerates the effects affected (position, size, rotation, border, mask, shadow). It is clearly distinguishable from siblings like atem_set_usk_type and atem_set_usk_sources, which handle different facets of the same keyer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case ('picture-in-picture overlays') and an explicit prerequisite ('First set the key type to DVE with atem_set_usk_type'). However, it never explains why mask parameters live here when a sibling atem_set_usk_mask exists, leaving a routing ambiguity an agent will hit for mask-only edits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_usk_maskSet Upstream Keyer MaskAIdempotent
Set the screen-space mask (clip region) for an upstream keyer. This defines an absolute rectangle on the output frame — anything outside is hidden.
Use this to clip a DVE overlay to a specific region of the screen (e.g., one cell of a grid layout).
The coordinate system:
Left/Right: -16000 to +16000 (left edge to right edge of frame)
Top/Bottom: -9000 to +9000 (bottom edge to top edge of frame)
Default (full frame): maskLeft=-16000, maskRight=16000, maskTop=9000, maskBottom=-9000
Example — clip to left-third, top-half of frame: maskEnabled=true, maskLeft=-16000, maskRight=-5333, maskTop=9000, maskBottom=0
Args:
me (number, optional): Mix Effect bus (default: 0)
usk (number): Upstream keyer number (0-based)
maskEnabled (boolean, optional): Enable/disable the mask
maskTop (number, optional): Top edge (-9000 to 9000)
maskBottom (number, optional): Bottom edge (-9000 to 9000)
maskLeft (number, optional): Left edge (-16000 to 16000)
maskRight (number, optional): Right edge (-16000 to 16000)
| Name | Required | Description | Default |
|---|---|---|---|
| me | No | Mix Effect bus | |
| usk | Yes | Upstream keyer number (0-based) | |
| maskTop | No | Top edge of visible region | |
| maskLeft | No | Left edge of visible region | |
| maskRight | No | Right edge of visible region | |
| maskBottom | No | Bottom edge of visible region | |
| maskEnabled | No | Enable mask clipping |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the write/idempotent/non-destructive profile, and the description adds real context: the coordinate space is absolute screen space, outside the rectangle is hidden, and the default is full frame. It does not say whether omitted edge values are reset to default or left unchanged, nor how maskEnabled=false interacts with stored coordinates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose, use case, coordinate system, and example are front-loaded and earn their place. The trailing 'Args:' block restates every schema parameter description verbatim at 100% coverage, which is redundant bulk an agent does not need.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no output schema and annotations covering the safety profile, the description supplies everything needed to construct a correct call: ranges with frame-relative meaning, the full-frame default, and a concrete example. Return values are not needed since the call is idempotent and the effect is described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes beyond the schema by mapping values to frame edges ('left edge to right edge of frame'), stating the full-frame default set, and giving a worked example combination. It doesn't clarify what happens to edges left unspecified on a partial update, which is the remaining ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Set the screen-space mask (clip region) for an upstream keyer') and immediately defines what the mask is ('an absolute rectangle on the output frame'). This clearly separates it from siblings like atem_set_usk_dve or atem_set_usk_sources, which configure other aspects of the same keyer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this to clip a DVE overlay to a specific region of the screen (e.g., one cell of a grid layout)' gives a concrete use case and the intent behind the tool. It stops short of naming when NOT to use it or pointing to a specific alternative sibling (e.g., DVE position/scale vs. mask), so it lands at clear-context-without-exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_usk_on_airSet Upstream Key On AirAIdempotent
Put an upstream keyer on or off air on a specific ME bus. USKs are used for picture-in-picture, chroma key, luma key, DVE effects, etc.
Args:
me (number, optional): Mix Effect bus (default: 0 for ME1)
usk (number): Upstream keyer number (0-based, 0 = Key 1)
onAir (boolean): true to put on air, false to take off air
| Name | Required | Description | Default |
|---|---|---|---|
| me | No | Mix Effect bus (0=ME1) | |
| usk | Yes | Upstream keyer number (0-based) | |
| onAir | Yes | true = on air, false = off air |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide idempotentHint=true and destructiveHint=false, which the description doesn't contradict. The description adds valuable context about USK applications and the default ME bus, enhancing understanding beyond annotations. However, it doesn't mention rate limits, error conditions, or visual feedback mechanisms.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with a clear purpose statement followed by parameter details. The first sentence effectively communicates the core functionality. However, the parameter section could be more integrated rather than a separate 'Args' block, and some redundancy exists with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with good annotations (idempotent, non-destructive) and full parameter documentation, the description provides adequate context. It explains USK applications and the tool's role. The main gap is lack of output information (no output schema), but for a simple state-change operation, the description is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already documents all parameters thoroughly. The description's 'Args' section largely repeats schema information, adding only minor clarification about '0 = Key 1' for usk. This meets the baseline for high schema coverage without significant added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Put an upstream keyer on or off air') and the target resource ('on a specific ME bus'), with additional context about USK applications. It distinguishes from siblings like atem_set_dsk_on_air (downstream keyer) and atem_set_usk_sources (configuring sources rather than on-air state).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for controlling USK on-air states but doesn't explicitly state when to use this versus alternatives. It mentions USK applications (picture-in-picture, etc.) which provides some context, but lacks explicit guidance on prerequisites, timing, or comparisons to other transition/keying tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_usk_sourcesSet Upstream Key SourcesBIdempotent
Set the fill and/or cut sources for an upstream keyer.
Args:
me (number, optional): Mix Effect bus (default: 0 for ME1)
usk (number): Upstream keyer number (0-based)
fillSource (number, optional): Input to use as fill
cutSource (number, optional): Input to use as key/cut
| Name | Required | Description | Default |
|---|---|---|---|
| me | No | Mix Effect bus | |
| usk | Yes | Upstream keyer number (0-based) | |
| cutSource | No | Key/cut source input number | |
| fillSource | No | Fill source input number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a non-destructive, idempotent write operation (readOnlyHint=false, destructiveHint=false, idempotentHint=true). The description adds no behavioral context beyond this, such as rate limits, error conditions, or effects on other system states. With annotations covering core traits, the description meets a baseline but adds minimal extra value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in one sentence, followed by a structured 'Args' list. It avoids redundancy but could be more concise by integrating parameter details into the main text or omitting the schema-repetitive 'Args' section, as it doesn't add unique value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (4 parameters, no output schema), annotations provide safety and idempotency info, but the description lacks usage context, error handling, or examples. It's minimally adequate but leaves gaps in operational guidance, especially for a write tool with no output schema to clarify results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all parameters documented in the schema (e.g., 'me' as 'Mix Effect bus', 'usk' as 'Upstream keyer number'). The description's 'Args' section repeats this information without adding meaning, syntax examples, or constraints beyond the schema, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Set') and resource ('fill and/or cut sources for an upstream keyer'), specifying the exact action and target. It distinguishes from siblings like 'atem_set_usk_on_air' (which controls on-air state) and 'atem_set_dsk_sources' (which targets downstream keyers), providing precise differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an upstream keyer configured), exclusions, or comparisons to similar tools like 'atem_set_dsk_sources' for downstream keyers, leaving the agent without contextual usage cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_set_usk_typeSet Upstream Key TypeAIdempotent
Set the type of an upstream keyer (Luma, Chroma, Pattern, or DVE) and whether fly key is enabled.
Args:
me (number, optional): Mix Effect bus (default: 0 for ME1)
usk (number): Upstream keyer number (0-based, 0 = Key 1)
keyType (string): Key type — "luma", "chroma", "pattern", or "dve"
flyEnabled (boolean, optional): Enable fly key (required for DVE positioning)
For DVE picture-in-picture effects, set keyType="dve" and flyEnabled=true, then use atem_set_usk_dve to position/size.
| Name | Required | Description | Default |
|---|---|---|---|
| me | No | Mix Effect bus (0=ME1) | |
| usk | Yes | Upstream keyer number (0-based) | |
| keyType | Yes | Key type | |
| flyEnabled | No | Enable fly key (default: true for DVE, false otherwise) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a non-read-only, idempotent, non-destructive, closed-world mutation, so safety is covered. The description adds real behavioral context beyond that: fly must be enabled for DVE positioning, which is a functional dependency an agent would otherwise miss. It does not say whether switching key type resets existing sources or mask settings, so it stops short of 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The behavioral sentence is front-loaded and the DVE workflow line is high-value, but the entire 'Args:' block restates the input schema nearly verbatim for a tool with 100% schema description coverage, so a meaningful fraction of the text does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation tool with rich annotations and full schema coverage, the description covers purpose, valid values, the DVE dependency, and the follow-up call. Remaining gaps (whether existing key settings are reset on type change, error conditions) are minor given annotations carry the safety profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds value on two parameters: 'usk 0-based, 0 = Key 1' clarifies the indexing convention beyond the schema's bare 'Upstream keyer number (0-based)', and 'flyEnabled ... required for DVE positioning' explains why flyEnabled matters rather than just what it toggles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a specific verb ('Set the type') plus the resource ('upstream keyer') and enumerates the four valid key types, matching the enum exactly. This cleanly separates it from siblings like atem_set_usk_on_air, atem_set_usk_sources, and atem_set_usk_dve without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The final sentence gives explicit conditional guidance — use keyType="dve" with flyEnabled=true for picture-in-picture, then call atem_set_usk_dve to position/size — which routes the agent to the correct follow-up sibling. It lacks any 'when not to use' or prerequisite (e.g. connection state) guidance, which keeps it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_start_recordingStart RecordingAIdempotent
Start recording on the ATEM (requires USB storage connected to the switcher). Available on models with recording capability.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond annotations: it specifies hardware prerequisites (USB storage) and model limitations. Annotations already indicate this is a non-destructive, idempotent operation (readOnlyHint: false, destructiveHint: false, idempotentHint: true), but the description provides practical constraints not covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with two sentences that each earn their place: the first states the core action and prerequisite, the second adds model capability information. No wasted words, front-loaded with the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with comprehensive annotations, the description is mostly complete. It covers prerequisites and constraints well. The only minor gap is not explicitly mentioning what happens when recording is already active (though idempotentHint suggests it's safe to call repeatedly).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0 parameters and 100% schema description coverage, the baseline would be 4. The description appropriately doesn't discuss parameters since there are none, focusing instead on operational prerequisites.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Start recording') and the target resource ('on the ATEM'), distinguishing it from sibling tools like 'atem_stop_recording' and 'atem_start_streaming'. It provides precise scope by mentioning the required hardware (USB storage) and model capability constraints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: when USB storage is connected and the ATEM model has recording capability. However, it doesn't provide guidance on when NOT to use it or mention alternatives like 'atem_stop_recording' for stopping an ongoing recording.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_start_streamingStart StreamingAIdempotent
Start streaming on the ATEM (requires streaming to be configured in ATEM Software Control). Available on models with streaming capability.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a non-destructive, idempotent operation (readOnlyHint: false, destructiveHint: false, idempotentHint: true). The description adds valuable context beyond annotations by specifying prerequisites ('requires streaming to be configured') and hardware constraints ('available on models with streaming capability'), which are not covered by annotations. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with zero waste: the first states the core action and prerequisite, the second adds hardware constraint. Every sentence earns its place by providing essential context without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (simple action with prerequisites), no output schema, and rich annotations covering safety and idempotency, the description is mostly complete. It adds key context like configuration and hardware requirements. A minor gap is lack of explicit mention of idempotency or potential outcomes, but annotations cover this, making it adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0 parameters and 100% schema description coverage, the baseline is 4. The description appropriately adds no parameter details since none exist, focusing instead on prerequisites and constraints, which is sufficient for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Start streaming') and resource ('on the ATEM'), specifying it's for models with streaming capability. It distinguishes from the sibling 'atem_stop_streaming' by action, though not explicitly named. However, it doesn't fully differentiate from other control tools like 'atem_start_recording' beyond the resource scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage context by stating it 'requires streaming to be configured in ATEM Software Control' and is 'available on models with streaming capability', which helps determine when it's applicable. However, it lacks explicit guidance on when to use this versus alternatives like 'atem_stop_streaming' or other control tools, and no exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_stop_recordingStop RecordingAIdempotent
Stop recording on the ATEM.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false (write operation), destructiveHint=false (safe), and idempotentHint=true (safe to retry). The description adds context about what gets stopped (recording), which is valuable beyond annotations. It doesn't mention side effects like file saving or status changes, but annotations cover the safety profile well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero waste. Every word earns its place: 'Stop' (action), 'recording' (what), 'on the ATEM' (where). No unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 0-parameter tool with good annotations (idempotent, non-destructive), the description is reasonably complete. It states the action clearly. Without an output schema, it doesn't explain return values (e.g., success confirmation), but that's acceptable given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0 parameters and 100% schema description coverage, the baseline is 4. The description doesn't need to explain parameters since none exist, and it correctly reflects this by not mentioning any inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Stop recording on the ATEM' clearly states the specific action (stop recording) and target resource (ATEM). It distinguishes from siblings like 'atem_start_recording' and 'atem_stop_streaming' by focusing on recording specifically, not streaming or other operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (when recording is active), but doesn't explicitly state when to use this vs alternatives. It doesn't mention prerequisites like needing 'atem_start_recording' first or exclusions like not working if disconnected. However, the sibling list shows clear alternatives for starting/stopping recording and streaming.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
atem_stop_streamingStop StreamingAIdempotent
Stop streaming on the ATEM.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context beyond annotations: it specifies the action is to stop streaming, which implies it affects an active process. Annotations indicate it's not read-only, not open-world, idempotent, and not destructive, but the description clarifies the operational target (streaming), which is valuable for understanding its behavioral impact in the ATEM system.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise ('Stop streaming on the ATEM.'), consisting of a single, front-loaded sentence that directly states the purpose without any unnecessary words. Every part of the sentence earns its place by specifying the action and target.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no output schema) and rich annotations (covering safety and idempotency), the description is mostly complete. It clearly states what the tool does, but could slightly improve by mentioning idempotency or confirming no parameters are needed, though annotations already cover this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% description coverage, so no additional parameter information is needed. The description does not mention parameters, which is appropriate, but it could slightly enhance clarity by noting no parameters are required. Baseline is 4 for 0 parameters, as it adequately handles the lack of parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Stop streaming') and the target resource ('on the ATEM'), using a precise verb+resource combination. It effectively distinguishes this tool from sibling tools like 'atem_start_streaming' (which initiates streaming) and 'atem_stop_recording' (which stops recording rather than streaming).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying 'on the ATEM' and the action 'Stop streaming', suggesting it should be used when streaming is active and needs to be halted. However, it does not explicitly state when not to use it (e.g., if streaming is already stopped) or name alternatives, though the sibling tool 'atem_start_streaming' provides a clear counterpart.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
66 tool updates
v1.5.0- First observed
atem_auto_dsk - First observed
atem_auto_switch_off - First observed
atem_auto_switch_on - First observed
atem_auto_transition - First observed
atem_connect - First observed
atem_cut - First observed
atem_cut_to_active_speaker - First observed
atem_delete_look - First observed
atem_disconnect - First observed
atem_edl_marker - First observed
atem_edl_start - First observed
atem_edl_status - First observed
atem_edl_stop - First observed
atem_fade_to_black - First observed
atem_get_audio_state - First observed
atem_get_auto_switch_status - First observed
atem_get_aux_source - First observed
atem_get_fairlight_eq_state - First observed
atem_get_recording_status - First observed
atem_get_status - First observed
atem_get_supersource_state - First observed
atem_get_transition_state - First observed
atem_get_usk_state - First observed
atem_go_gallery - First observed
atem_list_looks - First observed
atem_list_macros - First observed
atem_load_look - First observed
atem_macro_continue - First observed
atem_macro_run - First observed
atem_macro_stop - First observed
atem_preview_and_auto - First observed
atem_reset_fairlight_dynamics - First observed
atem_reset_fairlight_eq - First observed
atem_save_look - First observed
atem_set_audio_master_output - First observed
atem_set_audio_mixer_input - First observed
atem_set_aux_source - First observed
atem_set_dsk_on_air - First observed
atem_set_dsk_sources - First observed
atem_set_fairlight_compressor - First observed
atem_set_fairlight_eq - First observed
atem_set_fairlight_eq_preset - First observed
atem_set_fairlight_gate - First observed
atem_set_fairlight_limiter - First observed
atem_set_fairlight_makeup_gain - First observed
atem_set_fairlight_master_compressor - First observed
atem_set_fairlight_master_eq - First observed
atem_set_fairlight_master_limiter - First observed
atem_set_preview - First observed
atem_set_program - First observed
atem_set_supersource_art - First observed
atem_set_supersource_border - First observed
atem_set_supersource_box - First observed
atem_set_supersource_layout - First observed
atem_set_transition_position - First observed
atem_set_transition_rate - First observed
atem_set_transition_style - First observed
atem_set_usk_dve - First observed
atem_set_usk_mask - First observed
atem_set_usk_on_air - First observed
atem_set_usk_sources - First observed
atem_set_usk_type - First observed
atem_start_recording - First observed
atem_start_streaming - First observed
atem_stop_recording - First observed
atem_stop_streaming
TDQS
Scored across 66 tools
Tools are organized into clearly separated domains (switching, transitions, Super Source, keys, audio, macros, EDL), and most boundaries are sharp. A few names share the 'auto' prefix (atem_auto_transition, atem_auto_dsk, atem_auto_switch_on) and there is mild overlap between atem_preview_and_auto/atem_auto_transition and atem_set_supersource_box/atem_set_supersource_layout, but descriptions resolve the confusion.
Nearly all tools follow an atem_verb_noun pattern (atem_set_program, atem_get_status, atem_start_recording) with consistent snake_case. Minor deviations exist in ordering for subgroups (atem_edl_start, atem_macro_run, atem_auto_switch_on, atem_fade_to_black), but each subgroup is internally consistent and readable.
66 tools is heavy, and an agent must scan a large surface to find the right one. However, the domain (full ATEM switcher control including Fairlight audio, keys, Super Source, and EDL export) is genuinely broad and each tool maps to a distinct hardware operation, so the count is borderline rather than bloated.
Coverage is strong: connection, program/preview switching, transitions, recording/streaming, Super Source (boxes, art, borders, layouts, saved looks), auto-switching, aux, DSK, USK, macros, and deep Fairlight audio control. Minor gaps exist (no DSK state getter, no media pool/still upload, no camera color-correction tools), but core workflows have no dead ends.
Related MCP Connectors
Direct AI video, image, music and storyboard production from any MCP client.
Remote MCP server for audio stem separation, denoise, reverb, and MIDI export.
AI video editor for agents and humans: timeline, captions, color, audio and generation as MCP tools.
Autonomous AI video editor over MCP: viral clips, captions, reframe, chroma key, MP4 export
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables natural language control of Blackmagic ATEM video switchers via the Model Context Protocol. It allows users to manage camera switching, transitions, audio mixing, macros, and streaming operations through AI assistants.329MIT
- AlicenseNot gradedqualityCmaintenanceComprehensive MCP server for DaVinci Resolve with 295+ tools to control projects, timelines, editing, color grading, rendering, and more via natural language.103 PyPI7MIT
- AlicenseNot gradedqualityNot gradedmaintenanceEnables AI assistants to control DaVinci Resolve Studio via MCP, providing full scripting API coverage plus workflow helpers for editing, media organization, rendering, grading, and more.6,903 npmMIT
- AlicenseAqualityBmaintenanceEnables AI assistants to control DaVinci Resolve (Free and Studio) through 215 MCP tools covering the full Resolve scripting API, including projects, timelines, media, Fusion, color, and rendering.154 PyPI1MIT