Skip to main content
Glama
drohi-r
by drohi-r

Companion MCP

An MCP server for Bitfocus Companion. Exposes 53 tools covering verified button control, styling, page discovery, runtime summaries, inventory diffing, checkpointed rollback/restore workflows, preset management, variable management, and batch show programming — so AI assistants can operate Stream Deck surfaces and other Companion-connected devices through Companion's current APIs.

Built for live production. Pairs with grandMA2 MCP, Resolume MCP, MADRIX MCP, and Beyond MCP for full AI-driven show control.

The repo also includes a lightweight local browser UI for humans who want the same verified flows without manually issuing MCP tool calls.

Why this exists

Companion is the physical button layer that ties a live production stack together. An operator presses a Stream Deck button and it fires a grandMA2 cue, triggers a Resolume clip, or starts a laser sequence. But programming those buttons is manual — you click through the Companion UI, one button at a time, configuring actions, labels, and colors.

This MCP server lets an AI do that work. It can read your current button layout, preview changes before applying them, and batch-program entire pages in seconds. Combined with MA2 Agent and Resolume MCP, an AI assistant can program the entire show control surface from a single conversation.

Related MCP server: GMA2 MCP

Quick start

git clone https://github.com/drohi-r/companion-mcp && cd companion-mcp
uv sync
uv run python -m companion_mcp

Browser UI

Run the local operator UI:

uv run companion-mcp-ui

Then open:

http://127.0.0.1:8088

The UI is intentionally local-first. It sits on top of the same backend logic as the MCP tools, so verified writes, snapshots, presets, and rollback behave the same in the browser as they do through MCP.

Make sure Companion is running on the target host and port. Current Companion builds use:

  • HTTP endpoints for button actions and style writes

  • websocket tRPC at /trpc for richer reads, discovery, preview, and variable inspection

Configuration

Variable

Default

Description

COMPANION_HOST

127.0.0.1

Companion instance IP

COMPANION_PORT

8000

Companion HTTP and websocket port

COMPANION_TIMEOUT_S

10.0

HTTP request timeout in seconds

COMPANION_ALLOWED_HOSTS

127.0.0.1,localhost,::1

Comma-separated allowlist for target hosts. Set * to allow any.

COMPANION_WRITE_ENABLED

1

Set to 0 for read-only mode

COMPANION_TRANSPORT

stdio

MCP transport (stdio, sse, streamable-http)

COMPANION_UI_HOST

127.0.0.1

Browser UI bind address

COMPANION_UI_PORT

8088

Browser UI port

Architecture

graph TD
    A["Companion MCP Server<br/><code>companion_mcp</code><br/>53 tools · safety gate"] --> B
    B["HTTP Client<br/>Button actions · style writes"] --> D
    A --> C
    C["WebSocket tRPC Client<br/>Discovery · preview · variables"] --> D
    D["Bitfocus Companion<br/>HTTP + WebSocket at /trpc"]

    E["Browser UI<br/><code>companion-mcp-ui</code><br/>Local operator console"] -.-> A
    F["Snapshot Engine<br/>Inventory · presets · rollback"] -.-> A
    G["Verification Layer<br/>Render polling · diff · transactions"] -.-> A

    style A fill:#1a1a2e,stroke:#14B8A6,color:#fff
    style B fill:#1a1a2e,stroke:#14B8A6,color:#fff
    style C fill:#1a1a2e,stroke:#14B8A6,color:#fff
    style D fill:#1a1a2e,stroke:#0f3460,color:#fff
    style E fill:#0f3460,stroke:#0f3460,color:#fff
    style F fill:#0f3460,stroke:#0f3460,color:#fff
    style G fill:#0f3460,stroke:#0f3460,color:#fff

Tools

Discovery and reads

Safe, read-only tools for understanding the current state of Companion.

Tool

What it does

get_server_config

Return current MCP server configuration and safety settings

health_check

Probe Companion API reachability and return status

list_surfaces

List connected control surfaces (Stream Deck, etc.)

get_button_info

Read the current control and preview state for a specific button

get_button_runtime_summary

Return a compact operator-oriented runtime summary for a button

get_page_grid

Read a rectangular grid of buttons from a page

snapshot_page_inventory

Export a page region with concise button summaries, style, feedback, and preview hashes

save_page_inventory_snapshot

Save a named page inventory checkpoint to disk

load_page_inventory_snapshot

Load a saved page inventory checkpoint from disk

list_page_inventory_snapshots

List saved page inventory checkpoint files

delete_page_inventory_snapshot

Delete a saved page inventory checkpoint file

diff_page_inventory

Compare two page inventory snapshots and summarize changed buttons

preview_restore_page_style_from_inventory

Turn a saved inventory snapshot into a restore plan without writing to Companion

preview_restore_page_style_from_snapshot

Preview a restore plan from a named saved snapshot

save_page_style_preset

Save current page style entries as a reusable preset

load_page_style_preset

Load a saved page style preset

list_page_style_presets

List saved page style presets

delete_page_style_preset

Delete a saved page style preset

preview_apply_page_style_preset

Preview applying a saved page style preset with optional offsets

find_buttons

Search a page region by visible text, control id, control type, connection id, or definition id

export_page_layout

Export a page region as a reusable layout payload

get_custom_variable

Read a Companion custom variable

get_module_variable

Read a variable from a Companion module connection

snapshot_custom_variables

Read a named list of custom variables in one call

verify_button_render_change

Compare a current button preview hash to a previous one

Preview (plan before you write)

Validate and preview operations without touching Companion. Use these to inspect what a batch operation will do before committing.

Tool

What it does

preview_page_style

Validate and preview a page-style batch

preview_label_button_grid

Resolve a label grid into coordinates

preview_button_template

Place a reusable template at an origin and preview the result

Button actions

Require COMPANION_WRITE_ENABLED=1 (default).

Tool

What it does

press_button

Press and release a button

press_button_verified

Press a button and poll for visible/runtime state change

hold_button

Press and hold (down actions only)

release_button

Release a held button (up actions)

rotate_left

Rotate encoder left

rotate_right

Rotate encoder right

set_step

Set the current action step

Button styling

Tool

What it does

set_button_text

Change button display text

set_button_color

Change text and/or background color (6-digit hex)

set_button_style

Set multiple style properties at once

set_button_style_verified

Apply style changes and poll until the render catches up or the timeout expires

Batch operations

Tool

What it does

press_button_sequence

Press multiple buttons in order with configurable delay

set_page_style

Batch-set style on multiple buttons on a page

set_page_style_verified

Batch-set styles on a page and return per-button verification plus an inventory diff

restore_page_style_from_inventory

Restore button styles from a previously captured page inventory

restore_selected_page_style_from_inventory

Restore only selected coordinates from an inventory snapshot

restore_page_style_from_snapshot

Restore styles from a named saved snapshot

apply_page_style_transaction

Save a rollback checkpoint, apply verified styles, and return rollback metadata

rollback_page_style_transaction

Roll back a named transaction snapshot

apply_page_style_preset

Apply a saved page style preset with optional offsets

label_button_grid

Label a grid of buttons from a flat list of names

apply_button_template

Apply a reusable button template at a page origin

Variables and system

Tool

What it does

set_custom_variable

Write a Companion custom variable

rescan_surfaces

Rescan connected USB surfaces

press_bank_button

Legacy bank API (deprecated, still works)

Claude Desktop

{
  "mcpServers": {
    "companion": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/companion-mcp", "python", "-m", "companion_mcp"],
      "env": {
        "COMPANION_HOST": "127.0.0.1",
        "COMPANION_PORT": "8000"
      }
    }
  }
}

VS Code / Cursor

{
  "servers": {
    "companion": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/companion-mcp", "python", "-m", "companion_mcp"],
      "env": {
        "COMPANION_HOST": "127.0.0.1",
        "COMPANION_PORT": "8000"
      }
    }
  }
}

Codex

Create a codex.json MCP config file:

{
  "mcpServers": {
    "companion": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/companion-mcp", "python", "-m", "companion_mcp"],
      "env": {
        "COMPANION_HOST": "127.0.0.1",
        "COMPANION_PORT": "8000"
      }
    }
  }
}

Then run Codex with:

codex --mcp-config codex.json

Production safety

This server is designed for live show environments where accidental writes can disrupt a running production.

  • Host allowlisting — only 127.0.0.1, localhost, and ::1 are permitted by default. Add LAN hosts explicitly via COMPANION_ALLOWED_HOSTS.

  • Write gating — set COMPANION_WRITE_ENABLED=0 to block all write operations. Read and preview tools remain available.

  • Preview before apply — every batch operation has a corresponding preview tool that validates inputs and shows exactly what will change, without touching Companion.

  • Verified writes — prefer press_button_verified and set_button_style_verified when you care about actual visible or runtime state changes, not just HTTP acceptance.

  • Snapshot and diff workflow — use snapshot_page_inventory before and after batch changes, or let set_page_style_verified produce an inventory diff automatically.

  • Rollback path — capture a page with snapshot_page_inventory or save_page_inventory_snapshot, inspect the restore plan with preview_restore_page_style_from_inventory or preview_restore_page_style_from_snapshot, then use the matching restore tool to roll styles back cleanly.

  • Transaction flowapply_page_style_transaction creates a named rollback checkpoint before it writes. rollback_page_style_transaction restores from that named snapshot.

  • Preset workflow — save reusable page styles with save_page_style_preset, inspect with preview_apply_page_style_preset, and deploy with apply_page_style_preset.

  • Input validation — page, row, column, color hex, delay bounds, and template structure are all validated before any API call is made. Invalid inputs return structured JSON errors, never raw exceptions.

  • Error isolation — all tools are wrapped in _handle_errors. Network failures, JSON parse errors, and validation failures return {"ok": false, "error": "...", "blocked": true} instead of crashing the MCP session.

