Skip to main content
Glama

run_command

Execute any Aseprite menu command, such as Flip or Rotate, with parameters to apply edits in live or batch mode.

Instructions

Executes any Aseprite menu command (app.command.) with parameters, e.g. Flip, Rotate, Outline, BrightnessContrast, ColorQuantization, LinkCels, ReverseFrames, AutocropSprite. See list_commands for names and parameters. Strings like '#ff0000' become Colors; {x,y,width,height} becomes a Rectangle. ui=false is added unless allowUi is true.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesCommand name, e.g. 'Outline'
saveNoBatch mode: write changes back to the sprite file (default true)
frameNoFrame to make active before running
layerNoLayer to make active before running
paramsNoCommand parameters
spriteNoFile path, open tab title, or sprite id. Defaults to the active sprite (live). Batch mode needs a file path.
allowUiNoLet the command open its dialog (live mode only)
backendNoauto (default): live Aseprite if connected, else headless batch
mutatesNoBatch mode: false skips saving (default true)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.1

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only carry readOnlyHint=false and destructiveHint=false. The description adds real behavioral detail beyond that: UI dialogs are suppressed via ui=false unless allowUi is true, and parameter coercion rules are disclosed. It still doesn't warn about mutating side effects or live-vs-batch persistence nuances.

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?

Three dense sentences, front-loaded with the core action and followed by the lookup pointer and coercion rules. Every sentence contributes; no filler.

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 generic command runner with no output schema and full schema coverage, the description covers action, naming, coercion, and UI behavior adequately. Return format and error behavior are unaddressed but less critical here.

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 100%, so the schema already documents all nine parameters and the baseline would be 3. The description goes beyond it by explaining value coercion ('#ff0000' becomes a Color, {x,y,width,height} becomes a Rectangle) and the implicit ui=false injection, adding genuine semantic value.

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?

States a specific verb+resource: executes Aseprite menu commands via app.command.<name>, with concrete examples (Flip, Rotate, Outline). It points to list_commands for names, which helps distinguish it, but does not explicitly separate itself from the similar escape-hatch siblings run_lua and use_tool.

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?

'See list_commands for names and parameters' implies the lookup workflow, and the examples suggest common use. However, it gives no explicit when-to-use/when-not guidance versus run_lua or use_tool, which are the obvious alternatives for arbitrary execution.

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