Skip to main content
Glama

Token Move

token_move
Destructive

Set an existing token's absolute position on a map using map ID, token ID, and x/y coordinates. Returns success or error details to confirm the move.

Instructions

Set an existing token's absolute position through REST. Use token_add to create a token or map_switch to change the active map. The bridge rejects SPECTATOR/unknown roles; upstream requires DM or the controlling player. The same coordinates produce the same position, but repeated writes may produce notifications. Returns persisted=true,broadcast_confirmed=false; REST does not itself emit map.changed. Inspect events_poll or the VTT before assuming others saw the move; this result is not a correlated broadcast ACK. Returns {ok:true,data} on success; tool-body failures return {ok:false,error} with optional diagnostic data. Argument-schema errors are MCP errors.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
xYesAbsolute horizontal position in map units; upstream requires 0 <= x < map width.
yYesAbsolute vertical position in map units; upstream requires 0 <= y < map height.
map_idYesMap ID containing the existing token, not necessarily the active map.
token_idYesExisting token ID on that map; this is not a character or creature ID.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changedv0.3.0
    • addedInput schema / properties / map_id / description
      Added value: +"Map ID containing the existing token, not necessarily the active map."
    • addedInput schema / properties / token_id / description
      Added value: +"Existing token ID on that map; this is not a character or creature ID."
    • addedInput schema / properties / x / description
      Added value: +"Absolute horizontal position in map units; upstream requires 0 <= x < map width."
    • addedInput schema / properties / y / description
      Added value: +"Absolute vertical position in map units; upstream requires 0 <= y < map height."
  2. First observedv0.1.0

TDQS

A4.6/5.0
Behavior5/5

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

The description goes well beyond the annotations (destructiveHint=true, idempotentHint=false) by disclosing role-rejection behavior, repeated-write notification side effects, persisted=true/broadcast_confirmed=false semantics, the fact that REST does not emit map.changed, and the recommendation to inspect events_poll before assuming others saw the move. It also documents the success/error envelope. No contradiction with annotations.

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

Conciseness4/5

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

The description is front-loaded with the purpose, then flows logically through alternatives, role constraints, behavioral semantics, and error format. It is dense but nearly every sentence earns its place; only the broadcast caveat is stated twice ('REST does not itself emit map.changed' and 'this result is not a correlated broadcast ACK'), a minor redundancy.

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 destructive, non-idempotent mutation with four required parameters, the description covers everything needed for correct invocation: role/auth prerequisites, determinism of coordinates, notification side effects, verification guidance via events_poll, and the full success/failure return envelope. The existing output schema relieves the description of return-value duty, but the description exceeds even that bar.

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 description coverage is 100%, so the baseline is 3. All four parameters (x, y, map_id, token_id) already have rich schema descriptions including coordinate ranges and the map/token scoping. The tool description reinforces 'absolute position' but adds little parameter-level meaning beyond what the schema already provides.

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 opening sentence, 'Set an existing token's absolute position through REST,' names a specific verb, resource, and scope in one clear statement. It also differentiates itself from token_add (creation) and map_switch (changing active map), so an agent can distinguish it from the most confusable siblings without opening their schemas.

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

Usage Guidelines5/5

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

The description explicitly routes to alternatives: 'Use token_add to create a token or map_switch to change the active map.' It also states when the tool cannot be used, noting the bridge rejects SPECTATOR/unknown roles and upstream requires DM or the controlling player. These are concrete, actionable conditions for invocation.

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