Live behavior notes

  • A successful HTTP write does not always mean the button visibly changed immediately.

  • Current Companion builds can update stored style state first, then repaint the preview a short time later.

  • set_button_style_verified and press_button_verified include bounded polling so the MCP can distinguish:

    • write accepted but nothing observable changed

    • write accepted and the preview changed after a short delay

    • write accepted and style state changed, but visible render still did not change

Why the UI helps

The MCP backend is already the real product. The UI does not replace it; it makes it faster and safer for humans:

  • click buttons in a page grid instead of remembering page,row,column

  • inspect preview, style, runtime summary, and the last verified response in one place

  • save and browse snapshots and presets without opening JSON files

  • run verified style changes and transaction rollback from a browser during show prep

  • hand the system to an operator who is not going to type MCP calls by hand

Development

uv sync
uv run python -m pytest -v

License

Apache 2.0

Available Tools

53 tools
apply_button_templateC

Apply a reusable button template at an origin on a page.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
template_jsonYes
origin_rowNo
origin_columnNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior1/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only states the action without revealing side effects, permissions, idempotency, or overwrite behavior. This is insufficient for an AI agent to understand the consequences of invocation.

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

Conciseness3/5

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

The description is a single sentence, which is concise, but it lacks structure to convey necessary information. It is not overly verbose, but the trade-off results in under-specification.

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

Completeness1/5

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

Given the tool has 4 parameters with no schema descriptions and an output schema (present but not described), the description fails to provide a complete picture. It does not explain the output, the template_json format, or any constraints, making it inadequate for an AI agent.

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

Parameters1/5

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

The input schema has 0% description coverage, and the description adds no meaning beyond parameter names. It mentions 'origin' but does not clarify that origin_row and origin_column define the location. No details on template_json format are provided, leaving the agent to guess.

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

Purpose5/5

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

The description clearly states the action: 'Apply a reusable button template at an origin on a page.' The verb 'apply' and resource 'button template' are specific, and the tool is distinguished from siblings like 'preview_button_template' (preview) and 'apply_page_style_preset' (style).

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

Usage Guidelines2/5

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

No usage guidelines are provided. The description does not specify when to use this tool versus alternatives, such as 'preview_button_template' for previewing. There is no mention of prerequisites, limitations, or when not to use it.

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

apply_page_style_presetC

Apply a saved page style preset with optional page override and coordinate offsets.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
pageNo
origin_rowNo
origin_columnNo
wait_msNo
poll_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description bears full responsibility for behavioral disclosure. It mentions 'optional page override and coordinate offsets' but omits important traits like whether the operation is destructive, if it requires a transaction, or what happens to existing styles.

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

Conciseness5/5

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

The description is a single, efficient sentence that communicates the core action without redundancy or wasted words. Perfect front-loading.

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

Completeness2/5

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

Given 6 parameters, an output schema, and sibling tools, the description is too minimal. It does not explain return values (despite output schema existing), timing parameters, or what constitutes a 'preset'. More context is needed for a complete understanding.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It partially explains 'page' and coordinate offsets but does not clarify 'name' (what is a preset name?), 'wait_ms', or 'poll_ms'. The meaning added is insufficient for the 6 parameters.

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

Purpose4/5

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

The description clearly states the verb 'Apply' and resource 'saved page style preset', and hints at optional overrides. However, it does not explicitly distinguish from similar sibling tools like 'apply_page_style_transaction' or 'preview_apply_page_style_preset'.

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

Usage Guidelines2/5

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 such as 'load_page_style_preset' or 'apply_page_style_transaction'. The description only states what the tool does, not when it should be chosen.

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

apply_page_style_transactionC

Save a rollback checkpoint, apply verified page style changes, and return the checkpoint metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
snapshot_nameYes
pageYes
buttons_jsonYes
rowsNo
columnsNo
include_emptyNo
wait_msNo
poll_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description must disclose all behavioral traits. It mentions checkpoint saving and rollback capability but lacks details on side effects, atomicity, failure modes, or which parameters control behavior.

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

Conciseness4/5

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

The description is a single concise sentence that front-loads the key actions. It is not verbose, but the brevity sacrifices some necessary detail.

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

Completeness2/5

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

Given the tool's complexity (8 parameters, transaction semantics, output schema), the description is incomplete. It omits what 'verified' means, the buttons_json format, checkpoint metadata structure, and the role of optional parameters.

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

Parameters1/5

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

Schema description coverage is 0%, yet the description only implicitly references snapshot_name, page, and buttons_json. It does not explain rows, columns, include_empty, wait_ms, or poll_ms, leaving the agent uninformed about crucial parameters.

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

Purpose4/5

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

The description clearly states the tool saves a rollback checkpoint, applies verified page style changes, and returns checkpoint metadata, indicating a transactional operation. This differentiates it from siblings like apply_page_style_preset, but does not explain what 'verified' means.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as apply_page_style_preset or set_page_style_verified. No prerequisites or context provided.

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

delete_page_inventory_snapshotC

Delete a saved page inventory snapshot file.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior1/5

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

With no annotations, the description carries full burden but provides only the basic action. It does not disclose if deletion is permanent, requires confirmation, or what happens to related data.

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

Conciseness4/5

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

Single sentence is concise and front-loaded, but lacks any structure or additional details that could be helpful without being verbose.

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

Completeness2/5

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

Despite low complexity and an output schema existing (not shown), the description does not explain return behavior, prerequisites, or error conditions. Incomplete for safe agent invocation.

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

Parameters1/5

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

Schema description coverage is 0% and the description adds no meaning to the 'name' parameter beyond its existence. The parameter is left entirely unexplained.

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

Purpose5/5

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

Description clearly states the action (delete) and the resource (saved page inventory snapshot file), distinguishing it from sibling tools like save, list, and load.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, such as when to delete versus archive or when deletion is appropriate. No context about prerequisites or side effects.

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

delete_page_style_presetC

Delete a saved page style preset file.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description must cover behavioral traits. It only states 'delete' without discussing irreversibility, side effects, permissions, or failure modes. Minimal disclosure.

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

Conciseness4/5

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

The description is a single concise sentence with no waste. However, it could be slightly more informative without losing conciseness.

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

Completeness2/5

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

Although the tool has a simple operation with one parameter, the description lacks guidance on behavior (e.g., what happens if preset is missing, if output indicates success). Annotations are absent, and the output schema is not described.

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

Parameters2/5

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

The only parameter 'name' has a 0% schema description coverage, and the tool description adds no context about what the name represents (e.g., format, path, or case sensitivity). The description fails to compensate.

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

Purpose5/5

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

The description clearly states the verb 'delete' and the resource 'saved page style preset file'. It is specific and distinct from sibling tools like delete_page_inventory_snapshot.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives, such as prerequisites or whether the preset must exist. The description only implies usage through the verb.

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

diff_page_inventoryC

Compare two page inventory snapshots and summarize added, removed, and changed buttons.

ParametersJSON Schema
NameRequiredDescriptionDefault
before_inventory_jsonYes
after_inventory_jsonYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so description must disclose behavioral traits. It does not mention read-only nature, side effects, auth needs, or rate limits. Only states 'compare' and 'summarize' but not whether tool is idempotent or non-destructive.

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

Conciseness4/5

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

Single sentence, front-loaded with verb and resource. Very concise, but could be more structured to include output details or prerequisite info.

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

Completeness2/5

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

With 2 string parameters and no annotations, description lacks prerequisites (snapshots must exist), format expectations, and behavioral context. Output schema exists but return values aren't explained here.

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

Parameters2/5

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

Schema has 0% description coverage. Description does not elaborate on the format or expected structure of the inventory JSON parameters, only stating 'compare two page inventory snapshots'. Does not add meaning beyond parameter names.

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

Purpose5/5

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

Description clearly states the action 'compare two page inventory snapshots' and the output 'summarize added, removed, and changed buttons'. It distinguishes from siblings like snapshot_page_inventory which creates snapshots.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. Among many sibling tools for inventory and page style, the description does not provide context or exclusions.

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

export_page_layoutC

Export a page region as a reusable layout payload.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
rowsNo
columnsNo
include_emptyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description must disclose behavioral traits. It does not state whether the operation is read-only, modifies state, requires permissions, or has side effects. The term 'export' implies data extraction, but this is not confirmed.

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

Conciseness4/5

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

The description is a single, well-formed sentence that communicates the core purpose efficiently. It is front-loaded and wastes no words, though it could benefit from slight expansion without losing conciseness.

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

Completeness2/5

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

Despite having an output schema, the description does not explain the output format (e.g., JSON structure, file type). It also omits parameter details and usage scenarios, leaving the agent with significant ambiguity for a 4-parameter tool with no param descriptions.

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

Parameters2/5

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

Schema description coverage is 0%, yet the description adds minimal parameter context. 'Page region' hints at rows and columns, but does not explain how they define the region, the meaning of include_empty, or the role of the page parameter beyond being required.

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

Purpose5/5

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

The description clearly states the action ('export'), resource ('page region'), and outcome ('reusable layout payload'). It is specific and distinguishes from sibling tools focused on applying, previewing, or saving presets/snapshots.

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

Usage Guidelines2/5

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 save_page_style_preset or preview_page_style. The description lacks context on prerequisites, typical use cases, or exclusions.

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

