rpgmaker-mz-mcp
This MCP server provides 128 tools that let an AI assistant directly read, author, validate, preview, render, playtest, and export an RPG Maker MZ project without using the editor.
Target a project and inspect/update its game title.
CRUD database records: actors, classes, skills, items, weapons, armors, states, enemies, troops, and common events.
Search, list, get, and batch-create database records in single writes.
Delete records or reset tables with dangling-reference checks.
Manage maps: create, delete, resize, update, map tree, encounters, dimensions, and tile regions.
Paint tiles with autotiling, fill areas, place multi-tile objects, and edit passability/terrain flags.
Use semantic tile catalogs and find tiles by name.
Create/edit map events, pages, NPCs, chests, transfers, and move routes.
Build event-command sequences for dialogue, choices, branches, switches/variables, gold/items/party changes, transfers, audio, screen effects, pictures, animations, battles, shops, name input, and actor changes.
Insert built commands into map events, common events, or troop battle pages.
Work with troop battle events and plugin commands.
List assets and validate asset references.
Validate event structure, project-wide references, and inputs; preview writes with dry-run diffs.
Manage switches/variables: allocate IDs, name them, and inspect usage.
Configure system data: title screen, starting position, party, terms, types, and currency.
Export a pruned HTML5 web build for static hosting or itch.io.
Headless render maps and run scripted playtests with screenshots, dialogue, choices, walking, battles, and error reporting.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@rpgmaker-mz-mcpAdd a town under the world map, paint it with grass, and drop in a shopkeeper who sells potions"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
RPG Maker MZ MCP Server
128 tools that let an AI assistant read and write an RPG Maker MZ project directly — actors, classes, skills, items, equipment, states, enemies, troops, common events, maps, tiles, tilesets, events, and system settings — instead of hand-editing everything in the editor.
"Add a town under the world map, paint it with grass, and drop in a shopkeeper who sells potions" → done, in-project, no editor clicks.
Quick start
Claude Code (recommended) — installs the server and the authoring skills as one plugin:
claude plugin marketplace add Redseb/rpgmaker-mz-mcp
claude plugin install rpgmaker-mz@rpgmaker-mz-mcpYou'll be prompted for your RPG Maker MZ project directory (optional — you can also just ask Claude to set_project later).
Any other MCP client — the server is on npm; no clone or build needed:
{
"mcpServers": {
"rpgmaker-mz": {
"command": "npx",
"args": ["-y", "rpgmaker-mz-mcp@latest"],
"env": { "RPGMAKER_PROJECT_PATH": "/path/to/your/rpgmaker/project" }
}
}
}Claude Desktop — either the JSON config above, or download the one-click rpgmaker-mz-mcp.mcpb bundle from Releases and open it with Claude Desktop.
New here? Read SETUP.md for the full walkthrough and EXAMPLES.md for end-to-end recipes.
Related MCP server: RPG Maker MZ MCP Server
Contents
Capabilities
Database CRUD — actors, classes (with learnings & param curves), skills (full-control + simplified damage/heal/buff/state helpers), items, weapons, armors, states, enemies, and troops. Only a
nameis required to create; everything else falls back to the editor's true "New X" template.Maps & the map tree — create/delete maps, batch-reparent/reorder/rename with a cycle guard, and edit map properties. New maps register in
MapInfos.jsonexactly as the editor expects.Tile painting (with automatic autotiling) —
paint_tiles/fill_areaset tiles on any of the six map layers and recompute autotile shapes (and their neighbours') from same-kind adjacency, so a filled region borders itself correctly.paint_blueprintpaints a whole area from ASCII rows + a legend in one call (multi-layer cells, catalog names, A4 wall faces derived automatically) and returns a passability overview.place_objectstamps multi-tile B/C objects (houses, trees) and reports their passability footprint.Semantic tile catalog —
find_tile "grass"→ a paintable tile id. Built-in catalogs for every default tileset (Overworld, Outside, Inside, Dungeon, SF), sourced from RPG Maker's own English name sidecars. A bundled vision-bootstrap skill catalogs custom tilesets.Passability & terrain — read a tile's flags or a map cell's layered passability (
get_tile_flags/check_passability), and edit passability/terrain-tag/behaviour flags (set_tile_flags).Event-command builders — high-level, read-only builders that emit the exact
EventCommandsequences the editor writes (including tricky recursive branch blocks and continuation rows), landed on a page viainsert_event_commands. Covers dialogue & flow, game-state changes, presentation/transitions, and scene processing.Event & NPC ergonomics —
create_npcplaces a complete talking NPC in one call;set_event_pagemerges a page's graphic + behavior in place.Asset awareness —
list_assetsenumerates valid character/face/tileset/audio names so events never reference a missing file.See and play the build —
render_mapscreenshots a map exactly as the engine draws it (whole map or a game-screen view) andrun_playtestdrives a scripted headless session (load a state, trigger events, read dialogue, pick choices, walk, auto-battle, screenshot), both reporting console errors and missing assets. Validators prove structure; these show what the player sees.Correctness layer — Zod-validated inputs, throw-by-default event validation (a structurally invalid write is refused, not saved-and-warned-about), a cross-file reference linter (
validate_references), and a dry-run/diff preview on every write.
How it fits together
Installation
Pick one:
Claude Code plugin (recommended) —
claude plugin marketplace add Redseb/rpgmaker-mz-mcp, thenclaude plugin install rpgmaker-mz@rpgmaker-mz-mcp. This bundles the MCP server (run via npx from the npm package) together with the two authoring skills (rpgmaker-authoring,tileset-catalog) — the skills carry the judgment the tools don't enforce, so this is the full experience.npm package — configure your MCP client to run
npx -y rpgmaker-mz-mcp@latest(see Quick start). Tools only, no skills.MCPB bundle (Claude Desktop) — download
rpgmaker-mz-mcp.mcpbfrom Releases, open it with Claude Desktop, and pick your project folder in the install dialog.From source (development):
npm install
npm run buildConfiguration
Set the RPG Maker MZ project path as an environment variable:
# macOS/Linux
export RPGMAKER_PROJECT_PATH=/path/to/your/rpgmaker/project
# Windows
set RPGMAKER_PROJECT_PATH=C:\path\to\your\rpgmaker\projectThe path must point to a directory containing game.rmmzproject and a data/ directory with System.json.
The environment variable is only the startup default: the set_project tool can retarget a running server at a different project (and get_project reports the current one), so switching games doesn't require editing config or restarting.
Usage
Running the server
npm start # or: node dist/index.jsConfiguring in Claude Desktop
The easiest path is the .mcpb bundle from Releases — open it with Claude Desktop and pick your project folder. To configure by hand instead, add to your Claude Desktop configuration file (%APPDATA%\Claude\claude_desktop_config.json on Windows, ~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"rpgmaker-mz": {
"command": "npx",
"args": ["-y", "rpgmaker-mz-mcp@latest"],
"env": {
"RPGMAKER_PROJECT_PATH": "/path/to/your/rpgmaker/project"
}
}
}
}(For a from-source checkout, use "command": "node" with "args": ["/path/to/rpgmaker-mz-mcp/dist/index.js"] instead.)
Available tools
All 128 tools, grouped by area. Tools that write to the project accept an optional dryRun argument (see Dry-run preview); those that can refuse a structurally invalid write also accept force (see Event validation).
Project targeting
get_project— the project the server is operating on: path, validity, game titleset_project— retarget the server at another project directory for the rest of the session (no restart; overridesRPGMAKER_PROJECT_PATH)
Actors
create_actor,update_actor,search_actors
Classes
create_class,update_classadd_class_learning— attach a skill learned at a level (validates the skill, keeps learnings level-sorted)set_class_param_curve— replace one of the 8 parameter growth rows
Skills
create_skill(full control — every Skills.json field incl.occasion,hitType,speed,repeats,successRate,tpGain, required weapon types,message2,note;hitTypedefaults to magical for Magic skills, physical for other damage, certain for heals/ally scopes),update_skill,search_skillscreate_damage_skill,create_healing_skill,create_buff_skill,create_state_skill— natural-language-friendly helpers for common skill types
Items & equipment
create_item,update_item,search_itemscreate_weapon,update_weaponcreate_armor,update_armor
States
create_state,update_state
Enemies & troops
create_enemy,update_enemy,search_enemiescreate_troop,update_troop,search_troops—create_troopvalidates that every member references an existing enemybuild_troop_page— build a battle-event page{ conditions, list, span }from a compact trigger (when:turn [a, b],enemyHpBelow [slot, pct],actorHpBelow [actorId, pct],switch,turnEnd— ANDed) and aspan(battle/turn/moment), no hand-built 12-field conditions object. Read-onlyadd_troop_page— append (or insert atposition) one page to a troop without re-sending the others; warns on an HP condition pointing past the troop's members
Common events
create_common_event,update_common_eventcall_common_event— builds the code-117 call command and validates the target exists
Maps & the map tree
get_map(passincludeData: falseto omit the tile array on a big map),get_map_infos,get_map_dimensions,update_mapget_map_region— read a window of tile ids (x, y, width, height, layer) instead of the whole mapcreate_map— allocates the next id, writes a blank map, and registers it in the treedelete_map— removes a map and reparents its children onto its parentupdate_map_tree— batch reparent/reorder/rename/expand with an up-front existence check and cycle guard
Map events
get_map_events,get_map_event,search_map_eventscreate_map_event,update_map_event,delete_map_eventadd_event_command— append a single command to an event pageset_map_tile— set a single raw tile id at (x, y) on a z-layer (no autotiling)
Event & NPC ergonomics
create_npc— one-shot "talking NPC": graphic + trigger + a talk list fromtext(optionally auto word-wrapped withwrap) or explicitcommandscreate_chest— one-shot treasure chest: the two-page self-switch idiom (give item/weapon/armor/gold, then never again)create_transfer— one-shot map transfer, in either working idiom: face a solid landmark (action_button) or step on a doormat (player_touch)set_event_page— merge a page's graphic + behavior (sprite, trigger, priority, movement, flags) in place
Event-command builders
Read-only builders that return editor-faithful EventCommand sequences; land them on a command list with insert_event_commands.
Dialogue & flow:
build_show_text(101/401),build_show_choices(102/402–404),build_conditional_branch(111/411/412),build_flow_command(wait/exit/label/jump)Game state:
build_control_switch(121/123),build_control_variable(122),build_change_gold(125),build_change_items(126–128),build_change_party_member(129)Presentation & transitions:
build_transfer_player(201),build_play_audio(BGM/BGS/ME/SE),build_screen_effect(fade/tint/flash/shake),build_picture(show/erase),build_character_effect(animation/balloon)Scenes:
build_battle_processing(301),build_shop_processing(302/605),build_name_input(303),build_change_actor(HP/MP/state/recover/EXP/level, 311–316)Battle (troop pages):
build_battle_command— enemy appear (335, reveal a hidden member), change enemy state (333, one slot or the whole troop), abort battle (340)Insertion:
insert_event_commands— splice a built sequence into a map event page (the defaulttarget), a common event body, or a troop battle-event page, then validate
Move routes
create_move_route— build aMoveRoutefrom a named pattern (patrol/approach/flee/wander/custom)set_movement_route— insert a forced Set Movement Route (code 205 + 505 continuation rows)
Plugin commands
scan_plugins— discover the plugin commands this project actually has, by parsingjs/plugins/*.jsannotations (+ enabled state fromjs/plugins.js)list_plugin_commands— view the known plugin commands (the project scan merged over a built-in allowlist)create_plugin_command— build a code-357 plugin command with normalized args
Tiles, catalog & painting
describe_tile— decode a raw tile id (sheet, autotile kind/shape, geometry)get_tile_catalog,find_tile— resolve human names ↔ paintable tile ids (find_tilecan widen the search to a custom sheet's catalog descriptions withsearchDescriptions)paint_tiles,fill_area— paint with automatic autotilingpaint_blueprint— paint a whole area from an ASCII blueprint + legend in one write:[layer, tile]pairs per glyph, catalog names instead of ids,{ wall: { top } }entries whose vertical runs get their bottom cell turned into the wall-side (face) kind (top + 8 kinds), stale upper layers cleared; returns per-layer counts and a#/.passability mapplace_object— stamp a multi-tile B/C object and report its passability footprint
Tileset flags (passability / terrain)
get_tile_flags— decode a tile's passability/star/ladder/bush/counter/damage/terrain-tagcheck_passability— the map-aware, layered answer for a cellset_tile_flags— edit a tile's flags (non-destructive merge; auto-applies to all 48 shape slots of an autotile kind)
Assets
list_assets— enumerate available asset basenames (characters, faces, tilesets, pictures, audio, …)
Web export
export_web— build a pruned HTML5 deployment for itch.io or any static host:index.html,js/,css/,fonts/,icon/anddata/*.json, plus only theimg//audio//movies/files something references (every string in the data files, string literals in the core engine scripts and plugins, plugin@defaults;img/system/is always kept, and every.ogg/.m4avariant of a kept track). Effekseer effects are pruned the same way: aneffects/*.efkefcis kept only if its name is a real effect reference (an animation'seffectName, a Plugin Command argument in an event, or a plugin parameter/string — not other data strings, so a state or animation namedPoisondoesn't pull inPoison.efkefc), together with the textures/models it lists inside the file; if a kept effect can't be parsed, all ofeffects/' textures and models are kept. When nothing references an effect, noeffects/folder is exported. Writes the folder tooutDirand, withzip(default),<outDir>.zipwithindex.htmlat the archive root. Returns file/byte counts, kept/dropped asset counts and paths (effects included), the screen size fromSystem.advanced(use it as the itch embed size), and warnings past itch's 1000-file / 200 MB-per-file limits.prune: falsecopies every asset — use it if a plugin builds asset names at runtime. Writes nothing inside the project;outDircan't be the project or sit inside a folder it copies, and an existing non-emptyoutDiris only replaced if it's a previousexport_weboutput.
Headless render & playtest
Boots the project's own index.html in a headless Chromium to check what validators can't: how a map looks and how it plays. Read-only — nothing is written into the project; PNGs go to <os tmpdir>/rpgmaker-mz-mcp/renders/ unless you pass out. Pass inline: true to also get the PNG(s) back as image content in the tool response.
render_map— screenshot one map. By default it renders the whole map in one image (the canvas is resized towidth×height×48px, the player is hidden, autorun/parallel events are frozen so a cutscene can't cover the map, and the map-name banner is off). Passx+yto get a normal 816×624 game-screen view centred on that tile instead (the player is shown).showEvents: falsedraws bare tiles;switchesturns switches on first to see a later story state;runEvents: truelets events run. Returns the PNG path andproblems: console errors, page errors, and HTTP 404s (a missing image is drawn blank and listed there instead of stopping the engine on its load-error screen). Maps over 4800 px on a side need thex/yview.run_playtest— run a script of steps in one browser session. Each step returnsokplus details, and the run stops at the first failing step:load{mapId, x, y, direction?, party?, level?, gold?, switches?, variables?, selfSwitches?, items?, equip?, encounters?}starts a new game at that spot with that state. Random encounters stay off unlessencounters: true.startEvent{eventId}triggers a map event and lets it run until it shows text or goes idle. If the event transfers the player, the step waits for the new map and reports it astransferredTo{mapId, x, y}.advanceText{maxMs?}presses OK until the event goes idle. It stops early at an open choice list or a battle, and returns the message lines shown (with speaker names) and any open choices. Text shown during a battle comes back separately asbattleLines, so it isn't mixed into the map event's dialogue.choose{index}picks a 0-based choice.walk{direction, steps?}walks tile by tile and reports the tile it ended on (to). If a tile refused entry, it reports both the player's tile (stoppedAt) and the tile that refused (blockedTile), which is how you find invisible walls. It stops early when a touch event fires; if that event is a door, it waits for the transfer to finish, sotoandtransferredToare on the new map.eventRunning/messageOpensay the event is still going (follow up withadvanceText).press{button, times?}andwait{ms}.autoBattle{troopId?, canEscape?, canLose?, maxMs?}fights a battle that has already started, or startstroopId, on auto AI, giving up aftermaxMs(default 60 s). It reportsvictory/defeat/escaped, the final HP of both sides, and the battle's messagelines(troop battle events, victory text). Battles are fast-forwarded: the engine runs 20 frames for every frame it draws, so the fight plays out exactly as it would (same logic, same odds), only faster. A 10-turn boss fight takes about 5 s instead of 80 s. Passrealtime: trueon the run to watch battles at normal speed, and raisemaxMsto match. Only battles are sped up; the map, walking and dialogue run at normal speed.screenshot{name?}saves a PNG.eval{script}returns the value of a JS expression evaluated in the game page, such as"$gameSwitches.value(3)".
Reported text (
lines,battleLines,choices, speaker names) reads the way the message window shows it.\V[n],\N[n],\P[n]and\Gare filled in from the game state at the time, and control codes such as\C[n],\I[n],\{,\.and\|are removed, so victory text comes back as92 EXP received!.The response ends with
finalState(scene, map, position, gold, party) andproblems.startEventandautoBattlerefuse to start while an event or message is still running (for example, a map's autorun cutscene right afterload) and tell you toadvanceTextfirst.
Requirements. Both tools need playwright-core. It's an optional dependency, so a failed install never breaks the other tools; these two just return an error that tells you how to fix it. They also need a Chromium. No browser is downloaded: the server uses the newest chrome-headless-shell (or full Chromium) in the Playwright cache (~/Library/Caches/ms-playwright, ~/.cache/ms-playwright, %LOCALAPPDATA%\ms-playwright, or PLAYWRIGHT_BROWSERS_PATH). If you don't have one, run npx playwright install chromium-headless-shell, or set RPGMAKER_MCP_CHROMIUM to any Chrome/Chromium executable. Each call takes about 1–2 s to boot, plus however long the script runs.
Long runs. A run_playtest script with long cutscenes or realtime battles can take a minute or more, which is longer than many MCP clients wait by default (the TypeScript SDK gives up after 60 s with -32001 Request timed out). If the client sends a progressToken, the server sends a progress notification for each step and every 5 s during long ones, so a client using resetTimeoutOnProgress (or a longer timeout) keeps waiting. If your client can do neither, split the script into several shorter runs.
System & vocabulary
get_system,get_game_title,update_game_titleget_title_screen,update_title_screen— background layers, BGM, and the "draw game title" toggleget_variables,set_variable_name,get_switches,set_switch_nameget_starting_position,update_starting_positionget_party,set_party— the starting party (set_partyvalidates every actor id)get_terms,set_term— menu vocabularyget_types,set_type_name— element/skill/weapon/armor/equip type-name listsset_currency_unit
Batch creation
batch_create— create many records of one type (actors, items, weapons, armors, skills, enemies, states, classes) in a single call and a single file write; ids allocate sequentially, so a record can reference a sibling made earlier in the same batch; record fields the matchingcreate_*tool doesn't accept come back as warnings instead of vanishing silently
Deleting records
delete_record— delete one database record (actor, class, skill, item, weapon, armor, enemy, troop, state, common event) by nulling its slot, so no other id shifts; reports every reference the deletion would leave dangling and refuses when there are any unlessforce: truereset_table— clear a whole table except the ids inkeep(e.g.reset_table('skill', { keep: [1, 2] })wipes the RTP skills but keeps Attack/Guard); kept records stay at their own id, trailing empty slots are trimmed, and it refuses on dangling references the same way
Index & validation
list_names— cheap{ id, name }index for a table (actors, items, skills, maps, enemies, …)get_database— full records from one table (actors, classes, items, weapons, armors, skills, enemies, troops, states, common_events), or a single record byidvalidate_event,validate_project— event-command-shape validation (read-only)validate_references— cross-file id-integrity audit (party→actor, transfer→map, effect→state/skill/common-event, drops→item, Change Items/Shop/Battle Processing→item/troop, encounters→troop, map-tree cycles, …)
ID allocation
list_allocated_ids— which switch / variable / common-event IDs are already spoken for, derived from the project's own JSON; withid, every place that one is referencednext_free_id— reserve the next unallocated ID(s) instead of picking one by hand
Input validation
Every tool declares its arguments as a Zod schema. The server (built on the MCP SDK's high-level McpServer) validates incoming arguments against that schema before a handler runs, so malformed calls are rejected with a clear Input validation error naming the offending field instead of writing garbage to disk.
Event validation (throw-by-default)
Event command lists are checked against a table of known RPG Maker MZ command codes (101 Show Text, 201 Transfer Player, 122 Control Variables, …), and against the block structure those commands form. Findings come in two tiers, and the tier decides what happens to the write:
Structural — a wrong parameter count for a known command (including the counts that depend on a Conditional Branch's condition type or a Control Variables operand type), a list not terminated by the code-
0end marker, a non-arrayparameters, a broken block (a Show Choices/Conditional Branch/Loop that is never closed, a branch or closer row orphaned or written at the wrong indent, a choice with noWhenbranch), or an action-button event stranded on an impassable tile. These are almost always bugs, so the event-writing tools validate the would-be result before committing and refuse the write: the tool errors and nothing reaches disk. Passforce: trueto write anyway (the argument is advertised on exactly the tools that can refuse).Advisory — an unrecognized command code (which may simply be a plugin command), an over-long text line, an unknown asset filename, a choice block whose Cancel routing and
When Cancelbranch disagree (dead code, not corruption). These are legitimately possible, so they never block; they ride along aswarningson the normal response.
Because the check runs before the commit, a dryRun of a write that would be refused fails too, rather than previewing a write that could never happen.
validate_event / validate_project remain read-only audits: they report both tiers (each finding carries a severity) without changing anything.
Text width: teaching it your font
The over-long-text-line warning is measured in characters by default — 55 per line, 38 when a face graphic is shown — which suits the stock RTP font and needs no setup. If your project ships a different font, that estimate goes wrong in one of two directions: a narrower font makes it warn on lines that fit comfortably, and a wider or larger one makes it stay quiet on lines that really are cut off (38 characters of a 24px glyph is 912px in a 616px window). No single character limit fixes both, because glyph widths in a proportional font span a wide range — a full stop can be a third the width of a capital.
Drop a .rpgmaker-mcp.json in the project root to replace the estimate with a real measurement:
{
"text": {
"lineBudget": { "noFace": 784, "withFace": 616 },
"nameBudgetChars": 8,
"charWidths": { "_default": 13, "a": 11.38, ".": 4.88, " ": 8.12 }
}
}lineBudget— the message window's usable width, without and with a face graphic. In pixels if you givecharWidths, otherwise in characters (a barelineBudgetis just a character-limit override).charWidths— per-character advance;_defaultcovers anything unlisted. Get these from the engine itself:Window_Base.textWidth(c.repeat(40)) / 40in a running game is exact.nameBudgetChars— how wide to assume\N[3]/\P[1]renders. A name is typed by the player at runtime, so budget the Name InputmaxLength(usually 8) rather than the default name, or a long name overflows a line that fitted while you were testing. Defaults to0, which ignores name escapes as before.
Everything fails soft: no file, bad JSON, or a malformed text section leaves the built-in estimate in place, so a broken config is never worse than no config. The file is re-read when its mtime changes, and warnings then report real widths (Show Text line is 650px but the message window fits 616px with a face shown).
Auto-wrap. Rather than fixing overflowing lines by hand, pass wrap: true to build_show_text or create_npc and write whole paragraphs: the text is word-wrapped to exactly the width the warning checks (the default estimate or your .rpgmaker-mcp.json metrics; escape codes like \C[n] never count or get split) and split into as many 4-line message boxes as needed, each with the same face/speaker. wrap: true (or "soft") reflows every entry as one paragraph; "hard" keeps each entry and \n as a forced line break and only wraps lines that are too long.
Reference linting
validate_references performs a cross-file id-integrity audit — orthogonal to the command-shape check above. It walks the whole database and flags references that point at something that doesn't exist: a starting party member with no matching actor, a Transfer Player targeting a missing map, a skill effect that adds a non-existent state, an enemy dropping an unknown item, a cyclic map-tree parent, and more. Every check is warn-by-default and guarded against false positives on partially-loaded projects.
Deleting records and resetting tables
A new MZ project ships RTP-flavoured database rows whose icons, animations and battlers point at RTP art. When you replace the art wholesale, the natural workflow is "clear the database, then author my own" — reset_table is that first step, and delete_record removes a single row.
Database arrays are index = id, so both tools null the slot rather than splice: nothing is renumbered, and no surviving reference silently starts pointing at a different record. reset_table keeps each keep id at its own index and trims trailing empty slots (a table with nothing kept becomes [null]); new records from create_* / batch_create then allocate from the highest live id.
Before writing, both tools work out which references the removal would leave dangling, by running the validate_references audit with and without the removed rows and keeping only the findings the removal introduces (references that were already broken aren't blamed on it). Removing skill 1 (Attack), skill 2 (Guard) or state 1 (Knockout) is always reported too, since the engine hard-codes those ids. If anything would dangle, the write is refused and nothing reaches disk — pass force: true to go ahead anyway, or dryRun: true to preview what disappears and what would break (a dry-run reports requiresForce instead of throwing). The scan covers what validate_references covers and says so in a coverage field: traits, actor starting equipment, event page conditions, Conditional Branch operands, and Script/plugin commands are not scanned.
reset_table({ type: 'skill', keep: [1, 2], dryRun: true }) // what goes, what breaks
reset_table({ type: 'skill', keep: [1, 2], force: true }) // do it
batch_create({ type: 'skill', records: [...] }) // author the replacementsID allocation
Switches, variables and common-event IDs are one global namespace, and nothing in RPG Maker stops a later edit from claiming an ID an earlier one already used. The failure is silent — no crash, no validator hit, just a door that is inexplicably already open hours into a playtest.
list_allocated_ids answers "what's taken?" from the project files themselves — never a hand-maintained list, which would drift the moment someone edited in the RPG Maker editor. An ID counts as allocated if it is declared (a System.json label, a CommonEvents row) or referenced anywhere: event page conditions and command lists, common events, troop pages, and Common Event skill/item effects. Both halves matter — a named-but-unused switch is a claim someone staked, and a used-but-unnamed one is a claim nobody wrote down. Pass id to ask the narrower question: where is switch 23 actually used, before I touch it?
next_free_id hands back the next unallocated ID(s), strictly above everything already taken. Holes below the highest ID are left alone by default (a hole is often an ID claimed in notes but not yet written); reuseGaps: true fills them when you're compacting deliberately. It's read-only — it suggests IDs, it doesn't write them, so name what you take with set_switch_name / set_variable_name to make the claim visible to whoever edits next. Those two grow the System.json name list when the ID is past the end, so an ID from next_free_id can always be labelled without opening the editor.
Like the command validator, the usage scan is curated, not exhaustive: it covers the commands that carry switch/variable IDs (Control Switches/Variables, Conditional Branch, the "designation by variable" forms of Transfer Player, Change Gold/Items, Change HP/MP/EXP/Level, …), and every report states the command codes it scanned. An ID used only from a Script (355) or a plugin command (357) will read as free.
Dry-run preview
Every tool that writes to the project accepts an optional dryRun argument. When dryRun: true, the tool computes what it would write and returns a diff instead of touching any files:
{
"dryRun": true,
"wouldChange": [
{
"file": "System.json",
"changed": true,
"diff": {
"changes": [{ "path": "gameTitle", "from": "Old Title", "to": "New Title" }],
"truncated": false
}
}
],
"wouldReturn": { "...": "what the tool would have returned, warnings included" }
}wouldReturn carries the response the tool would have produced, so a dry-run also previews the validation warnings a write would have reported — not just the diff.
All writes go through a single choke point that skips no-op writes and keeps the on-disk JSON in the editor's compact single-line format. File deletions (e.g. delete_map) share the same dry-run machinery.
Quiet write echoes
A write tool that echoes the whole record back costs the one caller that always pays for it — an AI assistant, whose context is the scarce resource. So the tools that would otherwise replay a command list or a map's events return a summary by default:
tool | echoes |
| the map without its tile |
| event identity + per-page |
|
|
| identity, trigger wiring, |
| identity, members, per-page |
The rule: keep what you would assert on, drop what you would only re-read. Command codes stay, because they are how you verify a splice landed where you asked (is the 302 still after the two 101s); command parameters go, because they are what you just wrote.
Pass verbose: true on any of those calls for the old full record, or read it back with get_map / get_map_event / get_database. warnings always survive summarization, and a dry-run's wouldReturn is summarized the same way so a preview and the real call report the same shape.
Measured on six calls from one real authoring session: 115,080 → 3,672 characters (-97%). A single update_map that set a map's BGM was echoing 46,846 characters of dialogue back at the caller.
Custom-tileset catalog skill
The default tilesets are cataloged out of the box. A non-default sheet that ships an RPG Maker .txt name sidecar next to it (img/tilesets/<Sheet>.txt, one Name|日本語名 line per tile — commercial DLC packs include these) is cataloged automatically too: its names come back with source: 'sidecar', no catalog files needed. Precedence per tile: a human-verified (manual) data/tilecatalog/ entry > the sidecar > a vision draft. For a custom (non-RTP) tileset with no sidecar, a bundled Claude skill under .claude/skills/tileset-catalog/ slices each sheet into labelled samples, has Claude vision-name them, and writes a versioned, project-scoped catalog to data/tilecatalog/ — after which find_tile/get_tile_catalog resolve names for that sheet too. Those drafts also record what each tile looks like, so find_tile with searchDescriptions: true can match that text when a machine-drafted name is too terse to search by. The skill ships a dependency-free PNG codec and engine-exact tile geometry, so it runs anywhere Node does.
Example prompts
Once configured, drive your project in natural language:
"Create a fire skill 'Fireball' costing 15 MP that deals
a.mat * 4 - b.mdf * 2to one enemy.""Add a new town map under the world map, 30×25, using the Outside tileset."
"Paint grass in a 10×8 rectangle at (4, 4) on map 3 and let it auto-border."
"Place a talking NPC named 'Guard' at (8, 5) on map 2 who says 'Halt! Who goes there?'"
"Make the water tiles on tileset 1 impassable and tag them terrain 1."
"Check my project for broken references before I ship."
Development
npm run build # Compile TypeScript to dist/
npm run typecheck # Type-check without emitting (tsc --noEmit)
npm run dev # Compile in watch mode
npm run lint # ESLint
npm run lint:fix # ESLint with autofix
npm run format # Format with Prettier
npm run format:check # Check formatting (used in CI)
npm test # Vitest
npm run sync:tools # Re-stamp the tool count into the README + SVGs (see below)
npm run sync:version # Re-stamp package.json's version into the packaging manifests
npm run bundle:mcpb # Build the one-click Claude Desktop bundle (rpgmaker-mz-mcp.mcpb)During development you can skip the build entirely by running the server from source with tsx: point your MCP client's command at node_modules/.bin/tsx with src/index.ts as the argument. Since tsx doesn't type-check, run npm run typecheck alongside lint and tests before committing.
CI runs lint, format check, tool-count sync check, tests, and build on every push and pull request (see .github/workflows/ci.yml).
Keeping the tool count in sync
The advertised tool count lives in a few human-facing spots — the README prose and badge, and the two SVGs in assets/. npm run sync:tools counts the real tools from src/tools/ and re-stamps all of them, so bumping the number after adding a tool is one command. npm run sync:tools:check (run in CI) fails if any spot is stale.
Releasing
package.json is the source of truth for the version; npm run sync:version stamps it into the plugin manifest (.claude-plugin/plugin.json), the MCP-registry metadata (server.json), and the MCPB manifest (mcpb/manifest.json). CI and prepublishOnly fail if they drift. A release is:
npm version minor --no-git-tag-version # or patch/major — bumps package.json only
npm run sync:version # stamp it into the other three manifests
git commit -am vX.Y.Z # one commit, with every manifest already correct
git tag vX.Y.Z # tag it afterwards, so nothing rewrites it
git push && git push origin vX.Y.Z
npm publish # publish to npm (runs the full gate via prepublishOnly)
mcp-publisher publish # update the MCP registry listing (server.json; login: mcp-publisher login github)
npm run bundle:mcpb # build rpgmaker-mz-mcp.mcpb
gh release create vX.Y.Z rpgmaker-mz-mcp.mcpb --title vX.Y.Z --notes "..." # publish the GitHub release + attach the bundleThe Claude Code plugin needs no separate publish — users' installs update from this repo (the plugin runs the npm package via npx rpgmaker-mz-mcp@latest, so bumping npm is what ships new tools).
Tag last, and never amend a tagged commit. npm version on its own commits and tags before sync:version has stamped the other manifests, so the old recipe amended afterwards — which left the tag pointing at the pre-amend commit, with stale manifests and off the branch entirely. --no-git-tag-version avoids the whole problem: one commit, then the tag. Push the tag by name (--follow-tags is easy to get wrong here), and don't skip gh release create — nothing before it creates the GitHub release.
Project structure
rpgmaker-mz-mcp/
├── src/
│ ├── index.ts # McpServer bootstrap: registers every tool, dispatch + dry-run
│ ├── registry.ts # ToolDefinition shape + shared dryRun schema
│ ├── tools/ # One module per area (actors, items, skills, maps, battle,
│ │ # classes, states, common events, moves, plugins, tiles,
│ │ # catalog, paint, objects, tilesets, system, assets,
│ │ # event-command builders, event pages, list, validation)
│ ├── events/ # Pure event-command builders (no I/O)
│ ├── tiles/ # Tile subsystem: codec, autotile solver, paint core,
│ │ # flag codec, and the semantic catalog
│ ├── playtest/ # Headless engine driver: Chromium discovery, static server,
│ │ # render_map + run_playtest (optional playwright-core)
│ ├── validation/ # Known-command tables + event/move/plugin/reference validators
│ └── utils/ # File I/O, the commit choke point, and RPG Maker MZ types
├── test/ # Vitest suite
├── scripts/
│ └── sync-tool-count.mjs # Re-stamps the tool count into the README + SVGs
├── assets/ # Banner + architecture SVGs
├── .claude/skills/
│ └── tileset-catalog/ # Vision catalog-bootstrap skill for custom tilesets
├── dist/ # Compiled JavaScript (gitignored)
└── README.mdSafety and best practices
Close the RPG Maker MZ editor while using this server — it writes JSON files directly, and the editor can overwrite changes on save.
Use version control for your project. Combined with dry-run previews and validation, git is the safety net (the server does not make automatic backups).
Preview destructive edits with
dryRun: truebefore committing them.Test in-engine after significant changes.
Limitations
Writes JSON files directly; the editor must be closed to avoid conflicts.
Plugin commands are validated against the plugins your project actually ships (
scan_pluginsparses their@command/@argannotations), falling back to a small built-in allowlist. Since RPG Maker MZ has no "required argument" annotation, scanned args are checked for unknown names only, never for missing ones; a plugin with no annotation block passes through unchecked.Animations (
Animations.json, Effekseer-based) are not edited by this server.
Acknowledgements
This project started life as a fork of k4zuki0539/-rpgmaker-mz-mcp (MIT), which provided the original CRUD scaffolding. It has since grown well beyond that starting point — into full vanilla level-design and game-logic authoring (see Capabilities) — and is now maintained as its own project. Thanks to the original author for the foundation.
License
Resources
Available Tools
128 toolsadd_class_learningA
Add a "learn skill at level" entry to a class (replaces the hack of attaching skills to an actor via an Add-Skill trait). Validates the skillId exists and keeps the learnings sorted by level. Warns (never blocks) when the skill's stypeId is not covered by an Add Skill Type trait ({ code: 41, dataId: stypeId, value: 1 }) on the class — without it the skill-type command never appears and actors cannot use the skill.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Optional note for the learning entry | |
| level | Yes | Level at which the skill is learned | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| classId | Yes | The ID of the class to add the learning to | |
| skillId | Yes | The skill learned (must exist in data/Skills.json) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It honestly reveals key behaviors: validation of skillId existence, sorting by level, and a warning (never blocking) when the skill's stypeId lacks a required trait. It even explains the consequence of ignoring the warning (skill-type command never appears, actors cannot use the skill). This is exceptional transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, with the main purpose front-loaded in the first sentence and behavioral details efficiently packed into the second. The parenthetical about the trait is a bit dense but earns its place. No wasted words, though the long second sentence could be slightly split for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 annotations, and no output schema, the description adequately covers core behaviors: what it does, validation, sorting, and the important warning. It does not explicitly describe return values or exact error behavior on failed validation, but the description is sufficiently complete for an agent to invoke it correctly in most situations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. The description does add some context for 'level' (sorted by level) and confirms the skillId existence requirement already in the schema, but it does not need to compensate for missing parameter info. It adds marginal value beyond the structured schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Add a "learn skill at level" entry to a class'. It uses a specific verb+resource pattern and distinguishes itself from an alternative hack (attaching skills to actors via an Add-Skill trait), making its purpose unambiguous among many sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: it is the proper way to add skill learnings to a class, replacing a common hack. It also implicitly warns when not to use it or what prerequisite is needed (the Add Skill Type trait) for the skill to be usable. It does not explicitly name alternative tools, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_event_commandA
Add a command to an event page. Refuses the write (nothing is saved) if the resulting page is structurally invalid — e.g. the command has the wrong parameter count for its code. Pass force: true to override.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Write even if validation finds structural problems (wrong parameter count, unterminated command list). Off by default: such a write is refused and nothing is written. Advisory warnings never block regardless. | |
| mapId | Yes | The ID of the map | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| command | Yes | The event command to insert | |
| eventId | Yes | The ID of the event | |
| verbose | No | Echo the full written record instead of the default summary. Off by default: the response reports identity, counts and command-list shape, which is what you would assert on, and omits the parameters/conditions you would only re-read. Read the full record with the matching get_* tool. | |
| position | No | Insertion index; defaults to end of the list | |
| pageIndex | Yes | Zero-based page index |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavioral traits, and it does so well by stating that writes are refused (nothing saved) on structural invalidity and that force: true overrides this. This goes beyond the obvious 'add' action and covers a key failure mode. However, it does not mention the success-side behavior, return format, or the dryRun/verbose preview features, which are only present in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core action. Each sentence earns its place: the first states the purpose, the second explains the validation refusal behavior, and the third points to the force override. There is no wordy or redundant filler, making it easy to scan and act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential validation behavior and force override, but it stops short of explaining the broader workflow: how to build a valid command object (sibling build_* tools), what the default response contains, or how dryRun/verbose affect the interaction. Given the absence of an output schema and the nested command structure, more contextual guidance would help an agent invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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; the description adds only marginal parameter meaning beyond the schema. It references force: true and the wrong-parameter-count criterion, but the schema already documents force and all other parameters thoroughly. The description does not clarify command construction (e.g., the relationship to build_* tools), leaving the command object semantics to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Add a command to an event page.' This clearly states the tool's function and differentiates it from sibling tools like insert_event_commands or set_event_page by focusing on adding a single command to a specific event page. The validation/force caveat further clarifies the primary action without muddying the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool ('Add a command to an event page') and describes the validation gate, but it does not explicitly mention when not to use it or name alternatives among the many sibling tools. There is no guidance distinguishing it from insert_event_commands or noting that command objects should be constructed via build_* tools, leaving usage somewhat inferred rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_troop_pageA
Append one battle-event page (e.g. the page from build_troop_page) to an existing troop without re-sending its other pages; position inserts it at that 0-based page index instead (the first page whose conditions hold runs, so order matters when triggers overlap). A structurally invalid page refuses the write (nothing is saved) — pass force: true to override; an HP condition on a troop slot past the troop's members, or a page with no condition enabled, is warned (never blocked). Returns { troop, pageIndex, warnings? }; fill it further with insert_event_commands target "troop_page".
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | A troop battle-event page, e.g. the `page` from build_troop_page | |
| force | No | Write even if validation finds structural problems (wrong parameter count, unterminated command list). Off by default: such a write is refused and nothing is written. Advisory warnings never block regardless. | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| troopId | Yes | The troop to add the page to | |
| verbose | No | Echo the full written record instead of the default summary. Off by default: the response reports identity, counts and command-list shape, which is what you would assert on, and omits the parameters/conditions you would only re-read. Read the full record with the matching get_* tool. | |
| position | No | 0-based page index to insert at (default: append) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden and does: it discloses that an invalid page refuses the write with nothing saved, that force:true overrides, and that two specific problems are warnings that never block. It also reveals the ordering behavior (first page whose conditions hold runs) and the return shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core append action and scoped tightly to what an agent must know. It is dense — the second sentence packs ordering, validation, warnings and return shape into one clause chain — but every clause carries information, with little waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by stating the return shape ({ troop, pageIndex, warnings? }) and by documenting the write/refuse/override paths. For a 6-parameter mutation tool with a nested page object, nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: position is semantically an insertion index that affects which page runs first, force bypasses structural refusal, and page is expected to come from build_troop_page. It does not explain dryRun or verbose beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource ('Append one battle-event page ... to an existing troop') and immediately distinguishes itself from the sibling that produces the page ('e.g. the `page` from build_troop_page'). An agent can tell it apart from build_troop_page and insert_event_commands without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative tools and the condition selecting each: build_troop_page to construct the page, add_troop_page to append it, insert_event_commands with target 'troop_page' to fill it further. It also explains the append-vs-position choice and why order matters when triggers overlap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_createA
Create many database records of one type in a single call and a single file write — the batch sibling of create_actor/create_item/create_weapon/create_armor/create_skill/create_enemy/create_state/create_class. Each entry in records takes the same fields its single create_* tool accepts (only name is required for most; omitted fields use the editor's defaults). Ids are allocated sequentially from the current max, so a record can reference a sibling created earlier in the same batch. Use this instead of N sequential create_* calls when authoring a cast, a loot table, or a skill list. Returns { type, count, created, warnings? } (classes are summarized like create_class; enemy battlerName misses and record fields the create_* tool doesn't accept are warnings, never blocked). Throws — writing nothing at all — if any record references a database id that does not exist, naming the offending records[i].
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Which database the records are appended to | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| records | Yes | The records to create, each shaped like the matching create_* tool's arguments (e.g. for type "actor": { name, classId?, ... }) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the whole burden and does so richly: sequential id allocation enabling intra-batch references, default filling for omitted fields, exact return shape, warnings that never block, and an atomic all-or-nothing throw naming records[i]. This is far beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose, then the alternative-routing, then return/error behavior. Slightly dense with the long sibling enumeration and parentheticals, but each clause conveys distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description usefully specifies the return object and error contract. For a 3-param batch-mutation tool with no annotations, nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is already 100%, so baseline is 3, but the description adds real meaning: `records` entries take the create_* tool's fields with only `name` required for most types, and ids are allocated sequentially so earlier entries can be referenced later. The dryRun preview semantics are restated but consistent with the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('Create many database records of one type in a single call') and explicitly positions itself as the batch sibling of the eight single create_* tools. An agent can distinguish it from any sibling without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative ('Use this instead of N sequential create_* calls') and gives concrete triggering scenarios (authoring a cast, a loot table, a skill list). When-to-use is fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_battle_commandA
Build an in-battle event command for a troop battle-event page (see build_troop_page / add_troop_page / insert_event_commands target "troop_page"): enemy_appear (335 — reveal a troop member added with hidden: true, i.e. a summon/reinforcement), enemy_state (333 — add/remove a state on one troop member or the whole troop, e.g. a telegraph "Gathering power" state), or abort_battle (340 — end the battle with no victory/defeat; the calling Battle Processing takes its Escape branch). enemyIndex is the 0-based troop slot (members[] order), NOT an enemy id; enemy_state also accepts -1 = entire troop. Read-only: returns { command }.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | Which battle command to build | |
| indent | No | Indentation level (default 0) | |
| stateId | No | enemy_state: the state id | |
| enemyIndex | No | enemy_appear/enemy_state: 0-based troop slot (members[] order); enemy_state also allows -1 = entire troop | |
| stateOperation | No | enemy_state: add or remove the state (default add) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It states read-only behavior and the return shape ({ command }), and explains the runtime effect of each command—e.g., enemy_appear reveals a hidden troop member, abort_battle forces the Battle Processing Escape branch. This is unusually thorough for a builder tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose and packs the three kinds into a single dense paragraph with parentheticals. It is efficient for the amount of information but the nested structure is less scannable than it could be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a command-builder with no output schema, the description supplies the return value, the intended event page context, and the semantics of every kind. Nothing an agent needs to select and invoke it correctly appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by clarifying that enemyIndex is a troop slot (not an enemy id) and by mapping the kind enum values to concrete command codes and effects.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Build') and resource ('an in-battle event command') and enumerates all three command kinds with their code numbers and semantics. This clearly distinguishes the tool from siblings like build_troop_page or insert_event_commands.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names related tools (build_troop_page / add_troop_page / insert_event_commands) and the target 'troop_page', and clarifies when each kind applies (summon/reinforcement, telegraph state, abort). It lacks explicit when-not-to-use guidance or a direct comparison to alternatives such as build_battle_processing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_battle_processingA
Build a Battle Processing (301) event command for insertion via insert_event_commands — start a battle against a troop (direct id, a variable holding the id, or "random" like the map encounters). canEscape/canLose gate the battle result branches. Read-only: returns { command }.
| Name | Required | Description | Default |
|---|---|---|---|
| troop | No | How the troop is chosen (default direct) | |
| indent | No | Indentation level (default 0) | |
| canLose | No | Continue the event if the party loses (default false) | |
| troopId | No | direct: the troop id; variable: the variable id holding it | |
| canEscape | No | Allow the party to escape (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well: it states 'Read-only: returns { command }', clearly disclosing that the tool has no side effects and returns a command object. It also explains how canEscape/canLose gate battle result branches, adding behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and every clause adds value—purpose, parameter behavior, and read-only nature are all conveyed without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, the description covers the essential points: what it builds, how it integrates with insert_event_commands, the key parameter modes, and the return shape ({ command }). The absence of an output schema is compensated by explicitly stating the return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful semantics by explaining the three troop selection modes (direct id, variable, random) and how canEscape/canLose affect branches, going beyond the schema's per-parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool builds a Battle Processing (301) event command, with a specific verb ('Build') and resource ('Battle Processing event command'). It also distinguishes this from sibling builders by naming the exact event command type and connecting it to insertion via insert_event_commands.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly places usage in the context of insertion via insert_event_commands, providing clear context. However, it does not name alternatives or explicitly say when not to use this tool, falling short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_change_actorA
Build an actor stat-change scene command for insertion via insert_event_commands: hp (311), mp (312), state (313), recover_all (314), exp (315), or level (316). Targets a fixed actor (0 = whole party) or a variable. hp/mp/exp/level take an increase/decrease operand (constant or variable); state takes add/remove + stateId; recover_all takes nothing extra. Read-only: returns { command }.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | Which actor change to build | |
| indent | No | Indentation level (default 0) | |
| target | Yes | Which actor(s) the change applies to | |
| operand | No | hp/mp/exp/level: the amount (constant/variable) | |
| stateId | No | state: the state id | |
| operation | No | hp/mp/exp/level: gain or lose (default increase) | |
| showLevelUp | No | exp/level: show the level-up message (default false) | |
| allowKnockout | No | hp: allow the change to reduce HP to 0/death (default false) | |
| stateOperation | No | state: add or remove the state |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well by disclosing read-only behavior, the return shape ('returns { command }'), and per-kind input variants. It does not cover validation or error behavior, but for a command builder that is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences and front-loads the purpose; each clause adds needed grouping or safety information. It avoids redundant restatement of schema fields and has no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter tool with no output schema, the description covers return value, target types, and variant-specific required arguments. It leaves default flags like indent, showLevelUp, and allowKnockout to the schema, which is reasonable because the schema documents them.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema already describes every parameter (100% coverage), the description adds semantic grouping not present in the schema: hp/mp/exp/level use operand, state uses add/remove + stateId, and recover_all takes nothing extra. This helps the agent know which parameters apply to each kind.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Build') and resource ('actor stat-change scene command'), explicitly names the six command kinds (hp, mp, state, recover_all, exp, level), and states it is read-only. This clearly distinguishes it from sibling builder tools and event-command manipulators.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the intended usage context ('for insertion via insert_event_commands') and enumerates all supported variants. It does not explicitly name alternative tools or exclusions, but the builder-for-insertion relationship is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_change_goldA
Build a Change Gold (125) event command for insertion via insert_event_commands — increase or decrease party gold by a constant or variable amount. Read-only: returns { command }.
| Name | Required | Description | Default |
|---|---|---|---|
| indent | No | Indentation level (default 0) | |
| operand | Yes | The amount to gain/lose (constant or variable) | |
| operation | Yes | Gain or lose gold |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explicitly states 'Read-only: returns { command }', disclosing that the tool does not mutate project state and what it returns. This is a useful behavioral disclosure beyond the schema, though it could further note that it only builds the command without inserting it (already implied) and may not validate operand-value consistency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. The first sentence delivers the core purpose and the second adds the key behavioral trait (read-only) and return shape. It is well front-loaded and easily scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a nested operand object with conditional fields, no output schema, and no annotations. The description covers the main purpose, return shape, and read-only nature, but does not explain the conditional requirements of the operand sub-parameters (e.g., which fields are required based on type) or show an example output command structure. This leaves some gaps for correct invocation, but the simplicity of the operation and clear schema descriptions keep it adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for all parameters, so the schema already documents operation (increase/decrease), operand type (constant/variable), value, and variableId. The description adds only a high-level summary ('increase or decrease party gold by a constant or variable amount') without clarifying conditional requirements (e.g., when type=variable, variableId is needed; when constant, value is needed). This matches the baseline of 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool builds a specific Change Gold (125) event command, distinguishes it from the many other build_* tools (e.g., build_show_text, build_control_switch), and specifies its purpose of insertion via insert_event_commands. Verb 'build' plus resource 'Change Gold' gives a precise, unambiguous action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly situates this tool in the pipeline with 'for insertion via insert_event_commands', telling the agent when to use it (to generate a command before inserting). It does not explicitly name alternatives or exclusions, but the build_* family context plus the specific resource makes the appropriate use case clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_change_itemsA
Build a Change Items (126), Change Weapons (127), or Change Armors (128) event command for insertion via insert_event_commands — gain/lose an item/weapon/armor by a constant or variable amount. includeEquip (weapon/armor only) also counts equipped copies when removing. Read-only: returns { command }.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The item/weapon/armor id | |
| kind | Yes | Which inventory to change | |
| indent | No | Indentation level (default 0) | |
| operand | Yes | The amount to gain/lose (constant or variable) | |
| operation | Yes | Gain or lose | |
| includeEquip | No | weapon/armor: also count equipped copies (default false) |
TDQS
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 explicitly states 'Read-only: returns { command }', which is essential behavioral information for an agent. It also discloses that includeEquip counts equipped copies when removing, giving insight into the tool's behavior beyond its basic function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. The first sentence presents the core purpose and insertion mechanism, while the second adds a key edge case and the read-only behavior. This is appropriately sized and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a builder tool with no output schema and no annotations, the description provides complete context: it explains what is built, how it will be used (insert_event_commands), the relevant parameter nuance (includeEquip), and the return shape. Nothing essential is missing for an agent to correctly select and invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. The description adds value by summarizing the overall gain/lose semantics and clarifying the includeEquip parameter's behavior (equipped copies when removing), which goes beyond individual field descriptions. This additional context helps the agent understand how the parameters interconnect.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Build') and identifies the exact event commands ('Change Items (126), Change Weapons (127), or Change Armors (128)'), clearly distinguishing it from other build_* sibling tools. It states the action (gain/lose an item/weapon/armor) and the mechanism (constant or variable amount), making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says this builds a command 'for insertion via insert_event_commands,' which gives clear context on when to use it. It also notes the includeEquip caveat for weapons/armors, but does not explicitly state when not to use it or alternatives. However, the build_* family is well-defined, and the purpose itself implies the appropriate use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_change_party_memberA
Build a Change Party Member (129) event command for insertion via insert_event_commands — add or remove an actor from the party. initialize (add only) resets the actor to their initial state. Read-only: returns { command }.
| Name | Required | Description | Default |
|---|---|---|---|
| indent | No | Indentation level (default 0) | |
| actorId | Yes | The actor id | |
| operation | Yes | Add to or remove from the party | |
| initialize | No | add only: reset the actor to their initial state (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It clearly states 'Read-only: returns { command }', disclosing that it doesn't mutate state and what the return value is. It also explains the initialize parameter's behavior (reset to initial state) for add operations. This is substantial but doesn't cover potential errors 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, all informative, no filler. Front-loaded with the core purpose, then adds necessary context. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 params and no output schema, the description adequately explains the command type, usage context, and return format. It could be more detailed about the returned command structure, but it's sufficient for an agent to know what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are already documented. The description adds a small clarification about initialize (add only) but largely repeats schema information, so it doesn't significantly go beyond the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool builds a Change Party Member (129) event command, specifying the verb 'Build' and the resource. It distinguishes from sibling tools by naming the event command ID and its purpose (add/remove actor from party).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It says the command is 'for insertion via insert_event_commands', giving clear context for where the output goes. However, it doesn't explicitly state when not to use this tool or mention alternatives, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_character_effectA
Build a Show Animation (212) or Show Balloon Icon (213) event command for insertion via insert_event_commands, played over a character (characterId: -1 player, 0 this event, N event id). Read-only: returns { command }.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | animation: the animation id; balloon: the balloon id (1 exclamation, 2 question, …) | |
| kind | Yes | Play an animation or a balloon icon | |
| wait | No | Hold the event until it finishes (default false) | |
| indent | No | Indentation level (default 0) | |
| characterId | Yes | Target character: -1 player, 0 this event, N event id on the current map |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states 'Read-only' and that it returns '{ command }', which are critical behavioral traits. It also adds the event command IDs (212/213) and character targeting context, but does not detail error behavior or side effects of the generated command when inserted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core purpose, and every phrase adds value. It efficiently packs the command types, insertion context, characterId mapping, and read-only behavior without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 parameters and no output schema, but the description provides the essential context: it returns a command object for insertion, identifies the exact event commands, and explains characterId values. It does not detail the internal structure of the returned command, but for a builder that partners with insert_event_commands, this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description mentions characterId semantics and the id's dual role, but these are already fully described in the schema. It adds no significant parameter-level meaning beyond what the structured schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool builds a Show Animation (212) or Show Balloon Icon (213) event command for insertion via insert_event_commands, specifying the exact verbs and resources. It distinguishes itself from sibling builders by naming the specific event command types and their target character scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions the intended use case ('for insertion via insert_event_commands') and clarifies the characterId semantics (player, this event, or event id). It implies the tool is for building these two specific command types among many sibling builders, though it does not name alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_conditional_branchA
Build a Conditional Branch block (111 condition + then-branch + optional 411 Else + 412 closer, each branch terminated like the editor) for insertion via insert_event_commands. Condition types: switch, self_switch, variable, actor_in_party, gold, item. Provide thenBranch/elseBranch as EventCommand[] (e.g. from other builders). Read-only: returns { commands }.
| Name | Required | Description | Default |
|---|---|---|---|
| indent | No | Indentation level of the block (default 0) | |
| condition | Yes | Conditional branch condition | |
| elseBranch | No | Commands for the Else branch; presence (even empty) adds the 411 Else block | |
| thenBranch | No | Commands to run when the condition is true (default empty) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description takes on the full burden and states 'Read-only: returns { commands }', which informs the agent that this tool has no side effects. It also discloses the block composition and termination behavior, adding useful behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph that packs in the block structure, condition types, branch handling, insertion target, and read-only nature without any filler. Every sentence earns its place and key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity and rich schema, the description covers the essential usage pattern, return format, and side-effect profile. It could mention error cases or branch termination details more explicitly, but the provided text is sufficient for an agent to correctly select and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers all parameters with descriptions, so the baseline is 3. The description adds extra meaning by explaining that branches are EventCommand arrays and that the elseBranch presence adds the 411 block, and clarifies the return shape. This supplements the schema with builder-pattern context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool builds a Conditional Branch block with specific command codes (111, 411, 412) and lists supported condition types. This distinguishes it from sibling builders like build_show_text or build_control_switch by naming the exact resource and structure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says the output is for insertion via insert_event_commands, which is the intended usage context. It also tells users to provide branches as EventCommand[] from other builders, but it doesn't explicitly contrast with alternatives or state when not to use it. Still, the insertion target and branch construction guidance provide clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_control_switchA
Build a Control Switches (121) or Control Self Switch (123) event command for insertion via insert_event_commands. scope "switch": set a switch (or the inclusive switchId..endId range) on/off. scope "self_switch": set the current event's self switch A–D. Read-only: returns { command }.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | self_switch: which self switch | |
| endId | No | switch: inclusive range end (default = switchId, a single switch) | |
| scope | Yes | "switch" (global, by id/range) or "self_switch" (this event, A–D) | |
| value | No | Set on (default) or off | |
| indent | No | Indentation level (default 0) | |
| switchId | No | switch: the switch id (range start) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it discloses the key behavioral trait: 'Read-only: returns { command }.' It also explains the behavior of both scopes and the inclusive range semantics, adding context beyond the function name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, front-loaded with purpose. It specifies both modes, the range behavior, and the read-only return value without any wasted words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 100% schema coverage and no output schema, the description sufficiently explains the tool's modes, the range behavior, and the return shape. It doesn't discuss error cases or prerequisites, but for a read-only builder of this complexity, the information is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaning by explaining that scope 'switch' sets a switch or inclusive range (switchId..endId) and scope 'self_switch' sets A–D, which enriches the understanding beyond the per-parameter schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Build' and clearly identifies both event command types (Control Switches 121 and Control Self Switch 123). It also ties the tool to 'insertion via insert_event_commands,' distinguishing it from other build_* tools and specifying its exact role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states the tool is for building event commands to be inserted via insert_event_commands, and explicitly differentiates the two scopes ('switch' vs 'self_switch'). It lacks explicit exclusions or alternative tool names, but the context is sufficient for an agent to understand when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_control_variableA
Build a Control Variables (122) event command for insertion via insert_event_commands. Applies operation (set/add/sub/mul/div/mod) to a variable (or the inclusive variableId..endId range) using an operand: constant, another variable, a random range, or game_data (item/actor/party/… readouts). Read-only: returns { command }.
| Name | Required | Description | Default |
|---|---|---|---|
| endId | No | Inclusive range end (default = variableId, a single variable) | |
| indent | No | Indentation level (default 0) | |
| operand | Yes | The right-hand operand of the Control Variables command | |
| operation | No | Arithmetic applied to the target (default set) | |
| variableId | Yes | The target variable id (range start) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It explicitly states 'Read-only: returns { command }', which reveals that the tool has no side effects and only returns a data structure. It also clarifies that the command is meant for insertion via insert_event_commands, implying it does not automatically apply changes. This goes beyond what the schema or annotations would provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose, and every piece of information contributes to understanding the tool's function. It avoids repetition of schema fields and wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (nested operand object, 5 parameters, no output schema), the description covers the core behavior, return shape, range semantics, and operand categories. It does not explain how to configure game_data parameters in detail, but that is partially handled by the schema and the 'see corescript' hint. Overall, it provides sufficient context for an agent to use the tool correctly in the majority of cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameters are already documented. The description adds valuable semantics by explaining the inclusive variableId..endId range behavior, the supported operation types (set/add/sub/mul/div/mod), and the four operand sources (constant, variable, random, game_data). This exceeds the baseline and helps the agent map high-level intent to schema fields. Minor gap: game_data sub-parameters are not detailed in the description, but the schema references 'corescript'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Build') with a concrete resource ('Control Variables (122) event command') and explicitly states its purpose ('for insertion via insert_event_commands'). This clearly distinguishes it from sibling builder tools like build_show_text or build_conditional_branch, which target different event command types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: this tool constructs a command for later insertion via insert_event_commands. It implies the tool should be used to prepare a command rather than directly modify the game. However, it does not explicitly mention when not to use it or name alternative tools for similar operations (e.g., build_control_switch for switches).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_flow_commandA
Build a single flow-control event command for insertion via insert_event_commands: wait (230, N frames), exit_event (115), label (118, a named jump target), or jump_to_label (119). Read-only: returns { command }.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | Which flow command to build | |
| name | No | label/jump_to_label: the label name | |
| frames | No | wait: number of frames (60 = 1 second) | |
| indent | No | Indentation level (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description appropriately discloses 'Read-only' and the return shape '{ command }'. This communicates that the tool has no mutation side effects and gives a clear behavioral boundary, though it doesn't detail error cases or further 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with purpose, and every element contributes: the four kinds, their IDs, the insertion relationship, and the read-only note. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 100% schema coverage, the description provides sufficient context. It explains what is built, the available kinds, the insertion workflow, and the return shape, while relying on the schema for detailed parameter syntax.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by mapping numeric command IDs to each kind ('wait (230...'), clarifying that label/jump_to_label take a 'named jump target', and indicating 'N frames' for wait. This ties the parameters to actual usage beyond the schema's basic field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb ('Build'), resource ('flow-control event command'), and purpose ('for insertion via insert_event_commands'). It enumerates the four specific command kinds with numeric IDs, distinguishing it from sibling builders like build_show_text or build_conditional_branch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that this tool builds commands for later insertion via insert_event_commands, providing clear context for when to use it. It doesn't explicitly list when not to use it, but the 'flow-control' scope plus the named sibling alternatives imply the differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_name_inputA
Build a Name Input Processing (303) event command for insertion via insert_event_commands — open the name-entry screen for an actor. Read-only: returns { command }.
| Name | Required | Description | Default |
|---|---|---|---|
| indent | No | Indentation level (default 0) | |
| actorId | Yes | The actor whose name is entered | |
| maxLength | No | Max name length (default 8) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It explicitly states 'Read-only: returns { command },' which tells the agent this tool has no side effects and produces a command object for further use. This adds key behavioral context beyond the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence with an em-dash clarifying the purpose, followed by a short note on return type. Every word adds value—no redundancy or irrelevant detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple builder tool with 3 params, no output schema, and no annotations, the description covers the key aspects: what it builds, how it will be used, its read-only nature, and the returned shape. It could elaborate on the command structure, but the provided information is sufficient for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter already has a semantic description (e.g., actorId: 'The actor whose name is entered'). The description adds no extra meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Build a Name Input Processing (303) event command for insertion via insert_event_commands — open the name-entry screen for an actor.' This identifies the specific verb (build), resource (Name Input Processing event command), and purpose, distinguishing it from other sibling builder tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for insertion via insert_event_commands' provides explicit context on how to use this tool: generate a command, then insert it. It does not list alternatives or exclusions, but the workflow is clearly implied. This counts as clear context without exclusions, meeting the '4' criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_pictureA
Build a Show Picture (231) or Erase Picture (235) event command for insertion via insert_event_commands. show: display name in slot pictureId with origin/position/scale/opacity/blend; erase: clear the slot. Read-only: returns { command }.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | show: screen x in pixels (default 0) | |
| y | No | show: screen y in pixels (default 0) | |
| kind | Yes | Show a picture or erase a slot | |
| name | No | show: picture basename (from list_assets("pictures")) | |
| blend | No | show: blend mode (default normal) | |
| indent | No | Indentation level (default 0) | |
| origin | No | show: anchor point (default upper_left) | |
| scaleX | No | show: horizontal scale % (default 100) | |
| scaleY | No | show: vertical scale % (default 100) | |
| opacity | No | show: opacity 0–255 (default 255) | |
| pictureId | Yes | Picture slot 1–100 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure and does well: it states the tool is read-only, returns a { command } object, and explains both show and erase behavior. It could add more about error handling or validation, but for a builder utility this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose, and uses a compact semicolon structure to convey show vs. erase behavior. No redundant words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 11 parameters and no output schema, the description covers the key context: insertion via insert_event_commands, read-only nature, return shape, and mode differences. It relies on the schema for parameter details, which is appropriate, though it omits broader context like example usage or constraints beyond schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds a concise grouping of show-related parameters and clarifies that erase clears the slot, but it mostly restates per-parameter 'show:' hints already present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool builds Show Picture (231) or Erase Picture (235) event commands for insertion via insert_event_commands. It distinguishes from sibling build_* tools by specifying the exact command codes and listing the relevant parameters for show and erase.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context by stating the output is meant for insert_event_commands and that it is read-only. It does not explicitly name alternative tools or when not to use this tool, but the purpose is unambiguous enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_play_audioA
Build a Play BGM/BGS/ME/SE (241/245/249/250) event command for insertion via insert_event_commands. Warns (never blocks) when name is not a known audio asset for that channel (checked against list_assets). Returns { command, warnings? }.
| Name | Required | Description | Default |
|---|---|---|---|
| pan | No | Pan -100–100 (default 0) | |
| kind | Yes | Which audio channel to play on | |
| name | Yes | Audio basename (from list_assets, extension stripped) | |
| pitch | No | Pitch 50–150 (default 100) | |
| indent | No | Indentation level (default 0) | |
| volume | No | Volume 0–100 (default 90) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden. It openly discloses a key behavior: warns (never blocks) when the name is not a known audio asset for that channel. It also states the return shape ({ command, warnings? }). This is valuable beyond the schema and covers important edge-case behavior, but it does not mention other potential behaviors like validation of numeric ranges or interaction with the project state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and every sentence earns its place. It includes essential behavioral details without padding, making it appropriately sized and well structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has six parameters and no output schema, but the description compensates by stating the return format ({ command, warnings? }) and the insertion pathway. It also notes the asset-checking behavior. Given that the schema covers all parameter semantics, the description is nearly complete for an AI agent to select and invoke the tool correctly, though it could mention prerequisite project state or validation of numeric fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% parameter coverage with descriptions for all six parameters, so the baseline is 3. The description adds some context about kind values (BGM/BGS/ME/SE) and name checking, but these are also implied in the schema. It does not materially enhance parameter understanding beyond schema fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool builds a Play BGM/BGS/ME/SE event command for insertion via insert_event_commands. It specifies the resource (audio play command) and distinguishes it from sibling builder tools like build_show_text or build_conditional_branch by naming the exact command and insertion path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 build an audio play event command for later insertion. It mentions checking against list_assets, which implies a precondition, but does not explicitly state alternatives or when not to use it. This is clear context without exclusions, scoring a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_screen_effectA
Build a screen transition/effect event command for insertion via insert_event_commands: fadeout (221) / fadein (222) — no params; tint (223) & flash (224) — an [r,g,b,a] color over duration frames; shake (225) — power/speed over duration. wait holds the event until it finishes. Read-only: returns { command }.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | Which screen effect to build | |
| wait | No | tint/flash/shake: hold the event until it finishes (default true) | |
| color | No | tint: [red,green,blue,gray] (−255…255); flash: [red,green,blue,intensity] (0…255) | |
| power | No | shake: strength 1–9 (default 5) | |
| speed | No | shake: speed 1–9 (default 5) | |
| indent | No | Indentation level (default 0) | |
| duration | No | tint/flash/shake: frames (default 60) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It states 'Read-only: returns { command }', explains wait semantics, and differentiates parameterless vs parameterized effects. It does not discuss validation or error behavior, but the read-only and return-shape disclosure is solid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two dense sentences, front-loaded with the core purpose, and every clause adds meaningful information—commands, parameters, wait behavior, and read-only status. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all effect types, parameter relevance, wait behavior, and the return shape ({ command }). Minor ambiguity: 'wait holds the event until it finishes' could be misread as applying to all kinds, whereas the schema restricts it to tint/flash/shake. Overall, it is complete enough for a builder tool with rich schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds command codes and groups parameters by kind, but the schema already documents per-parameter applicability (e.g., tint/flash color arrays, shake power/speed). The added value is marginal, not enough to raise the score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb ('Build') and resource ('screen transition/effect event command'), enumerates the exact command kinds (fadeout/fadein/tint/flash/shake) with command codes, and explicitly mentions insertion via insert_event_commands, distinguishing it from other build_* sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly frames the tool as a builder for insert_event_commands and explains which parameters apply to which effect kind, giving strong contextual guidance. It does not explicitly state when not to use this tool or name alternatives, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_shop_processingA
Build a Shop Processing (302 + one 605 row per extra good) event-command sequence for insertion via insert_event_commands. Each good sells an item/weapon/armor at its database price, or a specified price. purchaseOnly hides the sell tab. Read-only: returns { commands }.
| Name | Required | Description | Default |
|---|---|---|---|
| goods | Yes | The goods offered (at least one) | |
| indent | No | Indentation level (default 0) | |
| purchaseOnly | No | Hide the sell tab (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It clearly states this is read-only and returns { commands }, and discloses the event structure (302 + one 605 row per extra good) and the effect of purchaseOnly. This is strong behavioral disclosure, though it could detail error handling or edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences: the first states purpose and output, the second explains pricing, the third covers purchaseOnly and read-only behavior. It is front-loaded and every sentence provides useful information without filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (nested goods array, multiple options), the description covers purpose, parameters, output shape, and the need to use insert_event_commands. It lacks an output schema but compensates by specifying the return value. It is complete enough for an agent to select and invoke correctly, though a bit more detail on exact command structure would elevate it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds slight context by explaining that `price` overrides the database price and that purchaseOnly hides the sell tab, but this largely echoes the schema. It does not add substantial new 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Build') and resource ('Shop Processing event-command sequence'), then clarifies it generates a 302 event plus one 605 row per good. This clearly distinguishes it from other build_* tools like build_battle_processing or build_show_text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says the output is 'for insertion via insert_event_commands', giving clear usage context. It also explains how each good is priced and what purchaseOnly does, but does not mention alternative tools or when not to use it, so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_show_choicesA
Build a Show Choices block (102 opener + a 402 branch per choice + optional 403 When-Cancel branch + 404 closer, each branch terminated like the editor) for insertion via insert_event_commands. Pass per-choice branches (each an EventCommand[] — e.g. from build_show_text) to fill the branch bodies. Read-only: returns { commands }.
| Name | Required | Description | Default |
|---|---|---|---|
| indent | No | Indentation level of the block (default 0) | |
| choices | Yes | The choice labels shown to the player | |
| branches | No | Commands per choice (same order as choices); omitted/short = empty branches | |
| position | No | Choice window position (default right) | |
| background | No | Choice window background (default window) | |
| cancelType | No | Without a cancelBranch: 0-based choice index the Cancel button maps to, or -1 Disallow (default -1) | |
| defaultType | No | 0-based default (highlighted) choice, or -1 none (default 0) | |
| cancelBranch | No | Commands for a "When Cancel" branch (adds a 403 block; cancel routes here) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure. It clearly states 'Read-only' and specifies the return shape '{ commands }'. It also warns about branch termination details, giving agents the structural knowledge needed to predict output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver the core purpose, structure, usage pointer, and return info. No filler; the information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-param builder with full schema coverage and no output schema, the description covers the essential missing pieces: the block's internal structure, insertion workflow, and return value. It's sufficient for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. The description adds cross-reference value by explaining the `branches` parameter can come from build_show_text and that each branch is an EventCommand[], reinforcing the relationship. This is a modest enhancement over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Build') and names a distinct resource ('Show Choices block'), then enumerates the exact command structure (102, 402, 403, 404), differentiating it from sibling builders like build_show_text and build_conditional_branch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states this block is 'for insertion via insert_event_commands' and suggests using build_show_text to create branch bodies, offering concrete workflow context. It doesn't list when-not scenarios, but the usage context is unambiguous within the tool family.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_show_textA
Build a Show Text event-command sequence (101 setup + one 401 line per text line) for insertion via insert_event_commands. Supports face image (from list_assets("faces")), window background/position, and the MZ name-box speaker. MZ does NOT word-wrap: keep each line under ~55 chars (~38 with a face) or it is cut off at the window edge (warned, never blocked) — or pass wrap: true to word-wrap automatically to that same width (escape codes like \C[n] do not count) and split into as many 4-line message boxes as needed. Read-only: returns { commands, warnings? }, writes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| wrap | No | Auto word-wrap to the message-window width (the same width the line-length warning uses) and split into 4-line boxes. true/"soft" reflows all lines as one paragraph; "hard" keeps each entry (and \n) as a forced line break. Default off (one line per entry, verbatim). | |
| lines | Yes | Message lines (one entry per visual line) | |
| indent | No | Indentation level (default 0) | |
| faceName | No | Face image basename ("" = none, default) | |
| position | No | Window position (default bottom) | |
| faceIndex | No | Face index 0–7 in the sheet (default 0) | |
| background | No | Window background (default window) | |
| speakerName | No | MZ name-box speaker name (default "") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so well: it states "Read-only", "writes nothing", and gives the return shape { commands, warnings? }. It also discloses the non-blocking validation behavior (line overflow is "warned, never blocked"), which an agent needs to know before relying on warnings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with purpose and every sentence carries actionable detail, but the wrap explanation is packed into one long clause-heavy passage that would read better as a distinct sub-point. Dense yet largely waste-free.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter event-command builder with no output schema, the description covers the essential gaps: the generated structure, insertion target, line-width constraints, wrap semantics, face source, and return/validation behavior. An agent has what it needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real value: it explains where face images come from (list_assets("faces")), clarifies the wrap modes and that escape codes like \C[n] don't count toward width, and ties the width constant to the line-length warning. That extra semantic context lifts it above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb+resource ("Build a Show Text event-command sequence") and even specifies the internal structure it produces (101 setup + one 401 line per text line). Naming insert_event_commands as the consumer clearly distinguishes it from siblings like build_show_choices or add_event_command.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It establishes the workflow context — build here, then insert via insert_event_commands — and gives concrete usage rules (keep lines under ~55/~38 chars or pass wrap). However, it never explicitly contrasts when to choose this tool versus a sibling builder such as build_show_choices or build_flow_command, so it stops short of full alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_transfer_playerA
Build a Transfer Player (201) event command for insertion via insert_event_commands — move the party to (x, y) on a map. With designation "variable", mapId/x/y are variable ids resolved at runtime. Read-only: returns { command }.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Destination tile x (or a variable id) | |
| y | Yes | Destination tile y (or a variable id) | |
| fade | No | Fade style (default black) | |
| mapId | Yes | Destination map id (or a variable id if designation=variable) | |
| indent | No | Indentation level (default 0) | |
| direction | No | Facing after transfer (default retain) | |
| designation | No | direct: mapId/x/y are literal; variable: they are variable ids (default direct) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It explicitly states 'Read-only: returns { command }', disclosing a key behavioral trait beyond the tool's name. It also explains runtime resolution of variable IDs for mapId/x/y when designation='variable'. This is valuable, though it could disclose more about error handling or validation behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, front-loaded with the tool's primary purpose, and every clause adds information. It covers the main action, the insertion context, variable mode, and read-only behavior without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a builder tool with 7 parameters and no output schema, the description adequately explains the tool's function, read-only nature, and variable-resolution mode. It identifies the returned object as { command }. It does not elaborate on all parameter defaults or edge cases, but the schema covers parameter details, and the description provides sufficient high-level context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. The description adds a brief note that mapId/x/y are variable IDs resolved at runtime when designation is 'variable', which largely reiterates the schema. No additional parameter semantics are provided beyond what the schema already describes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Build') and resource ('Transfer Player (201) event command'), and it distinguishes itself from sibling build_* commands by specifying it moves the party to (x, y) on a map. It also mentions the intended downstream use ('insertion via insert_event_commands').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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: it builds a specific event command for later insertion. It also explains the variable designation behavior, which affects how parameters are interpreted. However, it does not explicitly mention alternatives or when not to use this tool, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_troop_pageA
Build a troop battle-event page { conditions, list, span } from a compact trigger — no hand-built 12-field conditions object. when keys (ANDed, at least one): turn [a, b] (turn a + bX; b 0 = only turn a), enemyHpBelow [enemyIndex, pct] (0-based troop slot, NOT enemy id), actorHpBelow [actorId, pct], switch id, turnEnd true. span: battle (runs once per battle, default), turn (once per turn), moment (re-runs while the condition holds — guard it with a switch). Timing (turn-based battles): an enemy action pattern with conditionType 1 / [a, b] is chosen during turn N's input phase (troop turnCount N-1, +1) and a troop page turn [a, b] is checked once turn N's action phase starts (turnCount N), so matching [a, b] land on the same battle turn N — the page runs before anyone acts; add turnEnd: true to run it after that turn resolves instead (the classic telegraph: warn at the end of the wind-up turn, strike next turn). Turn 0 = battle start. With b > 0 use span "turn", or a "battle" page fires only once. commands come from the build_ tools (build_show_text, build_battle_command, …); the end marker is appended. Read-only: returns { page } — land it with add_troop_page (or create_troop/update_troop pages).
| Name | Required | Description | Default |
|---|---|---|---|
| span | No | How often the page may run (default battle) | |
| when | Yes | Trigger; every key given is ANDed, at least one required | |
| commands | No | The page's event commands (e.g. from build_* tools); default empty |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden and does so thoroughly: declares the tool read-only, specifies the return shape ({ page }), notes the end marker is appended, and explains timing semantics (turn 0 = battle start, page runs before actors act, turnEnd defers to after resolution). This is unusually rich behavioral disclosure for a builder tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose and packs essential rules efficiently, with no obvious filler. The single dense paragraph, however, makes it harder to scan for specific guidance (span vs turnEnd vs landing) than a structured layout would; given the inherent complexity, it is acceptable but not optimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with nested trigger objects and no output schema, the description supplies everything an agent needs: trigger semantics, span timing rules, return shape, landing instructions, and command sourcing. No critical gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds meaningful cross-parameter context beyond the schema, especially for span ('moment' re-runs while condition holds – guard it with a switch) and the interaction between turn ranges and enemy action patterns. However, much of the per-key trigger explanation overlaps what the schema already states (e.g., enemyHpBelow 0-based troop slot), so it does not fully transcend redundancy.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Build) and resource (troop battle-event page) and immediately distinguishes from the hand-built alternative. Names the landing tools (add_troop_page, create_troop/update_troop pages), so an agent can tell exactly where this fits among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use guidance: span selection rules (b > 0 requires 'turn' or a battle page fires once), turnEnd usage with a concrete telegraph example, and the routing to add_troop_page for landing the result. It also states that commands must come from build_* tools. This is near-complete operational guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
call_common_eventA
Build a "Common Event" event command (code 117) that calls the given common event, for insertion into an event page via insert_event_commands. Validates the common event exists. Read-only: returns { command } (matching the build_* tools, so it composes into a thenBranch/commands array); writes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| indent | No | Indentation level in the target list (default 0) | |
| commonEventId | Yes | The ID of the common event to call (must exist) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool validates existence of the common event, is read-only, returns `{ command }`, and writes nothing. This clearly conveys the safety profile and return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no filler. The first sentence states the primary purpose, the second clarifies behavior and integration, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple builder tool with two parameters and no output schema, the description covers purpose, usage, validation, side effects, and return format. There are no significant gaps that would leave an agent uncertain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by explaining that commonEventId must reference an existing event (validation) and that the result composes into a command array, which gives the parameter context beyond the schema's basic description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool builds a 'Common Event' event command (code 117), specifies the target resource, and notes it is for insertion via insert_event_commands. This clearly distinguishes it from other build_* siblings by naming the specific command type and its composition context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the tool is used to generate a command for insertion into an event page, and that the return shape matches build_* tools for composing into thenBranch/commands arrays. While it does not explicitly name alternative tools or exclusions, the context is clear enough for an agent to know when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_passabilityA
Check whether a map cell can be walked onto, reproducing the engine's layered passage rule: the stacked tiles at (x, y) are examined upper-layer first, and the first non-[*] tile decides each direction. Reads the map's tileset flags. Returns per-direction passability (down/left/right/up — true = a character can walk off the cell that way), the cell's terrain tag, the stacked tile ids, and — when direction is given — a single passable boolean for that direction. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Tile x coordinate | |
| y | Yes | Tile y coordinate | |
| mapId | Yes | The map id to inspect | |
| direction | No | Optional: also report a single passable boolean for this direction |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description shoulders the full disclosure burden. It declares 'Read-only' and explains the layered evaluation order, output fields, and optional direction behavior, giving the agent a complete picture of side effects and return semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the primary purpose, and each sentence adds necessary detail about procedure, output, and read-only nature. It is dense but not wasteful, though it could be slightly tighter around the return value list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description fully compensates by listing all return values (per-direction booleans, terrain tag, stacked tile ids, optional passable), explaining the algorithm, and stating read-only behavior. There are no factual gaps for selecting/invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema has 100% coverage with descriptions for all four parameters, the description adds meaningful context by explaining how x/y are used in the tile stack lookup, how the optional direction alters the return value, and what the mapId refers to ('Reads the map's tileset flags'). This exceeds the schema's minimal descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear action ('Check whether a map cell can be walked onto') and specifies the exact scope (layered passage rule per direction). It distinguishes itself from tile-reading tools like get_tile_flags by detailing the algorithm and output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context by explaining that this tool reproduces the engine's layered passage rule and reads tileset flags, implying it is the correct choice for movement/passability checks. However, it does not explicitly name alternatives or state 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.
create_actorA
Create a new actor in data/Actors.json. Only name is required; omitted fields use the editor's new-actor defaults (class 1, level 1-99, five empty equip slots, no traits). Allocates and returns the next unused actor id. NOTE: an actor's physical accuracy comes from its class + own traits — a class/actor with no Hit Rate trait (xparam id 0: trait { code: 22, dataId: 0, value: 0.95 }) always misses physical actions. The built-in class 1 has one; a custom class needs it added.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| note | No | ||
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| equips | No | ||
| traits | No | ||
| classId | No | ||
| profile | No | ||
| faceName | No | ||
| maxLevel | No | ||
| nickname | No | ||
| faceIndex | No | ||
| battlerName | No | ||
| initialLevel | No | ||
| characterName | No | ||
| characterIndex | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses several important behaviors: only `name` is required with default values for class, level, equips, and traits; it allocates and returns the next unused actor id; and it includes a detailed caveat about the Hit Rate trait causing missed physical actions. This goes beyond a simple one-liner.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, with the first establishing the core purpose and the second covering required fields, defaults, and return value. The final sentence is a dense but valuable caveat; no filler or repetition is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 15 parameters and no output schema, the description provides a substantial amount of context: required field, defaults, return value, and a critical trait behavior warning. However, it omits details about several parameters (e.g., profile, faceName, characterIndex) and does not describe the response shape beyond the allocated id, leaving some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is low (7%), so the description compensates by stating which fields are optional and what defaults apply ('class 1, level 1-99, five empty equip slots, no traits'). It also clarifies the traits behavior with the Hit Rate note, but it does not explain individual parameter formats for many fields, leaving some semantics to inference from names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb-object pair ('Create a new actor in data/Actors.json'), specifying both the action and the target file. It distinguishes itself from sibling creation tools (create_chest, create_enemy) and update_actor by focusing on the creation of actors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly compare this tool to alternatives like update_actor, nor state when not to use it. Usage context is implied by the verb 'Create', but no exclusions or alternative references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_armorA
Create a new armor in data/Armors.json. Only name is required; omitted fields use the editor's new-armor defaults (Shield equip slot, no stat bonuses). params is a flat 8-length stat bonus; etypeId is the equip slot (System.json equipTypes: 2 Shield, 3 Head, 4 Body, 5 Accessory). Allocates and returns the next unused armor id.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Armor name | |
| note | No | Note field | |
| price | No | Buy price | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| params | No | 8 flat stat bonuses [maxHP, maxMP, atk, def, mat, mdf, agi, luk] | |
| traits | No | Trait objects { code, dataId, value } | |
| atypeId | No | Armor type id (System.json armorTypes) | |
| etypeId | No | Equip slot (equipTypes: 2 Shield, 3 Head, 4 Body, 5 Accessory) | |
| iconIndex | No | Icon index (IconSet.png) | |
| description | No | In-game description text |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosure. It reveals important behaviors: omitted fields get defaults (Shield equip slot, no stat bonuses), param format, and that it allocates and returns the next unused armor id. These go beyond the schema but do not mention potential side effects like dryRun behavior or 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with the main action and file target. No redundant wording; every sentence provides essential information (purpose, defaults, param semantics, id allocation).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 10 parameters and no output schema, the description gives sufficient context for correct use: it explains defaults, key parameter semantics, and the return value (next unused id). The schema covers the remaining parameter details, making this complete for a creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value by clarifying defaults for omitted fields and reinforcing the meaning of `params` and `etypeId` with the exact stat order and equip slot mapping. It goes beyond just restating the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a new armor in data/Armors.json, using a specific verb and resource. It distinguishes from siblings like update_armor and create_weapon by specifying the armor data file and the creation context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context: only `name` is required and omitted fields use editor defaults. This implicitly guides when to use the tool (creating a new armor) but does not explicitly contrast with update_armor or other alternatives, so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_buff_skillC
Create a buff skill (simplified)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Skill name | |
| scope | Yes | Target scope (7=ally all, 11=user) | |
| turns | Yes | Number of turns the buff lasts | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| mpCost | Yes | MP cost | |
| buffType | Yes | Buff type (2=ATK, 3=DEF, 4=MAT, 5=MDF, 6=AGI) | |
| description | No | Skill description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the behavioral disclosure burden. It only states 'Create a buff skill (simplified)' and omits side effects, write behavior, validation, or the existence of a dryRun preview mode. This is a significant gap for a creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, which is commendable for brevity, but it leans toward under-specification. 'Simplified' hints at a reduced feature set without explaining what is omitted, making the sentence less informative than it could be while staying concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters, no annotations, and no output schema, a one-line description is insufficient. The agent learns the core purpose but lacks context about return values, side effects, and how this simplified version relates to the full create_skill tool. More behavioral and usage context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with every parameter (including buffType, scope, and dryRun) having a concise description in the input schema. The description text adds no additional parameter semantics, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description specifies 'Create a buff skill' with a clear verb and resource, distinguishing it from sibling skill creators like create_damage_skill, create_healing_skill, and create_state_skill. The 'simplified' qualifier adds differentiation but is vague about what simplification entails.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 create_skill or other skill-type creators. There is no mention of prerequisites, suitability, or exclusions, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_chestA
Create a complete, placed treasure chest on a map in one call — the two-page self-switch idiom done correctly, so the chest can never be looted twice. Page 1 (closed) is an action-button, priority-same event that optionally shows text, gives the contents, then flips its self switch; page 2 (opened) is gated on that self switch, shows the opened graphic and does nothing. kind picks the payout: item/weapon/armor (needs id) or gold. On the RTP !Chest sheet the open/closed states are the direction rows of one character block (down = closed, up = open), which is what closedDirection/openedDirection default to. Throws if the item/weapon/armor id does not exist; warns (never blocks) on an unknown characterName or a chest with no graphic.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X tile position | |
| y | Yes | Y tile position | |
| id | No | The item/weapon/armor ID to give (omit for kind "gold") | |
| kind | Yes | What the chest gives; item/weapon/armor require `id` | |
| name | No | Event name (editor label); default "Chest" | |
| text | No | Optional message shown on opening, e.g. ["Found a Potion!"] | |
| force | No | Write even if validation finds structural problems (wrong parameter count, unterminated command list). Off by default: such a write is refused and nothing is written. Advisory warnings never block regardless. | |
| mapId | Yes | The ID of the map to place the chest on | |
| amount | No | How many (or how much gold) to give; default 1 | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| selfSwitch | No | Self switch channel marking the chest looted; default "A" | |
| characterName | No | Chest sprite basename from list_assets("characters"), e.g. "!Chest" | |
| characterIndex | No | Which chest in the sheet (0-7); default 0 | |
| closedDirection | No | Direction row showing the CLOSED chest; default "down" | |
| openedDirection | No | Direction row showing the OPENED chest; default "up" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: it details the event page structure (action-button, priority-same, optional text, gives contents, flips self switch), the opened page behavior, and error handling (throws on invalid id, warns but never blocks on unknown characterName or no graphic). It even explains the RTP sprite direction defaults. This is exemplary transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences long, front-loaded with the core purpose, and every sentence provides substantive detail. It is dense but well-structured, covering purpose, mechanism, parameter semantics, and error behavior without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 15 parameters, no output schema, and no annotations, the description is remarkably complete. It explains the event structure, the payout kinds, the default directions, and the error behavior. It leaves little ambiguity about what the tool will do, making it adequate for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers all 15 parameters with descriptions (100% coverage), so the baseline is 3. The description adds extra meaning beyond the schema by explaining the relationship between `kind` and `id`, the direction row defaults for `closedDirection`/`openedDirection` on the !Chest sheet, and the two-page idiom. This is a meaningful addition, so a 4 is warranted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Create a complete, placed treasure chest on a map in one call'. It identifies the specific resource (treasure chest), the action (create/place), and the key implementation detail (two-page self-switch idiom) that distinguishes it from generic event-creation tools like create_map_event or create_npc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description signals when to use this tool by emphasizing the 'two-page self-switch idiom done correctly' and 'so the chest can never be looted twice', implying it should be used instead of manually constructing the event pages. It also gives context for the `kind` parameter. However, it does not explicitly name alternative tools or state when not to use this tool, so it falls short of a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_classA
Create a new character class in data/Classes.json. Only name is required; omitted fields use the editor's new-class defaults (EXP curve [30,20,30,30], no traits/learnings, a linear param curve to maxLevel). Allocates and returns the next unused class id. NOTE: a class with no Hit Rate trait (xparam id 0: trait { code: 22, dataId: 0, value: 0.95 }) makes its actors always miss physical actions — pass one in traits for a combat-ready class. Likewise every learned skill's stypeId needs an Add Skill Type trait ({ code: 41, dataId: stypeId, value: 1 }) or the skill-type command never appears (warned, never blocked).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Class name shown in the database | |
| note | No | Note field | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| params | No | 8 param growth curves, each maxLevel+1 long: [maxHP,maxMP,atk,def,mat,mdf,agi,luk] | |
| traits | No | Trait objects { code, dataId, value } | |
| maxLevel | No | Highest level the param curve covers (default 99); sizes the params matrix | |
| expParams | No | EXP curve: [basis, extra, accelerationA, accelerationB] | |
| learnings | No | Learned-skill entries { level, skillId, note } |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden and excels: it discloses defaults (EXP curve, no traits/learnings), the allocation behavior, dryRun preview, and two serious behavioral pitfalls (missing Hit Rate trait causes misses; missing Add Skill Type trait hides skill commands). This goes well beyond basic expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences but every sentence earns its place: purpose/defaults, then two crucial warnings. It is front-loaded with the core action and free of fluff, making it appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, defaults, side effects, and pitfalls, which is comprehensive for a create tool with no output schema. However, it only partially specifies the return value (says it returns the next unused id but doesn't clarify whether the full created class object is also returned), leaving a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds significant meaning: it explains the default EXP curve values, the default maxLevel of 99, and the specific trait codes required for combat readiness (code 22) and skill-type visibility (code 41). This goes beyond the schema descriptions and materially helps correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Create a new character class in data/Classes.json.' It uses a specific verb and resource, and the mention of allocating a new id distinguishes it from sibling tools like update_class or add_class_learning.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on how to use the tool (only name required, defaults for omitted fields) and important caveats about traits for combat-readiness. However, it does not explicitly name alternative tools or state when not to use it, though the creation purpose is evident from the description and sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_common_eventA
Create a new common event (reusable event-command list) in data/CommonEvents.json. Only name is required; omitted fields use the editor's new-slot defaults (empty command list, trigger 0 = call-only, switchId 1). Allocates and returns the next unused id. A structurally invalid command list refuses the write (nothing is saved) — pass force: true to override.
| Name | Required | Description | Default |
|---|---|---|---|
| list | No | Event-command list { code, indent, parameters }; must end with code 0 | |
| name | Yes | Common event name shown in the database | |
| force | No | Write even if validation finds structural problems (wrong parameter count, unterminated command list). Off by default: such a write is refused and nothing is written. Advisory warnings never block regardless. | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| trigger | No | How it runs on its own: 0 None (call-only), 1 Autorun, 2 Parallel | |
| verbose | No | Echo the full written record instead of the default summary. Off by default: the response reports identity, counts and command-list shape, which is what you would assert on, and omits the parameters/conditions you would only re-read. Read the full record with the matching get_* tool. | |
| switchId | No | Switch that gates an Autorun/Parallel trigger (ignored when trigger is 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden. It discloses the file destination, default field values, allocation of the next unused id, and the refusal-to-write behavior for invalid command lists with force override. This is substantial, though it could mention potential side effects or prerequisites like a loaded project.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the core purpose, and every sentence adds meaningful information (defaults, id allocation, validation/force). No redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 7 parameters and no output schema, the description plus schema cover creation, defaults, validation, force, and return id. It lacks explicit mention of project dependency or duplicate-name behavior, but these are minor gaps given the overall richness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. The description adds value by explaining defaults for omitted fields (empty command list, trigger 0, switchId 1) and the force override behavior, which are not fully captured in the schema. This elevates it above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Create a new common event (reusable event-command list) in data/CommonEvents.json.' It uses a specific verb ('Create') and resource ('common event'), and distinguishes itself from sibling tools like update_common_event and call_common_event by focusing on new creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context: only `name` is required, omitted fields use defaults, and `force: true` overrides validation. However, it does not explicitly mention when to use this instead of update_common_event or other alternatives, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_damage_skillC
Create a damage-dealing skill (simplified)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Skill name | |
| scope | Yes | Target scope (1=enemy single, 2=enemy all) | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| mpCost | Yes | MP cost | |
| elementId | No | Element ID (0=none, 2=fire, 3=ice, 4=thunder) | |
| description | No | Skill description | |
| damageFormula | Yes | Damage formula (e.g., "a.mat * 4") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral characteristics but only says 'Create a damage-dealing skill (simplified)'. It does not mention whether this writes to disk, requires permissions, or how it differs from other skill-creation tools. The inclusion of 'simplified' is a hint but not an explanation of side effects or constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant words. However, it is under-specified, making it efficient but not fully informative. It earns a 4 because it is front-loaded and free of fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 7 parameters, no output schema, and no annotations, the description is too sparse. It lacks any mention of return values, side effects, or the relationship to other skill creation tools. The schema covers parameter meanings, but the tool-level context is insufficient for an agent to fully understand when and how to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for all 7 parameters (100% coverage), so the baseline is 3. The description adds no additional parameter semantics beyond what the schema already documents, and it does not mention that 'dryRun' allows previewing changes, which is only in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('Create') and resource ('damage-dealing skill'). The word 'simplified' hints at a specialized variant, distinguishing it from sibling tools like create_skill or create_healing_skill, though it doesn't name them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 create_skill or create_healing_skill. The description neither mentions prerequisites nor offers exclusions, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_enemyA
Create a new enemy in data/Enemies.json. Only name is required; omitted fields use the editor's new-enemy defaults (100 HP, one Attack action, no drops). Allocates the next unused enemy id and returns { enemy, warnings? } (warn-by-default: a battlerName not found in img/enemies (img/sv_enemies for a side-view project) is flagged, never blocked). Throws if an actions[].skillId or a dropItems[].dataId (item/weapon/armor by kind) references a record that does not exist. NOTE: an enemy with no Hit Rate trait (xparam id 0: trait { code: 22, dataId: 0, value: 0.95 }) always misses physical actions — pass one in traits if the enemy should land basic attacks.
| Name | Required | Description | Default |
|---|---|---|---|
| exp | No | EXP granted when defeated | |
| gold | No | Gold granted when defeated | |
| name | Yes | Enemy name shown in battle and the database | |
| note | No | Note field | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| params | No | 8 base params: [maxHP, maxMP, atk, def, mat, mdf, agi, luk] | |
| traits | No | Trait objects { code, dataId, value } | |
| actions | No | Action patterns { skillId, conditionType, conditionParam1, conditionParam2, rating } | |
| dropItems | No | Drop-item objects { kind, dataId, denominator } | |
| battlerHue | No | Battler hue rotation 0-360 | |
| battlerName | No | Battler graphic filename (img/enemies; img/sv_enemies when System.optSideView) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: omitted-field defaults (100 HP, one Attack action, no drops), next-free-id allocation, return shape `{ enemy, warnings? }`, warn-vs-block behavior for battlerName, throw conditions for dangling skillId/dataId references, and the Hit Rate trait gotcha.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: the core purpose and required-parameter note come first, then returns, then exception behavior, then the gameplay NOTE. Every sentence adds operational value, though the single long paragraph could be broken up for scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter mutation tool with no output schema and no annotations, the description compensates fully by explaining defaults, id assignment, return shape, and failure modes. Nothing an agent needs to call it correctly appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100% (baseline 3), but the description adds real semantic value beyond the schema: default values for omitted fields, the cross-reference validation semantics of actions[].skillId and dropItems[].dataId (item/weapon/armor by kind), and the imperative to pass a Hit Rate trait in `traits`.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Create) and resource (new enemy) plus the exact target file data/Enemies.json. It clearly distinguishes itself from the sibling update_enemy and other create_* tools by describing creation semantics with id allocation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through defaults, validation rules, and a practical NOTE, but the description never explicitly states when to choose this over alternatives (e.g., update_enemy, batch_create) or any when-not conditions. Guidance is present but not routing-oriented.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_healing_skillC
Create a healing skill (simplified)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Skill name | |
| scope | Yes | Target scope (7=ally all, 11=user) | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| mpCost | Yes | MP cost | |
| description | No | Skill description | |
| healFormula | Yes | Heal formula (e.g., "a.mat * 3 + 100") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It does not mention that the tool writes to disk, creates a skill in the project, or what 'simplified' means. The dryRun parameter hints at write behavior, but the description itself adds no transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. It earns its place by indicating the tool's purpose, though it could be more informative without becoming bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with no output schema and many sibling creation tools, the description is too minimal. It does not explain the tool's role in the project, the meaning of 'simplified', or how it relates to create_skill. The schema provides some context, but the description alone is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% parameter description coverage, so the baseline is 3. The description adds no extra semantic meaning beyond what the schema already provides, such as examples or relationships between parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Create a healing skill (simplified)' clearly states the verb and resource, and 'healing' distinguishes it from sibling tools like create_damage_skill or create_buff_skill. However, 'simplified' is vague and does not clarify what simplification entails.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 such as create_skill or create_damage_skill. No context, exclusions, or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_itemA
Create a new item in data/Items.json. Only name is worth passing; omitted fields use the editor's new-item defaults (Regular Item, consumable, no effects). Allocates and returns the next unused item id. An effect referencing a missing record throws: Add/Remove State (code 21/22) → state, Learn Skill (43) → skill, Common Event (44) → common event.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Item name | |
| note | No | Note field | |
| price | No | Buy price (sells for half) | |
| scope | No | Target scope (0 none, 1 one enemy, 7 one ally, …) | |
| speed | No | Speed correction (positive acts earlier) | |
| damage | No | Damage object { type, elementId, formula, variance, critical } | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| tpGain | No | User TP gained on use | |
| effects | No | Effect objects { code, dataId, value1, value2 } | |
| hitType | No | 0 certain, 1 physical, 2 magical | |
| itypeId | No | Item type: 1 Regular, 2 Key Item, 3 Hidden A, 4 Hidden B | |
| repeats | No | Number of hits/repeats | |
| occasion | No | Usable: 0 always, 1 battle, 2 menu, 3 never | |
| iconIndex | No | Icon index (IconSet.png) | |
| consumable | No | Consumed on use | |
| animationId | No | Animation id shown on use | |
| description | No | In-game description text | |
| successRate | No | Success rate percent |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the write target, default field population, id allocation/return, and throws on effects that reference missing records with specific codes. It omits overwrite/duplicate-name behavior and any mention that dryRun avoids the write, leaving a few behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action, then defaults, then error semantics. Every sentence earns its place and nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 18-parameter, nested-object, annotation-free tool it covers the essentials: what it does, what to pass, defaults, return of the new id, and effect error modes. It leaves dryRun's preview semantics to the schema, which is acceptable but slightly under-explained given the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it tells the caller only name matters and that itypeId, consumable, and effects default to Regular Item / consumable / none. That maps directly to specific parameters beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource plus the exact target file (data/Items.json), which is enough to tell it apart from create_weapon/create_armor. It never explicitly names those siblings as alternatives, so differentiation is inferential rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear invocation context: 'Only name is worth passing' and that omitted fields fall back to editor defaults (Regular Item, consumable, no effects). It does not, however, say when to choose this over the other create_* database tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_mapA
Create a new blank map: writes a new data/MapNNN.json (all tiles unpainted) and registers it in the map tree (MapInfos.json). Allocates the next unused map id and returns it. Paint tiles afterward with paint_tiles/fill_area (autotile-aware) and add events with create_map_event/create_npc.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Map name shown in the editor map tree | |
| width | No | Width in tiles (default 17) | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| height | No | Height in tiles (default 13) | |
| parentId | No | Parent map id in the tree; 0 (default) = top level | |
| tilesetId | No | Tileset id (default 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description shoulders the transparency burden. It discloses side effects: writes a new file, registers in the map tree, allocates the next unused ID, and returns it. It also notes tiles are unpainted. This is clear about the persistent mutation and return value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: action and side effects, return value, and follow-up guidance. Every sentence earns its place with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with 6 parameters, no output schema, and no annotations, the description covers the essential context: what is created, where it's stored, what is returned, and what to do next. It doesn't explain defaults or all parameter relationships, but the schema handles those details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline of 3 applies. The description does not add parameter-specific semantics, but it does provide context (e.g., blank map implies no initial tiles, ID allocation). This is acceptable given the schema's thoroughness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Create a new blank map' with specific resources (data/MapNNN.json, MapInfos.json). It distinguishes itself from sibling map tools like update_map, delete_map, and resize_map by specifying creation and registration behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit follow-up workflow: 'Paint tiles afterward with paint_tiles/fill_area' and 'add events with create_map_event/create_npc.' This implies the tool is for initial map creation and guides subsequent steps. It lacks explicit 'when not to use' statements, but the context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_map_eventA
Create a new event on a map. Each page is merged onto a blank "New Event" page (trigger 0 action-button, priority 0 below characters, no graphic, empty command list, standing move type), so you only supply the fields that differ — pass e.g. { image: { characterName: 'Actor1', characterIndex: 0 }, trigger: 3, list: [...] } and the rest is filled in. Nested image/conditions deep-merge; an omitted list becomes a valid empty (code-0-terminated) list. Omit pages entirely for a bare one-page event. For the common "talking NPC" case prefer create_npc. An action-button page meant to fire from facing (doors, entrances, signs) needs priorityType: 1 — with the default 0 (below) it only fires when stood on, so on an impassable tile it can never trigger (this is refused, not written; pass force: true to override). A structurally invalid command list is refused the same way. A page with no graphic, priority 1 and through off on a walkable tile is an invisible wall — warned (not refused); give it priority 0 or through: true if it should be walked past. Exempt: an action-button page over a drawn upper-layer (B–E) object — the solid-landmark idiom. Page fields: image { characterName, characterIndex, direction (2 down/4 left/6 right/8 up), pattern, tileId }, trigger (0 action-button/1 player-touch/2 event-touch/3 autorun/4 parallel), priorityType (0 below/1 same/2 above), moveType (0 fixed/1 random/2 approach/3 custom), conditions, list.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X tile position | |
| y | Yes | Y tile position | |
| name | Yes | Event name | |
| note | No | Event note field | |
| force | No | Write even if validation finds structural problems (wrong parameter count, unterminated command list). Off by default: such a write is refused and nothing is written. Advisory warnings never block regardless. | |
| mapId | Yes | The ID of the map | |
| pages | No | Event pages; each is merged onto a blank page so you can pass only the differing fields. Omit for one blank page. | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly: it explains the blank-page merge model, that omitted `list` becomes code-0-terminated, that structurally invalid command lists are refused (nothing written) unless force:true, that the invisible-wall case is only warned, and that the upper-layer action-button idiom is exempt. This is exactly the validation/refusal/side-effect context an agent needs before writing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then construction rules, then usage routing, then a field legend — a sensible order. It is a single dense paragraph, however; the validation rules and the page-field legend would scan faster as separate short blocks, and a few clauses are packed tightly enough to slow reading.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex creation tool with no annotations and no output schema, the description covers creation semantics, merge defaults, validation outcomes, override paths, the advised sibling, and the full page-field vocabulary. An agent has what it needs to both select and correctly invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Top-level params are already fully documented in the schema, but the nested `pages` items are typed as `additionalProperties: {}` with no property descriptions — the description supplies that missing meaning, enumerating trigger, priorityType, moveType, direction, and image subfields with their numeric values, plus merge behavior for `image`/`conditions`. It adds real value beyond the schema, though it does not cover every top-level field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Create a new event on a map') and immediately distinguishes itself from siblings by naming create_npc as the preferred tool for the talking-NPC case. An agent can tell this apart from update_map_event, set_event_page, and create_npc without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing guidance ('For the common "talking NPC" case prefer create_npc'), concrete trigger scenarios ('an action-button page meant to fire from facing... needs priorityType: 1'), and a clear statement of when the tool refuses vs. warns vs. exempts. Alternatives and conditions are all named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_move_routeA
Build a movement route from a named pattern (patrol/approach/flee/wander/custom) instead of raw move-command codes. Read-only: returns { moveRoute, warnings? }. Use the route as an event page’s autonomous moveRoute (update_map_event with moveType 3), or feed it to set_movement_route for a forced route in an event command list.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Wait for the route to finish before continuing | |
| steps | No | patrol only: steps per leg (default 3) | |
| repeat | No | Loop the route (patterns loop by default) | |
| pattern | Yes | patrol (walk a direction and back), approach (toward player), flee (away from player), wander (random), or custom (your own move commands) | |
| commands | No | custom only: raw move commands { code, parameters } | |
| direction | No | patrol only: primary direction, walked out and back (default right) | |
| skippable | No | Skip a step when movement is blocked |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and states 'Read-only' and the return shape '{ moveRoute, warnings? }'. It does not elaborate on limits or error cases, but for a read-only builder this is adequate and exceeds the baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with purpose and key characteristics, then immediately provides usage context. Every sentence earns its place with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 7 parameters and no output schema, the description explains the tool's role, output shape, and two integration methods. Combined with thorough schema coverage, this provides a complete context for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed per-parameter descriptions, so the baseline is 3. The description does not add extra parameter-level meaning beyond the schema, but it does reinforce the 'pattern' parameter and the overall approach, which is acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'builds a movement route from a named pattern', specifying the verb (build), resource (movement route), and scope (from pattern vs raw codes). It also distinguishes itself from raw move-command codes and references sibling tools, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance on how and where to use the output (as an autonomous moveRoute in update_map_event or fed to set_movement_route). It says 'instead of raw move-command codes', implicitly showing when to prefer this tool, though it does not explicitly mention exclusions or alternative build tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_npcA
Create a complete, placed NPC event on a map in one call — a graphic + trigger + a talk list. Provide text (built into a Show Text sequence, with optional face/speaker; wrap: true word-wraps paragraphs into 4-line message boxes) or an explicit commands array (commands wins if both given). Defaults to a solid, action-button NPC facing down. Warns (never blocks) on an unknown characterName, and on NO graphic at all (an NPC with no characterName is invisible in-game — use create_map_event for an intentionally-invisible trigger). The one-shot "make a talking NPC that says X" primitive.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X tile position | |
| y | Yes | Y tile position | |
| name | Yes | Event name (editor label) | |
| text | No | Dialogue lines shown when the NPC is triggered (built as Show Text) | |
| wrap | No | Auto word-wrap to the message-window width (the same width the line-length warning uses) and split into 4-line boxes. true/"soft" reflows all lines as one paragraph; "hard" keeps each entry (and \n) as a forced line break. Default off (one line per entry, verbatim). | |
| force | No | Write even if validation finds structural problems (wrong parameter count, unterminated command list). Off by default: such a write is refused and nothing is written. Advisory warnings never block regardless. | |
| mapId | Yes | The ID of the map to place the NPC on | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| pattern | No | Sprite frame 0–2 (default 1 = idle when a sprite is set) | |
| through | No | Let the player pass through (default false) | |
| trigger | No | What starts the event (default action_button) | |
| commands | No | Explicit command list (from the build_* tools); overrides `text` if given | |
| faceName | No | text: face image basename (from list_assets("faces")) | |
| priority | No | Stacking vs. the player (default same = solid) | |
| direction | No | Facing direction (default down) | |
| faceIndex | No | text: face index 0–7 | |
| speakerName | No | text: MZ name-box speaker name | |
| characterName | No | Sprite sheet basename (from list_assets("characters")) | |
| characterIndex | No | Sprite index 0–7 in the sheet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses defaults (solid, action-button, facing down), that warnings never block, that an NPC with no characterName is invisible in-game, and the override precedence for commands. It doesn't cover permissions or return format, but for this domain that is minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose before detailing the text/commands branch, and each sentence carries load (composite construction, override rule, defaults, warnings, alternative tool). It is dense but not padded, though a reader must parse several clauses packed into two long sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 19-parameter mutation tool with no annotations and no output schema, the description covers the salient behavior (defaults, non-blocking warnings, invisibility pitfall, text/commands interplay). Remaining parameter detail is fully documented in the schema, so an agent has what it needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter meaning beyond the schema: how `text` is compiled into a Show Text sequence, how `wrap: true` reflows into 4-line boxes, and that `commands` overrides `text`. These relationships are not derivable from the flat per-parameter schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (create) and resource (a complete, placed NPC event on a map) plus the composite nature of the call (graphic + trigger + talk list). It also explicitly distinguishes itself from the sibling create_map_event, so an agent can tell them apart without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names an alternative (create_map_event) and the condition selecting it (intentionally-invisible trigger), and explains the text-vs-commands choice with a tie-breaker ('commands wins if both given'). It stops short of enumerating when other event-creation siblings apply, but the common cross-roads are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_plugin_commandA
Build an RPG Maker MZ plugin command (event command code 357) for insertion into an event page via add_event_command. Validates against the plugins this project actually ships (scanned from their js/plugins/*.js @command/@arg annotations) merged over a small built-in allowlist — warn-by-default: an unknown plugin/command, a stray arg, or a plugin that is installed but disabled in js/plugins.js produces a warning but never blocks. Args are normalized to the editor’s string-valued shape. Read-only: returns { command, warnings? }, writes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | Command arguments as { name: value }; values are stored as strings on disk | |
| label | No | Editor display label (parameters[2]); defaults to the command key | |
| indent | No | Indentation level in the target list (default 0) | |
| pluginName | Yes | Plugin filename without .js (event command parameters[0]) | |
| commandName | Yes | The command key the plugin registered (event command parameters[1]) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the burden of disclosure. It details read-only behavior, return shape { command, warnings? }, validation against actual plugin annotations, warn-by-default policy (never blocks), and args normalization to string-valued shape. This is exceptionally transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the core purpose in the first sentence and packing validation, normalization, return shape, and side-effect-free behavior into the second. Every sentence earns its place; there is zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters, nested objects, and no output schema, the description covers all critical aspects: what it builds, how it validates, warning behavior, return value, and that it writes nothing. This is complete for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all 5 parameters with 100% coverage, so baseline is 3. The description adds meaning by explaining that args are normalized to the editor's string-valued shape and that validation may produce warnings for unknown or disabled plugins, which affects how parameters are interpreted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it 'Build an RPG Maker MZ plugin command (event command code 357)' for insertion via add_event_command, providing a specific verb and resource. It distinguishes itself from siblings by focusing on creation/building, not listing or inserting, making its role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: the tool is used to build a plugin command for later insertion via add_event_command. It doesn't explicitly mention alternatives or when-not-to-use, but the sibling list and the phrase 'via add_event_command' imply the workflow clearly enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_skillA
Create a new skill with custom properties. Omitted fields use new-skill defaults: stypeId 1 (Magic), scope 1, occasion 1 (battle only), hitType derived — 0 certain for recovery or ally/user scopes, else 2 magical for Magic skills, else 1 physical if it deals damage, else 0. An effect referencing a missing record throws: Add/Remove State (code 21/22) → state, Learn Skill (43) → skill, Common Event (44) → common event.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Skill name | |
| note | No | Note field (notetags) | |
| scope | No | Target scope (1=enemy single, 2=enemy all, 7=ally all, etc.) | |
| speed | No | Speed correction (-2000..2000; positive acts earlier). Default 0 | |
| damage | No | Damage configuration | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| mpCost | No | MP cost | |
| tpCost | No | TP cost | |
| tpGain | No | User TP gained on use. Default 0 | |
| effects | No | Skill effects (buffs, debuffs, states, etc.) | |
| hitType | No | 0 certain hit, 1 physical (HIT/EVA, counterable), 2 magical (MEV, reflectable). Default derived from stypeId/scope/damage | |
| repeats | No | Number of hits (1-9). Default 1 | |
| stypeId | No | Skill type (0=none — typical for enemy-only skills, not sealed by Silence; 1=magic, 2=special, etc.). Default 1 | |
| message1 | No | Battle message (line 1, %1 = user name) | |
| message2 | No | Battle message line 2 | |
| occasion | No | Usable: 0 always, 1 battle only (default), 2 menu only, 3 never | |
| iconIndex | No | Icon index (0-1000+) | |
| animationId | No | Animation ID | |
| description | No | Skill description | |
| successRate | No | Success rate percent. Default 100 | |
| requiredWtypeId1 | No | Required weapon type 1 (0=none) | |
| requiredWtypeId2 | No | Required weapon type 2 (0=none) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does real work: it spells out default values for omitted fields (stypeId 1, scope 1, occasion 1) and the exact derivation rule for hitType, plus the failure behavior when an effect references a missing record (codes 21/22/43/44). It does not disclose persistence/ID-allocation behavior or how dryRun interacts with the call, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then the defaults and error semantics. It is dense and every clause carries information, though the hitType derivation sentence is long and hard to parse on first read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 22-parameter mutation tool with no annotations and no output schema, the description covers defaults and error cases well. It omits what the call returns (e.g., the created skill's id) and gives no information about dryRun outside the schema, leaving gaps for an agent that must reason about the write's outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema by specifying the exact default-derivation algorithm for hitType and the concrete fallback defaults for stypeId/scope/occasion, which the schema only states partially.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Create a new skill with custom properties.' An agent immediately knows this is the generic skill-creation entry point. However, it never distinguishes itself from the many specialized siblings (create_damage_skill, create_healing_skill, create_buff_skill, create_state_skill, update_skill), so sibling routing is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no mention of the alternative creator tools. The only contextual information is about field defaults and error conditions, not about selecting this tool over its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_stateA
Create a new state (status condition like Poison/Sleep) in data/States.json. Only name is required; omitted fields use the editor's new-state defaults (no restriction, priority 50, no auto-removal, 1-turn duration). Allocates and returns the next unused state id.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | State name shown in the database and battle messages | |
| note | No | Note field | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| motion | No | SV-actor motion (0 normal, 2 sleep, 3 dead, …) | |
| traits | No | Trait objects { code, dataId, value } | |
| overlay | No | Overlay animation index (0 = none) | |
| maxTurns | No | Maximum duration in turns when auto-removed | |
| message1 | No | Message when an actor gains the state | |
| message2 | No | Message when an enemy gains the state | |
| message3 | No | Message when the state persists | |
| message4 | No | Message when the state is removed | |
| minTurns | No | Minimum duration in turns when auto-removed | |
| priority | No | Icon-slot display priority 0-100 (default 50) | |
| iconIndex | No | Icon shown on the battler/status (0 = none) | |
| messageType | No | Engine's message routing form | |
| restriction | No | Behavior restriction: 0 none, 1 attack enemy, 2 attack anyone, 3 attack ally, 4 cannot move | |
| stepsToRemove | No | Steps to walk off the state when removeByWalking | |
| chanceByDamage | No | Chance (%) of removal per damage instance when removeByDamage | |
| removeByDamage | No | Remove when the battler takes damage | |
| releaseByDamage | No | Whether damage can release the state | |
| removeByWalking | No | Remove after walking a number of steps | |
| autoRemovalTiming | No | Auto-removal timing: 0 none, 1 at action end, 2 at turn end | |
| removeAtBattleEnd | No | Remove automatically when the battle ends | |
| removeByRestriction | No | Remove when the battler's restriction changes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and performs excellently. It discloses that omitted fields use editor defaults, specifies those defaults (no restriction, priority 50, no auto-removal, 1-turn duration), and states that it allocates and returns the next unused state id. This is highly transparent about behavior and 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three brief sentences, each with a distinct purpose: what the tool does, default behavior, and return value. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool's complexity (24 parameters, no output schema), the description covers essential contextual aspects: creation target, required fields, defaults, and return ID. This is sufficient for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 24 parameters have schema descriptions, giving 100% coverage. The description adds value by explaining the defaults for omitted fields, which the schema does not convey, thus supplementing the schema meaningfully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a new state (status condition) in data/States.json, with a specific verb and resource. However, it does not explicitly contrast with sibling tools like update_state, so it does not fully distinguish from alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that only name is required and omitted fields use editor defaults, providing clear usage context. It does not mention when to use this versus update_state or other alternatives, but the creation purpose is straightforward and no exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_state_skillA
Create a state-inflicting skill (poison, sleep, etc.). Throws if stateId does not exist in States.json (create the state first with create_state).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Skill name | |
| scope | Yes | Target scope (1=enemy single, 2=enemy all) | |
| chance | Yes | Success chance (0.0-1.0) | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| mpCost | Yes | MP cost | |
| stateId | Yes | State ID (4=poison, 5=blind, 6=silence, 8=confusion, etc.) | |
| description | No | Skill description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so description carries burden. It discloses a key failure mode (throws on nonexistent stateId) and the dependency on States.json. However, it doesn't mention whether dryRun skips validation, what the return value is, or how new skills are allocated, leaving gaps in behavioral expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences; first defines the tool's purpose with examples, second conveys critical dependency and error condition. No wasted words, front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter create tool with no annotations and no output schema, description is relatively complete. It clearly states purpose, primary failure mode, and prerequisites. It omits return value details and any notes on parameter interactions beyond stateId, but schema covers parameter descriptions. Given CRUD sibling family, this is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage for parameter descriptions, giving baseline 3. Description adds semantic constraint that stateId must refer to an existing state and throws otherwise, which is not in the schema. This enhances understanding of the stateId parameter beyond its type/range.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Create' targeting 'state-inflicting skill' with examples (poison, sleep), distinguishing it from sibling create_skill, create_damage_skill, create_healing_skill, create_buff_skill. It clearly identifies the resource and purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States prerequisite: throws if stateId does not exist in States.json, and explicitly directs to create_state first. This provides when-to-use context and points to an alternative/related tool. However, it doesn't explicitly contrast with other skill creation tools, leaving some ambiguity for which skill type to choose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_transferA
Create a complete, placed map-transfer event in one call, using whichever of the two working idioms you pick. idiom: "action_button" (default) makes a priority-same event the player faces and presses — the right shape for a solid landmark (building, dungeon mouth, door); idiom: "player_touch" makes an invisible priority-below doormat the player walks onto — for interior exits and map-edge gaps. direction is the facing the player lands with, fade the screen transition. Throws if the destination map does not exist; warns if the destination tile is outside that map, if the characterName is unknown, or if the event can never fire from where it sits.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X tile position of the trigger | |
| y | Yes | Y tile position of the trigger | |
| fade | No | Screen fade during the transfer; default "black" | |
| name | No | Event name (editor label); default "Transfer" | |
| force | No | Write even if validation finds structural problems (wrong parameter count, unterminated command list). Off by default: such a write is refused and nothing is written. Advisory warnings never block regardless. | |
| idiom | No | action_button = face a solid landmark and press (priority same, default); player_touch = walk onto a doormat (priority below) | |
| mapId | Yes | The ID of the map the trigger is placed on | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| targetX | Yes | X tile the player lands on | |
| targetY | Yes | Y tile the player lands on | |
| direction | No | Facing after the transfer; default "retain" | |
| targetMapId | Yes | The ID of the destination map | |
| characterName | No | Optional sprite basename (a doormat is normally left invisible) | |
| characterIndex | No | Sprite index 0-7 in the sheet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the burden of behavioral disclosure and does so excellently. It discloses that the tool 'Throws if the destination map does not exist; warns if the destination tile is outside that map, if the characterName is unknown, or if the event can never fire'. It also explains the behavioral difference between idioms (priority same vs below, visible vs invisible), the effect of 'force' and 'dryRun', and default behaviors for direction and fade. This is rich, honest context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well organized: it opens with the main purpose, then explains the two idioms in a structured way, and closes with behavioral caveats. Every sentence provides essential information, and the length is appropriate for the tool's complexity. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high complexity (14 parameters, no output schema, no annotations), the description is remarkably complete. It covers what the tool creates, how to choose the idiom, default behaviors, and failure/warning modes. It also explains the safety mechanisms (force, dryRun). This is sufficient for an agent to select and invoke the tool correctly without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers all 14 parameters (100% coverage), so the baseline is 3. The description adds meaningful semantics beyond the schema by explaining the practical consequences of 'idiom' choices, the meaning of 'direction' and 'fade', and the validation behavior associated with 'force'. It does not describe every parameter individually, but it significantly enriches the key behavioral ones, justifying a score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Create a complete, placed map-transfer event in one call'. It distinguishes itself from generic event creation tools by emphasizing the one-call placement and the two idioms, and it specifically covers the map-transfer domain. The verb 'create' and resource 'map-transfer event' are precise and differentiate this from siblings like create_map_event or build_transfer_player.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use each idiom: 'action_button' for solid landmarks and 'player_touch' for interior exits and map-edge gaps. It also clarifies defaults and error/warning conditions, giving clear context. However, it does not name alternative tools or explicitly state when not to use this tool in favor of a sibling, so it falls short of full 'when/when-not/alternatives' coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_troopA
Create a new troop (enemy battle group) in data/Troops.json. name is required; members defaults to empty and pages to one blank battle-event page. Every member.enemyId must reference an existing enemy. A structurally invalid battle-event page refuses the write (nothing is saved) — pass force: true to override.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Troop name shown in the database | |
| force | No | Write even if validation finds structural problems (wrong parameter count, unterminated command list). Off by default: such a write is refused and nothing is written. Advisory warnings never block regardless. | |
| pages | No | Battle-event pages { conditions, list, span }; defaults to one blank page | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| members | No | Placed enemies; each references an existing enemyId | |
| verbose | No | Echo the full written record instead of the default summary. Off by default: the response reports identity, counts and command-list shape, which is what you would assert on, and omits the parameters/conditions you would only re-read. Read the full record with the matching get_* tool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of disclosing behavioral traits. It does disclose defaults, write location, validation refusal, and the force override. It does not mention the dryRun or verbose return behaviors, though those are covered in the schema descriptions. This is strong but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences of dense, front-loaded information with no filler. Every clause contributes meaning: creation target, defaults, validation constraint, and override behavior. This is an exemplar of concise, well-structured documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter create tool with no output schema, the description plus rich schema descriptions paint a complete picture. The description covers creation behavior, defaults, validation failure handling, and an override path. The schema even explains return summary via the `verbose` parameter. No significant gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage, so the baseline is 3. The description adds value beyond the schema by clarifying that `name` is required, stating default values for `members` and `pages`, and specifying the referential integrity constraint for `member.enemyId`. This goes beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the resource ('a new troop (enemy battle group) in data/Troops.json'). It distinguishes itself from sibling tools like create_enemy by explicitly identifying troops as enemy battle groups, and from update_troop by focusing on creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides useful usage context: it notes that `name` is required, that `members` must reference existing enemies, and that a structurally invalid battle-event page will refuse the write unless `force: true` is passed. However, it does not explicitly mention when to prefer this over related tools like create_enemy or create_battalion, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_weaponA
Create a new weapon in data/Weapons.json. Only name is required; omitted fields use the editor's new-weapon defaults (Weapon equip slot, no stat bonuses). params is a flat 8-length stat bonus [maxHP, maxMP, atk, def, mat, mdf, agi, luk]. Allocates and returns the next unused weapon id.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Weapon name | |
| note | No | Note field | |
| price | No | Buy price | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| params | No | 8 flat stat bonuses [maxHP, maxMP, atk, def, mat, mdf, agi, luk] | |
| traits | No | Trait objects { code, dataId, value } | |
| wtypeId | No | Weapon type id (System.json weaponTypes) | |
| iconIndex | No | Icon index (IconSet.png) | |
| animationId | No | Attack animation id | |
| description | No | In-game description text |
TDQS
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 write target (data/Weapons.json), default behavior for omitted fields, the stat bonus array order, and the id allocation behavior. This is meaningful context beyond the schema, though it doesn't mention the dryRun preview parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact at four sentences, each serving a purpose: main function, defaults, params format, and return behavior. No redundant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers essential aspects: target file, required field, defaults, param structure, and return value. Given 10 parameters and no output schema, it provides sufficient context, though it omits mention of the dryRun parameter, which is documented in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining that `name` is the only required field, what defaults apply to omitted fields, and explicitly defining the `params` array order and length, exceeding the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Create a new weapon in data/Weapons.json' with a specific verb and resource. The mention of allocating the next unused id distinguishes it from sibling tools like update_weapon and other creation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clarifies that only `name` is required and that omitted fields use editor defaults, providing clear context for when to invoke this tool. It doesn't explicitly name alternatives like update_weapon, but the creation context is self-evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_mapA
Delete a map: remove its entry from the map tree (MapInfos.json) and delete its data/MapNNN.json file. The deleted map's direct children are reparented onto its parent (not deleted), so removing one node doesn't wipe a whole sub-tree. Does not touch System.json.
| Name | Required | Description | Default |
|---|---|---|---|
| mapId | Yes | The ID of the map to delete | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses key side effects: reparenting direct children to the parent (preventing subtree deletion) and not touching System.json. This goes beyond a simple 'delete' statement, though it omits irreversibility and permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action, and every sentence adds value. It efficiently explains the deletion mechanics and the important exception about child reparenting without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only two parameters and no output schema, the description covers the main behaviors well. However, it does not mention return values on success/failure or error conditions (e.g., what if mapId doesn't exist). For a destructive operation this is a minor gap, but overall it provides sufficient context for most usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters (mapId, dryRun) clearly described. The tool description adds no extra parameter-specific meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Delete') and resource ('map'), and details exactly what happens: remove from MapInfos.json and delete the data file. It distinguishes itself from sibling tools like delete_map_event by focusing on the map node itself, not events on it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when deleting a map node, and notes it does not touch System.json, providing some boundary context. However, it gives no explicit alternatives or exclusions (e.g., 'use update_map_tree for restructuring'), so guidance on when not to use it is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_map_eventB
Delete an event from a map by ID
| Name | Required | Description | Default |
|---|---|---|---|
| mapId | Yes | The ID of the map | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| eventId | Yes | The ID of the event |
TDQS
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 restates the delete action without mentioning irreversibility, side effects on references, validation behavior, or what the dryRun parameter does. This leaves significant uncertainty 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that gets straight to the point. There is no filler or repetition, making it highly concise and well-structured for an API reference.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacking an output schema and annotations, the description should provide expected return values, error conditions, or usage notes. It only states the basic action, leaving the agent uninformed about what happens after deletion or how dryRun affects the operation, making it incomplete for a tool with no other context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides complete descriptions for all three parameters (mapId, eventId, dryRun), covering 100% of the parameter semantics. The description adds no additional meaning beyond what the schema already gives, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete'), the resource ('an event'), and the scope ('from a map'), with the identifier 'by ID'. This distinguishes it from sibling tools like create_map_event, update_map_event, and get_map_event, which cover other operations on the same resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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, no prerequisites, and no mention of the dryRun parameter's purpose or implications. The description is purely declarative and offers no context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_recordA
Delete one database record (actor, class, skill, item, weapon, armor, enemy, troop, state, or common_event) by nulling its slot — ids never shift, so nothing else is renumbered. Reports every reference the deletion would leave dangling (an actor's class, a troop member, a Change Items / Shop / Battle Processing command, a skill effect, the starting party, …; found with the same audit validate_references runs, see coverage in the response) and REFUSES, writing nothing, when there are any — pass force: true to delete anyway, or dryRun: true to preview the references without throwing. Deleting skill 1 (Attack), skill 2 (Guard) or state 1 (Knockout) is always reported, since the engine hard-codes them. Returns { type, deleted: { id, name }, referenceCount, references[], coverage }.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The id of the record to delete | |
| type | Yes | Which database table: actor, class, skill, item, weapon, armor, enemy, troop, state, or common_event | |
| force | No | Write even if validation finds structural problems (wrong parameter count, unterminated command list). Off by default: such a write is refused and nothing is written. Advisory warnings never block regardless. | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it discloses the slot-nulling write strategy (ids never shift, nothing renumbered), the refusal-on-references semantics, the hard-coded skill/state exceptions, and the exact response shape. This is unusually rich behavioral context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the key constraint (dangling references) are front-loaded ahead of the escape hatches and return shape. It is dense with parentheticals but every clause carries actionable information, so it is efficient rather than padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description documents the return payload (type, deleted, referenceCount, references[], coverage) and covers the failure mode, so an agent has everything needed to call and interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema by tying force/dryRun to the reference-refusal flow (dryRun previews refs 'without throwing') and clarifying that advisory warnings never block.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb (delete) and resource (one database record) and enumerates the ten affected tables, so an agent immediately knows the scope. It is clearly distinguishable from siblings like delete_map, delete_map_event, or validate_references.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes the gating behavior (refuses on dangling references), the escape hatches (force: true to delete anyway, dryRun: true to preview), and routes to the related audit used by validate_references. The when-to-use and when-it-will-fail conditions are fully spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_tileA
Decode a raw RPG Maker MZ tile id into its tileset sheet (A1–A5, B–E), and for autotiles its kind + shape slot (0–47) and autotile geometry (floor/wall/waterfall). Read-only inspection helper — raw tile ids are opaque integers, this makes one legible. Returns { tileId, empty, sheet, sheetIndex, autotile, kind?, shape?, autotileType? }. Pass tilesetId to also inspect the sheet PNG and report transparent (true = the tile is see-through and needs an opaque base tile on a lower layer; painting it on layer 0 alone shows the map void) + transparentPercent.
| Name | Required | Description | Default |
|---|---|---|---|
| tileId | Yes | The raw tile id to decode | |
| tilesetId | No | Tileset id — when given, also report the tile transparency (needs-a-base) flag |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It discloses read-only behavior, the exact return shape, and the nuanced transparency flag semantics: 'true = the tile is see-through and needs an opaque base tile on a lower layer; painting it on layer 0 alone shows the map void.' This is thorough behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but structured: first the core decoding behavior, then read-only context, return shape, and optional parameter effect. Each sentence earns its place, though it is slightly longer than minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description provides the return object fields, which is essential. However, some fields like 'empty' and 'kind' are not defined, leaving minor gaps. For a moderately complex decode tool, this is acceptable but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds beyond the schema by explaining that passing tilesetId triggers PNG inspection and reports 'transparent' and 'transparentPercent', giving meaningful context about the optional parameter's effect.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'decode' and clearly identifies the resource: a raw RPG Maker MZ tile id. It details the output (tileset sheet A1–A5, B–E, autotile kind/shape/geometry) and frames itself as a read-only inspection helper, distinguishing it from sibling tools like paint_tiles or get_tile_flags.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states the context: 'Read-only inspection helper — raw tile ids are opaque integers, this makes one legible.' This implies when to use it (to understand a raw id) but does not explicitly name alternatives or exclusion cases, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_webA
Export a pruned HTML5 web deployment (for itch.io or any static host): copies index.html, js/, css/, fonts/, icon/ and data/.json, plus only the img/audio/movies files the game references (every string in data/.json, string literals in the core js and plugins, plugin @default annotations; img/system is always kept) and only the effects/*.efkefc Effekseer effects actually referenced (an animation's effectName, a Plugin Command argument, or a plugin parameter/string — not other data strings) together with the textures/models they list internally. Writes the folder to outDir and, by default, .zip with index.html at the archive root. Returns file/byte counts, kept/dropped asset counts (+ dropped paths), the screen size from System.advanced (the itch embed size), and warnings for itch's 1000-file / 200 MB-per-file limits. Writes nothing inside the project; outDir must be outside the project's copied folders, and an existing non-empty outDir is only replaced if it was a previous export_web output. Follow up with a playtest of the exported build.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | Also write <outDir>.zip with index.html at the archive root (default true). | |
| prune | No | Drop img/audio/movies/effects files nothing references (default true). Set false to copy every asset — the escape hatch if a plugin builds asset names at runtime. | |
| outDir | Yes | Folder to write the deployment into (absolute, or relative to the project root). Must not be the project folder or inside its img/audio/data/js/… folders. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does so extensively: it explains the pruning logic, what is always kept, what gets dropped, what gets written, default zip behavior, existing outDir replacement rules, and safety constraints about not writing inside the project. It also discloses return values such as file/byte counts, dropped paths, screen size, and itch.io limit warnings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core export purpose and uses no obvious filler. However, the second sentence is extremely long and dense with parenthetical rules, making it harder to parse than necessary for an agent. The content earns its place, but the structure could be clearer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex export tool with no output schema, the description compensates by explaining what gets returned, what warnings are produced, and the exact filesystem constraints. It gives the agent enough information to invoke the tool correctly and anticipate its side effects and outputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all three parameters well. The description reinforces defaults and the outDir replacement constraint, but much of the parameter meaning is already present in the schema. Baseline 3 is appropriate because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb and resource: 'Export a pruned HTML5 web deployment.' It immediately scopes the operation as a pruned deployment for itch.io or any static host, making it easy to distinguish from database-editing or validation siblings. An agent can tell what the tool produces without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context ('for itch.io or any static host') and a follow-up recommendation ('Follow up with a playtest of the exported build'). It also documents the prune=false escape hatch for runtime-generated asset names. It does not explicitly compare against a sibling alternative, but there is no close sibling export tool, so the guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fill_areaA
Fill a rectangular area of a map with one tile id, with automatic autotiling — a filled autotile region borders itself correctly (and re-borders any same-kind tiles it touches). Flat tiles fill uniformly. Defaults to the lower ground layer (0). For region ids, fill layer 5 with the region number as tileId.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Left tile position of the rectangle | |
| y | Yes | Top tile position of the rectangle | |
| layer | No | Z-layer 0-5 (default 0 = lower ground; 5 = region id) | |
| mapId | Yes | The ID of the map | |
| width | Yes | Rectangle width in tiles | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| height | Yes | Rectangle height in tiles | |
| tileId | Yes | Tile id to fill with (autotile base or raw) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It discloses key behaviors like automatic autotiling and re-bordering, and mentions layer defaults. However, it omits mutation aspects (overwriting existing tiles) and does not mention the dryRun preview capability or return behavior. This is a moderate disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact (two sentences) and front-loads the core action, followed by behavior and layer guidance. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 8 parameters and no output schema, the description sufficiently covers the main functionality, autotiling behavior, and special handling for regions. It does not explicitly state destructive overwrite behavior, but the overall context is adequate for an agent to proceed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds meaningful semantics beyond schema by explaining that tileId can be an autotile base or raw tile, and specifically how to use layer 5 with region numbers. This enriches parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fills a rectangular area of a map with one tile id, which is a specific verb+resource. It also distinguishes from siblings like set_map_tile or paint_tiles by emphasizing automatic autotiling and the ability to handle region ids.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool (rectangular area fills with autotiling) and gives guidance for layers, including defaulting to layer 0 and using layer 5 for region ids. However, it does not explicitly name alternative tools or state 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.
find_tileA
Find tiles in a tileset by a case-insensitive SUBSTRING match on their catalog name — a quick bridge from a name fragment like 'grass' or 'forest' to a paintable tile id. This is a literal substring match, NOT synonym/semantic search: 'water' matches 'Endless Waterfall' but not 'Sea' or 'Pond' (their names lack the substring). To browse the actual tile names first, use get_tile_catalog with a sheet filter, then search a fragment you see. Set searchDescriptions: true to also match the free-text description a project catalog carries (custom sheets named by the tileset-catalog skill — their names are terse, the descriptions say what the tile looks like); built-in RPG Maker entries have no description, so this only widens the search over custom sheets. Returns matching catalog entries (name, sheet, tile id, autotile kind, source, matchedIn [which fields matched], transparent [true = needs an opaque base on a lower layer], plus description/confidence/manual for project catalog drafts). Covers the default RPG Maker tilesets, non-default sheets with a .txt name sidecar in img/tilesets/ (DLC packs ship these; loaded automatically, source: 'sidecar'), plus custom sheets cataloged into data/tilecatalog/ (via the tileset-catalog skill). Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Substring to match, e.g. 'grass' or 'forest' (literal substring, no synonyms) | |
| tilesetId | Yes | Tileset id (from Tilesets.json / the map) | |
| searchDescriptions | No | Also match project-catalog tile descriptions, not just names (default false — names only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden and does so well: it discloses read-only behavior, the three data sources covered (default tilesets, .txt sidecars, data/tilecatalog/), the `source` values, and the meaning of `matchedIn` and `transparent`. It stops short of stating permissions or pagination/limit behavior, which is the only gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core match semantics before any of the detail, and each sentence carries new information. The dense parenthetical enumerating return fields is a little list-like, keeping it from a 5, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description compensates by enumerating the returned fields and their meanings, and by covering the catalog source model. An agent has everything it needs to call this correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond it: it explains that `searchDescriptions: true` only widens the search over custom sheets because built-in RPG Maker entries carry no description, and it reinforces the literal-substring semantics of `query`.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (find tiles in a tileset) plus the exact matching semantics ('case-insensitive SUBSTRING match on catalog name'). Clearly distinguishes itself from the nearest siblings, get_tile_catalog (browse) and describe_tile (inspect one tile).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent when to use this (name fragment → tile id) and when not to rely on it (it is literal substring, not synonym/semantic search, with a concrete 'water' counter-example). It also names the alternative workflow: browse with get_tile_catalog + `sheet` filter, then search a fragment you saw.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_databaseA
Read a database table in full: actors, classes, items, weapons, armors, skills, enemies, troops, states, or common_events. Returns the raw 1-indexed array (slot 0 is null), or — with id — that single record, or null if no such record exists. These are full records: prefer list_names for an id→name index, or search_actors/search_items/search_skills to find records by name, and reach for this only when you need every field. Maps and tilesets are not here: use get_map_infos/get_map and get_tilesets/get_tile_flags. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Return just this record (null if missing); omitted = the whole table | |
| type | Yes | Which table to read: actors, classes, items, weapons, armors, skills, enemies, troops, states, or common_events. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the transparency burden. It discloses the raw 1-indexed array return format, the null slot at index 0, single-record behavior with id, null for missing records, and explicitly states 'Read-only.' This goes beyond the schema to explain observable behavior comprehensively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it leads with the primary action, then return format, then usage guidance and exclusions. Every sentence earns its place, and it avoids repeating schema details verbatim beyond the necessary context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must explain return values itself; it does so thoroughly (array, indexing, null behavior, field granularity). It also covers scope exclusions and safety (read-only), making it complete for a tool of this complexity. No meaningful gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the type enum and id description already present, giving a baseline of 3. The description adds semantic clarity by explaining the behavior of omitting vs. providing id—returning the whole table versus a single record or null—and emphasizing that these are full records, which enriches the parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb and resource: 'Read a database table in full' and enumerates the exact tables it covers. It also explicitly distinguishes itself from related sibling tools by naming alternatives like list_names and search_actors, making its purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use versus when-not-to-use guidance: it recommends list_names for id→name lookups, search_actors/search_items/search_skills for name-based searches, and get_map_infos/get_map for maps/tilesets. This directly addresses alternatives and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_game_titleA
Get the game title
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It only states 'Get the game title' without mentioning return format, whether it reads from current project state, or any side effects. Minimal behavioral insight is offered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, directly front-loaded with the verb and resource. No redundant or unnecessary words are present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no nested objects), the description is mostly sufficient. It could explicitly mention that the return value is the game title string, but the name and verb already imply this. It is complete for a low-complexity getter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter semantics to explain. The description adds no parameter information, but the baseline for 0 params is 4, and there is nothing missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'get' and the resource 'game title', making it unambiguous what the tool does. It distinguishes from siblings like update_game_title, which is a different operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 get_title_screen or get_system. No 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.
get_mapA
Get map data by ID. The tile data array can be huge on a painted map (widthheight6 ints) and blow the MCP token limit, so pass includeData:false to omit it (you get dataTileCount instead) and read tiles with get_map_region when needed. includeData defaults to true for backward compatibility.
| Name | Required | Description | Default |
|---|---|---|---|
| mapId | Yes | The ID of the map to retrieve | |
| includeData | No | Include the full tile `data` array (default true). Pass false to omit it (returns dataTileCount) and avoid the token cost of a big painted map. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavioral traits. It honestly warns that the data array can be huge and blow the token limit, explains the dataTileCount alternative, and notes the default of includeData. This is valuable disclosure of a significant behavioral trait, though it doesn't cover other potential behaviors like error handling or exact response structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the primary purpose, followed by a critical caveat and the default behavior. Every sentence earns its place: no filler, no repetition, and it is compact while conveying essential usage details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (2 parameters, no output schema), the description addresses the most significant contextual concern—the token limit and how to mitigate it with includeData and get_map_region. It also hints at the output via 'dataTileCount,' but it doesn't fully describe what the map data includes or any expected response format, leaving a slight gap in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. The description adds meaning beyond the schema by explaining why includeData exists (token limit), what the data array size formula is (width*height*6 ints), and that passing false gives dataTileCount. It also clarifies the default behavior, enhancing the parameter semantics beyond the schema's own description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with 'Get map data by ID,' which is a specific verb plus resource, clearly indicating the tool's function. It distinguishes itself from siblings like get_map_region by explicitly contrasting the use of get_map_region for reading tiles when includeData is false. This makes the tool's scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance by explaining the token limit issue and instructing to pass includeData:false to avoid it, and to use get_map_region for reading tiles. It also notes the default behavior for backward compatibility, giving clear context on how to invoke the tool correctly versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_map_dimensionsA
Get the width and height (in tiles) of a map
| Name | Required | Description | Default |
|---|---|---|---|
| mapId | Yes | The ID of the map |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It clearly indicates a read operation by using 'Get' and describes the return value, but it does not disclose potential error behavior (e.g., missing map) or confirm non-destructiveness explicitly. Adequate for a simple getter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the essential purpose without any wasted words. Structure is ideal for a simple getter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the return semantics (width and height in tiles), which is essential since there is no output schema. It lacks error handling details but is otherwise complete for a straightforward query tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (mapId has a description). The tool description adds no additional parameter meaning beyond confirming the map reference, so it meets the baseline but does not elevate it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the specific verb ('Get') and resource ('width and height of a map'), with the additional detail about units ('in tiles') that distinguishes it from other get_* tools that retrieve different map-related data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when map dimensions are needed) but provides no explicit exclusion criteria or alternatives. Since the tool is simple and unique, this is acceptable but not exemplary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_map_eventB
Get a specific event from a map
| Name | Required | Description | Default |
|---|---|---|---|
| mapId | Yes | The ID of the map | |
| eventId | Yes | The ID of the event |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden of behavioral disclosure. It only says 'Get', which implies a read operation, but it does not specify return format, error handling, or side effects. This is insufficient for an agent to understand what happens if the event is not found or what exactly is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, six-word sentence with no unnecessary words. It is immediately clear and appropriately sized for a simple get operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With two well-documented parameters and a clear purpose, the tool is invocable. However, there is no output schema and no mention of return values or error behavior, leaving some gaps. It is adequate but not rich, especially given no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents both parameters (mapId and eventId) with descriptions and types, achieving 100% schema coverage. The description adds no additional parameter semantics, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'specific event from a map', making it easy to understand. It distinguishes itself from sibling tools like get_map_events (plural) and search_map_events by indicating a single, specific event retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no context on when to use this tool versus alternatives like get_map_events or search_map_events. It does not mention any exclusions or related tools, leaving the agent to infer usage solely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_map_eventsA
Get all events from a specific map
| Name | Required | Description | Default |
|---|---|---|---|
| mapId | Yes | The ID of the map |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states the action without disclosing return format, ordering, pagination, or error behavior. For a read operation, it provides minimal behavioral context beyond what the name already conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant words. It communicates the essential purpose efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter getter with no output schema, the description is minimally viable. It identifies the tool and required input, but lacks details on return structure, edge cases, or related tool distinctions that would make it fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with mapId described as 'The ID of the map'. The tool description adds no additional meaning beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get all events from a specific map' uses a specific verb ('Get'), names the resource ('all events'), and the scope ('from a specific map'). It clearly distinguishes from sibling tools like get_map_event (singular) and search_map_events (filtered search).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case (retrieving all events for a given map) but does not explicitly mention alternatives or when not to use it. There is no reference to get_map_event for a single event or search_map_events for filtered queries, leaving usage guidance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_map_infosB
Get information about all maps
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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. The verb 'get' strongly implies a read-only, non-destructive operation, which is a key behavioral trait, but the description does not explicitly state safety, return format, or any side effects. It's adequate 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or redundancy. Every word contributes to the core meaning, making it maximally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema, the description is the only source for understanding return values. It states the tool gets information about all maps, but doesn't enumerate what that information is (e.g., name, dimensions, events). For a 0-param, get-all tool, it's minimally sufficient but leaves the agent guessing about the result structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema trivially covers 100% of parameter semantics. The baseline for 0-param tools is 4, and the description adds no parameter-related ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get information about all maps' uses a clear verb (get) and resource (all maps), and the 'all maps' scope distinguishes it from sibling tools like get_map (singular). However, 'information' is vague and doesn't specify what fields or details are returned, so it's not maximally specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. The description doesn't state when to use this tool versus alternatives like get_map, get_map_dimensions, or get_map_region, nor does it mention any exclusions or prerequisites. It's a one-liner with no contextual direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_map_regionA
Read the raw tile ids in a rectangular window of one map layer — a token-cheap alternative to get_map for inspecting part of a painted map. Returns tiles as a 2D array (rows top→bottom, each left→right) of raw engine tile ids. The rectangle must lie fully within the map bounds (throws otherwise). layer defaults to 0 (see set_map_tile for the z-layer meanings).
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Left edge of the window (tile column) | |
| y | Yes | Top edge of the window (tile row) | |
| layer | No | Z-layer 0-5 (0-1 lower, 2-3 upper, 4 shadow, 5 region); default 0 | |
| mapId | Yes | The ID of the map | |
| width | Yes | Window width in tiles | |
| height | Yes | Window height in tiles |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses the output format (2D array with row/column order), the default layer, and that it throws if the rectangle is out of bounds. It could add more about error behavior or performance limits, but the essential behaviors are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each earning its place: purpose/alternative, return format, and constraints/defaults. It is front-loaded and wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description correctly explains the return structure. It covers the main edge cases (bounds, layer default) and provides enough context to invoke the tool correctly. Given moderate complexity, the description is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining the layer default, referencing set_map_tile for layer meanings, and highlighting the boundary constraint, which supplements the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads raw tile ids in a rectangular window of one map layer, and explicitly differentiates it from get_map as a token-cheap alternative. The verb 'read' and resource specification make the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly names get_map as the alternative and specifies when to use this tool ('inspecting part of a painted map'). It also gives a key usage constraint (must lie within bounds) and refers to set_map_tile for layer meanings, providing clear context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_partyA
Get the starting party — the actor ids the game begins with. Returns { partyMembers }, rhyming with set_party's input/output shape.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 explicitly states the return format `{ partyMembers }` and implies a read-only operation via 'Get' and 'Returns'. This adds useful behavioral context beyond the bare name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence front-loaded with the core purpose. It includes the return shape without any wasted words, making it highly concise and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with no parameters and no output schema, the description provides everything needed: what it gets, the return shape, and a useful relationship to set_party. No information appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the baseline is 4. The description correctly omits parameter details, and the empty schema already communicates that no parameters are expected.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the starting party actor IDs, using the verb 'Get' with a specific resource. It also differentiates from siblings by referencing set_party's shape, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is implied: use this to obtain the starting party. The mention of set_party suggests a pairing, but there is no explicit when-to-use vs alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectA
Get the project directory the server is currently operating on: its path, whether it is a valid RPG Maker MZ project, and the game title it holds.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility. It transparently lists the three pieces of information returned (path, validity, game title), which is the core behavioral output. It does not explicitly state that the operation is read-only or has no side effects, but the verb 'Get' strongly implies it, and no contradictory traits are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the verb and resource, then efficiently specifies the exact return values. No redundant words or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter getter with no output schema, the description fully specifies the three return fields (path, validity, game title). All essential information is provided, making it complete for an agent to invoke and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema trivially covers everything. The description adds meaningful context about what entity is being retrieved (the current project) but does not need to explain any inputs since there are none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('the project directory the server is currently operating on'), and explicitly enumerates the returned information: path, validity as an RPG Maker MZ project, and game title. This clearly distinguishes it from siblings like set_project (which changes the project) and validate_project (which only checks validity).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for retrieving the currently active project ('the server is currently operating on'), but it does not explicitly state when to use this over get_game_title or set_project, nor does it mention any exclusions or alternatives. Usage context is present but not fully elaborated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_starting_positionA
Get the game starting position ({ mapId, x, y })
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. The verb 'Get' implies read-only behavior, and the return shape is disclosed, but there is no explicit statement about side effects or safety. For a simple getter, this is adequate but not highly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant words. It efficiently conveys both purpose and return shape, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 0 parameters and no output schema, the description fully covers the return value by explicitly listing mapId, x, and y. There is no additional complexity requiring more explanation, so the description is complete for this simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, earning a baseline of 4 per the rubric. The description focuses on the return value, which is appropriate since there are no parameters to explain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('Get') and resource ('game starting position'). It also provides the return shape ({ mapId, x, y }), which distinguishes it from the sibling tool 'update_starting_position'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: the tool is a getter for the starting position. However, there is no explicit guidance on when to use this tool versus alternatives such as update_starting_position, nor any contextual notes about 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_switchesA
Get all game switch names
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. The word 'Get' reasonably implies a read-only operation, and the scope 'all game switch names' is clear. However, it does not disclose any potential side effects, return format, or caveats, which would be relevant absent an output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no extraneous content. It conveys the exact action and target without any filler, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and no output schema, the description fully explains what the tool does. It doesn't detail the return structure, but for a simple listing of names, the absence is minor. Given the sibling context (e.g., set_switch_name), the function is easily understood.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is empty, so there are zero parameters. Schema description coverage is effectively 100% (vacuously). The baseline for zero parameters is 4, and the description adds no parameter information because none exists; nothing more is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get all game switch names' uses a specific verb ('Get'), a specific resource ('game switch names'), and indicates the full scope ('all'). It clearly distinguishes this from sibling tools like set_switch_name (which writes a name) and get_variables (which gets a different resource).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. It does not mention related tools like set_switch_name, nor any context where this tool is preferred. The description is purely declarative and provides no usage or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_systemC
Get system data
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries full responsibility for behavioral disclosure, but it provides none. It does not mention whether the operation has side effects, requires auth, or returns any specific structure, making it impossible for an agent to infer expected behavior beyond the generic 'get' verb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, but this is under-specification rather than effective conciseness. It provides no useful content and fails to earn its place, akin to a placeholder rather than a meaningful tool description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and no annotations, so the description must clarify what 'system data' means and what the tool returns. It does not, leaving the agent to guess the resource scope and return format, which is inadequate for confident invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and 100% schema description coverage, so the schema fully documents the invocation. With no parameters to explain, the description is not required to provide additional parameter semantics, meriting the baseline score of 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get system data' is a tautology of the tool name, restating 'get_system' without adding specificity. It fails to clarify what 'system data' refers to (e.g., game settings, variables, or metadata) or how it differs from sibling getters like get_terms or get_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. With many sibling get_* tools, the description offers no context, prerequisites, or exclusions, leaving the agent without direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_termsA
Get the game vocabulary/terms: the basic, commands, params string arrays and the messages map (menu labels, system messages).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 goes beyond a simple 'getter' by revealing the exact structure of the returned data: the arrays ('basic', 'commands', 'params') and the 'messages' map, including a hint of its contents (menu labels, system messages). This gives the agent clear expectations of what to receive, which is valuable for a read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence. It front-loads the primary action ('Get the game vocabulary/terms') and then immediately provides the specific components returned, with no filler or redundancies. Every word contributes to clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters, no annotations, and no output schema, the description provides a solid overview of what is returned. It explicitly names the array and map fields, making the tool's output predictable. However, it could mention potential error conditions (e.g., no game loaded) or note that it returns the full set of terms, but these are minor gaps for such a simple getter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description does not need to explain parameter semantics, and it correctly focuses on the return contents. This maximizes usefulness given the tool's simplicity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves game vocabulary/terms, and lists the specific components: 'basic', 'commands', 'params' string arrays and the 'messages' map. This precise verb+resource+scope distinguishes it from sibling getters like get_system or get_game_title, which target different aspects of the project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided regarding when to use this tool versus alternatives. There is no mention of a 'use set_term for editing' or 'see get_database for the full database'. The usage context is only implied by the getter nature of the tool, but the description does not clarify when to prefer it over similar retrieval tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tile_catalogA
Get the semantic tile catalog for a tileset: the named tiles (e.g. 'Grassland A', 'Forest', 'Sea') in each of its image sheets, each with its representative tile id and a source ('builtin' = RPG Maker's own labels; 'sidecar' = authoritative names from an img/tilesets/.txt file shipped next to a non-default sheet, as DLC packs do; 'project' = a data/tilecatalog/ entry — a vision-bootstrap draft, or a human-verified manual one, which outranks a sidecar name). Project (custom-sheet) entries also carry the skill's description, confidence ('high'/'medium'/'low'), and manual (true = a human verified it) so you can gauge how trustworthy a draft name is. Autotile entries (A1–A4) return the kind's base tile id — feed it to a paint command, which recomputes the shape from neighbours. Covers the default RPG Maker tilesets, any non-default sheet with a .txt name sidecar in img/tilesets/ (loaded automatically), plus custom sheets cataloged into data/tilecatalog/ (via the tileset-catalog skill); still-uncovered sheets are omitted. Called WITHOUT sheet it returns only a per-sheet index (name + entry count) to stay within the tool-output limit — a full tileset can hold thousands of named tiles. Pass sheet (filename 'World_A2' or slot role 'A2') to list one sheet's actual tile entries. Sheet-filtered entries also carry transparent (true = the tile is see-through and needs an opaque base tile on a lower layer — painting it on layer 0 alone shows the map void; e.g. trees/objects/overlays). Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| sheet | No | Restrict to one sheet by filename ('World_A2') or role ('A2'). Omit to get a per-sheet summary (counts only) instead of every entry. | |
| tilesetId | Yes | Tileset id (from Tilesets.json / the map) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden and does so well: it discloses the read-only nature, the output-limit behavior of the sheetless call, the source authority hierarchy (builtin/sidecar/project, manual outranking sidecar), autotile base-id semantics, and the `transparent` layer requirement. It omits error/invalid-tileset behavior and any pagination for very large sheets.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the body is a dense run-on that front-loads the purpose then stacks source semantics, autotile notes, coverage scope, and the sheet rule into a single lengthy block. Much is useful, yet it is verbose for a two-parameter read tool and could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description correctly assumes responsibility for explaining return values (source categories, confidence, manual flag, transparent flag, autotile base ids) and the output-size safeguard. An agent has enough to call and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both `sheet` and `tilesetId`, establishing the baseline of 3. The description elaborates on `sheet` (filename vs role, omit-for-summary) but adds little parameter-level syntax beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Get the semantic tile catalog for a tileset', and immediately defines what the catalog contains (named tiles with representative ids, source, confidence). An agent can distinguish it from get_tilesets (lists tilesets) and describe_tile (one tile). It stops short of naming sibling alternatives explicitly, so it isn't a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage context: call without `sheet` for an index, pass `sheet` (filename or role) for full entries, and feed autotile base ids to a paint command. It does not state when NOT to use it or name a sibling tool to prefer instead, so it falls just short of explicit alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tile_flagsA
Decode a tileset's flag word for a single tile id into a legible view: 4-direction passability (down/left/right/up — true = walkable that way), the [*] 'star' overlay bit, ladder/bush/counter/damage-floor flags, and terrain tag (0–7). Read-only inspection of data/Tilesets.json flags[]. Note passability here is for the tile in isolation; a real cell's passability layers its stacked tiles — use check_passability for that. Returns { tilesetId, tileId, tile, flags }.
| Name | Required | Description | Default |
|---|---|---|---|
| tileId | Yes | The raw tile id whose flags to decode | |
| tilesetId | Yes | Tileset id (from Tilesets.json / the map) |
TDQS
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 read-only nature, the isolated-tile semantics (an important behavioral caveat), and the exact return shape. It does not mention error handling or invalid inputs, but for a simple read tool this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action and output structure. Every sentence earns its place: purpose, read-only caveat with alternative, and return format. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the purpose, relevant caveats, and return value. It explicitly notes the distinction from check_passability, which is essential given the sibling list. Minor omissions like invalid IDs or default flag values do not significantly hinder understanding, especially with the output shape stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds a little semantic context ('tile id' and 'tileset id') but does not meaningfully extend beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Decode'), identifies the resource ('a tileset's flag word for a single tile id'), and details the output (passability directions, star bit, ladder/bush/counter/damage-floor flags, terrain tag). This clearly differentiates it from sibling tools like describe_tile or check_passability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('read-only inspection of data/Tilesets.json flags[]') and when not to use: 'a real cell's passability layers its stacked tiles — use check_passability for that.' This gives direct alternative guidance and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tilesetsA
List every tileset in the project with its id, name, mode (0 world / 1 area), and the image sheets it uses (labelled A1–A4, A5, B–E; empty slots omitted). Use this to discover valid tilesetId values (needed by find_tile, get_tile_catalog, paint_tiles, fill_area, place_object, get_tile_flags, set_tile_flags, check_passability) and to see which sheets each tileset is built from. For a plain id→name list, list_names(type:"tilesets") is even cheaper. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and succeeds. It explicitly says 'Read-only,' discloses output formatting details like 'empty slots omitted,' and describes the mode encoding (0 world / 1 area). It even notes which image sheet labels are used, giving a clear picture of the tool's behavior and output shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three tightly written sentences. The first defines the action and output, the second gives usage context, and the third offers a cheaper alternative and the read-only note. Every sentence earns its place with no redundancy, and the most critical information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, no annotations, and no output schema, the description is remarkably complete. It covers what the tool returns, how the data is structured, when to use it, what other tools depend on it, an alternative approach, and its safe, read-only nature. This fully equips an agent to select and invoke the tool correctly without needing further clarification.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description adds semantic value by explaining the meaning of the mode field (0 world / 1 area) and the sheet labels, which helps the agent interpret results. While no input parameters need explanation, the contextual output details enrich understanding beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'List every tileset in the project' — a specific verb and resource — and enumerates the exact fields returned (id, name, mode, image sheets). It also distinguishes itself from sibling tool list_names by noting the alternative for a plain id→name list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use the tool: 'Use this to discover valid tilesetId values' and lists dependent tools. It also provides an alternative: 'For a plain id→name list, list_names(type:"tilesets") is even cheaper.' This gives clear contextual guidance on choosing between similar operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_title_screenA
Get the title screen settings: title1Name/title2Name (background layers, from list_assets("titles1"/"titles2") — title2Name draws over title1Name), titleBgm (the AudioFile that plays while it is shown), and drawTitle (whether the game title text is drawn over the art).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explains the meaning of each setting, including layering order (title2Name draws over title1Name), asset source (via list_assets), and the drawTitle flag. This provides valuable context beyond the bare tool name. It does not explicitly state side effects, but 'get' strongly implies read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence. It is front-loaded with 'Get the title screen settings' and uses parentheticals to organize additional context. No filler words, though the sentence is long and could be split for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description compensates by naming all returned settings and explaining their semantics. It covers what each field means and where values come from. While it doesn't specify the exact return format structure, it is sufficient for an agent to understand what will be returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline of 4 applies. The description has no parameter information to provide, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as retrieving the title screen settings and enumerates exactly which settings are included: title1Name/title2Name, titleBgm, and drawTitle. This specificity distinguishes it from sibling tools like update_title_screen (the setter) and get_game_title (a different setting).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The verb 'Get' implies this is for reading current title screen settings, and the sibling update_title_screen naturally serves as the write counterpart. However, the description does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites. Context is clear but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_typesA
Get one System.json type-name array — the named lists other data references by index: elements, skillTypes, weaponTypes, armorTypes, or equipTypes.
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | Which type-name array to read |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Get' implies a read-only operation, and the description adds context about the arrays being referenced by index. However, it does not explicitly state that no modifications occur, nor does it disclose any edge-case behaviors or return format details. It is minimally sufficient for a simple read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that clearly states the action and then elaborates with a dash-separated explanation. No wasted words; every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 parameter, enum-based, no output schema), the description adequately covers the purpose, the valid categories, and the significance of the data (index references). It does not specify the return array's element types or formatting, but for this simple getter it is likely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the parameter with an enum and description. The tool description adds meaning by explaining that these categories are 'the named lists other data references by index' and that each is a separate array ('one ... array'). This goes beyond the schema's simple 'Which type-name array to read'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Get one System.json type-name array' — a specific verb and resource. It enumerates all valid categories (elements, skillTypes, weaponTypes, armorTypes, equipTypes) and explains that these are named lists other data references by index, clearly distinguishing it from broader tools like get_system or set_type_name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the usage context: when you need a specific type-name array that other data references by index. However, it does not explicitly contrast this with alternatives like get_system or set_type_name, nor provide when-not-to-use conditions. It still gives clear context, so no exclusions are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_variablesA
Get all game variable names
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. The verb 'get' implies a read-only operation, and the mention of 'names' clarifies the output scope, but it does not explicitly state non-mutating behavior or return format. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. 'Get all game variable names' is concise yet informative, every word contributing to clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with no parameters and no output schema, the description is sufficient. It clearly indicates the resource (game variable names) and the operation (get all), which fully defines the expected behavior. Additional return-format details are unnecessary for such a straightforward tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema is empty and there are no semantics to explain. Per the rubric, the baseline is 4 for 0 params, and the description does not need to add anything.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get all game variable names' uses a specific verb ('get') and resource ('all game variable names'), clearly stating the tool's purpose. It is distinct from siblings like 'set_variable_name' and 'get_switches' by focusing on reading variable names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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, such as 'get_database' or 'get_switches'. There is no mention of exclusions, prerequisites, or typical use cases, leaving the agent without contextual direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_event_commandsA
Insert a pre-built sequence of event commands (from the build_* builders) into any of the three command lists an MZ project has — the mutating companion to the read-only builders. Splices before the list’s end marker (or at position). target "map_event" (the default) needs mapId + eventId + pageIndex; "common_event" needs commonEventId; "troop_page" needs troopId + pageIndex. The resulting list is validated before writing: a structural problem (wrong parameter count for a command code, a list left unterminated) refuses the write and saves nothing — pass force: true to override. Advisory findings (unrecognized code, over-long text line) are returned as warnings and never block. Returns { target, id, listLength, listCodes, warnings? } — the resulting list as its length and its command CODES, which is what you verify a splice against; pass verbose: true for the full list with parameters, or read it back with get_map_event.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Write even if validation finds structural problems (wrong parameter count, unterminated command list). Off by default: such a write is refused and nothing is written. Advisory warnings never block regardless. | |
| mapId | No | target "map_event": the map id | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| target | No | Which command list to insert into (default map_event) | |
| eventId | No | target "map_event": the event id | |
| troopId | No | target "troop_page": the troop id | |
| verbose | No | Echo the full written record instead of the default summary. Off by default: the response reports identity, counts and command-list shape, which is what you would assert on, and omits the parameters/conditions you would only re-read. Read the full record with the matching get_* tool. | |
| commands | Yes | The event commands to insert (e.g. the `commands` from a build_* tool) | |
| position | No | Insertion index; defaults to the end of the list | |
| pageIndex | No | target "map_event"/"troop_page": zero-based page index | |
| commonEventId | No | target "common_event": the common event id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses validation-before-write, refusal on structural problems, the force override, advisory warnings never blocking, and the exact return shape. It even explains the verbose flag and how to read the full result back, which goes well beyond basic mutation tool behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense but every sentence adds value: purpose, target requirements, validation behavior, force override, warnings, return shape, and verbose option. It is organized logically from action to outcome, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description fully explains the return value shape and how to verify a splice. It covers all key contexts: targets, position, validation, failure modes, override, advisory findings, and verbosity. The only minor omission (dryRun) is already covered in the parameter schema, and the description even points to get_map_event as a read-back path.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds meaning by grouping parameters per target (mapId+eventId+pageIndex vs commonEventId vs troopId+pageIndex), explaining that commands should come from build_* builders, and clarifying position default and force/verbose effects. This significantly reduces guesswork about how parameters interrelate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action: "Insert a pre-built sequence of event commands ... into any of the three command lists an MZ project has". It distinguishes itself from the read-only build_* tools and clearly states its mutating nature. The target-specific breakdown (map_event, common_event, troop_page) removes ambiguity about scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly positions this as the "mutating companion to the read-only builders" and tells users to pass commands from build_* tools. It also clarifies target-specific required IDs. However, it does not explicitly mention the alternative add_event_command for single-command insertion or state when not to use this tool, only implying it through "sequence of event commands".
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_allocated_idsA
Show which switch / variable / common-event IDs are already spoken for, derived from the project's own JSON (never a hand-maintained list, which would drift the moment someone edited in the RPG Maker editor). An id counts as allocated if it is declared (a System.json label, a CommonEvents row) OR referenced anywhere — event page conditions and command lists, common events, troop pages, and Common Event skill/item effects. Use this before reusing an id, and pass id to answer "where is switch 23 actually used?" before touching it. Returns { count, highest, gaps, declaredCapacity, allocated[], coverage }. Read-only. To claim a fresh id instead, use next_free_id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Report just this id — whether it is allocated, its label, and every place it is referenced. Omitted = the whole namespace. | |
| type | Yes | Which id namespace: switch, variable, or common_event. Database rows (actors, items, …) are not here — create_*/batch_create assign those ids, and list_names shows what exists. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility. It discloses the read-only nature, data source (project JSON vs. hand-maintained list), the precise allocation definition (declared or referenced anywhere), and the return shape ({ count, highest, gaps, declaredCapacity, allocated[], coverage }). This is exemplary transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded with the core purpose. Every sentence contributes: the data-source caveat, allocation definition, usage guidance, and alternative tool reference. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the absence of an output schema, the description specifies the return structure and gives enough behavioral detail to understand the tool's full functionality. It covers what the tool counts, how it behaves, when to use it, and what it returns, making it self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers both parameters fully, so baseline is 3. The description adds valuable context by explaining that 'id' answers 'where is switch 23 actually used?' and clarifying the scope of 'type' via the namespace list, elevating it slightly above pure schema reliance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Show') and clearly identifies the resource: allocated IDs across switch, variable, and common_event namespaces. It explicitly contrasts with sibling tools like next_free_id and list_names, making the tool's niche unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides direct guidance: 'Use this before reusing an id' and explains when to pass the id parameter for targeted lookup. It names the alternative tool (next_free_id) for claiming a fresh id, offering clear when-to-use vs. when-not-to-use direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_assetsA
List the available asset filenames (extension stripped) for one asset kind — the exact names RPG Maker's data references (a sprite/face/tileset/audio name). Use it to validate a graphic or audio name before wiring it into an event; a wrong filename fails silently at runtime. Fails soft: an unused asset directory returns an empty list.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Asset kind to list. Images: characters, faces, tilesets, pictures, parallaxes, battlebacks1, battlebacks2, enemies, sv_actors, sv_enemies, titles1, titles2, system. Audio: bgm, bgs, me, se. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It discloses extension stripping, exact reference names, and soft-failure behavior (empty list for unused asset directories). This is meaningful behavioral context beyond a basic 'lists assets' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: action and result, recommended usage, and failure behavior. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter listing tool with no output schema, this description is self-sufficient. It explains what is returned, why it matters, and how failures present, making it fully actionable for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of the single parameter with a detailed enum description. The description adds use-case context ('one asset kind', validation) but does not provide new syntactic details beyond what the schema already offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'List the available asset filenames... for one asset kind'. It also clarifies the exact naming semantics (RPG Maker data references), distinguishing it from sibling list tools like list_names and list_plugin_commands.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'Use it to validate a graphic or audio name before wiring it into an event; a wrong filename fails silently at runtime.' This is clear context, though it does not name alternative tools or exclusion cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_namesA
Cheap names-only index for a database table. Returns { id, name } entries instead of full records — use it to look up or sanity-check IDs before wiring them into events, without paying the token cost of a full get_*/search_* dump.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Which table to index: actors, classes, items, weapons, armors, skills, enemies, troops, states, common_events, tilesets, or maps. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations available, the description carries the transparency burden. It discloses the cheap token cost, names-only nature, and the exact return format. It does not mention ordering or pagination, but for a simple list tool the provided behavioral details are meaningful and go beyond what the schema offers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the key phrase 'Cheap names-only index', and every word earns its place. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter list tool, the description sufficiently covers purpose, return format, and use case. It doesn't specify whether all rows are returned or sorting, but given the simple scope and rich schema, it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already has 100% coverage with a self-explanatory enum and per-parameter description. The tool description adds no additional details about the 'type' parameter, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states a specific verb ('list') and resource ('names-only index for a database table'), describes the return shape as {id, name}, and differentiates itself from full get_*/search_* dumps. This is specific and distinguishes it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: for looking up or sanity-checking IDs before wiring them into events. It contrasts with the more expensive 'full get_*/search_* dump', implying the alternative when full records are needed, thus providing clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_plugin_commandsA
List every plugin command create_plugin_command can validate (plugin filename → command key → args): the plugins this project actually ships, scanned from their js/plugins/*.js annotations, merged over a small built-in allowlist. Pass pluginName to narrow to one plugin. Read-only. Use scan_plugins for the richer per-project view (arg types/defaults, enabled state); an unlisted plugin command can still be built, it just isn’t validated.
| Name | Required | Description | Default |
|---|---|---|---|
| pluginName | No | Optional: restrict to one plugin (its filename without .js) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses read-only behavior, data source (js/plugins/*.js annotations + built-in allowlist), and the limitation that unlisted commands aren't validated—all adding context beyond tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the action and purpose. Includes only essential information—usage, alternative, and caveat—without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional param and no output schema, the description is complete: it states purpose, source, read-only nature, output shape, and a key limitation. No critical gaps for agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single optional parameter pluginName (restrict to one plugin filename without .js). The description echoes 'Pass pluginName to narrow to one plugin' but adds little over the schema, meeting the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists plugin commands that create_plugin_command can validate, with a specific output structure (plugin filename → command key → args). It distinguishes itself from siblings by referencing create_plugin_command and scan_plugins.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use scan_plugins for the richer per-project view' and notes that an unlisted plugin command can still be built but won't be validated, providing clear when-to-use and when-not-to-use guidance. Also instructs how to narrow with pluginName.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
next_free_idA
Reserve the next unallocated switch / variable / common-event ID(s) instead of picking one by hand. Ids are handed out strictly above every id already declared or referenced, so two sessions editing the same project over time cannot silently claim the same switch — a collision that never crashes and only surfaces hours into a playtest as a door that is inexplicably already open. Pass reuseGaps: true to fill holes below the highest id first (off by default: a hole is often an id claimed in notes but not yet written). Read-only — it suggests ids, it does not write them; name what you take with set_switch_name / set_variable_name so the next session sees the claim.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Which id namespace: switch, variable, or common_event. Database rows (actors, items, …) are not here — create_*/batch_create assign those ids, and list_names shows what exists. | |
| count | No | How many consecutive free ids to return (default 1) | |
| reuseGaps | No | Fill unallocated holes below the highest id first (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: it is read-only, does not write IDs, allocates strictly above all declared/referenced IDs, and explains the default gap behavior (holes are often ID claims not yet written). This goes well beyond a simple operation summary.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and includes useful context. However, the playtest anecdote is vivid but non-essential, making it slightly longer than necessary. Still, every part contributes to understanding the tool's purpose and trade-offs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, safety, guardrails, and edge cases well, and the schema fills in parameter details. The main gap is the lack of an explicit return-value description (e.g., does it return a single ID or an array?), and no output schema exists to compensate. Overall, it's nearly complete for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already documented. The description adds valuable semantics beyond the schema: the collision rationale, the meaning of 'unallocated', and why reuseGaps defaults off (holes may be claimed in notes). This extra context enriches parameter understanding without being strictly necessary.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Reserve the next unallocated switch / variable / common-event ID(s)'. It specifies the relevant namespaces and differentiates from siblings by emphasizing reservation/allocation rather than creation or listing. It also distinguishes from database-row ID assignment by pointing to create_*/batch_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit context for when to use the tool: 'instead of picking one by hand' and to avoid silent collisions across editing sessions. It also gives exclusions/alternatives: database rows are 'not here' and are handled by create_*/batch_create, and names should be claimed via set_switch_name / set_variable_name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
object_tilesA
Expand a top-left flat tile id + a width×height size into the grid of tile ids that object occupies on the sheet — feed the returned tiles straight into place_object. This handles the flat sheets' two-half-column layout, where the tile below id N is NOT N+16 (indices 0–127 are the left half of the sheet, 128–255 the right), which is otherwise painful to compute by hand. Get the top-left id from find_tile/get_tile_catalog. Read-only. Throws if topLeftId isn't a flat id or the rectangle runs off the 16×16 sheet; warns if the tileset lacks that sheet.
| Name | Required | Description | Default |
|---|---|---|---|
| width | Yes | Object width in tiles | |
| height | Yes | Object height in tiles | |
| tilesetId | Yes | The tileset id the object belongs to | |
| topLeftId | Yes | Raw flat tile id of the object's top-left cell (from find_tile/get_tile_catalog) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and excels: it declares the tool is read-only, details the two-half-column layout behavior, specifies error conditions (throws if topLeftId isn't flat or rectangle runs off the 16×16 sheet), and warns if the tileset lacks the sheet. This is comprehensive behavioral disclosure for a compute utility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact for the complexity involved, with four sentences each serving a distinct purpose: main action, layout caveat, input source, and error/read-only behavior. It is front-loaded with the core action. Slightly verbose due to explaining the layout quirk, but every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description fully contextualizes the tool: what it does, why it's needed (the tricky layout), where inputs come from, how to use the output, and error/warning behavior. It is self-contained for an agent to invoke correctly without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. The description adds little beyond the schema: it references the top-left id source and the layout quirk, but the schema already states the topLeftId is a 'Raw flat tile id' from find_tile/get_tile_catalog. Width/height are already described as dimensions. No significant semantic enrichment.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Expand') and clearly identifies the resource (a top-left flat tile id plus width×height into a grid of tile ids). It also distinguishes this tool from siblings like place_object by explaining that the returned tiles feed directly into place_object. The mention of the unusual sheet layout further clarifies the tool's unique role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states when to use it ('feed the returned tiles straight into place_object') and provides a prerequisite source for the input ('Get the top-left id from find_tile/get_tile_catalog'). It implies this tool simplifies manual computation, but it does not explicitly name alternatives or say when not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paint_blueprintA
Paint a whole map area from an ASCII blueprint in ONE call and one write. rows are equal-length strings (one glyph per cell); legend maps each glyph to what that cell holds: [[layer, tile], ...] pairs (multi-layer cells, e.g. ground on 0 + fence on 1); a bare string = a catalog tile name on layer 0; { wall: { top, side?, faceHeight?, layer? }, tiles?: [...] } = an A4 wall (or A3 roof) — every cell gets the wall-top kind and the bottom faceHeight (default 1) cell(s) of each vertical run get the wall-side kind (derived as top + 8 kinds = +384 ids unless side is given; a run continuing off the map's bottom edge gets no face); or null = leave the cell untouched. Tiles may be ids or catalog names (exact name, else a unique substring — unknown/ambiguous names are an error). Row lengths, unknown glyphs, names and fit are all validated before anything is written. With clearUpperLayers (default true) each painted cell zeroes the tile layers (0-3) above its lowest specified layer that it does not specify, so stale objects vanish ([] erases the cell). Autotiling is recomputed once per layer, as in paint_tiles. Returns cells painted per layer, cleared count, wall faces made, and a passability overview of the rectangle, judged like the engine's canPass (a step needs the source to allow leaving and the target to allow entry): rows with # = impassable — a cell with no walkable direction (face, water, solid object) or part of a region whose own edge flags refuse entry from the walkable cells around it (an A4 wall-top mass, a stair-less plateau) — and . = walkable ground, plus the impassable [x, y] cells. Stamp multi-tile B/C objects afterwards with place_object.
| Name | Required | Description | Default |
|---|---|---|---|
| rows | Yes | Blueprint rows, top to bottom; every row the same length, one glyph per cell | |
| mapId | Yes | The ID of the map | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| legend | Yes | Glyph → cell contents (see the tool description for the value forms) | |
| origin | No | [x, y] map position of the blueprint's top-left cell (default [0, 0]) | |
| clearUpperLayers | No | Zero the tile layers above each cell's lowest specified layer that it does not specify (default true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load and does so: it discloses validation-before-write, the destructive effect of clearUpperLayers (zeroing stale layers, `[]` erases), wall-face derivation rules, off-map edge behavior, and a detailed account of the returned passability data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Information-dense and front-loaded with the core idea, but delivered as one massive run-on paragraph mixing parameter syntax, destruction semantics, and return-value detail. It is effective but poorly structured for skimming, and several clauses (e.g. the passability explanation) could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description correctly explains the return payload (cells painted per layer, cleared count, wall faces, passability overview with its canPass-derived rules). Combined with full schema coverage, an agent has everything needed to invoke and interpret the call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema for `legend` value forms (bare string vs [layer, tile] vs {wall:{...}} vs null, side derived as top + 8 kinds) and the clearUpperLayers/faceHeight defaults. It adds value without fully re-specifying every field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Paint a whole map area from an ASCII blueprint in ONE call and one write') and distinguishes itself from paint_tiles, fill_area, and place_object by naming the latter as the follow-up for multi-tile objects. An agent can tell what this does and where it fits without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: use this for whole-area painting in one write, autotiling behaves 'as in paint_tiles', and multi-tile B/C objects should be stamped afterward with place_object. There is no explicit when-not-to-use or a named alternative for single-tile edits, but the routing guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paint_tilesA
Paint specific tiles onto a map, with automatic autotiling. Each cell is set to its tile id; if that id is an autotile (A1-A4, e.g. a catalog 'kind' base from find_tile), its shape and its neighbours' shapes are recomputed from same-kind adjacency so borders/corners line up. Flat tiles are painted as-is. Defaults to the lower ground layer (0). Higher-level than set_map_tile, which is a single raw tile with no autotiling.
| Name | Required | Description | Default |
|---|---|---|---|
| layer | No | Z-layer 0-5 (default 0 = lower ground; 0-3 tiles, 4 shadow, 5 region id) | |
| mapId | Yes | The ID of the map | |
| tiles | Yes | Cells to paint | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the important side effect that neighbors' shapes are recomputed from same-kind adjacency when autotiles are used, and that flat tiles are painted as-is. It also explains the layer default and the distinction from set_map_tile. However, it doesn't mention potential edge cases like overwriting behavior or what happens with layer 4/5, though these are partially in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the core purpose, then explains the autotiling algorithm, then the alternative tool. Every sentence adds relevant information with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is moderately complex due to autotiling, and the description covers the algorithm, the layer default, and a close sibling. It doesn't mention the dryRun parameter, but that's documented in the schema. Given no output schema and good annotations in the schema, the description is reasonably complete for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains layer ranges and tileId semantics (autotile base id or raw id). The tool description mostly restates the default layer and tileId kind, adding little beyond the schema. It does mention 'cells to paint' for the tiles parameter, but that's also evident from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool paints specific tiles onto a map with automatic autotiling. It specifies the exact behavior (cell set to tile id, autotile shape recomputation) and distinguishes itself from set_map_tile by noting it is higher-level and handles multiple tiles with autotiling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names set_map_tile as a lower-level alternative that does a single raw tile with no autotiling, providing clear when-to-use guidance. It also notes the default layer, helping the agent decide if layer needs to be specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_objectA
Place a multi-tile B/C object (a house, tree, fountain, …) on a map and report its passability. tiles is the object's block of flat tile ids as rows (top to bottom), each row left to right; a 0 leaves that cell untouched so L-shaped/irregular objects work. Stamped onto the upper tile layer (2) by default so it draws over the ground. Unlike paint_tiles this does NOT autotile (objects are flat sheet tiles) — instead it uses the tileset flags to warn when a footprint cell sits on impassable terrain or overwrites an existing tile, and returns the resulting per-cell passability plus the collision cells the object turns into a solid obstacle. Warn-by-default: never refuses a placement. Get tile ids from find_tile/get_tile_catalog.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Left (top-left) tile x of where the object is placed | |
| y | Yes | Top (top-left) tile y of where the object is placed | |
| layer | No | Z-layer 0-3 to stamp onto (default 2 = upper tile layer, drawn over the ground) | |
| mapId | Yes | The ID of the map | |
| tiles | Yes | The object as a rectangular grid of tile ids: rows top→bottom, each row left→right. 0 = a transparent cell (left untouched). | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals key traits: default stamping on layer 2, zero cells left untouched, warn-by-default with no refusal, use of tileset flags for warnings, and return of per-cell passability plus collision cells. This is exceptionally transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-structured. It front-loads the main purpose and uses backticks and parentheticals to keep information tight. While longer than the TDQS 4.3 example, every sentence contributes critical detail without redundant fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description clearly states the return values (per-cell passability and collision cells) and warns about the non-autotiling behavior. It also references related tools for tile IDs. Minor gaps remain, such as not mentioning the dryRun parameter's behavior in the description (though the schema covers it), but overall it is complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes all parameters (100% coverage), but the description adds meaningful context: the `tiles` array orientation (rows top-to-bottom, left-to-right) and the meaning of 0 (transparent cell), plus the default layer value of 2. This goes beyond the schema descriptions and materially aids correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Place a multi-tile B/C object... on a map and report its passability.' It includes concrete examples (house, tree, fountain) and explicitly differentiates from the sibling tool paint_tiles by stating it does NOT autotile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly contrasts with paint_tiles ('Unlike paint_tiles this does NOT autotile'), providing clear context for choosing this tool. It also tells the user to get tile IDs from find_tile/get_tile_catalog. However, it does not enumerate specific scenarios where other alternatives (e.g., fill_area, object_tiles) would be preferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_mapA
Screenshot a map as the game actually draws it: boots the project headless, starts a new game on the map, and saves a PNG. Validators prove structure, not looks — use this to catch wrong wall/autotile kinds, void (unbased transparent tiles), odd sprites or missing images. Default renders the WHOLE map (canvas resized to width×height×48px, player hidden, autorun/parallel events frozen, map-name banner off); pass x+y for a normal 816×624 game-screen view centred on that tile. Returns the PNG path plus problems — console errors, page errors and HTTP 404s (missing assets — a missing image is drawn blank instead of stopping the engine on its load-error retry screen). Read-only. Needs the optional dependency playwright-core and a Chromium from the Playwright cache (npx playwright install chromium-headless-shell) or the RPGMAKER_MCP_CHROMIUM env var.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | With y: render a normal screen view centred on this tile instead of the whole map. | |
| y | No | ||
| out | No | Output .png path, or a directory. Default: <os tmpdir>/rpgmaker-mz-mcp/renders. | |
| mapId | Yes | Map to render. | |
| inline | No | Also return the PNG(s) as image content in the response (default false: paths only — read the file to view it). | |
| switches | No | Switch ids to turn ON first, to see event pages of a later story state. | |
| runEvents | No | Let autorun/parallel events run before the shot (default false: resting map). | |
| showEvents | No | Draw event sprites (default true). false = bare tiles only. | |
| showPlayer | No | Draw the player (default: hidden for a whole-map render, shown for a view). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it declares read-only, explains what the default whole-map render does (canvas resized to width×height×48px, player hidden, autorun/parallel events frozen, banner off), what passing x+y changes, what `problems` surfaces (console/page errors, HTTP 404s, blank-drawn missing images), and the required dependency/env var.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose in the first clause, then layered detail. It is dense with em-dash clauses, and the dependency paragraph is a long tail, but nearly every sentence carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter tool with no annotations and no output schema, the description covers defaults, return values (PNG path + problems), side-effect profile (read-only, frozen events), and prerequisites. Nothing critical for a correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 89%, so the baseline is 3, but the description adds real semantics: the interaction of x+y (jointly producing an 816×624 centred view), the whole-map default dimensions, and the practical meaning of switches/runEvents. It goes beyond restating the schema even if some overlap remains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Screenshot a map as the game actually draws it') and immediately scopes it against the validator siblings ('Validators prove structure, not looks'). An agent can distinguish it from validate_project/validate_assets without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to reach for it ('to catch wrong wall/autotile kinds, void ... odd sprites or missing images') and contrasts it with the structural validators it complements. It also flags the required runtime dependency and install command, which is genuine usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reset_tableA
Clear a whole database table (actor, class, skill, item, weapon, armor, enemy, troop, state, or common_event) except the ids in keep — e.g. reset_table('skill', { keep: [1, 2] }) wipes the RTP skills but keeps Attack/Guard, the usual first step before authoring your own database with batch_create. Kept records stay at their own id; the rest become null and trailing empty slots are trimmed (the table is [null] when nothing is kept). Like delete_record it REFUSES, writing nothing, when the removal would leave references dangling (map events giving removed items, troops of removed enemies, …) unless force: true; use dryRun: true first to see what disappears and what would break. Returns { type, kept[], removedCount, removed[], referenceCount, references[], coverage } (lists are capped at 100).
| Name | Required | Description | Default |
|---|---|---|---|
| keep | No | Ids to keep (each must exist); omitted = remove every record | |
| type | Yes | Which database table: actor, class, skill, item, weapon, armor, enemy, troop, state, or common_event | |
| force | No | Write even if validation finds structural problems (wrong parameter count, unterminated command list). Off by default: such a write is refused and nothing is written. Advisory warnings never block regardless. | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly: it discloses destructive clearing, REFUSAL on dangling references unless force: true, dryRun preview semantics, id preservation, null/trimming behavior, and return shape with a 100-item cap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but front-loads the action, effect, example, safety behavior, and return shape with no empty filler. The enumerated table types duplicate the schema enum and add some bulk, keeping it from a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex destructive tool with no annotations and no output schema, the description supplies the missing return shape, refusal conditions, dryRun behavior, and trimming rules. An agent has everything needed to invoke it safely and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds value beyond the schema by demonstrating the keep array in an example and explaining force vs. dryRun behavior in context. The type enum is already in the schema, so no extra credit there.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Clear'), resource ('whole database table'), and enumerates the table types. The example reset_table('skill', { keep: [1, 2] }) concretely shows the tool's effect, letting an agent distinguish it from single-record tools like delete_record.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context: 'the usual first step before authoring your own database with batch_create' and advises 'use dryRun: true first.' It also notes refusal behavior like delete_record, but does not explicitly state when to prefer this over delete_record or other alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resize_mapA
Resize a map to new width/height, safely repadding every z-layer of its tile data (existing tiles kept where the old and new grids overlap; new cells blank; shrinking crops). This is the ONLY safe way to change a map's dimensions — update_map refuses a width/height change because it would not resize the tile array. Warns about any event left outside the new bounds.
| Name | Required | Description | Default |
|---|---|---|---|
| mapId | Yes | The ID of the map to resize | |
| width | Yes | New width in tiles | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| height | Yes | New height in tiles | |
| verbose | No | Echo the full written record instead of the default summary. Off by default: the response reports identity, counts and command-list shape, which is what you would assert on, and omits the parameters/conditions you would only re-read. Read the full record with the matching get_* tool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does so richly: repadding every z-layer, preserving tiles on overlap, blank new cells, cropping on shrink, and warning about events outside new bounds. It stops short of stating whether warned events are deleted or kept, and does not confirm the write-to-disk/commit behavior beyond the dryRun param.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, each earning its place: the core action with precise overlap/crop semantics, the critical alternative contrast, and the event-warning behavior. Dense and front-loaded with zero fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates well by thoroughly covering behavioral complexity (z-layer repadding, overlap/crop semantics, the only-safe-route contrast, event warnings). It does not explicitly describe the response summary/record shape or confirm immediate persistence, but the verbose parameter in the schema partially covers return behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — all 5 parameters (mapId, width, height, dryRun, verbose) have their own descriptions in the schema, so the baseline is 3. The description's "new width/height" adds little beyond the schema's "New width/height in tiles," and dryRun/verbose semantics are fully documented in the schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource combination: "Resize a map to new width/height, safely repadding every z-layer of its tile data." It also explicitly distinguishes from siblings: "This is the ONLY safe way to change a map's dimensions — update_map refuses a width/height change because it would not resize the tile array."
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: "This is the ONLY safe way to change a map's dimensions," and names the specific alternative (update_map) and why it is unsuitable for this purpose. The note about event warnings also clarifies a behavioral condition users should expect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_playtestA
Play the game headless from a script of steps and report what happened — the runtime check validators cannot do (does the door transfer, does the NPC say the right thing, does the choice branch, is there an invisible wall). One browser session runs the whole script; each step reports its outcome and the run stops at the first failing step. Steps: load {mapId,x,y,direction?,party?,level?,gold?,switches?,variables?,selfSwitches?,items?,equip?,encounters?} starts a fresh game there (random encounters off unless encounters:true); startEvent {eventId} starts a map event as if triggered and lets it run until it shows text or goes idle (waiting out any transfer — reported as transferredTo); advanceText {maxMs?} presses OK until the event is idle, STOPPING at an open choice list/battle — returns the map message lines shown and any open choices (text shown during a battle comes back separately as battleLines); choose {index} picks a 0-based choice; walk {direction, steps?} walks tile by tile, reporting where it ended (to); if a tile refused entry, stoppedAt (the player's tile) and blockedTile (the refused one); when a step fires a touch event (a door) it stops, waits out the transfer and reports transferredTo {mapId,x,y}, plus eventRunning/messageOpen if the event is still going; press {button, times?}; wait {ms}; autoBattle {troopId?, canEscape?, canLose?, maxMs? (default 60000)} fights (a started or new battle) on auto AI until it ends, returning the battle's message lines (troop events, victory text). Battles are fast-forwarded (20 engine frames per drawn frame: same logic, same odds, a 10-turn boss fight in seconds) unless the run sets realtime: true; screenshot {name?} saves a PNG; eval {script} evaluates a JS expression in the game page and returns its value (e.g. "$gameSwitches.value(3)"). Reported text reads as the message window shows it: \V[n]/\N[n]/\P[n]/\G expanded, control codes (\C[n], \I[n], ., | …) removed. Every step result carries ok; the response ends with finalState (scene, map, position, gold, party) and problems (console/page errors, HTTP 404s). Max 200 steps. Read-only: never writes the project. A run can take MINUTES (booting ~5-10 s, long cutscenes, realtime battles): clients should raise their request timeout, or send a progressToken with resetTimeoutOnProgress — the tool then sends a progress notification per step and every 5 s during long ones. Split long scripts into several runs if your client can do neither. Needs the optional dependency playwright-core and a Chromium from the Playwright cache (npx playwright install chromium-headless-shell) or the RPGMAKER_MCP_CHROMIUM env var.
| Name | Required | Description | Default |
|---|---|---|---|
| out | No | Directory for screenshot PNGs. Default: <os tmpdir>/rpgmaker-mz-mcp/renders. | |
| steps | Yes | The script, run in order. | |
| inline | No | Also return the PNG(s) as image content in the response (default false: paths only — read the file to view it). | |
| realtime | No | Play battles at real-time speed (default false: battles are fast-forwarded). Real time takes ~10-20x longer — raise autoBattle maxMs to match. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers: read-only ('never writes the project'), run duration in minutes, progress-token behavior, the 200-step cap, stop-at-first-failure semantics, battle fast-forwarding, and the external playwright-core/Chromium dependency. This is unusually thorough behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and the differentiator, then flows into step semantics and operational notes. It is long, but the density is justified by the 9-action step union and the minute-scale async behavior; almost every sentence carries actionable detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers what an agent needs to call it correctly: script semantics, timeouts/progress handling, dependency setup, output shape (ok per step, finalState, problems), and failure behavior. Nothing material is missing for a complex no-output-schema tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaningful semantics not obvious from the schema: what each step action does (startEvent runs until text/idle, advanceText stops at choice/battle and returns battleLines separately), how reported text is decoded (\V[n] expansion, control codes stripped), and the fast-forward vs realtime distinction.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('play the game headless from a script of steps') and immediately positions it against siblings: it is 'the runtime check validators cannot do'. An agent can distinguish it from validate_project and render_map without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames itself as the runtime complement to validators and gives conditions for use (checking door transfers, NPC text, choice branches, invisible walls). It also advises splitting long scripts and raising timeouts. It does not name a specific sibling alternative for edge cases, so not quite a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_pluginsA
Discover the plugin commands this project actually has, by parsing the @command/@arg annotations in js/plugins/*.js and the enabled/disabled state in js/plugins.js. Use it to find out what create_plugin_command can call and with which args — it reports every command's key, label, description and args (name/type/default), plus whether the plugin is enabled in the editor's Plugin Manager (a disabled plugin's commands never run). create_plugin_command validates against this scan automatically, so you don't need to call this first; it's for discovery. Pass pluginName to narrow to one plugin, or enabledOnly:true to skip plugins that are installed but switched off. Read-only. NOTE: MZ has no 'required argument' annotation, so scanned args are checked for unknown names only, never for missing ones.
| Name | Required | Description | Default |
|---|---|---|---|
| pluginName | No | Optional: restrict to one plugin (its filename without .js) | |
| enabledOnly | No | Only report plugins enabled in js/plugins.js (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavior: it parses specific files, reports enabled state, notes that disabled plugin commands never run, and flags a limitation about MZ's lack of required-argument annotations. It also declares itself read-only, which is critical safety information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than one sentence but every clause earns its place, covering purpose, output, usage, and a limitation. It front-loads the main action and remains well structured, though a slightly tighter wording could improve conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Considering there is no output schema, the description fully specifies what will be reported (command key, label, description, args with name/type/default, enabled status). It also provides essential context about the relationship with create_plugin_command and a key limitation, making the tool's behavior clear and complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining the practical effect of each parameter ('narrow to one plugin', 'skip plugins that are installed but switched off') and ties them to the tool's purpose, going slightly beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Discover') and resource ('the plugin commands this project actually has'), and details exactly what it parses and reports. It clearly distinguishes itself from create_plugin_command by framing as a discovery tool, and the mention of enabled/disabled state adds unique scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it ('Use it to find out what create_plugin_command can call') and when not needed ('create_plugin_command validates against this scan automatically, so you don't need to call this first'). It also explains the optional filters (pluginName, enabledOnly), making usage context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_actorsA
Search actors by name or nickname
| Name | Required | Description | Default |
|---|---|---|---|
| searchTerm | Yes | The search term to find actors |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that the search matches on name or nickname fields, which is useful, but it does not state whether the search is partial or exact, case-sensitive, or what the return format is, nor does it explicitly confirm a read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: a single sentence of six words that front-loads the verb and resource. No wasted words, and it efficiently conveys the key distinguishing detail without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter search tool with no output schema or annotations, the description is minimally adequate but leaves gaps. It tells what is searched (actors by name/nickname) but does not specify the result type, behavior (e.g., partial vs. exact match), or any limits, which are important for an agent to fully trust the invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single parameter searchTerm with a generic description, but the tool description adds specific meaning by indicating that the term is matched against 'name or nickname.' This enriches the schema description and clarifies the parameter's semantic role beyond the generic 'search term to find actors.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Search' with a clear resource 'actors' and adds the modifier 'by name or nickname', which tells exactly what the tool does. It clearly distinguishes from sibling tools like create_actor or update_actor by focusing on searching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when looking up actors by their name or nickname, but it does not provide explicit guidance on when to use this tool versus alternatives such as search_enemies or search_items. It also does not mention any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_enemiesA
Search enemies by name (case-insensitive)
| Name | Required | Description | Default |
|---|---|---|---|
| searchTerm | Yes | The search term to find enemies |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the case-insensitive matching behavior, which goes beyond the simple schema parameter description. However, it does not mention return format, pagination, or behavior on no matches. Since no annotations are provided, the description carries a greater burden, but it only partially fulfills it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant or extraneous words. It efficiently conveys the core purpose and a key behavioral detail, exemplifying ideal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 no output schema, the description is sufficiently complete. It states the search target (enemies), the field (name), and the matching behavior (case-insensitive). While it does not explain the return structure, that is a minor gap for a basic search operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for the single parameter, but the tool description adds meaning by clarifying that the search is by name and is case-insensitive. This provides context beyond the schema's generic 'search term' description, enhancing the parameter's semantic understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Search enemies by name' identifies the verb (search), resource (enemies), and field (name). The added detail 'case-insensitive' distinguishes it from potential sibling search tools and provides a precise scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for searching enemies by name, but it does not explicitly mention when to use this tool over alternatives like search_troops or search_actors. No 'when not to use' or alternative tool references are provided, so the guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_itemsA
Search items by name or description
| Name | Required | Description | Default |
|---|---|---|---|
| searchTerm | Yes | The search term to find items |
TDQS
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 only the search fields, but does not state the return format (e.g., item entries, IDs), pagination, case sensitivity, or behavior when no matches are found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded and contains no redundant words. It communicates the core purpose efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter search tool, the description covers the essential search behavior, but the lack of any output schema or return-value explanation leaves a noticeable gap. An agent must infer what the tool returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description ('The search term to find items') is generic, while the tool description adds that the search term is matched against both name and description. This adds meaningful semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Search' with resource 'items' and the specific search fields ('by name or description'). This distinguishes it from sibling search tools such as search_enemies and search_skills.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: use this tool when you need to find items by name or description. However, there is no explicit guidance on when to prefer this over other search tools, nor any mention of exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_map_eventsA
Search events on a map by name
| Name | Required | Description | Default |
|---|---|---|---|
| mapId | Yes | The ID of the map | |
| searchTerm | Yes | The search term to find events |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states that events are searched by name; it does not reveal whether the operation is read-only, how results are returned (full objects vs. summaries), case sensitivity, pagination, or limits. This is a significant gap for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or redundant information. It efficiently conveys the tool's core function without wasting words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter search tool with clear schema descriptions, the description is minimally adequate. However, there is no output schema and no mention of return value structure or result behavior, which would be necessary for full completeness. It lacks richer context that would help an agent understand expected responses.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both parameters (mapId and searchTerm) have clear descriptions in the schema. The tool description adds no additional meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('search'), identifies the resource ('events on a map'), and specifies the search criterion ('by name'). This clearly distinguishes it from sibling tools like get_map_events (which lists all events) and get_map_event (which fetches a single event).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for finding events by name but does not explicitly state when to use this vs. alternatives, nor does it mention exclusions. There is no direct comparison with get_map_events or search_troops, leaving the agent to infer the appropriate context from the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_skillsA
Search skills by name or description
| Name | Required | Description | Default |
|---|---|---|---|
| searchTerm | Yes | Search term |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It adds context by specifying the search targets (name or description), but does not disclose result behavior such as case sensitivity, partial matching, or return format. This is acceptable for a simple search but not overly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise, front-loaded sentence that says exactly what the tool does with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (single parameter, no output schema), the description is nearly complete. It covers the search target and field scope; only missing details about return value structure, which is acceptable when no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters, providing a baseline of 3. The description enriches the meaning of searchTerm by clarifying it matches against the skill's name or description, which goes beyond the schema's generic 'Search term'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches for skills by name or description, using a specific verb and resource. It distinguishes itself from sibling search tools (search_actors, search_enemies, etc.) by explicitly targeting skills.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: use when you need to find skills by name or description. However, there is no explicit guidance on when to prefer this over other search tools or any exclusions, so it stops at implied context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_troopsA
Search troops by name (case-insensitive)
| Name | Required | Description | Default |
|---|---|---|---|
| searchTerm | Yes | The search term to find troops |
TDQS
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 case-insensitive behavior, which is useful, but lacks other behavioral details such as whether it performs substring matching, returns partial results, or has any side effects. For a search tool, this covers the key trait (case-insensitivity) but not the full behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence: 'Search troops by name (case-insensitive)'. Every word earns its place, providing the essential verb, object, and a key qualifier without superfluous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only one parameter, no output schema, and a straightforward search operation, the description is largely complete. It clearly states the search target and matching behavior, though it does not specify the return format or any limits, which is acceptable given the simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter 'searchTerm', which is described as 'The search term to find troops'. The description adds no additional meaning beyond the schema, meeting the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Search troops by name (case-insensitive)' uses a specific verb 'search' plus the resource 'troops' and the field 'name', clearly distinguishing it from sibling search tools like search_actors and search_enemies. It is concise and unambiguous about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for finding troops by name, but it does not explicitly state when to prefer it over other search tools or provide alternative conditions. Sibling tools exist (search_actors, search_enemies), but no direct comparison or exclusion is given, so usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_class_param_curveA
Replace one of a class's 8 parameter growth curves. paramId is 0-7 ([maxHP,maxMP,atk,def,mat,mdf,agi,luk]); values must match the existing curve length (same max level).
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| values | Yes | New curve, indexed by level; must match the existing curve length | |
| classId | Yes | The ID of the class to edit | |
| paramId | Yes | Which param: 0 maxHP,1 maxMP,2 atk,3 def,4 mat,5 mdf,6 agi,7 luk |
TDQS
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 mentions the length constraint but does not disclose error behavior on mismatch, whether dryRun is supported, permanence, or what the response looks like. For a mutation tool, this 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the core purpose and packs in the essential paramId mapping and length constraint. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core purpose and critical constraint, but it omits mention of the dryRun parameter and any return value or error handling. While not overly complex, the lack of these details leaves it slightly incomplete for a mutation tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The tool description repeats the paramId mapping and values length constraint that are already present in the schema, adding no extra semantic value beyond the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Replace'), the resource ('one of a class's 8 parameter growth curves'), and its scope. It also provides the paramId mapping and a key constraint, making it easy to distinguish from sibling tools like update_class.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: this tool is specifically for replacing parameter growth curves, and the constraint about matching curve length gives usage guidance. However, it does not explicitly name alternatives or provide when-not-to-use instructions, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_currency_unitA
Set the currency unit shown next to gold amounts (e.g. "G", "Gold").
| Name | Required | Description | Default |
|---|---|---|---|
| unit | Yes | The currency unit string | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavior. It adds context about what the currency unit affects (display next to gold amounts), but it does not explicitly mention that this setting persists or mutates project state. The mutation is implied by 'Set' but not elaborated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that conveys purpose and examples without any fluff. It is perfectly front-loaded and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity, the description is largely complete: it states what the tool does, provides examples, and the schema covers both parameters (including dryRun). The only gap is not mentioning potential side effects, but for a simple setter this is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by providing concrete examples ('G', 'Gold') for the 'unit' parameter, which helps the agent understand the expected format. It does not address 'dryRun', but the schema already explains it fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Set') and resource ('currency unit'), with clarifying context ('shown next to gold amounts') and examples. It clearly distinguishes the tool from any sibling tools, none of which relate to currency units.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use the tool (when needing to change the displayed currency unit). No explicit alternatives or exclusions are provided, but the tool's purpose is so specific that alternatives are not necessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_encountersA
Set a map's random-encounter list (replaces it wholesale) and optionally its encounterStep (average steps between encounters). Each encounter is { troopId, weight?, regionSet? }: weight biases the random pick (default 5), regionSet restricts it to those map region ids (empty/omitted = anywhere). Every troopId is validated against Troops.json — a non-existent troop throws. Prefer this over update_map for encounters (it validates and hides the on-disk shape).
| Name | Required | Description | Default |
|---|---|---|---|
| mapId | Yes | The ID of the map | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| encounters | Yes | The full encounter list to set (replaces any existing entries) | |
| encounterStep | No | Average number of steps between encounters (unchanged if omitted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It clearly states that the list is replaced wholesale, that every troopId is validated against Troops.json, and that a non-existent troop throws. It also explains the 'hides the on-disk shape' aspect. However, it does not mention the return value (e.g., success indicator) or the effect of dryRun, though the schema covers dryRun separately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences: first the main action, then the encounter object format, then validation and tool preference. Every sentence adds essential information without redundancy. It is front-loaded with the primary purpose and avoids tangents.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (encounter list with nested objects) and lack of output schema, the description fully prepares the agent to invoke it correctly: it covers the operation, parameter semantics, validation, defaults, and the recommended alternative. All necessary context for selection and use is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema provides baseline descriptions for all parameters, but the description adds significant meaning beyond schema: weight's default value (5), regionSet's empty/omitted interpretation ('anywhere'), validation behavior for troopId, and the meaning of encounterStep ('average steps between encounters'). This enriches the schema's parameter definitions with practical semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Set a map's random-encounter list (replaces it wholesale) and optionally its encounterStep.' It uses a specific verb ('Set') and resource ('map's random-encounter list'), and explicitly differentiates from the sibling tool update_map by recommending this for encounters, preventing confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Prefer this over update_map for encounters (it validates and hides the on-disk shape).' This tells the agent exactly when to use this tool versus an alternative, and implies it is the appropriate choice for encounter list changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_event_pageA
Update an existing event page's graphic and behavior in one call, without rebuilding the whole page or touching its command list: sprite (characterName/characterIndex/direction/pattern or a tileId), trigger, priority, movement (type/speed/frequency/route), and the through/walkAnime/stepAnime/directionFix flags. Graphic fields merge onto the current image; warns (never blocks) on an unknown characterName. Refuses the write if the change would leave the event unreachable (an action-button page with priority below on an impassable tile) — pass force: true to override.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Write even if validation finds structural problems (wrong parameter count, unterminated command list). Off by default: such a write is refused and nothing is written. Advisory warnings never block regardless. | |
| mapId | Yes | The ID of the map | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| indent | No | (unused; page-level tool) | |
| tileId | No | Use a tile as the graphic instead of a sprite (0 = none) | |
| eventId | Yes | The ID of the event | |
| pattern | No | Sprite animation frame 0–2 (1 = idle) | |
| through | No | Let the player/others pass through the event | |
| trigger | No | What starts the page | |
| verbose | No | Echo the full written record instead of the default summary. Off by default: the response reports identity, counts and command-list shape, which is what you would assert on, and omits the parameters/conditions you would only re-read. Read the full record with the matching get_* tool. | |
| moveType | No | Autonomous movement (custom uses moveRoute) | |
| priority | No | Stacking vs. the player: below/same/above characters (same = solid) | |
| direction | No | Facing direction of the sprite | |
| moveRoute | No | Autonomous move route (from create_move_route); pairs with moveType "custom" | |
| moveSpeed | No | Movement speed 1–6 (4 = normal) | |
| pageIndex | Yes | Zero-based page index | |
| stepAnime | No | Animate in place while stopped | |
| walkAnime | No | Animate the walk cycle while moving | |
| directionFix | No | Lock the facing direction | |
| characterName | No | Sprite sheet basename (from list_assets("characters")); "" = no sprite | |
| moveFrequency | No | Movement frequency 1–5 (3 = normal) | |
| characterIndex | No | Sprite index 0–7 in the sheet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so excellently. It discloses that graphic fields merge onto the current image, warns (never blocks) on unknown characterName, and refuses unreachable-event writes unless force:true is passed. These behaviors are critical for an agent to predict outcomes and avoid failures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence that is front-loaded with the main purpose and packs all key behavioral details. It is long but every clause contributes, making it appropriately sized for a tool with 22 parameters, though slightly less structured than ideal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 22 parameters and no output schema, the description covers the essential behaviors: merge semantics, warnings, refusal conditions, and force override. The response format is partially explained within the verbose parameter schema, so the description is reasonably complete for the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and every parameter is described in the input schema. The description adds only high-level grouping (sprite, trigger, priority, movement, flags) and does not introduce meanings beyond what the schema already provides. Baseline 3 applies for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates an existing event page's graphic and behavior in one call. It distinguishes itself from siblings by explicitly noting it does not rebuild the whole page or touch the command list, separating it from command-insertion tools like add_event_command and insert_event_commands.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 you want to update graphic/behavior without rebuilding the page) but does not explicitly name alternative tools or state exclusions. Phrases like 'without rebuilding the whole page or touching its command list' provide clear context but lack explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_map_tileA
Set a single raw tile ID at (x, y) on a given z-layer (0-5). Note: tile IDs are raw engine integers; this is a low-level primitive without autotile/passability awareness.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X tile position | |
| y | Yes | Y tile position | |
| layer | Yes | Z-layer 0-5 (0-1 lower, 2-3 upper, 4 shadow, 5 region) | |
| mapId | Yes | The ID of the map | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| tileId | Yes | Raw tile ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It honestly notes raw engine integers and the lack of autotile/passability awareness, which is useful. But it does not disclose side effects like overwriting existing tiles, error behavior, or the difference between dryRun and actual writes, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff. The verb, target, coordinates, and layer bound are in the first sentence; the critical caveat about raw IDs and low-level behavior is in the second. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter with full schema coverage, the description covers the core semantics and key caveat. It doesn't explain return values or error conditions, but none are promised by the schema or output. Given the tool's low complexity, the description is nearly complete, only missing explicit alternative references.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. The description reinforces key semantics (raw tile ID, layer range 0-5) but does not add significant detail beyond what the schema already provides. The dryRun property is only explained in the schema, not the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set a single raw tile ID'), the resource (tile at x,y on a z-layer), and the scope (single, raw, 0-5). It distinguishes itself from bulk or high-level tools by explicitly calling itself a low-level primitive, separating it from siblings like paint_tiles and fill_area.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: this is for setting a single raw tile without autotile/passability awareness, which implies it's not for bulk painting or high-level editing. However, it does not explicitly name alternative tools or state when not to use it, so it doesn't fully meet the bar for explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_movement_routeA
Insert a forced "Set Movement Route" (event command 205, plus the 505 continuation rows the editor expects) into an event page’s command list, moving a character as part of that page. characterId: -1 player, 0 this event, N event id. Pass a moveRoute from create_move_route. A structurally invalid route or page refuses the write (nothing is saved) — pass force: true to override.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Write even if validation finds structural problems (wrong parameter count, unterminated command list). Off by default: such a write is refused and nothing is written. Advisory warnings never block regardless. | |
| mapId | Yes | The ID of the map | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| indent | No | Indentation level in the list (default 0) | |
| eventId | Yes | The ID of the event | |
| position | No | Insertion index; defaults to the end of the list | |
| moveRoute | Yes | The move route to force (e.g. from create_move_route) | |
| pageIndex | Yes | Zero-based page index | |
| characterId | Yes | Target character: -1 player, 0 this event, N event id on the map |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It discloses important behaviors: structurally invalid routes/pages refuse the write with nothing saved, force overrides validation, and the 505 continuation rows are included. It also clarifies the characterId special values. Lacks mention of success return values, but key behavioral traits are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the main purpose. It efficiently packs essential details—event command numbers, characterId meaning, dependency, and validation behavior—without any fluff or repetition. Every sentence contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 9 parameters, nested objects, no output schema, and no annotations, the description covers the core purpose, key parameters, and important safety/validation behavior. It does not mention what the tool returns on success, which would be useful, but the schema covers all parameters and dryRun behavior, making the description sufficiently complete for invocation decisions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing a baseline of 3. The description adds value by explaining characterId semantics (-1 player, 0 this event, N event id) and instructing to pass a moveRoute from create_move_route, which goes beyond the schema's generic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action: inserting a forced 'Set Movement Route' event command (205 plus 505 continuation rows) into an event page's command list. It distinguishes itself from siblings like create_move_route by describing the command insertion context with precise technical details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description says to 'Pass a moveRoute from create_move_route', establishing a clear prerequisite and workflow. It also explains the validation refusal and force override condition. However, it does not explicitly name alternatives or when-not-to-use scenarios, though the context is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_partyA
Set the starting party (the actor ids the game begins with, in order). Every id must reference an existing actor.
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| partyMembers | Yes | Ordered actor ids for the starting party |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses a validation behavior ('must reference an existing actor') but does not mention side effects (e.g., overwrites current starting party), error handling for invalid ids, or the presence of the dryRun parameter that changes behavior. This is minimal disclosure 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary purpose, and no unnecessary wording. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter with two parameters, the description covers the core action and a key constraint. However, it omits return behavior (no output schema) and does not mention the optional dryRun parameter, which affects whether the tool writes to disk. This is adequate but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. The tool description adds a meaningful constraint beyond the schema: every id must reference an existing actor. This is not present in the schema's partyMembers description, so it adds value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set'), the resource ('starting party'), and elaborates with 'actor ids the game begins with, in order.' It distinguishes from related tools like get_party and build_change_party_member by specifying this is the initial party, not a runtime change.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an implicit usage context (game start) and a constraint (ids must reference existing actors), but it does not explicitly state when to use this tool versus alternatives like get_party or build_change_party_member. The constraint provides some guidance, but there are no when-not-to-use notes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_projectA
Point the server at a different RPG Maker MZ project directory for the rest of the session (overrides RPGMAKER_PROJECT_PATH until the server restarts). The directory must contain game.rmmzproject and data/System.json.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the RPG Maker MZ project directory (a leading ~ is expanded). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosure. It reveals key behaviors: the override lasts until server restart, and the directory must contain specific required files (game.rmmzproject and data/System.json). This is more than minimal but doesn't detail error handling 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary purpose, then caveats. Zero redundant words; every clause adds useful detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter setter, the description covers the essential context: what it does, the session scope, and the prerequisites. It doesn't explicitly mention return values, but given the simplicity and absence of an output schema, this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. However, the tool description adds extra semantic value by specifying the directory must contain game.rmmzproject and data/System.json, and by clarifying it's a *different* directory. This enriches the bare schema definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Point the server at a different RPG Maker MZ project directory') and resource ('RPG Maker MZ project directory'). It distinguishes itself from siblings like get_project or validate_project by focusing on switching the working directory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: it affects the rest of the session and overrides the RPGMAKER_PROJECT_PATH environment variable. No explicit alternatives are named, but the intended use case (changing the active project) is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_switch_nameA
Set a switch name. Grows the project's switch list if the id is past the end (padded to the editor's 20-slot block), so an id from next_free_id can always be labelled. Naming a switch as soon as you claim it is what makes it visible to the next session — see list_allocated_ids.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The name to assign | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| switchId | Yes | The 1-based switch ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals a non-obvious side effect: 'Grows the project's switch list if the id is past the end (padded to the editor's 20-slot block)' and explains that naming a switch 'makes it visible to the next session.' This is rich, useful context beyond what the schema or annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the core action, and every sentence adds value: the mutation effect, the id relationship, and the visibility tip. It avoids redundancy and remains easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity, no annotations, and no output schema, the description covers purpose, side effects, and usage guidance quite well. It doesn't explicitly mention return values or error conditions, but for a simple set operation, this is not a major gap. It is generally complete for an agent to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, but the description adds meaningful context to the switchId parameter by explaining that ids from next_free_id are always valid and how list growth/padding works. This goes beyond the schema's simple '1-based switch ID' definition, though it doesn't elaborate on name or dryRun beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with 'Set a switch name,' a specific verb+resource statement that clearly identifies the action. It further elaborates on the behavior of growing the switch list, which distinguishes this tool from sibling set_* tools like set_variable_name or set_type_name by focusing on switches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use this tool: 'an id from next_free_id can always be labelled' and 'Naming a switch as soon as you claim it.' It also references list_allocated_ids for related actions. However, it does not explicitly state when not to use it or name alternative tools for exclusion, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_termA
Set one vocabulary term. For category 'basic'/'commands'/'params' the key is a numeric index (as a string); for 'messages' it's a message key (e.g. 'actorDamage'). Returns the updated terms.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Index (for basic/commands/params) or message key (for messages) | |
| value | Yes | The new term text | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| category | Yes | Which term group to edit |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of explaining behavior. It does disclose that the tool returns updated terms and clarifies key semantics per category, but it does not explicitly warn that this is a mutating operation or mention the dryRun preview feature, leaving some behavioral context to the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The first sentence states the purpose directly, and the second packs essential key-format and return-value information into a compact, well-structured explanation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter with no output schema and full parameter descriptions in the schema, the description adequately covers purpose, key semantics, and the return value. It lacks explicit warnings about side effects, but given the tool's simplicity and schema support, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. The description's key-format explanation merely restates what the schema already says about the 'key' parameter; it adds no additional parameter meaning beyond the schema's own descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Set one vocabulary term,' a specific verb and resource combination that clearly states the tool's function. The key-format explanation distinguishes it from related tools like get_terms and other setter tools, making its scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for how the 'category' parameter affects the 'key' format, implying usage across different term groups. While it doesn't explicitly name alternatives like get_terms for reading, the setter vs. getter contrast is implicit and the category guidance is actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_tile_flagsA
Edit a tile's passability/terrain/behaviour flags in a tileset's flags[] array (the write side of get_tile_flags). Only the fields you pass change — everything else on the tile is preserved (a non-destructive merge onto the current flag word). passage is walkability (down/left/right/up, true = a character can walk off that way). Also settable: star ([*] overlay), ladder, bush, counter, damage (damage floor), and terrainTag (0–7). For an autotile id (A1–A4) the change is applied to all 48 shape slots of its kind by default (set applyToAutotileKind:false to touch only the exact id) so painting any border shape keeps the same passability. Writes data/Tilesets.json through the commit choke point (dry-run/diff). Returns { tilesetId, tileId, appliedTileCount, before, after }.
| Name | Required | Description | Default |
|---|---|---|---|
| bush | No | ||
| star | No | [*] overlay: tile drawn above the character. | |
| damage | No | Damage floor (standing on it hurts). | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| ladder | No | ||
| tileId | Yes | The raw tile id whose flags to edit | |
| counter | No | ||
| passage | No | Walkability per direction (true = walkable). Only the given directions change. | |
| tilesetId | Yes | Tileset id (from Tilesets.json / the map) | |
| terrainTag | No | Terrain tag 0–7 (0 = none). | |
| applyToAutotileKind | No | When the tile is an autotile (A1–A4), apply the change to all 48 shape slots of its kind (default true). Ignored for flat tiles. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses mutation behavior: non-destructive merge, autotile-kind application, commit choke point with dry-run/diff, and the return shape. This goes well beyond minimal transparency for a write tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense but every sentence earns its place: purpose, merge behavior, key parameter semantics, autotile special case, write path, and return shape. It is front-loaded and efficiently structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (11 parameters, nested passage object, autotile behavior, and no output schema), the description covers all essential aspects: what the tool does, how it behaves, special autotile handling, and the exact return payload. It is a complete picture for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 73%, so the description adds value by explaining passage directions, star/damage semantics, terrainTag range, and the applyToAutotileKind behavior. This compensates for undocumented parameters like bush/ladder/counter, though those remain self-explanatory booleans.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool edits tile passability/terrain/behaviour flags in a tileset's flags[] array, which is a specific verb+resource. It also distinguishes itself as the 'write side of get_tile_flags', differentiating it from the read tool and sibling editing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by positioning this as the write counterpart to get_tile_flags, implying when to use it. However, it does not explicitly name alternative tools or state when not to use it, such as set_map_tile for broader tile edits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_type_nameA
Rename one entry in a System.json type-name array (elements/skillTypes/weaponTypes/armorTypes/equipTypes). Index 0 is the conventional empty slot. Returns the updated array.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The new type name | |
| index | Yes | Index within the array (0 = empty slot) | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| category | Yes | Which type-name array to edit |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It usefully discloses that the tool returns the updated array and highlights the index 0 convention. However, it does not elaborate on side effects (e.g., immediate disk write), permissions, or reversibility, leaving some gap 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action and resource. Every word earns its place; no redundant or vague phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 4 parameters and no output schema, but the description covers the return value ('Returns the updated array'), the target categories, and the index convention. It could optionally mention dryRun, but that is already in the schema. Overall, it is complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds semantic value by explaining 'Index 0 is the conventional empty slot', which enriches the meaning of the index parameter beyond the schema's '0 = empty slot'. This extra context justifies a score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Rename' and clearly identifies the resource as 'one entry in a System.json type-name array' with enumerable categories. This distinguishes it from sibling tools like set_term (which likely handles different data) and get_types (which likely reads rather than writes).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this tool when you need to rename a single entry in one of the listed type-name arrays. It does not explicitly mention alternatives or when not to use, but the context is unambiguous given the tool's specialized scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_variable_nameA
Set a variable name. Grows the project's variable list if the id is past the end (padded to the editor's 20-slot block), so an id from next_free_id can always be labelled. Naming a variable as soon as you claim it is what makes it visible to the next session — see list_allocated_ids.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The name to assign | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| variableId | Yes | The 1-based variable ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. It discloses two important side effects: growing the variable list when the id is past the end, and that naming makes the variable visible to the next session. It could mention more (e.g., renaming behavior, uniqueness), but the disclosed traits are valuable and non-obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place. The first states the action, the second explains a key side effect, and the third gives practical usage guidance. No fluff or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter with well-documented schema, the description covers the essential behavioral nuances (list growth, session visibility) and usage timing. It does not mention return values, but no output schema is needed for a write operation and the description is sufficiently complete 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for all parameters, so the baseline is 3. The description adds context about variableId coming from next_free_id, but does not explain the parameters themselves beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Set a variable name,' which is a specific verb+resource statement. It distinguishes itself from siblings like set_switch_name by clearly targeting variables and adds context about the variable list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises naming a variable immediately after claiming it via next_free_id, and references list_allocated_ids for visibility across sessions. It clearly implies when to use the tool, though it does not explicitly mention alternatives 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.
update_actorC
Update an actor's properties
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| actorId | Yes | The ID of the actor to update | |
| updates | Yes | Object containing actor properties to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It only says 'update' without covering merge semantics, permissions, reversibility, or response shape. This is minimal but not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. It is appropriately concise for the minimal information conveyed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a dynamic nested 'updates' object and no output schema, the description is insufficient. It doesn't explain valid properties, partial vs. full replacement, or return values, leaving significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers all three parameters (actorId, updates, dryRun) with 100% description coverage, giving a baseline of 3. The description adds no parameter details and does not clarify the format of the 'updates' object beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as updating an actor's properties with a specific verb and resource. It distinguishes from sibling update tools by naming 'actor', though it doesn't list what properties are updatable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 create_actor or update_enemy. There is no context about use cases, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_armorB
Update an armor's properties (shallow merge into the existing record)
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| armorId | Yes | The ID of the armor to update | |
| updates | Yes | Object containing armor properties to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses the key behavior of shallow merging, which indicates updates are merged rather than replacing the whole record. However, it does not disclose what happens if the armor ID does not exist, whether changes are reversible, or any error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of under 15 words, front-loading the core purpose and adding the key merge behavior without any filler. Every word contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential purpose and merge behavior, and the schema documents all parameters. However, given it is a mutation tool with no annotations, it lacks important context such as error handling, idempotency, or what happens if the armor is missing. The dryRun parameter is mentioned in the schema but no behavioral context is provided beyond that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and each parameter already has a description. The description adds meaningful context by noting 'shallow merge', which clarifies how the 'updates' object is applied – it merges fields rather than replacing the entire record. This goes beyond the schema's generic 'Object containing armor properties to update'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Update an armor's properties'. The parenthetical 'shallow merge into the existing record' adds specific behavior. However, it does not explicitly distinguish from sibling tools like update_actor or create_armor, though the resource is obvious from the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. It does not mention prerequisites, such as the armor needing to exist, or contrast with create_armor. The usage context is only implied by the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_classA
Update a class's properties (shallow merge into the existing record). Use for name, expParams, traits, or to replace the whole learnings/params arrays; for targeted edits prefer add_class_learning / set_class_param_curve. Warns when a learned skill's stypeId has no Add Skill Type trait ({ code: 41 }).
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| classId | Yes | The ID of the class to update | |
| updates | Yes | Object containing class properties to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the shallow-merge behavior, the warning condition (code 41) when a learned skill lacks a trait, and the ability to replace arrays. It does not mention return values, permissions, or error handling, but provides strong behavioral insight for an update operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: first defines the operation, second gives usage guidance, third describes a specific warning. No fluff, perfectly front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters, a nested object, no output schema, and no annotations, this description covers the essential aspects: what the tool does, when to use it, and key behavioral nuances. It does not explain return values, but for a tool with clear update semantics, this is sufficient. The alternative suggestions further enrich context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by enumerating typical updatable properties (name, expParams, traits, learnings/params) and explaining the shallow-merge semantics, which clarifies how the 'updates' object is interpreted beyond the schema's generic description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates a class's properties via a shallow merge, with a specific list of use cases (name, expParams, traits, learnings/params arrays). It explicitly distinguishes itself from siblings by recommending add_class_learning and set_class_param_curve for targeted edits, making the purpose highly 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool versus alternatives: use it for general property updates or replacing whole arrays, but prefer targeted tools for individual learnings/param curves. This directly addresses tool selection and avoids misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_common_eventA
Update a common event's properties (shallow merge into the existing record). Use for name, trigger, switchId, or to replace the whole command list. A structurally invalid command list refuses the write (nothing is saved) — pass force: true to override.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Write even if validation finds structural problems (wrong parameter count, unterminated command list). Off by default: such a write is refused and nothing is written. Advisory warnings never block regardless. | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| updates | Yes | Object containing common event properties to update (name, trigger, switchId, list) | |
| verbose | No | Echo the full written record instead of the default summary. Off by default: the response reports identity, counts and command-list shape, which is what you would assert on, and omits the parameters/conditions you would only re-read. Read the full record with the matching get_* tool. | |
| commonEventId | Yes | The ID of the common event to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It discloses the shallow-merge behavior, refusal on invalid command lists, and the force override. This is useful behavioral context beyond the plain 'update' semantics, though it doesn't describe return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core verb and resource, then concise details on merge behavior and validation override. Every sentence adds value with zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential behavioral quirks (merge, validation, force) but omits return semantics like summary vs verbose output. However, dryRun and verbose are explained in the parameter schema, so the description is sufficiently complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. The description adds context about shallow merging and which fields to use, but the individual parameters are already well-documented in the schema. No additional parameter-specific meaning is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates a common event's properties via shallow merge, naming specific fields (name, trigger, switchId, command list). This distinguishes it from siblings like create_common_event or call_common_event.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete use cases ('Use for name, trigger, switchId, or to replace the whole command list') which imply when to choose this tool, though it doesn't explicitly mention alternatives or state when not to use it. Clear context but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_enemyA
Update an enemy's properties (shallow merge into the existing record). Returns { enemy, warnings? } — a battlerName not found in img/enemies (img/sv_enemies for a side-view project) is flagged warn-by-default.
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| enemyId | Yes | The ID of the enemy to update | |
| updates | Yes | Object containing enemy properties to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses merge semantics (shallow, not deep), the return shape `{ enemy, warnings? }`, and a non-obvious warn-by-default behavior for a `battlerName` missing from the image folders. It does not cover permission/auth requirements, but the mutation semantics and warning behavior are otherwise well surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then a compact clause on return shape and warning behavior. Information-dense with no filler, though the em-dash clause is slightly dense to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with a nested-object parameter and no output schema, the description supplies merge semantics, return shape, and warning behavior — enough for correct invocation. Missing auth/permission context is a minor gap given the schema documents all three parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds real meaning beyond the schema by explaining that `updates` is applied as a shallow merge and by describing how the `battlerName` field in `updates` triggers a warning — behavior the schema does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an enemy's properties') and immediately qualifies the operation with 'shallow merge into the existing record', which distinguishes it from create_enemy and search_enemies. An agent can identify the tool's role without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'Update an enemy's properties', but there is no explicit when-to-use guidance, no exclusions, and no routing to alternatives like update_actor or create_enemy. Adequate but with a clear gap in comparative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_game_titleB
Update the game title
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | The new game title | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure, but it only repeats the verb 'update' without explaining side effects, persistence, validation, or the dryRun preview behavior. There is no contradiction, but the description adds no behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence with zero extraneous words. It is front-loaded with the action and target, making it maximally concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple update tool with no annotations and no output schema, the description is insufficiently complete. It does not mention the dryRun option (even though the schema does), nor does it clarify the distinction from similar tools like update_title_screen. The agent gets no context about return values or side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for 'title' and 'dryRun', so the baseline is 3. The tool description itself adds no parameter information, but the schema already provides adequate semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Update the game title' uses a specific verb ('update') and resource ('game title'), clearly distinguishing it from sibling tools like update_title_screen or update_actor. It directly states what the tool does in a concise, unambiguous way.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 any context, prerequisites, or exclusions, leaving the agent to infer usage solely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_itemA
Update an item's properties (shallow merge into the existing record)
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| itemId | Yes | The ID of the item to update | |
| updates | Yes | Object containing item properties to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It does disclose a key behavioral trait: shallow merge into the existing record, which clarifies merge semantics. However, it omits other important traits for a mutation tool, such as permissions, irreversibility, side effects, or return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence, front-loaded with the action and scope, followed by a parenthetical that adds essential semantics. No filler or repetition; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately covers the core operation and merge behavior, and the schema documents all parameters. However, with no annotations and no output schema, it leaves gaps around return values, error handling, and broader usage context, making it minimally adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear per-parameter descriptions, so the baseline is 3. The description adds meaning by explaining 'shallow merge', which directly clarifies how the 'updates' parameter will be applied, exceeding what the schema provides for that key parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it updates an item's properties, using the specific verb 'Update' and resource 'item's properties'. The parenthetical 'shallow merge into the existing record' adds precise scope and distinguishes it from replace-style tools or other update tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when modifying existing item properties, but it does not explicitly mention alternatives (like create_item) or exclusion scenarios. No 'when not to use' guidance is provided, leaving the decision to the agent based on the tool's name and generic action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_mapA
Update a map's top-level properties (name, display name, bgm, encounters, etc.). Does not repaint tiles. Cannot change width/height (that would desync the tile data array) — use resize_map for that. The echo omits the tile data array and the events map (neither is touched here) and reports dataTileCount/eventCount instead; pass verbose: true or use get_map for the full record.
| Name | Required | Description | Default |
|---|---|---|---|
| mapId | Yes | The ID of the map | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| updates | Yes | Partial MapData properties to merge | |
| verbose | No | Echo the full written record instead of the default summary. Off by default: the response reports identity, counts and command-list shape, which is what you would assert on, and omits the parameters/conditions you would only re-read. Read the full record with the matching get_* tool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that tiles are not repainted, dimensions cannot be changed due to data desync, and the response omits tile data/events while reporting counts. Explains the verbose alternative for full record.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each carrying unique information: scope, constraints, and response behavior. No redundancy, well front-loaded with the primary purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, it explains return summarization, omitted fields, and how to get the full record. It also handles edge cases like dimension changes with explicit redirection to resize_map.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters, giving a baseline of 3. The description adds practical examples of allowed update properties and clarifies the response trade-off of verbose, providing meaningful value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it updates a map's top-level properties with specific examples (name, display name, bgm, encounters). It distinguishes from siblings by explicitly excluding tile repainting, width/height changes, and event edits, pointing to resize_map for dimensions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-not-to-use guidance: not for tiles, not for width/height (use resize_map), and not for events. Also mentions verbose: true or get_map for full record, indicating when deeper inspection is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_map_eventA
Update a map event's properties. Refuses the write (nothing is saved) if the resulting event is structurally invalid — pass force: true to override.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Write even if validation finds structural problems (wrong parameter count, unterminated command list). Off by default: such a write is refused and nothing is written. Advisory warnings never block regardless. | |
| mapId | Yes | The ID of the map | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| eventId | Yes | The ID of the event | |
| updates | Yes | Object containing event properties to update | |
| verbose | No | Echo the full written record instead of the default summary. Off by default: the response reports identity, counts and command-list shape, which is what you would assert on, and omits the parameters/conditions you would only re-read. Read the full record with the matching get_* tool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses a significant behavioral trait: the write is refused and nothing is saved if the result is structurally invalid, with a force override. This adds meaningful safety context. However, it does not mention permissions, merge semantics, or default response format, though the schema partially addresses the latter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 24 words, front-loaded with the purpose and including a critical behavioral caveat. Every word earns its place; no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although schema coverage is high and the description discloses a key behavior, the tool has 6 parameters, no output schema, and no annotations. The description lacks usage guidance and does not explain the default response shape beyond what the schema's verbose parameter description hints at. It is minimally viable but leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description's mention of 'force: true' duplicates the schema's force parameter description rather than adding new meaning. No additional parameter semantics are provided beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation: 'Update a map event's properties' with a specific verb (update) and resource (map event properties). This distinguishes it from siblings like create_map_event (create) and get_map_event (read). The validation nuance doesn't obscure the core purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives such as create_map_event or add_event_command. It only implies usage through its purpose statement, without exclusions or situational context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_map_treeA
Edit the map tree (MapInfos.json) only — reparent, reorder, rename, or expand/collapse maps without touching their tiles or events. Takes a batch of per-map updates; every referenced map (and any non-zero parentId) must exist, and the resulting tree must stay acyclic.
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| updates | Yes | One or more per-map tree edits to apply together |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that this is a write operation ('Edit') and adds important behavioral constraints: every referenced map must exist, non-zero parentId must exist, and the tree must stay acyclic. It also scopes the effect to MapInfos.json only, which is valuable context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences. The first sentence states purpose and scope, the second adds batch and validation context. No wasted words; every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is moderately complex with batch updates and validation rules. The description covers the core purpose, scope, and constraints. The schema fully documents the parameters, including dryRun behavior. A minor gap is that the description doesn't mention the return diff for dryRun, but the schema covers it, so the description is sufficiently complete for selecting and invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds semantic value by explaining the batch nature ('takes a batch of per-map updates') and the validation rule about existing maps and acyclicity. This goes beyond the individual property descriptions in the schema, reinforcing how the parameters interact.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Edit', the resource 'map tree (MapInfos.json)', and the specific operations 'reparent, reorder, rename, or expand/collapse maps'. It explicitly distinguishes from other map tools by adding 'only' and 'without touching their tiles or events', which helps differentiate it from siblings like update_map and get_map_infos.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use this tool: for editing the map tree structure, not for map tiles/events. It does not explicitly name alternative tools, but the 'only' and 'without touching' phrasing implies exclusions that separate it from update_map and similar tools. The batch and validation constraints also give practical guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_skillC
Update a skill's properties
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| skillId | Yes | The skill ID to update | |
| updates | Yes | Properties to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. The verb 'update' implies mutation, but it does not disclose that changes are persisted, how dryRun works, what happens on invalid skillId, or any side effects. This is a significant gap 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. However, it is under-specified and does not include essential usage or behavioral information, making it not optimally sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 3 parameters, including a dryRun flag and a nested updates object, but no annotations or output schema. The description does not explain the update semantics, the purpose of dryRun, or what the return value is, leaving the context incomplete for an agent to use effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for dryRun, skillId, and updates. The description adds no extra parameter semantics, but the baseline 3 is appropriate since the schema already explains each parameter meaningfully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (update) and resource (skill's properties), making it distinct from sibling tools that update other resources. However, 'properties' is vague and does not specify which attributes can be updated, so it falls short of a fully specific purpose statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 like create_skill or search_skills, and it does not mention how dryRun fits into a workflow. No context is given for selecting this tool over other update_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_starting_positionC
Update the game starting position
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Starting x tile | |
| y | Yes | Starting y tile | |
| mapId | Yes | Starting map ID | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must explain the mutation's safety profile. It only says 'Update', which implies a write, but doesn't disclose whether the dryRun parameter supports previews, whether the change is persisted immediately, or what the return value is. This is a significant gap for a no-annotation 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, succinct sentence with no fluff. It is easily scannable and front-loaded. While under-specified, the conciseness itself is strong.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 4-parameter, mutation-focused tool with no annotations and no output schema, the description is incomplete. It omits mention of the dryRun preview option, what happens on success, and any caveats about map validity. The schema covers parameters, but the description leaves the agent without a full picture of the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool description adds no parameter semantics beyond the schema. However, the input schema thoroughly describes all four parameters, including the dryRun parameter's preview behavior, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Update' and identifies the resource 'game starting position'. This differentiates it from read-only sibling tools like get_starting_position, but the exact semantics of what constitutes a 'starting position' (map and tile) are left to the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. There is no mention of prerequisites (e.g., map must exist) or when to prefer get_starting_position or set_map_tile. The description gives zero usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_stateA
Update a state's properties (shallow merge into the existing record)
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| stateId | Yes | The ID of the state to update | |
| updates | Yes | Object containing state properties to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. The phrase 'shallow merge into the existing record' reveals that the update is a merge, not a full replacement, which is valuable context. However, it omits other important traits such as required permissions, whether the operation is reversible, and what response is returned, so it is only partially transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the verb and resource, followed by the key merge behavior. Every word earns its place, and there is no redundancy or verbose explanation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core purpose and merge behavior, and the schema adequately documents all parameters. However, without an output schema or annotations, important context about return values, error behavior, and side effects is missing. For a simple update tool, this is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. The description adds semantic value beyond the schema by clarifying that the 'updates' object is shallow-merged into the existing record, which is not stated in the parameter descriptions. This helps the agent understand how the updates parameter behaves.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the operation ('Update') and the target resource ('a state's properties'), and the parenthetical 'shallow merge into the existing record' adds precision about the update semantics. This distinguishes it from other update_* tools that target different resources (e.g., update_actor).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 simply states what it does, leaving usage to be inferred from the name and sibling context, but it does not mention any alternatives or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_title_screenA
Update the title screen: background layers (title1Name/title2Name, basenames from list_assets("titles1"/"titles2")), the BGM that plays while it is shown, and/or whether the game title text is drawn over the art. Only the provided fields are changed. Warns (never blocks) when an image/audio name is not a known asset. Returns the updated title screen settings.
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| titleBgm | No | BGM that plays while the title screen is shown | |
| drawTitle | No | Whether to draw the game title text over the background art (the editor's "Draw Game Title" option) | |
| title1Name | No | Background image basename from list_assets("titles1") (the far layer) | |
| title2Name | No | Background image basename from list_assets("titles2") (drawn over title1Name) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden, and it does well: it states that only provided fields are updated, unknown names only warn (never block), and the tool returns updated settings. This goes beyond the schema and covers the most important behavioral nuances for a mutation tool, though it does not address permissions or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the action, and every phrase earns its place by adding functional detail (partial update, asset validation, return value). No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given five parameters, nested objects, and no output schema, the description is reasonably complete: it names all update targets, provides asset-source guidance, explains validation behavior, and states the return value. It does not restate dryRun semantics, but the schema already documents that parameter, so the description is sufficient overall.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. The description groups parameters into background layers and BGM, which helps conceptually, but the individual parameter descriptions already explain each field. The description adds modest semantic value but mainly restates what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource ('Update the title screen') and elaborates the exact aspects it covers: background layers (title1Name/title2Name), BGM, and whether the game title is drawn. This clearly differentiates it from the sibling get_title_screen (read-only) and update_game_title (text-oriented) tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: fields are sourced from list_assets, only provided fields are changed, and unknown assets produce warnings rather than blocking. It does not name explicit alternatives or exclusion cases, but it implicitly distinguishes this from get_title_screen by focusing on update semantics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_troopA
Update a troop's properties (shallow merge). If members is provided, each enemyId is validated to exist. A structurally invalid battle-event page refuses the write (nothing is saved) — pass force: true to override.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Write even if validation finds structural problems (wrong parameter count, unterminated command list). Off by default: such a write is refused and nothing is written. Advisory warnings never block regardless. | |
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| troopId | Yes | The ID of the troop to update | |
| updates | Yes | Object containing troop properties to update (name, members, pages) | |
| verbose | No | Echo the full written record instead of the default summary. Off by default: the response reports identity, counts and command-list shape, which is what you would assert on, and omits the parameters/conditions you would only re-read. Read the full record with the matching get_* tool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so admirably. It discloses shallow merge semantics, member validation, and the critical failure behavior where structurally invalid writes are refused and nothing is saved, plus the force override. This goes well beyond a basic 'update' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficiently written sentences. The first states the purpose and merge behavior; the second covers validation and safety. Every word adds value, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex with nested objects, validation, and failure modes. The description covers the key behavioral aspects well, including scope and safety. It does not explicitly describe the success return format, though the schema's `verbose` parameter hints at it. This is a minor gap given no output schema, so a 4 is appropriate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds valuable semantic detail beyond the schema by explaining that updates are shallow-merged and that members are validated. This enriches the `updates` parameter and the `force` parameter, justifying a score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Update') with a clear resource ('a troop's properties') and adds the scope note '(shallow merge)', which differentiates it from create or replace operations. This clearly distinguishes it from sibling tools like create_troop or update_actor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use this tool: to modify an existing troop's properties. It also provides context about validation and the force override. However, it does not explicitly name alternatives or state when not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_weaponA
Update a weapon's properties (shallow merge into the existing record)
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | Preview only: return a diff of what would change without writing to disk. | |
| updates | Yes | Object containing weapon properties to update | |
| weaponId | Yes | The ID of the weapon to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It adds a key behavioral trait—'shallow merge'—indicating that existing properties not included in the update remain unchanged. However, it doesn't disclose potential side effects, permissions, reversibility, or return values, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('Update a weapon's properties') and adds a valuable behavioral detail. Every word earns its place, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple update tool with 3 parameters, the description covers the essential operation and merge behavior. However, with no output schema or annotations, it does not explain what the tool returns or any side effects. The parameter schema fills in some gaps, but the description alone is not fully complete for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already well documented. The description does not add additional parameter-specific semantics, but the 'shallow merge' qualifier indirectly clarifies how the 'updates' parameter is applied. This meets the baseline without exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update a weapon's properties' with a specific verb and resource, distinguishing it from sibling update tools (e.g., update_actor, update_item). The addition of 'shallow merge into the existing record' further clarifies the exact behavior, making the purpose precise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 doesn't mention prerequisites, exclusion criteria, or contrast with sibling tools like create_weapon or update_item. The usage is implied by the name and description, but no explicit context or alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_assetsA
Audit asset-filename integrity across the whole project (read-only, warn-by-default): every image/audio name field — actor characterName/faceName/battlerName, enemy battlerName, tileset sheets, map bgm/bgs/parallax/battlebacks, event page graphics, event Play BGM/BGS/ME/SE / Show Picture / Show Text face / Change Actor Images, and system titles/battlebacks/default audio/vehicle graphics — is checked against the files present under img/ and audio/. Catches a wrong filename (e.g. a battlerName with no matching img/enemies/*.png) before it becomes a runtime "Failed to load" error. An asset kind whose directory is empty/missing is skipped (not flagged). Complements validate_references (which checks id integrity). Returns { ok, warnings[] }.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does well by disclosing that the tool is read-only, warn-by-default, skips empty/missing directories, and returns a structured result. Still, it doesn't mention potential edge cases like case-sensitivity or path normalization, so it's very good but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is packed with useful detail, including a long enum of asset types, an example, a skip condition, and a return format. While it is long, every segment contributes to understanding, and the structure with a colon and semicolons is easy to follow. It is not wasteful, but slightly dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the tool's full scope, behavior, and return value ({ ok, warnings[] }). Without an output schema, this is essential. It also notes the complement to validate_references. This is nearly complete for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the input schema reflects that. The description adds value by explaining what the tool scans, but since there are no parameters to document, the baseline of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Audit') and resource ('asset-filename integrity across the whole project'). It also distinguishes itself from the sibling validate_references by explicitly naming what it checks (file presence) versus id integrity, leaving no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool (to catch filename errors before runtime) and explicitly mentions a complementary alternative (validate_references). However, it does not give explicit 'when not to use' guidance or alternatives beyond the one sibling, so it falls slightly short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_eventA
Validate a single event's command lists against the known RPG Maker MZ command table, plus its placement against the tile it sits on: an action-button page with priority below on an impassable tile (can never trigger) and an invisible wall (a graphic-less, priority-same, non-through page on a walkable tile — the player bumps into nothing; an action-button page over a drawn B–E object is exempt, as the solid-landmark idiom). Read-only: reports warnings without changing anything.
| Name | Required | Description | Default |
|---|---|---|---|
| mapId | Yes | The ID of the map | |
| eventId | Yes | The ID of the event to validate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the safety burden and does so explicitly: 'Read-only: reports warnings without changing anything.' It also discloses the substance of the checks performed. It lacks any note on cost, scope limits, or error behavior, so it is not exhaustive, but the key mutation/read contract is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the opening clause, and every subsequent phrase adds real validation criteria rather than filler. It is dense with RPG Maker jargon and long parentheticals, which slightly impairs readability, but nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must convey the return behavior, and 'reports warnings without changing anything' covers the essentials for a validator. Combined with the enumerated check conditions, an agent has enough to invoke it correctly, though the warning format itself is unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (mapId and eventId are both documented), so the schema already carries parameter meaning. The description references 'a single event' and 'the tile it sits on' but adds no syntax, ID constraints, or edge cases beyond the schema, warranting the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (validate) and resource (a single event's command lists and its tile placement), with enough detail to distinguish it from the many sibling validators (validate_project, validate_references, validate_assets). An agent can tell exactly what this checks without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description carefully enumerates the conditions it checks (action-button page with lower priority on impassable tile, invisible wall, etc.), which implies when it is relevant, but it never says when to choose this over validate_project or validate_references, nor any prerequisites. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_projectA
Validate the event command lists of every map in the project, plus each event's placement (action-button-below on an impassable tile; graphic-less priority-same invisible walls on walkable tiles, except action-button pages over a drawn B–E object). Read-only: returns aggregated, map-tagged warnings for auditing before or after a batch of edits.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the key trait: 'Read-only' and the return shape ('aggregated, map-tagged warnings'), plus the exact placement conditions checked. It omits things like permission requirements, failure behavior, or whether it aborts on first error.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the verb and scope, and the long parenthetical lists concrete checks that earn their place. The middle clause is dense and slightly hard to parse, but nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description appropriately describes the return ('aggregated, map-tagged warnings'). It is complete enough to invoke correctly, though it could clarify edge behavior such as whether validation halts on the first problem.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline of 4 applies. The schema has nothing to document and the description correctly implies no inputs are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (validate) and resource (event command lists of every map in the project), plus a second concern (event placement rules). The project-wide scope implicitly distinguishes it from the single-event sibling validate_event, so an agent can route correctly without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames when to use it: 'for auditing before or after a batch of edits,' which gives a clear operational context. It does not name an alternative or a when-not condition, so it falls short of full 5-level guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_referencesA
Audit cross-file reference integrity across the whole project (read-only, warn-by-default): Transfer Player targets and starting position point at existing maps; starting party, actor classes, class/enemy skills, troop members, enemy drops, and skill/item effects (states, learned skills, common events, animations) all resolve; event commands that name a record (Change Items/Weapons/Armors, Change Party Member, Battle Processing, Shop Processing, Change State/Skill, Common Event) and map random encounters point at existing rows; and the map tree has no dangling or cyclic parentId. Complements validate_project (which checks command shape). Returns { ok, warnings[] }.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it does well: it declares read-only and warn-by-default semantics (i.e., not blocking, no mutation), and states the return shape { ok, warnings[] }. It stops short of disclosing failure modes or how warnings are structured.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and read-only/warn-by-default guarantee are front-loaded in the first clause, and the return shape closes it out. The middle is one very long run-on enumeration of checks, which is dense but each clause names a real integrity category, so it earns its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter validator with no output schema, the description supplies everything needed: the full checklist of what is validated, the warning-only behavior, and the return shape { ok, warnings[] }. Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly implies no filtering or scope argument is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Audit cross-file reference integrity across the whole project') and immediately distinguishes scope from the closest sibling by noting it 'Complements validate_project (which checks command shape)'. An agent can tell exactly what this tool does and how it differs from validate_project without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: it is read-only, warn-by-default, and positional relative to validate_project. It does not, however, state an explicit trigger ('run after edits', 'run before export') or any exclusion conditions.
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.
14 tool updates
v1.4.0- Added
add_troop_page - Added
build_battle_command - Changed
build_show_text1 field changed- added
Input schema / properties / wrapAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "enum": [ + "soft", + "hard" + ], + "type": "string" + } + ], + "description": "Auto word-wrap to the message-window width (the same width the line-length warning uses) and split into 4-line boxes. true/\"soft\" reflows all lines as one paragraph; \"hard\" keeps each entry (and \\n) as a forced line break. Default off (one line per entry, verbatim)." +}
- Added
build_troop_page - Changed
create_enemy1 field changed- changed
Input schema / properties / battlerName / descriptionPrevious value: -"Battler graphic filename (img/enemies)"New value: +"Battler graphic filename (img/enemies; img/sv_enemies when System.optSideView)"
- Changed
create_item1 field changed- added
Input schema / properties / speedAdded value: +{ + "description": "Speed correction (positive acts earlier)", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +}
- Changed
create_npc1 field changed- added
Input schema / properties / wrapAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "enum": [ + "soft", + "hard" + ], + "type": "string" + } + ], + "description": "Auto word-wrap to the message-window width (the same width the line-length warning uses) and split into 4-line boxes. true/\"soft\" reflows all lines as one paragraph; \"hard\" keeps each entry (and \\n) as a forced line break. Default off (one line per entry, verbatim)." +}
- Changed
create_skill12 fields changed- added
Input schema / properties / hitTypeAdded value: +{ + "description": "0 certain hit, 1 physical (HIT/EVA, counterable), 2 magical (MEV, reflectable). Default derived from stypeId/scope/damage", + "maximum": 2, + "minimum": 0, + "type": "integer" +} - changed
Input schema / properties / message1 / descriptionPrevious value: -"Battle message"New value: +"Battle message (line 1, %1 = user name)" - added
Input schema / properties / message2Added value: +{ + "description": "Battle message line 2", + "type": "string" +} - added
Input schema / properties / noteAdded value: +{ + "description": "Note field (notetags)", + "type": "string" +} - added
Input schema / properties / occasionAdded value: +{ + "description": "Usable: 0 always, 1 battle only (default), 2 menu only, 3 never", + "maximum": 3, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / repeatsAdded value: +{ + "description": "Number of hits (1-9). Default 1", + "maximum": 9007199254740991, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / requiredWtypeId1Added value: +{ + "description": "Required weapon type 1 (0=none)", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / requiredWtypeId2Added value: +{ + "description": "Required weapon type 2 (0=none)", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / speedAdded value: +{ + "description": "Speed correction (-2000..2000; positive acts earlier). Default 0", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - changed
Input schema / properties / stypeId / descriptionPrevious value: -"Skill type (1=magic, 2=special, etc.)"New value: +"Skill type (0=none — typical for enemy-only skills, not sealed by Silence; 1=magic, 2=special, etc.). Default 1" - added
Input schema / properties / successRateAdded value: +{ + "description": "Success rate percent. Default 100", + "maximum": 100, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / tpGainAdded value: +{ + "description": "User TP gained on use. Default 0", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +}
- Added
delete_record - Added
export_web - Added
paint_blueprint - Added
render_map - Added
reset_table - Added
run_playtest
10 tool updates
v1.3.0- Changed
add_event_command1 field changed- added
Input schema / properties / verboseAdded value: +{ + "description": "Echo the full written record instead of the default summary. Off by default: the response reports identity, counts and command-list shape, which is what you would assert on, and omits the parameters/conditions you would only re-read. Read the full record with the matching get_* tool.", + "type": "boolean" +}
- Changed
create_common_event1 field changed- added
Input schema / properties / verboseAdded value: +{ + "description": "Echo the full written record instead of the default summary. Off by default: the response reports identity, counts and command-list shape, which is what you would assert on, and omits the parameters/conditions you would only re-read. Read the full record with the matching get_* tool.", + "type": "boolean" +}
- Changed
create_troop1 field changed- added
Input schema / properties / verboseAdded value: +{ + "description": "Echo the full written record instead of the default summary. Off by default: the response reports identity, counts and command-list shape, which is what you would assert on, and omits the parameters/conditions you would only re-read. Read the full record with the matching get_* tool.", + "type": "boolean" +}
- Changed
insert_event_commands1 field changed- added
Input schema / properties / verboseAdded value: +{ + "description": "Echo the full written record instead of the default summary. Off by default: the response reports identity, counts and command-list shape, which is what you would assert on, and omits the parameters/conditions you would only re-read. Read the full record with the matching get_* tool.", + "type": "boolean" +}
- Changed
resize_map1 field changed- added
Input schema / properties / verboseAdded value: +{ + "description": "Echo the full written record instead of the default summary. Off by default: the response reports identity, counts and command-list shape, which is what you would assert on, and omits the parameters/conditions you would only re-read. Read the full record with the matching get_* tool.", + "type": "boolean" +}
- Changed
set_event_page1 field changed- added
Input schema / properties / verboseAdded value: +{ + "description": "Echo the full written record instead of the default summary. Off by default: the response reports identity, counts and command-list shape, which is what you would assert on, and omits the parameters/conditions you would only re-read. Read the full record with the matching get_* tool.", + "type": "boolean" +}
- Changed
update_common_event1 field changed- added
Input schema / properties / verboseAdded value: +{ + "description": "Echo the full written record instead of the default summary. Off by default: the response reports identity, counts and command-list shape, which is what you would assert on, and omits the parameters/conditions you would only re-read. Read the full record with the matching get_* tool.", + "type": "boolean" +}
- Changed
update_map1 field changed- added
Input schema / properties / verboseAdded value: +{ + "description": "Echo the full written record instead of the default summary. Off by default: the response reports identity, counts and command-list shape, which is what you would assert on, and omits the parameters/conditions you would only re-read. Read the full record with the matching get_* tool.", + "type": "boolean" +}
- Changed
update_map_event1 field changed- added
Input schema / properties / verboseAdded value: +{ + "description": "Echo the full written record instead of the default summary. Off by default: the response reports identity, counts and command-list shape, which is what you would assert on, and omits the parameters/conditions you would only re-read. Read the full record with the matching get_* tool.", + "type": "boolean" +}
- Changed
update_troop1 field changed- added
Input schema / properties / verboseAdded value: +{ + "description": "Echo the full written record instead of the default summary. Off by default: the response reports identity, counts and command-list shape, which is what you would assert on, and omits the parameters/conditions you would only re-read. Read the full record with the matching get_* tool.", + "type": "boolean" +}
119 tool updates
v1.2.0- First observed
add_class_learning - First observed
add_event_command - First observed
batch_create - First observed
build_battle_processing - First observed
build_change_actor - First observed
build_change_gold - First observed
build_change_items - First observed
build_change_party_member - First observed
build_character_effect - First observed
build_conditional_branch - First observed
build_control_switch - First observed
build_control_variable - First observed
build_flow_command - First observed
build_name_input - First observed
build_picture - First observed
build_play_audio - First observed
build_screen_effect - First observed
build_shop_processing - First observed
build_show_choices - First observed
build_show_text - First observed
build_transfer_player - First observed
call_common_event - First observed
check_passability - First observed
create_actor - First observed
create_armor - First observed
create_buff_skill - First observed
create_chest - First observed
create_class - First observed
create_common_event - First observed
create_damage_skill - First observed
create_enemy - First observed
create_healing_skill - First observed
create_item - First observed
create_map - First observed
create_map_event - First observed
create_move_route - First observed
create_npc - First observed
create_plugin_command - First observed
create_skill - First observed
create_state - First observed
create_state_skill - First observed
create_transfer - First observed
create_troop - First observed
create_weapon - First observed
delete_map - First observed
delete_map_event - First observed
describe_tile - First observed
fill_area - First observed
find_tile - First observed
get_database - First observed
get_game_title - First observed
get_map - First observed
get_map_dimensions - First observed
get_map_event - First observed
get_map_events - First observed
get_map_infos - First observed
get_map_region - First observed
get_party - First observed
get_project - First observed
get_starting_position - First observed
get_switches - First observed
get_system - First observed
get_terms - First observed
get_tile_catalog - First observed
get_tile_flags - First observed
get_tilesets - First observed
get_title_screen - First observed
get_types - First observed
get_variables - First observed
insert_event_commands - First observed
list_allocated_ids - First observed
list_assets - First observed
list_names - First observed
list_plugin_commands - First observed
next_free_id - First observed
object_tiles - First observed
paint_tiles - First observed
place_object - First observed
resize_map - First observed
scan_plugins - First observed
search_actors - First observed
search_enemies - First observed
search_items - First observed
search_map_events - First observed
search_skills - First observed
search_troops - First observed
set_class_param_curve - First observed
set_currency_unit - First observed
set_encounters - First observed
set_event_page - First observed
set_map_tile - First observed
set_movement_route - First observed
set_party - First observed
set_project - First observed
set_switch_name - First observed
set_term - First observed
set_tile_flags - First observed
set_type_name - First observed
set_variable_name - First observed
update_actor - First observed
update_armor - First observed
update_class - First observed
update_common_event - First observed
update_enemy - First observed
update_game_title - First observed
update_item - First observed
update_map - First observed
update_map_event - First observed
update_map_tree - First observed
update_skill - First observed
update_starting_position - First observed
update_state - First observed
update_title_screen - First observed
update_troop - First observed
update_weapon - First observed
validate_assets - First observed
validate_event - First observed
validate_project - First observed
validate_references
TDQS
Scored across 128 tools
Most tools have clearly distinct purposes, with detailed descriptions that clarify boundaries between high-level helpers (create_npc, create_transfer, create_chest) and low-level builders (build_show_text, insert_event_commands). Some overlapping tile-painting tools (paint_tiles, fill_area, paint_blueprint, set_map_tile, place_object) and event-creation tools could still cause occasional misselection, but the distinctions are usually spelled out.
Nearly all tools use a consistent snake_case, verb-first naming convention (create_actor, get_map_region, update_troop, delete_map_event). Minor deviations like batch_create, next_free_id, object_tiles, and list_names are readable and do not seriously break predictability.
128 tools is an extreme mismatch for practical agent use, far beyond the typical well-scoped range and even the 50+ threshold for a score of 1. Although many tools are specialized for RPG Maker MZ's large domain, the sheer count imposes heavy selection and context costs.
The surface covers project setup, maps, events, database records, tiles, assets, system data, playtesting, and web export with lifecycle operations across create, read, update, delete, batch, and validation workflows. Only minor edge gaps exist, such as explicit removal of a single event command, but they are workable through existing tools.
Maintenance
Related MCP Connectors
Discover AI tools for game development — 100+ tools indexed by engine, task, and pricing.
Campaign manager for D&D and TTRPG GMs: your AI reads and writes a live typed campaign database.
AI game assets for agents: consistent sprites, 2D animations, tiles, maps, music and engine exports.
Savecraft serves real save game data and expert game knowledge to AI assistants.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI agents to directly manipulate RPG Maker MZ projects through natural language commands, allowing creation and modification of game assets like items, weapons, enemies, maps, and plugins without manually editing game files.36490 npm2MIT
- AlicenseCqualityDmaintenanceEnables AI models to develop and automate RPG Maker MZ projects by creating maps, events, and plugins through natural language commands. It provides comprehensive tools for database management, asset integrity checks, and direct map tile manipulation.2810 npm1ISC
- AlicenseAqualityDmaintenanceEnables creating RPG Maker MZ games using natural language through AI assistance, with tools for project management, map creation, event systems, and batch operations.10490 npm1MIT
- AlicenseBqualityBmaintenanceEnables AI assistants to act as co-developers for RPG Maker MV projects, providing full database CRUD, map and event editing, plugin management, playtest control, and automatic backups.4150 npm1MIT