Skip to main content
Glama

use_tool

Draws or selects in Aseprite by applying a chosen tool along given points, with options for color, brush, layer, frame, and opacity.

Instructions

Draws with an Aseprite tool as if the user dragged through 'points' (app.useTool). Tools: pencil, brush-like strokes with eraser/spray/blur/jumble, line, curve (4 points), rectangle, filled_rectangle, ellipse, filled_ellipse, paint_bucket (1 point), gradient, contour, polygon, and selection tools (rectangular_marquee, elliptical_marquee, lasso, polygonal_lasso, magic_wand).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
inkNo
saveNoBatch mode: write changes back to the sprite file (default true)
toolYes
brushNoBrush: built-in shape and size, or a custom image brush
colorNoDefault: foreground color
frameNo1-based frame number. Defaults to the active frame (or 1).
layerNoLayer name, 'Group/Child' path, or 1-based index from get_sprite_info. Defaults to the active layer.
buttonNoright uses the background color
pointsYes
spriteNoFile path, open tab title, or sprite id. Defaults to the active sprite (live). Batch mode needs a file path.
backendNoauto (default): live Aseprite if connected, else headless batch
bgColorNo'#rrggbb', '#rrggbbaa', a name, a palette index, or {r,g,b,a} / {h,s,v,a} / {h,s,l,a} / {gray,a}
opacityNo
brushSizeNo
toleranceNo
contiguousNo
tilemapModeNo
tilesetModeNo
pixelPerfectNo
selectionModeNo

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 declare readOnlyHint=false and destructiveHint=false; the description adds real behavioral context beyond that – it discloses drag-like point semantics and per-tool point cardinality (curve = 4 points, paint_bucket = 1 point), which prevents malformed calls. It still omits mutation/save side effects, though the save parameter schema partly covers that.

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?

A single dense sentence, front-loaded with the core semantics (how drawing is performed) followed by the tool enumeration. No filler, though the tool list is long and packed into one clause.

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 20-parameter tool with nested objects and no output schema, the description covers the drawing model and valid tool names but says nothing about coordinate space, color/brush interplay, layer/frame targeting, or live-vs-batch behavior. Adequate for the required call shape, thin for full correct usage.

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 only 45% across 20 parameters, so the description must compensate, and it does so for the two required ones – crucially 'tool', which is an untyped string in the schema and only gains valid values from the description. The other 18 parameters (brush, ink, tolerance, tilemapMode, selectionMode, etc.) get no description-level semantics, so it is only partially compensating.

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?

States a specific verb+resource: drawing with an Aseprite tool by simulating a drag through 'points', and even names the underlying API (app.useTool). It also enumerates the full accepted tool-name space, which lets an agent distinguish this from siblings like draw_shapes, draw_pixels and draw_text.

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?

Usage is implied rather than stated: the list of supported tools (including selection tools, gradients, contours) signals broad coverage, but there is no explicit when-to-use vs draw_shapes/draw_pixels/draw_text, and no when-not guidance.

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