find_buttonsC

Find buttons by text, control id, control type, or integration metadata within a page region.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
pageNo
rowsNo
columnsNo
include_emptyNo
control_typeNo
connection_idNo
definition_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must disclose all behavioral traits. It only mentions the basic purpose and does not clarify if the tool is read-only, what side effects exist, or how 'page region' is defined. No mention of authentication 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.

Conciseness4/5

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

The description is a single sentence with no wasted words. It is concise and to the point, though it could benefit from slightly more detail without losing brevity.

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

Completeness2/5

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

Given 8 parameters, no annotations, and many sibling tools, the description is too minimal. It does not explain the output (even though an output schema exists), how to use parameters together, or the meaning of 'page region'. The description leaves significant gaps for a tool of this complexity.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It mentions filters like text, control id, control type, and integration metadata, but does not explain how they map to the schema parameters (e.g., query, control_type, connection_id, definition_id). It also references 'page region' but does not clarify the roles of rows and columns.

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

Purpose5/5

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

The description clearly states the verb 'Find', the resource 'buttons', and the filters (text, control id, control type, integration metadata within a page region). It is specific and distinct from sibling tools like press_button or get_button_info.

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

Usage Guidelines2/5

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, when not to use it, or any prerequisites. There is no mention of expected context or exclusions.

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

get_button_infoB

Fetch the current control state and rendered preview metadata for a Companion button location.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
rowYes
columnYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description bears full burden for behavioral disclosure. It implies read-only via 'Fetch' but does not explicitly state safety, side-effects, permissions, or rate limits. Insufficient for a tool with no annotations.

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

Conciseness5/5

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

Single sentence, 14 words, front-loaded with verb. Every word is meaningful with no fluff.

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

Completeness3/5

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

Output schema exists, so return values don't need description. However, for a tool with three undocumented required parameters, the description provides minimal parameter context. Adequate for a simple fetch tool but incomplete alongside many siblings.

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

Parameters2/5

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

Schema description coverage is 0%, leaving the description to explain the three required integer parameters. It only vaguely references 'a Companion button location' without mapping to page, row, column. Does not add meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the verb 'Fetch' and the resource 'current control state and rendered preview metadata' for a specific 'Companion button location'. It distinguishes this tool from sibling tools that perform mutations or other functions.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'get_button_runtime_summary' or 'press_button'. The description lacks context for appropriate usage scenarios.

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

get_button_runtime_summaryC

Return a compact runtime-oriented summary for a button.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
rowYes
columnYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, and the description only states 'Return a compact runtime-oriented summary', which implies a read operation but does not disclose any behavioral traits such as side effects, authentication requirements, or rate limits. The agent receives minimal transparency about the tool's behavior.

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

Conciseness3/5

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

The description is a single sentence of 9 words, making it very concise. However, conciseness comes at the expense of completeness, as critical information (e.g., parameter context, sibling differentiation) is omitted. It is appropriately front-loaded but lacks substance.

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

Completeness2/5

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

Given the presence of an output schema (not shown), the description could rely on that for return value details, but it still fails to provide enough context for the agent to decide when to invoke this tool. The three parameters are unexplained, and there is no differentiation from similar tools. The description is incomplete for a tool with no annotations and no parameter descriptions.

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

Parameters1/5

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

The input schema has three required parameters (page, row, column) with no descriptions, and the schema description coverage is 0%. The description does not add any meaning beyond the parameter names; it does not explain what these coordinates represent or their expected format, leaving the agent without sufficient guidance to correctly provide values.

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

Purpose4/5

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

The description clearly states it returns a 'compact runtime-oriented summary for a button', indicating a read operation providing a specific type of information. However, it does not distinguish itself from the sibling tool 'get_button_info', which likely provides a different kind of button information, leading to potential confusion.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternative sibling tools like 'get_button_info' or 'press_button'. The description lacks any context about prerequisites or typical scenarios, leaving the agent to infer usage without support.

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

get_custom_variableC

Get the value of a Companion custom variable.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided; description does not disclose behavior on missing variables, return format, or any side effects beyond being a read operation.

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

Conciseness3/5

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

Single sentence is concise but lacks necessary details; could be improved with parameter description while remaining brief.

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

Completeness2/5

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

Despite having an output schema, the description omits error handling, parameter details, and usage context, making it insufficient for a one-parameter tool.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain the 'name' parameter's meaning, format, or constraints.

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

Purpose5/5

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

Description clearly states verb 'get' and resource 'value of a Companion custom variable', distinguishing it from siblings like set_custom_variable and snapshot_custom_variables.

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

Usage Guidelines2/5

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

No guidance on when to use this vs alternatives, no prerequisites or exclusions mentioned.

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

get_module_variableC

Get a module variable value from a named Companion connection.

ParametersJSON Schema
NameRequiredDescriptionDefault
connectionYes
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are present, and the description does not disclose behavioral traits such as read-only nature, authentication requirements, or error handling. The tool's safety profile is unclear.

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

Conciseness3/5

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

The description is a single sentence, which is concise but lacks enough detail to be fully informative. It is not verbose, but the brevity sacrifices clarity.

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

Completeness3/5

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

The tool is simple with two required parameters, and an output schema is present. However, the description lacks context about what a module variable is or what the output contains, relying on the schema for completeness.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not elaborate on the parameters 'connection' or 'name'. The schema only lists them as strings without further explanation, leaving their meaning ambiguous.

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

Purpose4/5

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

The description clearly states the action (get) and resource (module variable from a named Companion connection). It is specific and informative, though it does not differentiate from sibling tools like 'get_custom_variable'.

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

Usage Guidelines2/5

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. The description does not mention prerequisites, exclusions, or typical use cases.

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

get_page_gridB

Read a rectangular grid of button payloads for a page.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
rowsNo
columnsNo
include_emptyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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

Without annotations, the description implies a non-destructive read operation via the word 'Read', but does not explicitly confirm lack of side effects or mention any behavioral traits (e.g., rate limits, data consistency). It is adequate but could be more explicit.

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

Conciseness5/5

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

The description is a single sentence with no wasted words. It is front-loaded with the purpose and easily parsed.

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

Completeness2/5

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

Despite the presence of an output schema, the description fails to provide context for the four input parameters. Given the low schema coverage and numerous sibling tools, the description is insufficient for complete understanding.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain any of the four parameters (page, rows, columns, include_empty). The only hint is 'for a page', which weakly relates to the 'page' parameter, but rows, columns, and include_empty remain undocumented.

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

Purpose5/5

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

The description clearly states the verb 'Read' and the resource 'rectangular grid of button payloads' with context 'for a page'. It distinguishes itself from sibling tools like press_button or get_button_info by focusing on reading a grid layout.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives. There is no mention of prerequisites, when not to use, or comparisons with sibling tools, leaving the agent to infer usage context.

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

get_server_configA

Return the current Companion MCP server configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. 'Return' clearly indicates a read-only operation with no side effects, which is adequate for a simple getter. However, it does not disclose behavior under error conditions or auth requirements, though these are less critical for a parameterless query.

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

Conciseness5/5

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

The description is a single, concise sentence that immediately conveys the tool's purpose. No extraneous words. Perfectly front-loaded.

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

Completeness4/5

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

For a zero-parameter tool with an output schema (though not shown), the description is sufficiently complete. It does not detail the configuration contents, but the output schema likely does. Lacks context on usage scenarios, but acceptable for a simple getter.

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

Parameters4/5

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

The input schema has zero parameters, and schema coverage is 100%. Baseline for 0 parameters is 4. The description adds no param info because none exist; thus, no deduction needed.

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

Purpose5/5

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

The description clearly states the verb 'Return' and the resource 'Companion MCP server configuration'. Among sibling tools (many for buttons, pages, etc.), this one is distinct in retrieving server-level config, making its purpose unambiguous.

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

Usage Guidelines3/5

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

The description does not provide explicit guidance on when to use this tool versus alternatives. While the use case is implied, there is no mention of prerequisites, when it should be called, or exclusions. Score reflects adequate but not exemplary guidance.

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

health_checkA

Probe Companion reachability and return API status details.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must disclose behavior. The phrase 'probe reachability' implies a read-only, non-destructive action, but it does not explicitly state that no state changes occur or mention any side effects. Adequate but minimal.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the core purpose. No wasted words.

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

Completeness4/5

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

Given the simplicity (no parameters, output schema exists), the description is fairly complete. However, it lacks context about when to use it among many sibling tools, but the health check is self-explanatory.

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

Parameters4/5

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

The tool has zero parameters and 100% schema description coverage. The description does not need to add parameter details. Baseline for 0 params is 4.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Probe Companion reachability and return API status details.' It uses a specific verb (probe) and resource (Companion), and the function is distinct from sibling tools.

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

Usage Guidelines3/5

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

No usage guidelines are provided. The description does not specify when to use this tool versus alternatives, nor does it mention prerequisites or context. While the purpose is clear, guidance is absent.

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

hold_buttonA

Press and hold a button (runs down actions only). Use release_button to let go.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
rowYes
columnYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It mentions 'runs down actions only' implying it's a partial action (no release), but lacks details on side effects, permissions, or state changes. Adequate but not thorough.

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

Conciseness5/5

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

Two short sentences, directly front-loaded with main action, no fluff.

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

Completeness2/5

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

Despite having no output schema, the description does not explain what the tool returns or what happens after holding. Missing behavioral completeness for a simple action tool.

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

Parameters1/5

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

