Skip to main content
Glama

set_tag

Update an existing animation tag in an Aseprite sprite by changing its name, color, direction, frame range, or repeat count. Use it to fix or adjust tag metadata without recreating the tag manually.

Instructions

Update an existing tag. Only the arguments you pass are changed.

Note: changing from_frame/to_frame recreates the tag in place to update its
range reliably across Aseprite versions. A frame that does not exist is rejected
with the sprite's valid range rather than clamped into it.

`repeats` is how many times the tag plays, with 0 meaning forever. It survives the
recreate above along with the name, direction and colour.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYes
colorNo
repeatsNo
filenameYes
new_nameNo
to_frameNo
directionNo
from_frameNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed24 schema fields changedv0.10.0
    • removedInput schema / properties / color / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / color / default
      Removed value: -null
    • removedInput schema / properties / color / title
      Removed value: -"Color"
    • addedInput schema / properties / color / type
      Added value: +"string"
    • removedInput schema / properties / direction / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / direction / default
      Removed value: -null
    • removedInput schema / properties / direction / title
      Removed value: -"Direction"
    • addedInput schema / properties / direction / type
      Added value: +"string"
    • removedInput schema / properties / filename / title
      Removed value: -"Filename"
    • removedInput schema / properties / from_frame / anyOf
      Removed value: -[
      -  {
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / from_frame / default
      Removed value: -null
    • removedInput schema / properties / from_frame / title
      Removed value: -"From Frame"
    • addedInput schema / properties / from_frame / type
      Added value: +"integer"
    • removedInput schema / properties / name / title
      Removed value: -"Name"
    • removedInput schema / properties / new_name / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / new_name / default
      Removed value: -null
    • removedInput schema / properties / new_name / title
      Removed value: -"New Name"
    • addedInput schema / properties / new_name / type
      Added value: +"string"
    • addedInput schema / properties / repeats
      Added value: +{
      +  "type": "integer"
      +}
    • removedInput schema / properties / to_frame / anyOf
      Removed value: -[
      -  {
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / to_frame / default
      Removed value: -null
    • removedInput schema / properties / to_frame / title
      Removed value: -"To Frame"
    • addedInput schema / properties / to_frame / type
      Added value: +"integer"
    • removedInput schema / title
      Removed value: -"set_tagArguments"
  2. First observedv0.7.0

TDQS

A3.8/5.0
Behavior5/5

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

Annotations only say readOnlyHint=false, so the description carries the disclosure burden and does it well: it warns that changing from_frame/to_frame recreates the tag in place, that an out-of-range frame is rejected with the sprite's valid range rather than clamped, that repeats=0 means forever, and that name/direction/colour survive the recreate. These are non-obvious, operationally important behaviours an agent could not infer.

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?

Purpose is front-loaded in the first sentence, followed by a scoped note block; every sentence carries information. Slightly over-fragmented with the mid-sentence line breaks and the parenthetical aside about Aseprite versions, but no padding.

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?

No output schema and minimal annotations mean the description is the main source of truth. It covers the tricky behavioural cases well, but for an 8-parameter, 0%-coverage mutation tool it leaves direction (an enum-less string with no hint of forward/reverse/pingpong), colour format, and the identifier-vs-rename roles of name/new_name undocumented.

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% across 8 parameters, so the description must compensate. It adds real meaning for repeats (0 = forever) and for from_frame/to_frame (recreation and validation), and generalises partial-update semantics, but it says nothing about the name vs new_name distinction, the colour format, or the legal values for direction.

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?

"Update an existing tag" is a specific verb+resource and clearly scopes it to mutation of a tag that already exists, distinguishing it in spirit from add_tag and remove_tag in the sibling list. It does not name those siblings explicitly, so it falls short of a 5.

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

Usage Guidelines3/5

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

"Only the arguments you pass are changed" implies partial-update usage and the phrase "Update an existing tag" implies it is not the tool for creating a tag, but no alternative (add_tag) is named and no conditions or exclusions are given. Usage is only implied.

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

Deploy Server

Other Tools