Schema coverage is 0% and description does not explain the three parameters (page, row, column). No additional meaning added beyond the schema names.

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

Purpose5/5

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

Description clearly states the action: press and hold a button, and specifies it runs down actions only. It also distinguishes from siblings like release_button, making purpose unambiguous.

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

Usage Guidelines4/5

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

Explicitly tells when to use this tool (press and hold) and when to use release_button to let go. Could provide more context on why not to use other press variants, but it's sufficient.

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

label_button_gridA

Label a grid of buttons from a flat list of names.

Fills left-to-right, top-to-bottom. Empty strings skip that position. labels_json: JSON array of strings, e.g. ["GO", "STOP", "", "BLACKOUT"] columns: buttons per row (default 8, use 5 for standard Stream Deck).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
labels_jsonYes
columnsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description must disclose behavior. It explains fill order, empty string handling, and default columns, but omits crucial details: whether existing labels are overwritten, what the output is (though an output schema exists, it's not described), and 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.

Conciseness5/5

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

Three sentences with no fluff. First sentence states purpose, second details behavior, third covers parameters. Front-loaded and efficient.

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

Completeness3/5

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

Given the tool has 3 parameters and an output schema, the description covers purpose, fill order, and two parameters well. But it lacks explanation for the page parameter and does not describe the return value, leaving the agent with incomplete context.

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

Parameters4/5

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

Schema coverage is 0%, so the description adds value. It explains labels_json with an example and columns with default and Stream Deck usage. However, the page parameter is not described at all, leaving a gap.

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

Purpose5/5

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

The description clearly states the tool labels a grid of buttons from a flat list of names. It specifies fill order (left-to-right, top-to-bottom) and handling of empty strings, distinguishing it from other sibling tools like set_button_text or apply_button_template.

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

Usage Guidelines4/5

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

The description provides context (fill order, default columns, suggestion for Stream Deck) but does not explicitly contrast with alternatives. The sibling tool list implies other methods for individual labeling or template application, so the usage is implicit.

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

list_page_inventory_snapshotsA

List saved page inventory snapshot files.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

The description implies a read-only operation by using 'list', but it does not explicitly state side effects, permissions, or return format. With no annotations, the description carries the full burden, but the simple nature of the tool keeps it adequate.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no extraneous words. Every word earns its place.

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

Completeness3/5

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

While the output schema exists and covers return values, the description does not mention prerequisites or how the list can be used (e.g., with load or delete). Given the simplicity, it is minimally complete but could be improved.

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

Parameters4/5

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

There are no parameters, so schema coverage is trivially 100%. The description adds meaning by indicating the tool lists files, which is not in the empty schema. Baseline for 0 parameters is 4.

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

Purpose5/5

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

The description clearly states the verb 'List' and the resource 'saved page inventory snapshot files', distinguishing it from sibling tools that delete, load, save, etc.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., when to list snapshots before loading or deleting). The description does not provide any context about its appropriate use.

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

list_page_style_presetsA

List saved page style preset files.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It accurately states the tool lists saved files, implying a read-only operation. No hidden behaviors are suggested.

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

Conciseness5/5

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

Single sentence with no waste. Front-loads the action and object effectively.

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

Completeness5/5

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

With zero parameters and an output schema presumably listing preset files, the description provides sufficient context for a simple list operation.

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

Parameters4/5

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

No parameters exist, so schema coverage is 100%. Baseline score of 4 applies; description adds no param details but none are needed.

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

Purpose5/5

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

Description uses a specific verb ('list') and resource ('saved page style preset files'), clearly distinguishing it from sibling tools that apply, delete, save, or load presets.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like list_page_inventory_snapshots or apply_page_style_preset. The description is purely functional without context.

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

list_surfacesA

List connected Companion control surfaces.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations exist, so the description must disclose behavior. It states 'list' (read-only) and 'connected' surfaces, but provides no additional details about what the output contains or any side effects. Adequate but minimal.

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

Conciseness5/5

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

The description is a single, focused sentence with no redundancy or unnecessary words. It efficiently conveys the tool's purpose.

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

Completeness5/5

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

For a simple list tool with no parameters and an output schema, the description is complete. It tells the agent exactly what the tool does without needing further elaboration.

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

Parameters3/5

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

No parameters exist, and schema description coverage is 100% (trivially). Per rules, baseline is 3. The description adds no additional parameter info beyond the schema.

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

Purpose5/5

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

The description clearly states the action ('List') and the resource ('connected Companion control surfaces'), distinguishing it from sibling tools like 'rescan_surfaces'. It is 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.

Usage Guidelines4/5

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

No explicit when-to-use or alternatives are mentioned, but the purpose is so straightforward that usage is implied. The sibling set includes only one other surface-related tool, so context is clear.

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

load_page_inventory_snapshotC

Load a previously saved page inventory snapshot from disk.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations provided. The description does not disclose side effects, state changes, or whether the loading is read-only or potentially destructive. For example, it does not indicate if the current in-memory inventory is replaced or if disk access occurs.

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

Conciseness4/5

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

The description is a single concise sentence, front-loading the action. However, it is overly terse and could include essential details without becoming verbose.

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

Completeness2/5

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

Despite having an output schema, the description does not mention prerequisites (e.g., snapshot must exist), error conditions, or what the returned data represents. Given the moderate operational complexity, the description is insufficient.

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

Parameters1/5

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

The parameter 'name' is required but has no description in the schema and the tool description does not explain what constitutes a valid name (e.g., filename, identifier, format). With 0% schema description coverage, the description fails to compensate.

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

Purpose5/5

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

The description clearly states the verb 'load', the resource 'page inventory snapshot', and the source 'from disk'. It distinguishes from sibling tools like list (list_page_inventory_snapshots) and save (save_page_inventory_snapshot).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as restore_page_style_from_snapshot or diff_page_inventory. The description only states the action without context on prerequisites or exclusions.

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

load_page_style_presetC

Load a saved page style preset file.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are present, so the description must disclose behavioral traits. It only says 'load' but omits details about side effects, error behavior, or whether loading replaces current style. Minimal transparency.

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

Conciseness4/5

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

The description is very concise, with no unnecessary words. However, it could be slightly longer to add value without losing conciseness.

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

Completeness2/5

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

For a simple tool with one parameter and an output schema, the description still fails to clarify loading semantics or expected result. It is incomplete for practical use.

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

Parameters2/5

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

The sole parameter 'name' has zero description in the schema (0% coverage). The description does not explain what 'name' refers to (e.g., file name or preset identifier), leaving ambiguity.

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

Purpose4/5

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

The description clearly states the tool's action: loading a saved page style preset file. Among siblings like save, apply, list, the verb 'load' distinguishes it as a retrieval operation.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like apply_page_style_preset or list_page_style_presets. No prerequisites or context provided.

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

press_bank_buttonA

Press a button using the legacy bank API (deprecated but still works). button is 0-indexed.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
buttonYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the behavioral burden. It discloses deprecation and indexing, but does not describe side effects, safety, or error conditions. The behavioral transparency is minimal.

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

Conciseness5/5

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

The description is extremely concise—two sentences, no fluff. Key information (legacy API, deprecation, indexing) is front-loaded. Every sentence adds value.

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

Completeness3/5

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

Given the tool's moderate complexity and the existence of an output schema, the description provides necessary context about the legacy API and indexing. However, it lacks information on when to use this over other press variants and does not mention return values or typical use cases.

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

Parameters3/5

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

The schema covers 0% of parameter descriptions. The description adds that 'button is 0-indexed,' which clarifies the parameter semantics beyond the schema. However, it does not explain the 'page' parameter, leaving a gap. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Press a button'), the resource ('legacy bank API'), and a key detail ('0-indexed'). It distinguishes itself from sibling tools like press_button, press_button_sequence, etc., by specifying the legacy API context.

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

Usage Guidelines3/5

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

The description mentions 'deprecated but still works,' implying use for backward compatibility, but it does not explicitly state when to use this versus alternatives or provide exclusions. More guidance would improve selection.

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

press_buttonB

Press and release a button (runs both down and up actions).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
rowYes
columnYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

Minimal behavioral disclosure: only states that both down and up actions are performed. No information about side effects, authorization needs, or whether the action is idempotent. With no annotations, the description carries the full burden but is insufficient.

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

Conciseness5/5

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

Single sentence with no wasted words. Front-loaded with the primary action 'Press and release a button'.

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

Completeness2/5

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

Despite having an output schema, the description omits details like failure behavior, idempotency, and integration with sibling tools. The tool is simple but lacks completeness for an agent to make informed decisions.

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

Parameters2/5

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

Parameters (page, row, column) are self-explanatory by name, but the description adds no additional meaning beyond what the schema provides. Since schema coverage is 0%, the description should compensate but fails to.

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

Purpose5/5

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

The description clearly states the tool presses and releases a button, specifying it performs both down and up actions, which distinguishes it from siblings like hold_button or release_button.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like press_button_verified or hold_button. The description does not mention context or exclusion criteria.

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

press_button_sequenceA

Press multiple buttons in sequence with a configurable delay between each.

buttons_json: JSON array of {page, row, column} objects. delay_ms: milliseconds to wait between presses (default 100).

ParametersJSON Schema
NameRequiredDescriptionDefault
buttons_jsonYes
delay_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses the sequential nature and delay, but omits important behaviors like error handling, response on invalid buttons, or whether the sequence stops on failure. For a multi-step action tool, this is insufficient.

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

Conciseness5/5

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

The description is extremely concise: two sentences plus parameter explanations. It front-loads the core action and then details parameters efficiently. No wasted words.

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

Completeness3/5

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

The tool has an output schema (not shown), so return values are covered. Parameters are well explained. However, for a sequential action tool, information about failure modes, partial execution, and potential side effects is missing, leaving gaps in completeness.

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

Parameters4/5

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

Schema description coverage is 0%, but the description adds meaningful detail beyond the schema: 'buttons_json: JSON array of {page, row, column} objects' and 'delay_ms: milliseconds to wait between presses (default 100).' This clarifies the structure and defaults not obvious from the schema alone.

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

Purpose5/5

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

The description clearly states 'Press multiple buttons in sequence with a configurable delay between each.' It uses specific verb (press) and resource (multiple buttons in sequence), distinguishing it from siblings like 'press_button' and 'press_bank_button'.

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

Usage Guidelines3/5

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

The description implies when to use it (sequential pressing), but does not provide explicit guidance on when not to use it or mention alternatives among siblings. It lacks context for selection among similar tools.

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

press_button_verifiedB

Press a button and verify whether its visible or runtime state changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
rowYes
columnYes
wait_msNo
poll_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

Description discloses the basic behavior (press and verify) but lacks detail on polling mechanics (wait_ms, poll_ms). No annotations are provided, so the description carries the burden, but it is insufficient for a tool with polling parameters.

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

Conciseness5/5

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

Extremely concise: one sentence of 13 words, front-loaded with the core action and verification. No redundant information.

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

Completeness2/5

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

Despite having an output schema (not shown), the description lacks details about parameter semantics, return value, and differentiating guidance from 5+ sibling tools. For a tool with 5 parameters and spatial coordinates, this is insufficient.

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

Parameters1/5

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

No parameter descriptions in the input schema (0% coverage) and the description does not explain any parameters. page, row, column, wait_ms, poll_ms are not described, leaving the agent to guess their meaning and units.

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

Purpose5/5

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

Description clearly states the tool presses a button and verifies visible/runtime state change. It uses specific verb 'press' and resource 'button', and the verification aspect distinguishes it from tools like press_button.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool vs alternatives. The name 'verified' implies it's used when confirmation of state change is needed, but alternatives like press_button or verify_button_render_change are not mentioned.

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

preview_apply_page_style_presetA

Preview applying a saved preset onto a page, optionally with row/column offsets.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
pageNo
origin_rowNo
origin_columnNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as whether the operation is read-only, what side effects occur, or what the preview output represents, beyond the name 'Preview'.

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

Conciseness5/5

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

The description is a single sentence with no wasted words, efficiently conveying the core functionality.

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

Completeness3/5

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

For a tool with 4 parameters and no annotations, the description is somewhat thin. It lacks details on prerequisites, return format (though output schema exists), and how this preview differs from other preview tools, leaving gaps in completeness.

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

Parameters3/5

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

With 0% schema description coverage, the description must add value. It explains 'origin_row' and 'origin_column' as 'row/column offsets', but does not clarify 'name' or 'page' beyond their schema definitions, providing partial compensation.

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

Purpose5/5

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

The description clearly states the verb 'Preview', the resource 'saved preset onto a page', and optional offsets, distinguishing it from siblings like 'apply_page_style_preset' which applies rather than previews.

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

Usage Guidelines3/5

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

The description implies usage for previewing before applying, but does not explicitly state when to use this tool versus alternatives like 'apply_page_style_preset' or 'preview_page_style', nor does it provide exclusion criteria.

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

preview_button_templateC

Preview a reusable button template placed at an origin on a page.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
template_jsonYes
origin_rowNo
origin_columnNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden. It mentions 'preview' implying a read-only action, but does not disclose whether it requires the template to be already defined, if it modifies state, or what happens on error. The lack of behavioral detail is a significant gap.

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

Conciseness4/5

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

The description is a single sentence with no redundancy. It is concise but could benefit from brief parameter clarification without adding much length.

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

Completeness2/5

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

Despite an output schema existing, the description is incomplete given the 0% parameter coverage and no usage guidance. Complexity is low, but critical details are missing, making it insufficient for correct invocation.

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

Parameters2/5

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

Schema coverage is 0%, so the description must explain parameters. It does not. 'template_json' is not described (expected format like JSON string, structure), and 'origin_row'/'origin_column' are only hinted at by 'placed at an origin'. Required parameters 'page' and 'template_json' lack any explanation.

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

Purpose5/5

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

The description clearly states the verb 'preview' and the resource 'reusable button template placed at an origin on a page'. It effectively distinguishes from sibling tools like 'apply_button_template' which applies the template instead.

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

Usage Guidelines2/5

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 such as 'apply_button_template' or other preview tools. The description lacks context for appropriate use cases.

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

preview_label_button_gridC

Resolve a label grid into coordinates without writing to Companion.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
labels_jsonYes
columnsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description partially covers behavior by stating it is a read-only operation ('without writing to Companion'). However, it omits details about side effects, error conditions, or required preconditions.

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

Conciseness5/5

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

A single sentence of 9 words, perfectly front-loaded with the core purpose. Every word serves a function; no fluff.

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

Completeness2/5

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

Despite an existing output schema, the description is too terse. It does not explain how to use the parameters, any prerequisites (e.g., page existence, JSON format), or what the coordinates represent. The context is insufficient for an agent to confidently use the tool.

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

Parameters1/5

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

The schema has 0% description coverage and the description adds no explanation of 'page', 'labels_json', or 'columns'. The description fails to supplement the schema, leaving parameters entirely opaque.

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

Purpose4/5

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

The description clearly states the action ('resolve a label grid into coordinates') and distinguishes it from the write sibling 'label_button_grid' by noting it does not write to Companion. The verb 'resolve' is acceptable but could be more explicit.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool vs. alternatives like 'label_button_grid' or other preview tools. The description implies a dry-run use case but does not provide clear context or exclusions.

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

preview_page_styleC

Validate and preview a batch page-style operation without writing to Companion.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
buttons_jsonYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses that no writing occurs, indicating a read-only operation. However, it does not mention any other behaviors such as validation errors, performance impact, or whether it modifies any state. The disclosure of 'without writing' is useful but minimal.

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

Conciseness3/5

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

The description is a single sentence, which is concise, but it omits parameter details that could be included without bloat. It is front-loaded with the key action, but the lack of parameter context makes it less efficient for agent interpretation.

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

Completeness2/5

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

Given the presence of an output schema, the return format might be covered there, but the description fails to explain the input parameters. For a tool with 2 required parameters and no schema descriptions, this is incomplete. The agent cannot determine valid values for 'buttons_json' or the expected format.

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

Parameters1/5

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

The description provides no explanation for the two parameters 'page' and 'buttons_json'. With 0% schema coverage, the agent must guess their meanings. The description adds no semantic value beyond what the schema offers.

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

Purpose4/5

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

The description clearly states it validates and previews a batch page-style operation and specifies it does not write to Companion. The verb 'preview' distinguishes it from apply tools like 'apply_page_style_transaction' or 'set_page_style'. However, 'batch page-style operation' is somewhat vague but still conveys the core action.

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

Usage Guidelines3/5

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

The description implies this is a safe dry-run by saying 'without writing to Companion', but it does not explicitly state when to use it versus apply alternatives or provide exclusions. No guidance on prerequisites or conditions.

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

preview_restore_page_style_from_inventoryA

Resolve a captured page inventory into restore-style entries without writing to Companion.

ParametersJSON Schema
NameRequiredDescriptionDefault
inventory_jsonYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses the non-destructive preview behavior, but lacks details on error conditions, input requirements, or return value handling.

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

Conciseness5/5

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

One sentence, no wasted words. Essential information is front-loaded.

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

Completeness3/5

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

Given low complexity (1 param, output schema exists), the description covers the core behavior but misses parameter details. It is mostly complete but the param gap reduces it.

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

Parameters2/5

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

The single parameter 'inventory_json' has 0% schema coverage. Description only says 'captured page inventory', not explaining it's a JSON string or what fields are expected. Insufficient for an agent to construct input correctly.

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

Purpose5/5

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

The description clearly states the tool resolves a captured page inventory into restore-style entries without writing, distinguishing it from siblings like 'restore_page_style_from_inventory'. It uses specific verbs and resource.

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

Usage Guidelines3/5

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

The phrase 'without writing to Companion' implies this is for previewing, contrasting with actual restore tools. However, it does not explicitly state when to use or not use this tool vs alternatives.

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

preview_restore_page_style_from_snapshotB

Preview a restore plan from a saved snapshot, optionally filtered to selected coordinates.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
coords_jsonNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only states it's a 'preview', implying non-destructiveness, but does not mention authentication needs, side effects, or what the output contains. The existence of an output schema is not leveraged in the description.

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

Conciseness4/5

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

The description is a single, concise sentence with no waste. However, it is very brief and could benefit from additional details without sacrificing conciseness.

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

Completeness2/5

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

Given the presence of many sibling preview tools, the description is incomplete. It does not explain what a 'restore plan' is, what the preview returns, or how coordinates work. The output schema exists but is not referenced, leaving the agent with insufficient context.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It hints that 'coords_json' relates to coordinates for filtering, but does not explain its format or the purpose of 'name'. The meaning added is minimal beyond the schema itself.

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

Purpose5/5

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

The description clearly states the verb 'Preview' and the resource 'restore plan from a saved snapshot', distinguishing it from similar sibling tools like 'preview_restore_page_style_from_inventory' which uses inventory instead of snapshot. The optional filtering by coordinates is also mentioned, adding specificity.

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

Usage Guidelines3/5

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

The description implies when to use this tool (when a saved snapshot exists) but does not explicitly compare with alternatives like 'preview_restore_page_style_from_inventory'. No when-not-to-use guidance is given, leaving selection among many preview siblings to the agent's inference.

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

release_buttonA

Release a held button (runs up actions).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
rowYes
columnYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It mentions 'runs up actions' but does not disclose details like whether the operation is safe, reversible, or what happens if the button is not held. Adequate but minimal for a mutation tool.

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

Conciseness5/5

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

Single sentence with no wasted words. Front-loaded with the essential action and a clarifying parenthetical. Ideal for a simple tool.

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

Completeness3/5

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

Given the existence of an output schema (not shown), the description need not explain return values. However, it omits contextual details like coordinate validity or button state prerequisites. Adequate for a simple tool but not complete.

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

Parameters1/5

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

Schema coverage is 0% and the description does not mention any parameters or their semantics. For a tool with 3 required params, this is a significant gap; the description fails to add meaning beyond the raw schema.

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

Purpose5/5

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

The description clearly states the action (release) and the resource (button), with a parenthetical explaining the effect (runs up actions). It distinguishes from sibling tools like 'hold_button' and 'press_button'.

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

Usage Guidelines4/5

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

The description implies the tool is used to release a button that was previously held, which is clear given the context. However, it does not explicitly state when to use versus alternatives or mention prerequisites like button state.

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

rescan_surfacesA

Rescan for connected USB surfaces (Stream Deck, etc.).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states 'Rescan' indicating a mutation, but does not disclose potential side effects such as delays or connectivity requirements. The description adds minimal behavioral information beyond the tool's name.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It perfectly captures the tool's purpose.

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

Completeness5/5

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

For a simple zero-parameter tool with an output schema, the description is complete. It explains what it does, what it targets, and is sufficient for an agent to use it correctly.

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

Parameters4/5

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

There are no parameters, so the description does not need to add parameter-level details. It correctly clarifies the tool's action, which is sufficient for a zero-parameter tool.

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

Purpose5/5

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

The description clearly states the tool rescans for connected USB surfaces, with examples like Stream Deck. It is a specific verb+resource and distinguishes from sibling tools like list_surfaces which list existing surfaces.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool (to detect newly connected USB surfaces), but does not explicitly mention when not to use it or suggest alternatives. However, the context is strong enough given the sibling list_surfaces.

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

restore_page_style_from_inventoryC

Restore button style state from a previously captured page inventory.

ParametersJSON Schema
NameRequiredDescriptionDefault
inventory_jsonYes
wait_msNo
poll_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations exist, and the description only says 'restore', which implies mutation but provides no details on safety, rollback, or side effects.

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

Conciseness3/5

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

The description is a single sentence, which is concise but lacks structure and omits necessary details for a tool with multiple parameters.

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

Completeness2/5

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

Given three parameters, no annotations, and an output schema, the description fails to cover prerequisites, return behavior, or parameter roles.

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

Parameters1/5

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

Schema description coverage is 0%, and the tool description adds no explanation for parameters like inventory_json format or the purpose of wait_ms and poll_ms.

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

Purpose4/5

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

The description clearly states it restores button style state from a page inventory, but it does not distinguish from similar sibling tools like 'restore_page_style_from_snapshot' or 'restore_selected_page_style_from_inventory'.

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

Usage Guidelines2/5

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, nor any prerequisites or when-not-to-use conditions.

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

restore_page_style_from_snapshotC

Restore button style state from a saved snapshot file, optionally filtered to selected coordinates.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
wait_msNo
poll_msNo
coords_jsonNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries the full burden but only states 'Restore', implying mutation without disclosing side effects, permissions, or behavior like polling (wait_ms, poll_ms). It does not explain whether the restore is incremental or replaces all state.

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

Conciseness5/5

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

The description is a single sentence with no redundant words. It efficiently conveys the core purpose and the optional filtering aspect.

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

Completeness2/5

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

Given four parameters (0% schema coverage), no annotations, and many siblings, the description is insufficient. It omits details about the snapshot format, coordinate filtering, polling behavior, output, and use cases.

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

Parameters2/5

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

The description only partially explains the coords_json parameter as 'filtered to selected coordinates'. It does not clarify the meaning of name (snapshot file name), wait_ms, or poll_ms. With 0% schema coverage, the description fails to compensate.

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

Purpose4/5

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

The description specifies the action 'Restore' and the resource 'button style state from a saved snapshot file', and mentions optional filtering by coordinates. It distinguishes from sibling tools like restore_page_style_from_inventory by indicating a file-based source.

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

Usage Guidelines2/5

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 such as restore_page_style_from_inventory or load_page_style_preset. There is no mention of prerequisites, context, or when not to use it.

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

restore_selected_page_style_from_inventoryC

Restore only selected coordinates from a captured page inventory.

ParametersJSON Schema
NameRequiredDescriptionDefault
inventory_jsonYes
coords_jsonYes
wait_msNo
poll_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It fails to disclose behavioral traits such as whether the operation is destructive, permissions needed, rate limits, or side effects. The description is too minimal for a mutation tool.

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

Conciseness2/5

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

The description is very short but at the expense of necessary details. It is under-specified rather than concise, failing to earn its place by omitting crucial information.

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

Completeness2/5

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

Given the tool has 4 parameters, 2 required, no annotations, and an output schema, the description is inadequate. It does not explain parameters, the meaning of coordinates, or the purpose of wait_ms/poll_ms, nor does it hint at the output.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain any parameters (inventory_json, coords_json, wait_ms, poll_ms). It adds no value beyond the schema, leaving the agent to guess what coordinates mean or how to format them.

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

Purpose5/5

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

The description clearly states the tool restores only selected coordinates from a captured page inventory, using a specific verb and resource. It distinguishes from sibling tools like restore_page_style_from_inventory by indicating partial restoration.

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

Usage Guidelines3/5

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

The description implies usage for partial restoration via 'only selected coordinates', but lacks explicit guidance on when to use versus alternatives, no when-not scenarios, and no mentions of alternatives or prerequisites.

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

rollback_page_style_transactionC

Rollback page styles from a saved transaction snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
snapshot_nameYes
wait_msNo
poll_msNo
coords_jsonNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.3/5.0
Behavior1/5

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

With no annotations, the description must disclose behavioral traits. It only states the basic function, omitting details like whether the operation is destructive, required permissions, or side effects on the snapshot.

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

Conciseness3/5

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

The description is a single sentence, which is concise, but it sacrifices completeness. It does not make efficient use of space to convey necessary information.

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

Completeness2/5

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

Despite having an output schema, the description does not mention it or explain return values. The tool has four parameters with no descriptions, and the description provides minimal context for the tool's behavior.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no explanation for any of the four parameters (snapshot_name, wait_ms, poll_ms, coords_json). It fails to compensate for the lack of schema descriptions.

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

Purpose4/5

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

The description clearly states the action ('rollback') and the resource ('page styles from a saved transaction snapshot'). However, it does not differentiate from similar sibling tools like 'restore_page_style_from_snapshot' or 'apply_page_style_transaction'.

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

Usage Guidelines2/5

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 such as 'restore_page_style_from_snapshot' or 'apply_page_style_transaction'. The description lacks context for selection.

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

rotate_leftC

Trigger a left rotation on an encoder button.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
rowYes
columnYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations provided. The description does not disclose any behavioral traits such as whether rotation triggers feedback, updates state, or requires specific conditions. The one-sentence description is insufficient for a mutation operation on an encoder.

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

Conciseness3/5

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

The description is very short and to the point, but it sacrifices informativeness for brevity. It does not earn its place because important information is missing.

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

Completeness2/5

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

Given the tool's complexity (3 required params, no param descriptions), the presence of an output schema (though not shown) and many sibling tools, the description is incomplete. It fails to explain the effect of rotation, the coordinate system, or the output.

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

Parameters1/5

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

Schema description coverage is 0%. The description does not explain the meaning or purpose of the three required parameters (page, row, column), nor does it provide any context beyond the titles. The parameters are critical for identifying the target encoder button, but the description is silent.

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

Purpose5/5

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

The description clearly states the action ('rotate left') and resource ('encoder button'), and the sibling 'rotate_right' indicates directionality, so the tool's purpose is specific and distinct.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'rotate_right' or other button manipulation tools. No context about prerequisites or typical scenarios.

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

rotate_rightC

Trigger a right rotation on an encoder button.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
rowYes
columnYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

Without annotations, the description carries full responsibility but only states the action. Does not disclose side effects, long-lasting changes, or required permissions. Minimal beyond the name.

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

Conciseness4/5

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

The description is extremely concise with a single sentence, no redundancy. However, it could benefit from slightly more detail without losing conciseness.

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

Completeness2/5

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

Despite having an output schema, the description does not mention expected return values or any outcome. The three required parameters are not explained, making the tool incomplete for a new user.

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

Parameters2/5

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

Schema description coverage is 0%, and the tool description does not explain the meaning of page, row, and column parameters. Users are left to infer that these are coordinates, which may be ambiguous.

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

Purpose5/5

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

The description clearly states the tool triggers a right rotation on an encoder button, using a specific verb and resource. It distinguishes from the sibling tool 'rotate_left' by specifying direction.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'rotate_left' or other encoder-related tools. No context on prerequisites or typical usage scenarios.

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

save_page_inventory_snapshotC

Capture a page inventory snapshot and save it to a local checkpoint file.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
pageYes
rowsNo
columnsNo
include_emptyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description conveys 'save to local checkpoint file' but omits important behavioral details: overwrite behavior, naming conventions, permissions, or side effects. The file destination and persistence model are vague.

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

Conciseness4/5

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

The description is a single, clear sentence. It is concise but not overly terse; it effectively communicates the core action without superfluous text.

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

Completeness2/5

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

Given the complexity (5 parameters, no schema descriptions, no annotations) and the existence of an output schema (not shown), the description fails to explain core concepts like 'page inventory snapshot', 'local checkpoint file', or the return value. The tool's purpose is clear but context is lacking.

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

Parameters1/5

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

Schema coverage is 0% (no parameter descriptions). The tool description adds no explanation for the 5 parameters (name, page, rows, columns, include_empty). The agent must infer meaning from parameter names alone, which is insufficient.

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

Purpose5/5

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

The description clearly identifies the action ('Capture... and save') and the resource ('page inventory snapshot' to 'local checkpoint file'), distinguishing it from siblings like load_page_inventory_snapshot and list_page_inventory_snapshots.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., snapshot_page_inventory, load_page_inventory_snapshot). The description does not mention prerequisites, constraints, or scenarios where this tool is appropriate.

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

save_page_style_presetC

Save the current page style state as a reusable preset file.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
pageYes
rowsNo
columnsNo
include_emptyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits. It does not mention overwrite behavior, required state, side effects, or output format. Minimal transparency for a save operation.

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

Conciseness4/5

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

Single sentence with no redundant words. However, it could benefit from additional structure to cover parameters and behavior without being verbose.

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

Completeness2/5

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

Given the tool has 5 parameters, no schema descriptions, and no annotations, the description is too sparse. It does not explain what happens when presets overlap or the output schema, even though output schema exists.

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

Parameters1/5

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

Schema description coverage is 0% and the description provides no information about any of the 5 parameters (name, page, rows, columns, include_empty). Users cannot understand parameter meaning from the description.

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

Purpose5/5

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

The description clearly states the action ('save') and the resource ('current page style state') as a reusable preset file. It distinguishes from sibling tools like apply_page_style_preset and delete_page_style_preset.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., save_page_inventory_snapshot) or prerequisites. No exclusion conditions or context provided.

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

set_button_colorB

Change button colors. Use 6-digit hex (e.g. 'ff0000' for red). color=text color, bgcolor=background color.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
rowYes
columnYes
colorNo
bgcolorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It lacks information on side effects, destructive nature, authentication needs, or UI update triggers. It only mentions parameter format.

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

Conciseness5/5

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

Two sentences with no redundancy. The first sentence states purpose, the second explains parameters. Front-loaded and efficient.

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

Completeness3/5

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

Given 5 parameters, no annotations, and many sibling tools, the description omits crucial context like existence of button, error handling, or output behavior. The output schema is present but not described.

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

Parameters3/5

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

Schema coverage is 0%, but the description adds meaning for color and bgcolor ('color=text color, bgcolor=background color'). However, it provides no extra context for required parameters (page, row, column), leaving gaps.

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

Purpose5/5

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

The description clearly states 'Change button colors', specifying the action and resource. It distinguishes from sibling tools by focusing exclusively on colors, with explicit mention of text color and background color.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like set_button_style or set_button_text. No prerequisites, context, or exclusions are provided.

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

set_button_styleA

Set multiple button style properties at once. All parameters optional — only provided values are changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
rowYes
columnYes
textNo
colorNo
bgcolorNo
sizeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden. It correctly discloses that only provided values are changed, implying no side effects on unspecified properties. This is sufficient for a simple style update tool, though permissions or destructive nature are not mentioned.

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

Conciseness5/5

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

Single sentence, no wasted words. The purpose is front-loaded, and the critical behavior that only provided values are changed is immediately stated.

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

Completeness3/5

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

Given the existence of an output schema (not shown), the description does not need to explain return values. However, with 7 parameters and zero schema descriptions, the tool needs more parameter guidance. The description is adequate for a simple update but lacks completeness in documenting all param behaviors.

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

Parameters2/5

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

Schema coverage is 0%, yet the description adds no parameter-specific details. It does not explain format of 'color', 'bgcolor', 'size', etc. The agent must rely on parameter names alone, which may be ambiguous (e.g., 'bgcolor' vs 'color'). The description fails to compensate for the lack of schema descriptions.

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

Purpose5/5

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

The description clearly states the tool sets multiple button style properties at once, distinguishing it from single-property siblings like set_button_color and set_button_text. The verb 'Set' and resource 'button style properties' are specific.

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

Usage Guidelines4/5

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

The description says 'All parameters optional — only provided values are changed,' which helps the agent understand when to use it (batch update) and that it is non-destructive. However, it doesn't explicitly mention when not to use it or alternatives like set_button_style_verified.

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

set_button_style_verifiedC

Apply button style changes and verify whether the rendered button output actually changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
rowYes
columnYes
textNo
colorNo
bgcolorNo
sizeNo
wait_msNo
poll_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

The description mentions verification but does not disclose what happens on failure, whether it retries, or side effects. The wait_ms and poll_ms parameters imply polling but are not explained. No annotations are present, so the description carries full burden but is insufficient.

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

Conciseness3/5

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

The description is a single sentence of 14 words, which is concise but lacks necessary detail about parameters and usage. It is efficient but under-specified.

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

Completeness2/5

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

Given the complexity (9 parameters, no schema descriptions or annotations, output schema exists but not described), the description is incomplete. It does not cover the meaning of parameters, expected output, or behavioral implications.

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

Parameters1/5

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

Schema description coverage is 0%, yet the description provides no parameter information. The 9 parameters, including wait_ms and poll_ms for verification, are not explained, leaving the agent without guidance on how to use them.

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

Purpose5/5

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

The description clearly states the tool applies button style changes and verifies if the output changed. This distinguishes it from siblings like set_button_style (set only) and verify_button_render_change (verify only).

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

Usage Guidelines2/5

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 vs alternatives like set_button_style or verify_button_render_change. The description does not mention context, prerequisites, or exclusions.

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

set_button_textC

Change the text displayed on a button.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
rowYes
columnYes
textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

The description indicates a write operation but does not disclose side effects, reversibility, or any required permissions. Without annotations, this minimal disclosure is inadequate for a mutation tool.

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

Conciseness4/5

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

The description is a single concise sentence with no wasted words. It could benefit from slightly more structure but is efficient.

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

Completeness2/5

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

With 4 required parameters, no annotations, and an output schema not shown, the description lacks essential context about button existence, coordinate system, or return value. It is incomplete for a precise invocation.

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

Parameters1/5

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

The input schema has 0% description coverage, and the tool description adds no meaning beyond the parameter names. The purpose of page, row, and column as a coordinate system is left ambiguous.

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

Purpose4/5

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

The description clearly states the action (change) and the resource (text on a button), distinguishing it from sibling tools like set_button_color and set_button_style. However, it could specify that the button is identified by page, row, and column.

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

Usage Guidelines2/5

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 such as apply_button_template or set_button_style. No context on prerequisites or when not to use it.

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

set_custom_variableB

Set the value of a Companion custom variable.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
valueYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It does not disclose side effects (e.g., overwriting existing variables), permissions required, or error conditions. Minimal transparency.

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

Conciseness5/5

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

Extremely concise: one sentence, 8 words. Front-loaded and no redundant text. Every word earns its place.

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

Completeness3/5

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

Given a simple set operation with two parameters and an output schema, the description is adequate but lacks safety and error context. Could be improved with usage conditions.

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

Parameters2/5

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

Schema coverage is 0%, and description does not elaborate on parameters like name restrictions or value format. Schema defines them as simple strings, but no additional semantics.

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

Purpose5/5

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

Description clearly states the action: 'Set the value of a Companion custom variable.' Verb and resource are specific, and it distinguishes from sibling tools like 'get_custom_variable' and 'snapshot_custom_variables'.

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

Usage Guidelines3/5

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

No explicit when/when-not or alternative guidance. The tool is clearly a write counterpart to 'get_custom_variable', but no instructions on prerequisites or preference over similar tools.

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

set_page_styleC

Batch-set style on multiple buttons on a page.

buttons_json: JSON array of {row, column, text?, color?, bgcolor?} objects.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
buttons_jsonYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must carry full behavioral disclosure. It states it is a batch operation but does not mention whether it is a write operation, if it reverts other changes, or any side effects. The behavior is minimally described.

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

Conciseness4/5

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

The description is concise with two sentences: a clear summary and a brief parameter explanation. No unnecessary text, though a bit more structure (e.g., separate line for page parameter) would improve readability.

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

Completeness2/5

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

Given the complexity of a batch operation with a JSON parameter and an existing output schema, the description is incomplete. It lacks explanation of return values, prerequisites (e.g., valid page, existing buttons), and does not differentiate from similar batch tools.

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

Parameters3/5

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

The schema has 0% description coverage. The description adds meaning by explaining the structure of buttons_json as a JSON array with optional fields, but the page parameter is left undocumented, and the format of buttons_json as a JSON string is not explicitly stated.

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

Purpose4/5

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

The description 'Batch-set style on multiple buttons on a page' clearly states the verb (batch-set style) and resource (multiple buttons on a page). It distinguishes from single-property setters like set_button_color or set_button_text, but does not differentiate from similar batch tools like apply_page_style_preset.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as apply_button_template or set_button_style_verified. The description provides no context about prerequisites or typical use cases.

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

set_page_style_verifiedC

Batch-set styles on a page and return verified per-button outcomes plus an inventory diff.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
buttons_jsonYes
wait_msNo
poll_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

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

The description mentions return values (verified outcomes and inventory diff), which adds some behavioral context beyond the tool name. However, it does not disclose side effects, permissions, or the nature of the verification process, which is important given no annotations.

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

Conciseness3/5

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

The single 12-word sentence is concise and front-loaded with the verb. However, it omits critical parameter information, making it overly terse for a tool with four parameters.

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

Completeness2/5

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

Given the complexity (4 parameters, many siblings, output schema), the description is incomplete. It fails to explain the buttons_json format, verification meaning, inventory diff, or when to use this over other style-setting tools.

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

Parameters1/5

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

With 0% schema description coverage, the description must compensate by explaining key parameters like buttons_json, wait_ms, and poll_ms. It provides none, leaving the agent without necessary details.

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

Purpose5/5

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

The description clearly states the action ('Batch-set styles on a page') and the unique outputs ('verified per-button outcomes plus an inventory diff'), distinguishing it from siblings like set_page_style and set_button_style_verified.

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

Usage Guidelines2/5

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 such as set_page_style or apply_button_template. The description offers no context for selection.

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

set_stepC

Set the current step of a button action sequence.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
rowYes
columnYes
stepYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations exist, so the description must disclose behavior. It does not mention side effects, whether it triggers an action, or if it's destructive. The word 'set' implies mutation but lacks detail.

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

Conciseness3/5

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

The description is a single efficient sentence, but it sacrifices necessary detail. It is concise but insufficiently informative.

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

Completeness2/5

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

Given four required parameters, no schema descriptions, no annotations, and an existing output schema (not mentioned), the description is incomplete. It fails to explain what the tool returns or any constraints.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no meaning to the four parameters (page, row, column, step). It merely restates that they are part of setting a step, offering no type, range, or role clarification.

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

Purpose5/5

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

The description clearly states the verb 'Set' and the resource 'current step of a button action sequence', distinguishing it from sibling tools like press_button_sequence which execute actions.

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

Usage Guidelines2/5

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 does not mention prerequisites or comparisons to sibling tools.

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

snapshot_custom_variablesC

Read a named set of custom variables into one snapshot payload.

ParametersJSON Schema
NameRequiredDescriptionDefault
names_jsonYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility for disclosing behavior. It states a read operation but does not confirm it is read-only or whether it has any side effects. It lacks information on permissions, rate limits, or intended use scenarios.

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

Conciseness4/5

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

The description is a single sentence, concise and without extraneous words. However, it could be rephrased to front-load the key action and resource more clearly. It is acceptable in terms of brevity.

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

Completeness2/5

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

Given the tool has a simple input schema (one parameter) and an output schema exists, the description could be more complete. It fails to explain what a 'snapshot payload' is or how the output is structured. While the output schema may clarify return values, the description leaves ambiguity about the tool's purpose.

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

Parameters1/5

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

Schema coverage is 0%, meaning the description adds no meaning to the parameter 'names_json'. It does not specify the expected format (e.g., JSON array, comma-separated list) or how to pass multiple variable names. The schema alone provides a title but no semantic context.

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

Purpose4/5

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

The description uses the verb 'Read' and identifies the resource as 'custom variables' and the action as creating a 'snapshot payload'. This distinguishes it from sibling tools like get_custom_variable (reads a single variable) and snapshot_page_inventory (snapshots a page). However, the phrase 'snapshot payload' is somewhat vague.

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

Usage Guidelines2/5

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 does not mention prerequisites, when not to use, or compare with sibling tools like get_custom_variable or snapshot_page_inventory.

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

snapshot_page_inventoryC

Export a page region with operator-focused button summaries, hashes, style, and feedback state.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
rowsNo
columnsNo
include_emptyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses the exported data types (summaries, hashes, style, feedback) and implies a read operation via 'Export', but it does not mention permissions, side effects, or whether it is read-only explicitly.

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

Conciseness5/5

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

The description is a single sentence of 12 words with no fluff. It efficiently conveys the core function.

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

Completeness2/5

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

For a tool with 4 parameters (3 optional, 1 required) and many sibling tools, the description is incomplete. It omits parameter explanations and does not clarify how this export differs from saving or loading snapshots. The output schema exists but is not leveraged to reduce description burden.

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

Parameters1/5

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

The input schema has 0% description coverage, and the tool description does not explain any of the four parameters (page, rows, columns, include_empty). The description fails to compensate for the lack of schema descriptions.

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

Purpose4/5

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

The description uses the verb 'Export' and specifies the resource as 'page region' with detail about contents (button summaries, hashes, style, feedback state). However, it does not explicitly distinguish from sibling tools like save_page_inventory_snapshot, which could be confused.

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

Usage Guidelines2/5

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 such as load_page_inventory_snapshot, list_page_inventory_snapshots, or diff_page_inventory. The description only states what it does.

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

verify_button_render_changeC

Compare the current button preview fingerprint to a previous preview hash.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYes
rowYes
columnYes
previous_sha256Yes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits like read-only nature or auth requirements. It only states 'compare', implying no side effects, but does not confirm safety (e.g., no destruction or modification). The output schema exists but is not described, leaving agents unaware of response format. Minimal behavioral transparency.

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

Conciseness3/5

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

The description is a single, front-loaded sentence with no wasted words. However, it is under-specified, trading conciseness for completeness. It earns its place but leaves significant gaps.

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

Completeness2/5

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

Given the tool has 4 required parameters and an output schema, the description fails to explain the return value or how the result relates to other sibling tools like 'get_button_runtime_summary'. It lacks context for integration into workflows like preview-then-verify sequences.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must explain parameters. It only mentions 'previous preview hash' which mirrors the parameter name 'previous_sha256'. No explanation of 'page', 'row', or 'column' is provided, meaning agents must infer their meaning from context. This is insufficient.

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

Purpose4/5

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

The description clearly states the tool compares a current button preview fingerprint to a previous hash, indicating its purpose for verifying render changes. This distinguishes it from sibling tools like 'preview_button_template' or 'set_button_style_verified' which involve previewing or setting styles, not verification. However, it could be more explicit about the output (e.g., returns true/false).

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

Usage Guidelines2/5

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 'press_button_verified' or when not to use it. The description implies it follows a preview step, but this is not explicitly stated. Lacks context on prerequisites or exclusions.

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.

  1. 53 tool updatesv0.1.0
    • First observedapply_button_template
    • First observedapply_page_style_preset
    • First observedapply_page_style_transaction
    • First observeddelete_page_inventory_snapshot
    • First observeddelete_page_style_preset
    • First observeddiff_page_inventory
    • First observedexport_page_layout
    • First observedfind_buttons
    • First observedget_button_info
    • First observedget_button_runtime_summary
    • First observedget_custom_variable
    • First observedget_module_variable
    • First observedget_page_grid
    • First observedget_server_config
    • First observedhealth_check
    • First observedhold_button
    • First observedlabel_button_grid
    • First observedlist_page_inventory_snapshots
    • First observedlist_page_style_presets
    • First observedlist_surfaces
    • First observedload_page_inventory_snapshot
    • First observedload_page_style_preset
    • First observedpress_bank_button
    • First observedpress_button
    • First observedpress_button_sequence
    • First observedpress_button_verified
    • First observedpreview_apply_page_style_preset
    • First observedpreview_button_template
    • First observedpreview_label_button_grid
    • First observedpreview_page_style
    • First observedpreview_restore_page_style_from_inventory
    • First observedpreview_restore_page_style_from_snapshot
    • First observedrelease_button
    • First observedrescan_surfaces
    • First observedrestore_page_style_from_inventory
    • First observedrestore_page_style_from_snapshot
    • First observedrestore_selected_page_style_from_inventory
    • First observedrollback_page_style_transaction
    • First observedrotate_left
    • First observedrotate_right
    • First observedsave_page_inventory_snapshot
    • First observedsave_page_style_preset
    • First observedset_button_color
    • First observedset_button_style
    • First observedset_button_style_verified
    • First observedset_button_text
    • First observedset_custom_variable
    • First observedset_page_style
    • First observedset_page_style_verified
    • First observedset_step
    • First observedsnapshot_custom_variables
    • First observedsnapshot_page_inventory
    • First observedverify_button_render_change

TDQS

B3.2/5.0

Scored across 53 tools

Disambiguation4/5

Most tools have distinct purposes with clear descriptions (e.g., press vs hold vs release, various preview vs apply pairs). A few pairs like apply_button_template and apply_page_style_preset could be confused at a glance, but descriptions clarify the differing targets (template vs preset). Overall, an agent can reliably distinguish tools.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., press_button, set_button_color, list_surfaces). Even variations like hold_button and rotate_right fit the pattern. There is no mixing of conventions, making the set predictable.

Tool Count2/5

With 53 tools, the server is over-scoped. Many tools are variations (e.g., press, press_verified, press_sequence; set_style, set_style_verified) which could be consolidated. While the domain is rich, this number exceeds typical MCP server sizes and may overwhelm agents.

Completeness5/5

The surface covers all major aspects of Companion management: button actions, style editing, presets, snapshots, variables, surfaces, rollbacks, and verification. No obvious gaps remain; even encoder rotation and transaction rollback are present.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    An MCP server that lets AI assistants control grandMA2 lighting consoles via Telnet, exposing 41 high-level tools for cue management, fixture control, preset management, executor control, macro editing, appearance assignment, bulk operations, console state queries, show file management, read-back verification, and music show workflows.
    100
    14
    Apache 2.0