Skip to main content
Glama

RPG Maker MV MCP Server

CI License: MIT Node >= 18 MCP Rpgmaker MV MCP on mcprush

A Model Context Protocol server that turns AI assistants (Claude Code, Claude Desktop, or any MCP client) into a co-developer for RPG Maker MV projects — with automatic backups of everything it touches.

Ask your assistant things like:

"Create a Fireball skill: magical damage, a.mat * 4 - b.mdf * 2, 12 MP, fire element." "Find every event in the game that mentions the mayor." "Add a guard to the castle gate who says 'Halt! Who goes there?'" "Rebalance all weapons: +10% attack across the board." "Validate the project — anything broken?"

Highlights

  • Full database access — all 12 database types (actors, classes, skills, items, weapons, armors, enemies, troops, states, animations, tilesets, common events) plus System.json, through a compact generic CRUD interface.

  • High-level skill builders — create complete, editor-valid damage / healing / buff / state skills from just a name and a formula.

  • Maps and events — create maps, create/edit/delete events, insert event commands in batches, add dialogue with automatic message-box splitting, and consult a built-in event command code reference.

  • Tilesets and map painting — inspect a tileset (sheets, autotile kinds, passability), look at its sheet images, switch a map's tileset, and paint ground, water, walls and objects with rectangles, flood fill and single cells. Autotile edges and corners are computed exactly like the editor does, so painted maps look right in game. render_map shows the result as text.

  • See your maps — render_map_image renders a map to a PNG with the real tileset graphics, autotiles, shadows, event sprites, numbered event markers, region ids and an optional grid, so the assistant can look at what it built instead of working blind.

  • Map connector — connect_maps places Transfer Player doors on two maps in both directions in one call (with spawn tiles, fades and sounds); list_map_connections shows the map graph, one-way doors, broken targets and maps you cannot reach.

  • Bulk edits and balancing — bulk_update_records ("all weapons +10% attack") with a dry-run diff, generate_param_curve / generate_enemy_scaling for stat curves, balance_report (class curves, damage vs enemy HP, enemy threat) and simulate_battle (Monte-Carlo troop vs party using the real damage formulas).

  • Localization — export_texts / import_texts move every text of the game (database, system terms, map names, dialogue, choices, battle events) through CSV or JSON, keep control codes intact and split long dialogue into extra message boxes.

  • Skill files, prompts and resources — bundled SKILL.md workflow guides, reference tables as MCP resources and ready-made prompts (new_town, balance_check, ...), see Skills, prompts and resources.

  • Search everywhere — substring search across every database, and across every event on every map, including inside event command lists (find which event shows a line of dialogue or runs a script).

  • Plugin management — enable/disable/configure plugins, scaffold new ones, edit plugin source, all in the editor's own js/plugins.js format.

  • Playtest control — launch the game through NW.js (auto-detected from common install locations) with stdout/stderr capture, or serve it to a browser via the built-in HTTP server.

  • Authoring helpers — build_dialogue_tree compiles nested dialogue and choices, cutscene effects (fades, audio, pictures, move routes, ...) and game-flow commands (battles, shops, items, party, scenes, ...) into correctly indented event commands, create_event_from_template builds chests, locked doors, inns, shops, save points and NPCs in one call. See Cutscene and game-flow nodes.

  • Assets — import_asset copies images and sounds into the project, list_assets shows what is there and what uses it, preview_asset lets the assistant look at an image. See Assets.

  • Map generation and stamps — generate_map makes seeded dungeons and caves with entrance/exit/chest markers; capture_stamp / place_stamp reuse a hand-built piece of map. See Map generation and stamps.

  • Analysis — audit_assets, lint_events and simulate_event check an event or the whole project without launching the game, see Analysis. find_usages shows everywhere an id is read, written or used, check_references finds references to records that do not exist, and analyze_progression asks which maps and events can ever be reached, see Usage and progression analysis.

  • Safety net — every file is snapshotted to .mcp-backups/ before its first modification each session; restore_backup rolls anything back, validate_project catches broken references before you ship, and changesets let you stage a batch of edits, commit it in one step and undo it.

Related MCP server: RPG Maker MZ MCP Server

Installation

Requires Node.js 18+.

Quick start (npm)

The easiest way for Claude Code or Claude Desktop users:

npm install -g @xerolo44/rpgmaker-mv-mcp

Then configure it (see below). The package is available on npmjs.com and in the MCP Registry.

Configure Claude Code

claude mcp add rpgmaker-mv -- npx @xerolo44/rpgmaker-mv-mcp --project "/path/to/YourGame"

Configure Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "rpgmaker-mv": {
      "command": "npx",
      "args": [
        "@xerolo44/rpgmaker-mv-mcp",
        "--project", "/path/to/YourGame"
      ]
    }
  }
}

--project is optional — without it, ask the assistant to call set_project first. The project can also be switched mid-session.

Custom connector / URL-based clients (HTTPS) — experimental

Some clients (e.g. "Add custom connector" UIs) don't spawn a local process — they connect to a URL instead. Run the server in HTTPS mode:

node dist/index.js --http [port]   # default port 3939

This starts a Streamable HTTP MCP endpoint at https://127.0.0.1:<port>/mcp, bound to localhost only (never reachable from the network — every request is checked against the connecting socket's address, not just the bind address). A self-signed TLS certificate for localhost/127.0.0.1 is generated on first run and cached in .certs/ (gitignored) next to the project.

Status: the endpoint is fully verified at the protocol level (handshake, session management, and the 41 tools of the first release tested directly over HTTPS with curl). What's not guaranteed is that a given GUI connector-adding flow will accept a self-signed localhost certificate — some do (after a manual "proceed anyway" warning, since they open the URL as a normal page), others silently reject it because their background connection check doesn't trust locally-generated certs and gives no user-facing error. If adding the connector spins and fails with no message, that's very likely what's happening, and it's a limitation of that client's trust handling, not of this server. The reliable, zero-friction way to use this server today is the stdio mode above (Claude Code CLI / Claude Desktop's local server config) — reach for --http only if your client specifically requires a URL.

The server process must stay running for the connector to work — start it in its own terminal window before adding the connector, and leave that window open.

Tool reference (78 tools)

Group

Tools

Project

set_project, get_project_info

Database

list_records, get_record, update_record, create_record, get_system, update_system, set_switch_name, set_variable_name

Skill helpers

create_damage_skill, create_healing_skill, create_buff_skill, create_state_skill

Search

search_records, search_map_events

Maps & events

list_maps, get_map, create_map, update_map, get_event, update_event, create_event, delete_event, add_event_command, add_dialogue, event_command_reference

Authoring

build_dialogue_tree, create_event_from_template

Tilesets & painting

get_tileset_info, get_tileset_image, set_map_tileset, paint_tiles, render_map, render_map_image, render_diff

Generation

generate_map, capture_stamp, place_stamp, list_stamps

Map connections

connect_maps, list_map_connections

Bulk & balancing

bulk_update_records, generate_param_curve, generate_enemy_scaling, balance_report, simulate_battle

Localization

export_texts, import_texts

Skill files

install_skills

Plugins

list_plugins, configure_plugin, add_plugin, remove_plugin, create_plugin, read_plugin, write_plugin

Playtest

playtest_start, playtest_status, playtest_log, playtest_stop

Analysis

audit_assets, lint_events, simulate_event, find_usages, check_references, analyze_progression

Assets

import_asset, list_assets, preview_asset

Safety

list_backups, restore_backup, validate_project, editor_status, begin_changeset, commit_changeset, discard_changeset, undo_changeset

Every tool description is written for AI consumption: parameter semantics, RPG Maker quirks (target scopes, command codes, 1-indexed arrays), and pointers to related tools are all in the schema, so assistants can use the server without external documentation.

Tool profiles

All 78 tools are registered by default. Some clients cope better with a shorter tool list, so you can register only some tool groups with --tools (a comma-separated list) or the environment variable RPGMV_TOOLS:

claude mcp add rpgmaker-mv -- npx @xerolo44/rpgmaker-mv-mcp --project "/path/to/YourGame" --tools maps,tiles,render,authoring

Groups: project, database, maps, tiles, render, plugins, playtest, search, maintenance (backups, validation, editor_status and the changeset tools), connect, balance, localization, authoring, generation, analysis, assets. project (set_project, get_project_info) is always on, all (the default) enables everything, and an unknown group name makes the server exit with a message. install_skills, resources and prompts are always available whatever the profile.

Tools per group (77 tools, plus install_skills, which is always on = 78):

  • project (2): set_project, get_project_info

  • database (12): list_records, get_record, update_record, create_record, get_system, set_switch_name, set_variable_name, update_system, create_damage_skill, create_healing_skill, create_buff_skill, create_state_skill

  • maps (11): list_maps, get_map, update_map, get_event, update_event, create_event, delete_event, add_event_command, add_dialogue, create_map, event_command_reference

  • tiles (5): get_tileset_info, get_tileset_image, set_map_tileset, paint_tiles, render_map

  • render (2): render_map_image, render_diff

  • plugins (7): list_plugins, configure_plugin, add_plugin, remove_plugin, create_plugin, read_plugin, write_plugin

  • playtest (4): playtest_start, playtest_status, playtest_log, playtest_stop

  • search (2): search_records, search_map_events

  • maintenance (8): list_backups, restore_backup, editor_status, validate_project, begin_changeset, commit_changeset, discard_changeset, undo_changeset

  • connect (2): connect_maps, list_map_connections

  • balance (5): bulk_update_records, generate_param_curve, generate_enemy_scaling, balance_report, simulate_battle

  • localization (2): export_texts, import_texts

  • authoring (2): build_dialogue_tree, create_event_from_template

  • generation (4): generate_map, capture_stamp, place_stamp, list_stamps

  • analysis (6): audit_assets, lint_events, simulate_event, find_usages, check_references, analyze_progression

  • assets (3): import_asset, list_assets, preview_asset

Changesets (transactional edits with undo)

For a multi-step change, wrap it in a changeset instead of letting every call hit the disk:

  1. begin_changeset {label} — from now on every edit tool stages its result in memory. Reads (get_map, get_record, list_plugins, ...) see the staged edits, but nothing is on disk until you commit; a playtest only sees committed files.

  2. Make the edits as usual.

  3. commit_changeset writes every staged file in one step (staged .json files are validated first; if any is invalid nothing is written and the changeset stays open) and returns a per-file summary. Or discard_changeset to drop everything.

  4. undo_changeset rolls the most recent commit back from its journal in .mcp-backups/changesets/ (call it repeatedly to go further back). It restores the files as they were before that commit, so edits made to them since are overwritten too.

Only one changeset can be open at a time, restore_backup is refused while one is open and set_project discards it. If the process dies in the middle of a commit, the next time the project is opened the half-finished commit is rolled back (the files found on disk are backed up first) and set_project / editor_status report it. Keep the RPG Maker editor closed, as always.

Skills, prompts and resources

Besides tools, the server offers three kinds of built-in guidance that MCP clients can use:

Skill files (skills/<name>/SKILL.md) are short workflow guides for the assistant. They are served as resources (rpgmaker://skills/<name>) and can be copied into your game project with the install_skills tool, so Claude Code loads them automatically in that project (.claude/skills/, or scope: "user" for ~/.claude/skills/):

Skill

Covers

rpgmaker-mv-workflow

Safety rules, data conventions, which tool to use for what, assets and analysis before release

rpgmaker-map-building

Plan → paint → look → fix loop, layers, tile choice, connecting maps

rpgmaker-event-writing

Dialogue, choices, indentation rules, switches, one-time chests, triggers

rpgmaker-balancing

Targets, report/simulation workflow, curves, bulk edits with dry runs

rpgmaker-localization

Export/import workflow, control codes, message length

rpgmaker-plugin-dev

Plugin header, aliasing engine methods, plugin commands, testing

Resources — rpgmaker://reference/event-commands, trait-codes, damage-formulas and database-fields are the lookup tables an assistant needs most, available without a tool call.

Prompts — ready-made workflows that show up as commands in clients that support MCP prompts: new_town, design_dungeon, add_quest, balance_check, review_dialogue, translate_game and project_health.

Map generation and stamps

generate_map builds a dungeon (rooms joined by corridors) or a cave (one organic connected region) either into an existing empty map (mapId) or into a new one (create, which also registers it in MapInfos.json). It is deterministic: the same seed, size and options give the same layout, and the seed used is always returned. A map that already has tiles or events is refused unless you pass overwrite: true.

  • Tile profile. The map is painted with a profile (floor, wall, optional wallTop, optional weighted decor). If you give none, one is suggested from the tileset's own data (walkable A2 kind for the floor, blocking A4 wall kind for the wall) and returned as profileUsed / profileNotes. Nothing is written if the floor is not walkable, the wall does not block movement, or the result is not fully reachable from the entrance.

  • Markers. markers (default: entrance and exit, no chests) places empty events named Entrance, Exit and Chest 1..n at priority 0, so they never block the player. They are placeholders: wire the doors with connect_maps (pass allowOverlap, or delete_event the marker first) and fill the chests with create_event_from_template.

  • Sizes. Dungeons need at least 14x7 (or 7x14); caves are reliable from about 13x13 (MV's default 17x13 never failed in testing), while 9x9 to 12x12 and thin maps fail for many seeds; try another seed or a larger map.

  • Look at it. Use render_map_image (try showPassability) and render_diff. Wall faces are a one-row simplification and decor is sparse; see CHANGELOG.md for what has and has not been checked.

Stamps are reusable pieces of map. capture_stamp saves a rectangle (up to 64x64, all six layers and, by default, the events inside it) to <project>/.mcp-stamps/<name>.json; place_stamp pastes it with its top-left corner at (x, y) on a map that uses the same tileset and list_stamps shows what you have. Placement replaces the rectangle on every layer, re-shapes autotile edges against the surroundings and never clips; there is no rotate or mirror.

Assets

Three tools handle the project's image and sound files (img/* and audio/*, 18 folders):

  • import_asset {source, folder, name?, overwrite?} copies a file from your computer into <project>/<folder>/<name>.<ext>. source must be an absolute path to a regular file on a local drive (no relative paths, network shares, devices or symbolic links). The file type is read from the file's header only and must fit the folder: img/* takes files with a PNG signature and header, audio/* takes files that start with OggS (Ogg) or have an ftyp box (M4A). The extension is chosen from what the header says, never from the source name. Nothing is converted or resized, and the rest of the file is not checked. Size caps are 32 MiB for images and 128 MiB for audio.

  • list_assets {folder?, includeUsage?, limit?} lists the files of one or all folders with size, PNG dimensions, warnings (a header that does not match the extension, a sheet size that does not fit the folder, interlaced PNGs) and, for the folders the reference scan covers, usedBy and unused. Unused means no reference with exactly that name (case-sensitive) in the database, maps, common events or troops; a plugin or script that loads a file by name is not seen.

  • preview_asset {folder, name, maxSize?} returns a PNG from an img/* folder as an image (nearest-neighbour scaled to at most maxSize pixels on its longer edge), with the sheet layout implied by the name for img/characters and img/faces. Interlaced PNGs, files over 32 MiB and images above 16 million pixels are refused; audio cannot be previewed.

Name rules. A name is 1-64 characters from A-Z a-z 0-9 space _ ! $ ( ) -, starts with a letter, digit, ! or $, has no trailing space, no dot (the extension is added for you) and no path separators, and is not a reserved Windows device name (CON, NUL, COM1, LPT1, ...). In img/characters, a name whose leading run of ! and $ characters contains a $ ($Boss, !$Chest) is a one-character sheet; a ! means no vertical offset on the map.

Backups and changesets. An existing file with the same name (letter case ignored) is only replaced with overwrite: true. Like any other edit, the first change to a file in a server session snapshots it to .mcp-backups/ (list_backups, restore_backup), so the backup holds the file as it was before the session (until set_project is called again, which starts the snapshots over): a file that was created, or already replaced, earlier in the same server session has no backup of that intermediate version. Binary files cannot be staged, so import_asset is refused while a changeset is open; commit or discard it first. Nothing is written when an import is refused. For audio, a warning tells you when the .ogg or .m4a twin is missing (MV's web build needs both).

Cutscene and game-flow nodes

Besides dialogue, choices, conditions, switches, variables and transfers, build_dialogue_tree compiles these nodes into correctly indented commands. Like the MV editor, every choice, if/else and battle branch ends with a blank {code: 0} row at the body's indent (an empty branch is that row alone); the engine skips it.

  • Cutscene: wait, fade (out / in), tint, flash, shake, weather, playAudio, fadeAudio, showPicture, erasePicture, animation, balloon and moveRoute. A route is a list of steps (up, turnLeft, {wait: 10}, {jump: {x, y}}, {switchOn: 5}, {speed: 4}, ...); a repeating route (repeat: true) never finishes, so it cannot be waited for and an explicit wait: true is rejected.

  • Game flow: battle (onWin, onEscape and onLose bodies; like the editor, the branches and their closer are written only when canEscape or canLose is on, or onWin has nodes, and with neither the battle is a single command followed by whatever comes next; a body for a branch whose box is off is rejected), shop, callCommon, label / jump, exit, comment, gold, item (items, weapons and armors), party, learnSkill, recoverAll, nameInput, plugin (a plugin command line) and scene (menu, save, game over, title).

Example, as the tree argument (or with dryRun: true to only look at the commands):

[
  { "fade": "out" },
  { "battle": { "troopId": 3, "canLose": true,
      "onWin": [{ "gold": 200 }],
      "onLose": [{ "say": "Defeated..." }, { "scene": "gameOver" }] } },
  { "fade": "in" },
  { "shop": { "goods": [{ "type": "item", "id": 1 }, { "type": "weapon", "id": 2, "price": 300 }] } }
]

simulate_event can dry-run the result: presentation commands are skipped and counted in cosmetic, and battleResult (win, escape or lose) chooses which battle branch runs. The command layouts were checked against the official MV core scripts, and the block and move-route structure against real map files from public MV projects, but nothing was run in the real game, so playtest important events; see CHANGELOG.md for the limitations.

Analysis

Checks that need no running game:

  • audit_assets — every image and audio file the project references (actors, enemies, tilesets, maps, event pages, a set of event commands (face, picture, audio, battle back, parallax, actor and vehicle graphics), System) must exist; also lists case mismatches (fine on Windows, broken on Linux/macOS/web) and optionally unused files. The result lists what is not scanned (for example plugin parameters), so "unused" can include files that only plugins use.

  • lint_events — static checks of event command lists in maps, common events and troops: broken block structure and terminators, unreachable commands, over-long message lines, transfers to missing maps or out-of-bounds tiles, calls to missing common events, and switches/variables without a name. Findings carry a location; the line length limit is an approximation.

  • simulate_event {mapId, eventId, ...} — dry-runs one event page against a state you supply (switches, variables, self switches, gold, items, answers to choices) and returns the messages shown, the changes made, the transfer it ends in and the commands it could not simulate. It covers messages, choices, conditions, loops, common events, switch/variable/self switch/gold/item changes, transfers, plugin commands, labels and jumps; battles run the branch chosen by battleResult (win, escape or lose, default win); animations and balloons (212, 213), screen fades, tint, flash and shake (221-225), waits (230), show/move/erase picture (231, 232, 235), weather (236), play/fade audio (241, 242, 245, 246, 249, 250, 251) and move routes (205) are ignored and only counted in cosmetic (the switch ON/OFF steps of a move route still apply); scripts, picture rotation and tint (233, 234) and other commands are listed as unsupported and skipped. It never touches the project.

  • editor_status — reports whether the RPG Maker editor process appears to be running (Windows only; null elsewhere) and which files this server wrote have since been modified by something else, usually the editor saving over them. It only reports.

Usage and progression analysis

These tools read the whole project (staged changeset data included) and never run the game.

  • find_usages {kind, id, limit?} lists every place one switch, variable, item, weapon, armor, skill, state, actor, class, enemy, troop, common event or map is read, written or used, as locations like Map003 event 5 page 1 command index 12 or Enemies #4 dropItems (map, event and common event ids are the real ids, pages are 1-based like the editor, and the command index is the 0-based position that lint_events also reports), with exact counts and warnings: a switch or variable that is read but never set (or set but never read), a common event nothing calls, a map nothing transfers to, an id without a name. Use it before renaming, deleting or reusing an id.

  • check_references {limit?} finds references that point at records which do not exist: a Battle Processing on troop 1 when there is no troop 1, a shop item 7, Learn Skill 12, actor 5, a transfer to a deleted map, an enemy drop or class learning that names a missing record. It checks exactly the references find_usages indexes (event commands, page conditions, enemy drops and actions, class learnings, actor class and equipment, troop members, item and skill effects, encounter lists, System startMapId and partyMembers) against the database files and MapInfos.json, groups the findings by kind and id with a count and up to three locations, and lists in notes what it did not check. Id 0 ("none") is never reported, and switches and variables are not checked. A database file that is missing or unreadable is named in notes instead of reporting everything as missing. Run it before a release and after deleting or renaming records.

  • analyze_progression {goal?, includeGraph?, limit?} follows the game from the start map and reports the reachable and unreachable maps, maps with no way out, event pages that can never run (with the first condition that is never met), switches and variables that are read but never set or set but never read, and a summary in plain language. goal ({switch}, {mapId} or {event: {mapId, eventId}}) adds a verdict with the reasons it is blocked, and includeGraph adds a Mermaid flowchart of the map transfers.

What the analysis can prove. It is an over-approximation of a playthrough: a page may run whenever its page conditions could hold, and when it runs all of its commands take effect. Switches only ever turn on and items are never lost. So unreachable and never set are proofs under that model, while reachable only means "not ruled out".

What it cannot see. Conditions inside event commands (branches, choices), damage formulas (they are evaluated JavaScript and can set switches and variables), script commands and plugin commands, transfers and battles whose target is a variable, enabled plugins and their parameters and notetags (they can call common events, set switches or move the player), and vehicles' start maps. It never models switches turning off and does not detect soft-locks. find_usages does not index every command either, and check_references sees only what the index sees (references made by script or plugin commands, notetags, plugin parameters, damage formulas and variable-designated commands are invisible to it); the list is in CHANGELOG.md. check_references decides that a record exists by its id field, not its array position (like find_usages), so a table whose rows' ids differ from their positions can give wrong answers. find_usages, check_references and analyze_progression build the project index in memory: a hostile or machine-generated project with very large Control Switches / Variables commands covering whole id ranges can use a lot of memory and time (about 1.2 GB were measured for 5000 events expanding to about 10 million references).

Confidence. uncertainty.confidence is low as soon as the project contains script or plugin commands, variable-designated transfers or battles, or enabled plugins (or a map or js/plugins.js it could not read), and the summary says why. It stays high when only conditions inside commands or damage formulas do something the analysis cannot see. Trust unreachable and dead results only when it is high; almost every project with custom plugins reports low. The same applies to the "never ..." warnings of find_usages, which carry a note when script or plugin commands could act on the id.

Balancing tools in a nutshell

Bulk edits, curve generators and import_texts are dry runs by default — they return a diff and write nothing until you pass dryRun: false. simulate_battle and balance_report use the project's real class curves, equipment, traits and damage formulas (evaluated safely: formulas are checked against a whitelist before they run). They do not model states, buffs or items, so treat them as a guide and playtest the important fights.

Backups

The first time a session modifies any file, the original is copied to <project>/.mcp-backups/<session-timestamp>/ preserving its relative path. Up to 10 sessions are kept. list_backups shows what's available; restore_backup restores one file or a whole session — and backs up the current state first, so restores are undoable.

Add .mcp-backups/ and .mcp-stamps/ to your game project's .gitignore if the game is under version control (leave .mcp-stamps/ out if you want to share stamps). Changeset journals live under .mcp-backups/changesets/ and are not pruned.

Important notes

  • Close the RPG Maker MV editor (or don't save from it) while the server edits files. The editor keeps the whole database in memory and overwrites the JSON files on save, discarding external changes. Reopen the project in the editor to see edits made here.

  • Database arrays in MV are 1-indexed with null at index 0; the tools handle this automatically, and ids always match array positions.

  • MZ projects (.rmmzproject) are accepted too — the data format is nearly identical — but they are untested.

  • Known limitations of this release (unverified editor process name, unchecked visual quality of generated maps, no scripted playtest runner, ...) are listed in CHANGELOG.md.

  • Tiles are painted with paint_tiles (not update_map, which refuses to touch data). Pick tiles via get_tileset_info / get_tileset_image; a tile's sheet must have an image assigned in the map's tileset, otherwise the tile would be invisible and the call is rejected.

  • render_map_image reads the tileset and character images from img/ (encrypted .rpgmvp deployments cannot be shown); sheets without a usable image are drawn as flat colours and listed in the answer. Water is drawn in its first animation frame.

  • export_texts writes into the project (default localization/); the file is backed up before it is overwritten and existing translations are carried over by key.

  • NW.js playtest auto-detects Steam and KADOKAWA install paths, the project's own Game.exe, and the RPGMAKER_MV_NWJS environment variable, in that order.

  • In browser playtest mode, console output stays in the browser devtools — use NW.js mode when you need playtest_log.

Building from source

For contributors or if you prefer to build locally:

git clone https://github.com/Xerolo44/RPG-Maker-MV-MCP.git
cd RPG-Maker-MV-MCP
npm install
npm run build

Then use the local build with Claude Code:

claude mcp add rpgmaker-mv -- node "$(pwd)/dist/index.js" --project "/path/to/YourGame"

Development

npm run build   # compile TypeScript to dist/
npm run test:unit  # node:test unit tests in test/ (PNG, formulas, renderer, battle maths, generators, ...)
npm run smoke      # end-to-end test: real stdio client against a generated MV project
npm test           # build + unit tests (test/) + smoke test (what CI runs)

See CONTRIBUTING.md for project layout and guidelines, CHANGELOG.md for release history, and SECURITY.md for the tool's trust model (it has full file-system access — read this before exposing --http mode beyond your own machine).

License

MIT

Available Tools

78 tools
add_dialogueAdd dialogueA

Add spoken dialogue to an event page in one call — builds the Show Text (101) and text-line (401) commands automatically, splitting into multiple message boxes every 4 lines. Inserted before the page's end, like add_event_command.

NameRequiredDescriptionDefault
linesYesDialogue lines (a new message box starts every 4 lines)
mapIdYes
eventIdYes
faceNameNoFace image file (e.g. 'Actor1'), empty for none
positionNo0 top, 1 middle, 2 bottom
faceIndexNo
pageIndexNo
backgroundNo0 window, 1 dim, 2 transparent

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; it does disclose real behavior — commands are generated automatically, message boxes split every 4 lines, and content is inserted before the page's end. However it says nothing about whether it requires a changeset/begin_changeset, whether existing dialogue is preserved or overwritten, or what the call returns, which matters for a mutation tool with zero annotation coverage.

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

Conciseness5/5

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

A single tight sentence with the resource and the auto-construction behavior front-loaded and zero filler. Every clause — mechanism, splitting rule, insertion point — carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter mutation tool with no annotations and no output schema, the description covers the core action and the one non-obvious behavior (4-line splitting) but omits prerequisites, effects on existing commands, and return shape. Adequate to call it, not adequate to call it safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: the schema documents lines, faceName, position and background, while faceIndex, pageIndex, mapId and eventId are bare. The description only reinforces the 4-line splitting rule already stated in the schema and never explains face selection, position, background modes, or page selection, so it does not compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb+resource ('Add spoken dialogue to an event page') and immediately explains the mechanism (auto-builds Show Text 101 and text-line 401 commands). It also distinguishes itself from the lower-level sibling by noting the insertion behavior is 'like add_event_command', so an agent can place it relative to the raw command tool 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.

Usage Guidelines3/5

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

Usage is implied rather than stated: use this instead of hand-writing 101/401 commands. There is no explicit when-not guidance and no routing to alternatives such as build_dialogue_tree, add_event_command, or update_event, which all plausibly overlap. An agent can infer intent but must guess at boundaries.

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

add_event_commandAdd event commandsB

Insert commands into an event page's command list without resending the whole event. Commands are inserted before the page's terminating {code: 0} entry (or at index if given). Multi-line constructs work naturally, e.g. Show Text is one code-101 command followed by code-401 commands. See event_command_reference for codes.

NameRequiredDescriptionDefault
indexNoPosition in the list to insert at; defaults to the end (before the terminator)
mapIdYes
eventIdYes
commandsYesCommands to insert, in order
pageIndexNoWhich event page (0-based)

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It explains the insertion position (before terminator or at index) and handles multi-line constructs. However, it omits details on error handling, side effects, idempotency, or whether the operation is reversible.

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

Conciseness4/5

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

The description is concise (3 sentences) and front-loaded with the core purpose. It could be slightly more structured, but every sentence adds value without unnecessary verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 5 parameters and insertion logic, but the description lacks information about return values, error cases, or constraints. Without an output schema, the description should at least hint at what the operation returns or what happens on failure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 60%, missing descriptions for mapId and eventId. The description adds meaning for 'commands' (multi-line constructs) and 'index' (position), but does not compensate for the missing parameter descriptions or clarify the role of required parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it inserts commands into an event page's command list, specifying the action 'insert' and the resource. It mentions avoiding resending the whole event, which hints at its targeted nature, but does not explicitly distinguish from sibling tools like update_event.

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

Usage Guidelines3/5

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

The description provides some context by noting 'without resending the whole event', implying use when only adding commands. However, it lacks explicit guidance on when to use this tool versus alternatives (e.g., update_event), and does not mention prerequisites or conditions.

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

add_pluginRegister pluginA

Register an existing js/plugins/.js file in the plugin list. Fails if the file does not exist (use create_plugin to make a new one).

NameRequiredDescriptionDefault
nameYes
statusNo
parametersNo
descriptionNo

TDQS

A3.7/5.0
Behavior3/5

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

No annotations exist, so the description carries the full disclosure burden. It usefully reveals the file-existence failure mode, but says nothing about whether registration is idempotent, whether it overwrites an existing entry with the same name, or what permissions/state effects registering has.

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

Conciseness5/5

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

Two tight sentences, zero filler, with the core action front-loaded and the routing hint following immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and three undocumented parameters including a nested object, the description leaves too much for the agent to guess about what registering does with status and parameters. It is complete on purpose and error behavior but not on configuration or result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 4 parameters, and the description only implicitly explains 'name' via the file path. 'status', 'description', and especially the nested 'parameters' object (string-valued additionalProperties) are entirely opaque, which a low-coverage schema requires the description to compensate for.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Register an existing js/plugins/<name>.js file in the plugin list'), including the exact file-path shape the name parameter refers to. It explicitly contrasts with create_plugin, so an agent can distinguish the two 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.

Usage Guidelines4/5

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

Gives a clear precondition ('Fails if the file does not exist') and names the correct alternative for that case ('use create_plugin to make a new one'). It does not address where configure_plugin or remove_plugin fit in the lifecycle, so routing is clear for the main fork but not exhaustive.

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

analyze_progressionAnalyze progressionA

Answers 'can the player get from the start map to X, and what can never happen?' for the whole project, without running the game. Model (an over-approximation): starting at System startMapId, a page may run whenever its page conditions could hold, and when it runs ALL of its commands take effect. Switches only ever turn ON, items are never lost, and conditions inside event commands (branches, choices) are ignored. So 'unreachable' (maps, pages, goals) is a proof under the model, while 'reachable' only means 'not ruled out'. It cannot see script commands (355), plugin commands (356), variable-designated transfers or battles, enabled plugins (parameters, notetags) or anything else a plugin does. Each of those, an unreadable map or an unreadable js/plugins.js lowers uncertainty.confidence to 'low'; only trust 'unreachable' and 'dead' results when confidence is 'high'. Returns reachableMaps, unreachableMaps, deadEndMaps (no exit), deadPages (pages that can never run, with the first unmet condition), switches/variables read-but-never-set and set-but-never-read, edges (direct transfers), notes, a plain-language summary and names (map id to name). goal (exactly one of switch, mapId or event) adds a verdict with up to 10 blockedBy reasons. includeGraph adds a Mermaid flowchart of the map transfers. Lists are cut at limit (the summary counts stay exact); truncated is also set when an analysis cap was hit (see notes). Staged changeset data is analysed.

NameRequiredDescriptionDefault
goalNoWhat to check, exactly one key: { switch: n }, { mapId: n } or { event: { mapId, eventId } }.
limitNoMost entries per list in the report.
includeGraphNoAlso return a Mermaid flowchart of the direct map transfers.

TDQS

A4.6/5.0
Behavior5/5

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 exceptionally: it spells out the over-approximation model (switches only turn on, items never lost, branches ignored), enumerates exactly what it cannot see (355/356, variable transfers, battles, plugins), and explains how each gap degrades confidence. This is exactly the behavioral context an agent needs.

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

Conciseness4/5

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

It is dense and long, but front-loads the core question, then the model, then limitations, then outputs — a logical flow where nearly every sentence adds information. Slightly verbose in the limitations enumeration, but no sentence is pure filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, yet the description fully enumerates the return surface (reachableMaps, unreachableMaps, deadEndMaps, deadPages with first unmet condition, switch/variable usage, edges, notes, summary, names) plus truncation caveats and staged-changeset behavior. Nothing an agent needs to interpret results is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description goes further by explaining that goal (one of switch/mapId/event) yields a verdict with up to 10 blockedBy reasons, that includeGraph emits a Mermaid flowchart, and crucially that limit truncates lists while summary counts stay exact and 'truncated' also flags analysis caps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence gives a precise verb and resource — a static reachability/dead-code proof over the whole project without running the game. It is immediately distinguishable from execution-oriented siblings like simulate_event, playtest_start, and validate_project.

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

Usage Guidelines4/5

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

It clearly frames the mode of use ('without running the game') and gives explicit trust rules: only rely on 'unreachable'/'dead' when confidence is 'high', and treat 'reachable' as merely 'not ruled out'. It doesn't name specific sibling alternatives (e.g. simulate_event) as the fallback, so it stops short of 5.

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

audit_assetsAudit project assetsA

Checks that every image and audio file the project references exists on disk, and optionally lists files nothing references. Scanned references: Actors (characterName, faceName, battlerName); Enemies battlerName (img/enemies, or img/sv_enemies when System optSideView is on); Tilesets tilesetNames; Maps (parallaxName, bgm, bgs, battleback1Name, battleback2Name, event page images); event commands 101 (face), 132/133/139/140 (battle BGM, victory ME, defeat ME, vehicle BGM), 231 (picture), 241/245/249/250 (BGM/BGS/ME/SE), 283 (battle back), 284 (parallax), 322 (actor graphics) and 323 (vehicle image) in map events, common events and troops; System (title1Name, title2Name, battleback1Name, battleback2Name, titleBgm, battleBgm, victoryMe, defeatMe, gameoverMe, boat/ship/airship bgm, sounds). Anything else is listed under notScanned, so 'unused' can include files used only by plugins or scripts. Audio is satisfied by either an .ogg or an .m4a file. caseMismatch means the file exists only with different letter case: it works on Windows but breaks on Linux, macOS and web deployments. Each list is capped at 200 entries; truncated gives the omitted counts.

NameRequiredDescriptionDefault
includeUnusedNoAlso list asset files that no scanned reference uses.

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so well: it discloses scanned vs. notScanned scope, audio extension rules, caseMismatch implications across platforms, and 200-entry truncation behavior with omitted counts.

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

Conciseness4/5

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

The description is front-loaded with the core check and then supplies dense but relevant detail about scanned categories and caveats. The exhaustive enumeration is lengthy but earns its place for a complex audit operation; structure could be slightly more scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must explain enough about return behavior, and it does: it names notScanned, caseMismatch, truncation, and omitted counts. For a one-parameter audit tool, this is complete enough for an agent to call and interpret it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds useful semantic context for includeUnused by explaining that unused results can include files referenced only by plugins or scripts, which helps interpret that parameter's output.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: checks that every referenced image and audio file exists on disk, with an optional unused-file listing. It also enumerates scanned reference types, making the scope highly distinguishable from general asset-listing or reference-checking siblings.

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

Usage Guidelines4/5

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

The tool's intended use is clear from the purpose and the includeUnused option, and it warns that 'unused' may include plugin- or script-only assets. It does not explicitly name alternatives such as check_references or validate_project, so it lacks full when-to-use/when-not guidance, but the context is clear.

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

balance_reportBalance reportA

Measure the game's balance from its data: (1) class stat curves at chosen levels, (2) the attack skill's damage by level against a reference enemy, (3) a matrix of attackers vs enemies (average damage and hits to kill) and (4) enemy threat vs the same characters (damage of the enemy's best attack and hits to kill them). Ends with warnings: unevaluable damage formulas, curves that go down, enemies killed in one hit or immune, enemies that one-shot a character. Attackers default to the starting party. Numbers are averages with no variance, crits or misses and ignore states, items and elements beyond what the skill/traits specify - use simulate_battle for a full fight.

NameRequiredDescriptionDefault
levelsNoLevels for the curve tables
classIdsNoClasses for the curve tables (default: the first 6)
enemyIdsNoEnemies to list (default: the first 40)
attackersNoCharacters for the matrices; default: the starting party at their initial level
referenceEnemyIdNoEnemy for the damage-by-level table (default: the one with median HP)

TDQS

A4.8/5.0
Behavior5/5

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: it discloses that all numbers are averages ignoring variance, crits, misses, states, items and elements beyond skill/trait specs, and that it emits warnings for unevaluable formulas, downward curves, one-hit-kill or immune enemies. That is precisely the behavioral context needed to trust or discount the output.

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

Conciseness4/5

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

The numbered enumeration of the four report sections is front-loaded and easy to scan, and nearly every clause adds information. It is a dense run-on paragraph in places (especially the long final sentence about averages), which costs it a point on readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the description effectively substitutes for one by describing the four result tables and the trailing warnings block. With five all-optional parameters and defaults stated, an agent has everything needed to call it correctly and interpret what comes back.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning by mapping parameters to output sections and restating the key defaults (attackers default to the starting party, reference enemy defaults to median HP). It stops short of explaining how attackers' classId vs actorId interact, which the schema leaves largely implicit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('Measure the game's balance from its data') and then enumerates the four concrete report sections it produces (class curves, damage-by-level, attacker/enemy matrix, enemy threat). An agent can distinguish it from sibling analysis tools like analyze_progression or simulate_battle without reading the schema.

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

Usage Guidelines5/5

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

It explicitly names the alternative and the condition that selects it: 'use simulate_battle for a full fight', contrasted with this tool's averaged, no-variance/no-crit/no-miss approximation. Defaults for attackers, levels and reference enemy are also stated, so the agent knows when inputs can be omitted.

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

begin_changesetBegin changesetA

Start a transactional batch of edits. While a changeset is open, every edit tool stages its result in memory: nothing is written to disk until commit_changeset, and all reads (get_map, get_record, list_plugins, ...) reflect the staged edits. Commit writes every staged file in one step (all or nothing) and can be rolled back later with undo_changeset; discard_changeset drops the staged edits. Only one changeset can be open at a time; restore_backup is refused while one is open and set_project discards it. Playtests read from disk, so they only see committed edits. The RPG Maker editor must stay closed while the server edits the project.

NameRequiredDescriptionDefault
labelYesShort description of the batch, e.g. 'Add the blacksmith to Town'

TDQS

A4.6/5.0
Behavior5/5

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 it discloses the key traits: edits are staged in memory, nothing hits disk until commit, commit is all-or-nothing, commit is reversible via undo, reads reflect staged state, and only one changeset may be open at a time. It also flags the hard environmental prerequisite that the RPG Maker editor must stay closed — exactly the kind of context an agent would otherwise get wrong. The description adds no contradicting claims.

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

Conciseness5/5

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

Purpose is front-loaded in the first clause, then the paragraph unfolds into staging semantics, lifecycle alternatives, and constraints in a logical order. Every sentence carries new, decision-relevant information — there is no filler or restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a stateful transaction-start tool with no annotations and no output schema, the description covers what an agent needs: side effects, visibility of staged data, commit/discard/undo paths, concurrency limits, and prerequisite conditions. The only minor gap is that it does not describe what the tool returns on success, though with no output schema that is a small omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single `label` parameter already has an example in the schema, so the description is not required to expand on it. The description never mentions `label` or how it is used, so it adds nothing beyond the schema — the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence, "Start a transactional batch of edits," names a specific verb and resource and immediately distinguishes this tool from the many edit siblings by framing it as a transaction boundary rather than an edit. The phrase "stages its result in memory" further pins down what "start" means operationally.

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

Usage Guidelines5/5

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

It explicitly routes the agent through the whole lifecycle: commit_changeset to write, discard_changeset to drop, undo_changeset to roll back. It also states exclusions the agent could not otherwise infer — restore_backup is refused, set_project discards the changeset, and playtests see only committed edits.

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

build_dialogue_treeBuild dialogue treeA

Compiles a nested tree of nodes into correctly indented event commands and optionally inserts it into an event page, so you never hand-write indents, block terminators or move-route rows. Covers dialogue, branching, switches and variables, cutscenes (screen effects, audio, pictures, animations, move routes) and game flow (battles, shops, items, gold, party, scenes, labels). With mapId + eventId the commands are inserted at indent 0 before the page's end (or at index), like add_event_command; without them, or with dryRun, nothing is written and the compiled commands are returned in preview. tree is an array of nodes; every node is an object with one main key, and unknown keys are rejected. choices, if and battle bodies nest at most 8 levels deep (each body counts as a level). A node that is invalid anywhere in the tree fails the whole call and nothing is written. Node vocabulary, in three groups. (1) MESSAGES AND FLOW: {say: string | string[], face?: {name, index}, background?: 0|1|2, position?: 0|1|2} (4 lines per message box; "\n" splits lines; control codes like \C[2] are kept as written); {choices: [{label, then?: Node[]}] (1-6), cancel?: "disallow" (default) | "branch" | choiceIndex}; {if: Condition, then?: Node[], else?: Node[]} with Condition = {switch, is?} | {variable, op: "eq"|"ne"|"gt"|"gte"|"lt"|"lte", value} | {selfSwitch: "A".."D", is?} | {gold} (party has at least) | {item} (party has item); {setSwitch: {id, value}} | {setVariable: {id, op: "set"|"add"|"sub", value}} | {setSelfSwitch: {ch, value}} | {transfer: {mapId, x, y, direction?: 0|2|4|6|8, fade?: 0|1|2}} | {raw: [{code, indent?, parameters?}]} (indent is relative to the node's position). Example: [{"say":"Will you help?","face":{"name":"Actor1","index":0}},{"choices":[{"label":"Yes","then":[{"setSwitch":{"id":5,"value":true}},{"say":"Thank you!"}]},{"label":"No","then":[{"say":"A pity."}]}],"cancel":"branch"}]. (2) CUTSCENE, where target is "player" | "this" (the running event) | a positive event id: {wait: 1-6000} (frames; 60 = 1 second) | {fade: "out"|"in"} | {tint: {r, g, b: -255..255, gray: 0-255, frames?: 1-600 (60), wait?: true}} | {flash: {r, g, b: 0-255, intensity: 0-255, frames?: 1-600 (60), wait?: true}} | {shake: {power?: 1-9 (5), speed?: 1-9 (5), frames?: 1-600 (30), wait?: true}} | {weather: {type: "none"|"rain"|"storm"|"snow", power?: 1-9 (5), frames?: 1-600 (60), wait?: false}} | {playAudio: {kind: "bgm"|"bgs"|"me"|"se", name (use "" to stop that channel), volume?: 0-100 (90), pitch?: 50-150 (100), pan?: -100..100 (0)}} | {fadeAudio: {kind: "bgm"|"bgs", seconds: 1-60}} | {showPicture: {id: 1-100, name, origin?: "upperLeft"|"center", x, y, scaleX?: 0-2000 (100), scaleY?: 0-2000 (100), opacity?: 0-255 (255), blend?: "normal"|"add"|"multiply"|"screen"}} | {erasePicture: 1-100} | {animation: {target, animationId, wait?: true}} | {balloon: {target, balloonId: 1-10, wait?: true}} | {moveRoute: {target, steps: 1-100 steps, repeat?: false, skippable?: false, wait?: true}} (compiles to command 205 plus one 505 row per step). A route step is one of the strings down, left, right, up, turnDown, turnLeft, turnRight, turnUp, walkAnimOn, walkAnimOff, stepAnimOn, stepAnimOff, dirFixOn, dirFixOff, throughOn, throughOff, transparentOn, transparentOff, or an object {jump: {x, y}} (relative tiles, -1000..1000) | {wait: 1-999} | {switchOn: id} | {switchOff: id} | {speed: 1-6} | {frequency: 1-5}. A repeating route never finishes, so with repeat: true wait defaults to false and an explicit wait: true is rejected. Example: [{"fade":"out"},{"playAudio":{"kind":"bgm","name":"Theme1"}},{"moveRoute":{"target":"player","steps":["up","up",{"wait":10},"turnLeft"]}},{"fade":"in"}]. (3) GAME FLOW: {battle: {troopId, canEscape?: false, canLose?: false, onWin?: Node[], onEscape?: Node[] (needs canEscape: true), onLose?: Node[] (needs canLose: true)}} (like the editor, branches are written only when canEscape or canLose is true or onWin has nodes: then 601, plus 602 with canEscape and 603 with canLose even when empty, and the closer 604; with neither, just the battle command is written and what follows runs after the battle; a body for a branch whose box is off is rejected) | {shop: {goods: [{type: "item"|"weapon"|"armor", id, price?}] (1-40; omit price for the database price), purchaseOnly?: false}} | {callCommon: commonEventId} | {label: name} | {jump: label name} (jump to a label in the same list) | {exit: true} (stop this event) | {comment: string | string[]} (not shown in game) | {gold: n} (positive gives, negative takes; not 0) | {item: {kind: "item"|"weapon"|"armor", id, count}} (positive adds, negative removes, not 0, |count| <= 99; weapons/armors only change the inventory, not equipped gear) | {party: {actorId, action: "add"|"remove", initialize?: false}} (initialize resets the actor when added) | {learnSkill: {actorId, skillId, forget?: false}} | {recoverAll: true} (full HP/MP/states for the whole party) | {nameInput: {actorId, maxChars: 1-16}} | {plugin: "Command arg1 arg2"} (plugin command) | {scene: "menu"|"save"|"gameOver"|"title"}. Example: [{"battle":{"troopId":3,"canLose":true,"onWin":[{"gold":200},{"item":{"kind":"item","id":1,"count":2}}],"onLose":[{"say":"Defeated..."},{"scene":"gameOver"}]}},{"shop":{"goods":[{"type":"item","id":1},{"type":"weapon","id":2,"price":300}]}}]. Returns { commands, inserted?, problems, preview? }; preview is included for dry runs and for trees of up to 40 commands.

NameRequiredDescriptionDefault
treeYesDialogue nodes, in order
indexNoPosition in the page's command list to insert at; defaults to the end (before the terminator). Positions inside a conditional, choice or battle body (the branch markers 402, 403, 404, 411, 412, 413, 601, 602, 603, 604 count as inside), or on a continuation line of a multi-line command (text, comment, move route, script or shop lines: 401, 405, 408, 505, 605, 655), are refused
mapIdNoMap to insert into; omit (with eventId) for a dry run
dryRunNoCompile and validate only; never touches the project files
eventIdNoEvent to insert into; omit (with mapId) for a dry run
pageIndexNoWhich event page (0-based)

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does it well: unknown keys rejected, nesting capped at 8 levels for choices/if/battle bodies, any invalid node fails the whole call and nothing is written, insertion positions inside branch markers or continuation lines are refused, and the return shape { commands, inserted?, problems, preview? } with preview only for dry runs or trees up to 40 commands. That is exactly the destructive/mutation context an agent needs.

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

Conciseness4/5

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

Front-loaded with purpose and insertion semantics, then organized into three labeled node groups with worked examples, which is the right structure for this vocabulary. It is very long and does repeat some schema-enumerated bounds (1-6000, 0-255, etc.), which is wasted text, but the bulk of the length is load-bearing node semantics.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, yet the description documents the return object and when `preview` appears. Given the enormous input schema and absence of annotations, the description supplies the missing pieces: failure atomicity, insert-position refusals, depth limits, and node vocabulary with examples. Nothing essential to calling it correctly is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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 semantics the schema cannot: 60 frames = 1 second, defaults for volume/pitch/pan/frames/power, that a repeating move route never finishes so wait: true is rejected, that weapons/armors only change inventory not equipped gear, and that 'initialize' resets an added actor. These are real behavioral defaults, not restatements of ranges.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (compiles) and resource (nested tree of nodes → indented event commands), plus insertion scope. The opening line 'so you never hand-write indents, block terminators or move-route rows' plus the explicit comparison to add_event_command separates it from the sibling command-insertion tools.

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

Usage Guidelines4/5

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

Explicitly defines the two operating modes: with mapId + eventId commands are inserted at indent 0 (or at `index`) like add_event_command; without them or with dryRun nothing is written and output goes to `preview`. That is clear routing context, but it never states when an agent should prefer this over add_event_command or add_dialogue for a single-line case, so no true exclusions are given.

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

bulk_update_recordsBulk update recordsA

Change one or more fields on many database records at once, with a diff. Example - all weapons +10% attack: {type: 'weapons', changes: [{field: 'params.atk', op: 'percent', value: 10}]}. Select records with ids and/or where conditions (all must match); with neither, every record is selected. Fields are paths such as 'price', 'params.atk' (mhp/mmp/atk/def/mat/mdf/agi/luk), 'params[2]', 'damage.formula', 'traits[0].value'. Ops: set (any value), add, multiply, percent (+value%) - numeric ops round to whole numbers for integer fields (round: auto), with optional min/max clamps. DRY RUN BY DEFAULT: nothing is written until you pass dryRun=false, so show the diff to the user first. If any record fails, nothing is written.

NameRequiredDescriptionDefault
idsNoOnly these record ids
typeYes
whereNoConditions, e.g. [{field: 'wtypeId', op: 'eq', value: 1}, {field: 'name', op: 'contains', value: 'sword'}]
dryRunNotrue = only preview the diff (default), false = write the changes
changesYes
maxPreviewNoMaximum records shown in the diff

TDQS

A4.7/5.0
Behavior5/5

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 well: it discloses the default dry run, the requirement to pass `dryRun=false` to write, the preview/diff behavior, and the atomic failure guarantee ('If any record fails, nothing is written'). These are critical operational details for a bulk 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.

Conciseness5/5

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

The description is dense but front-loaded: purpose, example, selection behavior, operations, and the dry-run warning all appear in a logical order. Every sentence contributes operational information without redundant restatement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-parameter mutation tool with no annotations and no output schema, the description covers selection, operations, dry-run safety, preview limits, and atomic failure. It does not describe the exact shape of the returned diff, but that is a minor gap given the otherwise rich behavioral coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds substantial meaning beyond the 67%-covered schema: it explains how `ids` and `where` combine, clarifies that all `where` conditions must match, gives field-path syntax examples, and defines each operation including rounding and min/max clamps. Although not every schema parameter is restated, the key ambiguities are resolved.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific mutation verb and resource: 'Change one or more fields on many database records at once, with a diff.' It clearly distinguishes bulk mutation from single-record siblings and immediately provides a concrete example.

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

Usage Guidelines4/5

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

It explains selection semantics precisely: records are selected by `ids` and/or `where` conditions, all conditions must match, and with neither every record is selected. It also emphasizes the dry-run workflow, but does not explicitly compare itself to sibling tools such as `update_record` or `search_records`.

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

capture_stampCapture stampA

Save a rectangle of a map as a reusable stamp in /.mcp-stamps/.json: all six layers (tiles, shadow bits, regions) and, with includeEvents (default true), the events standing inside it. Use place_stamp to paste it onto any map of the same tileset. Width and height are 1-64 and the whole rectangle must lie inside the map. Names are 1-64 characters (letters, digits, space, _ and -, starting with a letter or digit). An existing stamp is only replaced when overwrite is true. Stamps are written like any project file, so inside an open changeset they are only staged until commit_changeset. Add .mcp-stamps/ to .gitignore next to .mcp-backups/ unless you want to share stamps.

NameRequiredDescriptionDefault
xYes
yYes
nameYesStamp name, e.g. "well" or "Tavern 2"
mapIdYes
widthYes
heightYes
overwriteNoReplace a stamp that already has this name
includeEventsNoAlso capture the events inside the rectangle

TDQS

A4.6/5.0
Behavior5/5

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: it discloses what gets captured (all six layers, shadow bits, events), the includeEvents default, write/replace semantics gated on overwrite, and the changeset staging interaction with commit_changeset. The .gitignore advice adds operational context an agent would otherwise have to guess.

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

Conciseness4/5

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

The core operation, its destination, and the sibling reference are front-loaded, and nearly every clause carries information. The trailing .gitignore sentence is useful but is the one piece that could be trimmed without harming invocation correctness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an unannotated, no-output-schema, eight-parameter write tool this is complete: validation limits, name syntax, overwrite policy, changeset staging behavior, and destination path are all stated. 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

At 38% schema coverage the description must compensate, and it does for the most consequential parameters: width/height bounds of 1-64, the in-map constraint, the name character rules and 1-64 length, overwrite replacement rule, and includeEvents default true. x, y and mapId get no explanation beyond their names, leaving a small residual gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Save a rectangle of a map as a reusable stamp') plus the exact on-disk target path, and immediately contrasts with the sibling paste operation. An agent can distinguish capture_stamp from place_stamp and list_stamps 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.

Usage Guidelines4/5

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

Explicitly routes to place_stamp for pasting and adds a concrete condition ('same tileset'), and the overwrite/gitignore notes clarify follow-up behavior. It does not state when capturing is a poor choice (e.g. large regions, cross-tileset reuse), so it stops just short of full when/when-not coverage.

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

check_referencesCheck referencesA

Finds references that point at records which do not exist: a Battle Processing (301) on a missing troop, a shop item (302/605), Change Items/Weapons/Armors (126-128), Learn/Forget Skill (318), Change State (313), Change Party Member (129) and the other actor commands, Common Event calls (117), Transfer Player (201) or Set Vehicle Location (202) to a missing map, page conditions on a missing item or actor, enemy drops and actions, class learnings, actor class and equipment, troop members, item and skill effects, map encounter lists and System startMapId and partyMembers. It uses the same index as find_usages, so it checks exactly the references find_usages lists (staged changeset data included). A record exists when its database file (Items, Weapons, Armors, Skills, States, Actors, Classes, Enemies, Troops, CommonEvents) holds a non-null row whose id field is that id (not its array position, as in find_usages), or MapInfos.json lists the map. Id 0 means 'none' (an empty equipment slot, no drop) and is never reported. Switches and variables are not checked (plain numbers; lint_events reports unnamed ones). Run it before a release and after deleting or renaming records, and use find_usages on one reported id to see every place. Returns {summary, missing: [{kind, id, count, locations, severity: 'error'}], truncated, counts: {distinctMissing, references}, notes}. missing is grouped by kind and id, ordered by kind (item, weapon, armor, skill, state, actor, class, enemy, troop, commonEvent, map) then id; count is the number of references and locations lists at most 3 of them (same format as find_usages). missing is cut at limit groups and truncated is the number cut. A database file that is missing or unreadable is named in notes and its references are NOT reported as missing. notes also state what is not checked: references made by script commands, plugin commands, notetags, plugin parameters, damage formulas, trait codes and variable-designated transfers and battles (with how many such commands the project has), and maps that could not be read.

NameRequiredDescriptionDefault
limitNoMost missing records (kind + id groups) returned.

TDQS

A4.5/5.0
Behavior4/5

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 substantively: it defines record existence (non-null row with matching id field, not array position), defines id 0 as 'none' and never reported, and states that unreadable database files go to notes rather than being reported as missing. It also discloses a major limitation class (script commands, plugin commands, notetags, damage formulas, variable-designated transfers) with counts. Minor deduction only because it doesn't characterize cost/performance on large projects.

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

Conciseness3/5

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

Front-loaded correctly — the core finding and the inclusion list come first, return shape and caveats later — but it is a single dense ~250-word paragraph with a long command-ID enumeration (301, 302/605, 126-128, 318, 313, 129, 117, 201, 202) that is hard to scan. Little is strictly redundant, but the structure is a wall of text rather than sections.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description fully documents the return value ({summary, missing[{kind,id,count,locations,severity}], truncated, counts, notes}), the ordering (by kind then id), the 3-location cap, and the limit/truncated semantics. For a diagnostic tool with one optional parameter, nothing an agent needs to call or interpret it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning the schema lacks: limit counts kind+id groups rather than individual references, and the overflow is exposed via 'truncated'. That disambiguates what a caller is actually capping.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Finds references that point at records which do not exist') and enumerates the exact reference kinds checked. It also explicitly positions itself against the sibling find_usages ('uses the same index as find_usages, so it checks exactly the references find_usages lists'), so an agent can differentiate the two 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.

Usage Guidelines5/5

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

Gives explicit when-to-use ('Run it before a release and after deleting or renaming records') and a concrete follow-up alternative ('use find_usages on one reported id to see every place'). It also routes a related concern to another sibling ('Switches and variables are not checked ... lint_events reports unnamed ones').

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

commit_changesetCommit changesetA

Write every file staged by the open changeset to disk as one unit and return a per-file summary (created/modified, event/tile/record counts). Staged .json files are validated first: if any is invalid, nothing is written and the changeset stays open. Pre-images are journaled under .mcp-backups/changesets// so undo_changeset can roll the commit back; a commit interrupted by a crash is rolled back automatically the next time the project is opened (the files found on disk are backed up first). Other edits are refused while the commit runs. If a commit fails and its files cannot all be restored, the changeset is closed and every edit is refused until undo_changeset has restored them. Until this is called, nothing of the changeset is on disk and reads reflect the staged edits. The RPG Maker editor must stay closed while the server edits the project.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

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

No annotations are supplied, so the description carries the full disclosure burden and does so thoroughly: validate-then-write atomicity, pre-image journaling location, automatic crash rollback on project open, a mutual-exclusion rule ('Other edits are refused while the commit runs'), and the locked failure state requiring undo_changeset. These are exactly the non-obvious traits an agent must know before invoking a write operation.

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

Conciseness4/5

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

Purpose and return value are front-loaded, then validation, then recovery semantics. The closing sentence about the RPG Maker editor needing to stay closed is relevant but slightly detached from the commit narrative; otherwise every clause carries operational meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even without an output schema, the description states what is returned ('per-file summary (created/modified, event/tile/record counts)'). Combined with the atomicity, backup and failure-state details, an agent has everything needed to call this safely and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so parameter semantics carry no burden and the baseline is 4. The description adds no parameter discussion, which is appropriate since the schema is empty.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource: 'Write every file staged by the open changeset to disk as one unit and return a per-file summary'. The verb 'commit' plus 'staged by the open changeset' cleanly separates it from begin_changeset, discard_changeset and undo_changeset in the sibling list.

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

Usage Guidelines4/5

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

States the precondition ('the open changeset'), the lifecycle position ('Until this is called, nothing of the changeset is on disk and reads reflect the staged edits') and the rollback alternative (undo_changeset). It does not explicitly contrast committing versus discarding, but the sequencing context makes the choice clear.

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

configure_pluginConfigure pluginA

Enable/disable a registered plugin and/or merge new values into its parameters (parameter values are always strings in RPG Maker MV).

NameRequiredDescriptionDefault
nameYesPlugin name as it appears in list_plugins
statusNotrue = enabled, false = disabled
parametersNoParameter values to merge into the plugin's parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It mentions merging parameters and the string nature of values, but does not clarify if existing parameters are replaced or merged, what responses look like, or any side effects (e.g., does it affect existing plugin functionality? Is the change persistent?). Core action is clear but lacks depth.

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

Conciseness5/5

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

Single sentence, no redundancy, front-loaded with actions and key constraints. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and a moderate number of parameters including nested objects, the description covers the basic functionality but omits usage context, error conditions, and return value behavior. It is adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions already cover parameters adequately. The description adds value by explaining that parameter values are always strings (reinforcing the schema) and that the parameters object uses merge semantics. This clarifies behavior beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool enables/disables a plugin and merges parameter values. It uses specific verbs ('configure', 'enable', 'disable', 'merge') and identifies the resource ('registered plugin'). This distinguishes it from sibling tools like create_plugin or read_plugin.

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

Usage Guidelines2/5

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. Siblings like create_plugin, write_plugin, list_plugins exist, but the description does not provide conditions or exclusions to help an agent choose correctly.

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

connect_mapsConnect two mapsA

Link two maps with Transfer Player events in both directions in one call. A door event is placed on each map; stepping on (or pressing OK at) the door on map A moves the player to map B's spawn tile and vice versa. Give each side its door tile; add spawn when the player should appear next to the door instead of on it (always do this for doors drawn into walls). Both maps are validated before anything is written, and a door is refused if another event already stands on that tile (allowOverlap overrides). Use twoWay=false for a one-way link (map A's door only). Check the result with render_map_image (doors show as blue markers) and list_map_connections.

NameRequiredDescriptionDefault
aYes
bYes
fadeNoblack
soundNoSound effect to play before leaving, e.g. {name: 'Open1'}
twoWayNoCreate the return door on map B as well
triggerNotouch = player walks onto the door tile, action = player presses OK facing ittouch
doorNameNoEvent name prefix; default 'To <destination map name>'
allowOverlapNo

TDQS

A4.5/5.0
Behavior4/5

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 mutation semantics (door events written on each map), pre-write validation of both maps, and a specific failure mode (door refused if another event occupies the tile, allowOverlap overrides). It doesn't state what is returned or whether a partial failure can leave one map modified.

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

Conciseness4/5

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

The core linking behavior is front-loaded and every sentence carries operational information. It is dense but not padded; a slightly tighter grouping of the door/spawn guidance would read better.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter, nested-object, mutating tool with no annotations and no output schema, coverage is strong on placement, direction, and failure handling. The gaps are the undocumented cosmetic parameters and the absence of any statement about the return value.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

At 50% schema coverage the description must compensate, and it adds real meaning for the key parameters: why a spawn tile is needed (doors in walls) and how twoWay/allowOverlap change behavior. It says nothing about `fade`, `sound`, or `doorName`, leaving `fade` undocumented in both places.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Link two maps with Transfer Player events in both directions in one call') and makes the distinguishing behavior — bidirectional door events created atomically — explicit. An agent can tell this apart from create_event/update_event 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.

Usage Guidelines5/5

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

Gives concrete when-to conditions: 'add spawn ... (always do this for doors drawn into walls)', 'Use twoWay=false for a one-way link', and trigger selection via touch vs action. It also routes the agent to verification siblings ('Check the result with render_map_image ... and list_map_connections').

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

create_buff_skillCreate buff/debuff skillA

Create a skill that applies parameter buffs and/or debuffs. Parameter ids: 0 Max HP, 1 Max MP, 2 Attack, 3 Defense, 4 M.Attack, 5 M.Defense, 6 Agility, 7 Luck. If only debuffs are given the scope defaults to one enemy, otherwise one ally.

NameRequiredDescriptionDefault
nameYes
noteNo
buffsNoBuffs to add to the target
scopeNoTarget scope: 1 one enemy, 2 all enemies, 3-6 random enemies (1-4), 7 one ally, 8 all allies, 9 one dead ally, 10 all dead allies, 11 the user
mpCostNo
tpCostNo
debuffsNoDebuffs to add to the target
stypeIdNoSkill type id (1 = Magic by default)
occasionNoWhen usable: 0 always, 1 battle only, 2 menu only, 3 never
iconIndexNoIcon sheet index
animationIdNoAnimation id from the Animations database (0 = none, -1 = normal attack)
descriptionNoTwo-line description shown in menus

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses the non-obvious default scope behavior and parameter-id mapping, but it does not explain persistence, validation, required project state, or other side effects expected of a create/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.

Conciseness5/5

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

The description is front-loaded with the core action, followed by the necessary parameter-id legend and a key default-scope rule. Every sentence adds useful information and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the most domain-specific gaps, especially parameter ids and scope defaults, which is important given 12 parameters and 67% schema coverage. However, with no annotations and no output schema, it should do more to describe the create/mutation behavior and what the tool returns or persists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is moderate at 67%, and the description adds substantial meaning that the schema lacks by mapping parameter ids 0-7 to Max HP, Max MP, Attack, Defense, M.Attack, M.Defense, Agility, and Luck. It also explains the scope default rule, though it does not clarify unrelated parameters such as mpCost, tpCost, or note.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: creating a skill that applies parameter buffs and/or debuffs. This clearly distinguishes it from sibling skill-creation tools such as create_damage_skill, create_healing_skill, and create_state_skill, though it does not name those alternatives explicitly.

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

Usage Guidelines3/5

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

Usage is implied by the purpose: use this when creating a buff/debuff skill. The description also gives one important usage rule about default scope when only debuffs are present, but it does not state when to choose this over the sibling skill-creation tools or mention any prerequisites.

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

create_damage_skillCreate damage skillA

Create a complete damaging skill in one call. The formula uses MV damage syntax where a is the user and b the target, e.g. 'a.mat * 4 - b.mdf * 2' or 'a.atk * 2 - b.def'. Returns the new skill id.

NameRequiredDescriptionDefault
nameYes
noteNo
scopeNoTarget scope: 1 one enemy, 2 all enemies, 3-6 random enemies (1-4), 7 one ally, 8 all allies, 9 one dead ally, 10 all dead allies, 11 the user
mpCostNo
tpCostNo
tpGainNoTP the user gains on use
formulaYesDamage formula, e.g. 'a.mat * 4 - b.mdf * 2'
hitTypeNoHit type (affects evasion/reflection rules)magical
stypeIdNoSkill type id (1 = Magic by default)
criticalNoCan critically hit
occasionNoWhen usable: 0 always, 1 battle only, 2 menu only, 3 never
varianceNoDamage variance %
elementIdNoElement id from System types (0 = none, -1 = normal attack element)
iconIndexNoIcon sheet index
damageTypeNoWhat the damage hits (drain variants absorb into the user)hp
animationIdNoAnimation id from the Animations database (0 = none, -1 = normal attack)
descriptionNoTwo-line description shown in menus

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses that the tool creates a skill and returns the new skill id, but does not mention validation, error handling, required permissions, or side effects (e.g., is the skill immediately available?). Adequate but not comprehensive.

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

Conciseness5/5

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

Two sentences packed with essential information: creation scope, formula syntax, and return value. No unnecessary words. Front-loaded with the key action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 17 parameters and no output schema, the description covers creation and formula but omits details on error conditions, default values beyond schema, and exact return format (just 'new skill id'). Adequate for experienced users but incomplete for novices.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaningful explanation for the formula parameter: 'The formula uses MV damage syntax where `a` is the user and `b` the target,' with examples. For other parameters (76% schema coverage), the description does not add much beyond schema descriptions, but the formula guidance is valuable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Create a complete damaging skill in one call,' specifying the verb (create), resource (damaging skill), and scope (in one call). It distinctively focuses on damage, differentiating from sibling tools like create_healing_skill and create_state_skill.

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

Usage Guidelines2/5

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 like create_healing_skill or create_state_skill. The only contextual hint is the tool name and mention of 'damage,' but no when-not-to-use or alternative recommendations.

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

create_eventCreate map eventA

Add a new event to a map at (x, y). If no pages are given, a single empty page (action-button trigger, no commands) is created. Returns the new event id.

NameRequiredDescriptionDefault
xYes
yYes
nameYes
noteNo
mapIdYes
pagesNoOptional event pages; defaults to one empty page

TDQS

A4.2/5.0
Behavior4/5

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

Without annotations, the description discloses key behaviors: the return of the new event id and the default empty page creation. This is adequate for a creation tool, though more detail on persistence or side effects could improve it.

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

Conciseness5/5

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

The description is extremely concise with two sentences, immediately stating the core action and the critical default behavior. No unnecessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and low schema coverage, the description covers the essential aspects: function, default page behavior, and return value. It is fairly complete for a simple creation tool, though it could elaborate on other parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is low (17%), but the description adds meaningful context for the 'pages' parameter by explaining default behavior. Other parameters like x, y, name, note, and mapId remain unexplained, leaving gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Add' and the resource 'event to a map at (x, y)', making the tool's purpose unambiguous. It also naturally distinguishes from siblings like 'update_event' and '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.

Usage Guidelines4/5

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

The description provides explicit guidance on the page parameter behavior, helping the agent understand default behavior. However, it does not explicitly contrast with alternatives or state when not to use this tool.

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

create_event_from_templateCreate event from templateA

Creates a complete, ready-to-use map event at (x, y) from a template, in one write. Refuses out-of-bounds tiles, and refuses a tile that already holds an event unless allowStack is true. Graphics default to none: events are INVISIBLE in game until an image is supplied (chest: closedImage/openImage, npc: image; locked_door, inn, shop and save_point never get a graphic and are meant to sit on a tile that already looks right). Templates and their params: chest {reward: {gold?, item?: {type: item|weapon|armor, id, count?}}, message?, closedImage?, openImage?} (two pages: the action button opens it and sets self switch A, then an empty opened page; if only closedImage is given, openImage defaults to the same graphic with direction 8 - the opened-chest frame of the standard chest sheets); locked_door {keyItemId, destination: {mapId, x, y, direction?: 0|2|4|6|8}, lockedMessage?, consumeKey?} (transfers the player if the party holds the key); inn {price, greeting?} (Stay/Leave choice; staying charges gold, fades out, restores the party, fades in); shop {goods: [{type: item|weapon|armor, id, price?}] (1-40; price defaults to the database price), purchaseOnly?}; save_point {} (opens the save screen); npc {lines: string[], face?: {name, index}, image?}. Image = {characterName, characterIndex (0-7), direction?: 2|4|6|8, pattern?: 0|1|2}. Returns { eventId, name, pages }.

NameRequiredDescriptionDefault
xYes
yYes
faceNonpc: face portrait { name, index }
nameNoEvent name; defaults to the template name (Chest, Door, Inn, Shop, Save Point, NPC)
goodsNoshop: 1-40 entries { type: item|weapon|armor, id, price? }; omit price for the database price
imageNonpc: the NPC's character graphic
linesNonpc: lines of dialogue (4 per message box)
mapIdYes
priceNoinn: gold per night (>= 0)
rewardNochest: { gold?: number, item?: {type: item|weapon|armor, id, count?} }, at least one
messageNochest: text shown when opened (default "You found treasure!")
greetingNoinn: text shown first
templateYesWhich template to build; the other fields depend on it
keyItemIdNolocked_door: item id of the key
openImageNochest: graphic after opening (default: closedImage facing up)
allowStackNoAllow placing the event on a tile that already has an event
consumeKeyNolocked_door: remove one key on use
closedImageNochest: graphic before opening
destinationNolocked_door: { mapId, x, y, direction?: 0|2|4|6|8 }
purchaseOnlyNoshop: disable selling
lockedMessageNolocked_door: text when the player has no key (default "It's locked.")

TDQS

A4.6/5.0
Behavior5/5

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 that this is a write, refuses out-of-bounds tiles and stacking unless allowStack is true, explains that graphics default to none making events invisible, and details template-specific side effects (chest pages, locked_door transfers, inn charges). It also states 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.

Conciseness4/5

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

The description is long but justified by 21 parameters and 6 templates. It is front-loaded with the core action and constraints, and every sentence adds information. Still, a dense paragraph could be more scannable as a list.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (21 params, nested objects, 6 templates) and no output schema, the description covers constraints, defaults, template behaviors, and return value thoroughly. Nothing critical for correct invocation appears missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 86% (high), so baseline is 3. The description adds value by summarizing template-dependent parameters and defaults (e.g., openImage defaults to closedImage facing up; shop goods 1-40; reward requires at least one). However, much of the template parameter listing duplicates schema descriptions, so it doesn't fully transcend the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Creates'), resource ('map event'), and scope ('at (x, y) from a template, in one write'). This clearly distinguishes it from generic siblings like create_event or update_event by emphasizing the template-based approach.

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

Usage Guidelines4/5

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

Provides clear context: use for building standard events (chest, npc, etc.) in a single write. However, it never explicitly names alternatives (e.g., create_event) or states when not to use this tool, leaving that to inference.

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

create_healing_skillCreate healing skillB

Create a complete healing skill in one call. The formula uses MV damage syntax (a = user), e.g. 'a.mat * 2 + 200'. Heals HP or MP; optionally also removes states (e.g. a cure spell).

NameRequiredDescriptionDefault
nameYes
noteNo
scopeNoTarget scope: 1 one enemy, 2 all enemies, 3-6 random enemies (1-4), 7 one ally, 8 all allies, 9 one dead ally, 10 all dead allies, 11 the user (default: one ally)
mpCostNo
tpCostNo
formulaYesRecovery formula, e.g. 'a.mat * 2 + 200'
stypeIdNoSkill type id (1 = Magic by default)
occasionNoWhen usable: 0 always, 1 battle only, 2 menu only, 3 never
varianceNo
iconIndexNoIcon sheet index
animationIdNoAnimation id from the Animations database (0 = none, -1 = normal attack)
descriptionNoTwo-line description shown in menus
recoverTypeNohp
removeStatesNoState ids to remove from the target (100% chance), e.g. poison

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It discloses formula syntax and functionality but lacks details on side effects, validation, or 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.

Conciseness5/5

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

Two sentences, front-loaded with purpose, no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema and minimal description for a tool with 14 parameters. Missing explanation of return value, error cases, and parameter interactions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Adds meaning for formula, recoverType, removeStates beyond schema. However, with 57% schema coverage and 14 parameters, many parameters (scope, costs, etc.) are not explained in description beyond schema defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it creates a complete healing skill with MV damage syntax, healing HP/MP, and removing states. Distinguishes from siblings like create_damage_skill and create_state_skill.

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

Usage Guidelines3/5

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

Implied usage for healing skills but no explicit guidance on 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.

create_mapCreate mapA

Create a new map: writes MapXXX.json and registers it in MapInfos.json. The map starts empty unless fill is given (a ground tile for layer 0); afterwards use paint_tiles to paint it, get_tileset_info to choose tiles and add events with the event tools. Returns the new map id.

NameRequiredDescriptionDefault
fillNoOptional tile to fill layer 0 with, e.g. {sheet:'A2', kind:16} for grass
nameYes
widthNo
heightNo
parentIdNoParent map id in the editor tree (0 = top level)
tilesetIdNo

TDQS

A4/5.0
Behavior4/5

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 that files are written, that MapInfos.json is mutated, that the map is empty by default unless fill is supplied, and that the new map id is returned. It does not mention validation behavior (duplicate names, bad tilesetId) or whether the change is undoable.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the core action and effects, then the fill caveat, then the workflow and return value. No sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description still states what is returned (the new map id), and it covers side effects and the empty-by-default behavior. The main remaining gap is the create_map vs generate_map distinction and any failure modes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33%, so some compensation is needed; the description does explain `fill` semantics (a ground tile for layer 0) beyond the schema's own example. But width, height, tilesetId and parentId get no additional meaning from the description, leaving half the surface undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Create a new map") and spells out the concrete effects: writing MapXXX.json and registering in MapInfos.json. It does not, however, distinguish itself from the sibling generate_map, which an agent could reasonably confuse with this tool.

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

Usage Guidelines4/5

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

Gives an explicit follow-up workflow (paint_tiles to paint, get_tileset_info to choose tiles, event tools to add events), which is real routing guidance. It omits when to prefer create_map over generate_map or update_map, and any preconditions about the project state.

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

create_pluginCreate pluginA

Create a new plugin file in js/plugins/ and register it. If no code is given, a standard MV plugin scaffold (with @plugindesc header) is written. Fails if the file already exists.

NameRequiredDescriptionDefault
codeNoFull JavaScript source; omit for a scaffold
nameYesPlugin file name without .js
statusNo
descriptionNo

TDQS

A3.8/5.0
Behavior4/5

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 creation location, registration, scaffold generation when no code, and failure if file exists. This is largely sufficient for a file creation tool, though return behavior is not mentioned.

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

Conciseness5/5

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

Two sentences, front-loaded with core action and key behaviors. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description lacks information about what the function returns (e.g., success status or plugin object). It covers the main behavior but omits return value and potential side effects like state changes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% with parameters 'status' and 'description' lacking descriptions in schema. The description does not add any information about these parameters, failing to compensate for the gap. It reiterates the scaffold behavior for 'code' already stated in schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Create', the resource 'plugin file' with location 'js/plugins/', and the action 'register it'. It also distinguishes from siblings by noting 'Fails if the file already exists', implying this is for new files only.

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

Usage Guidelines3/5

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

The description implies usage for creating new plugins but does not explicitly state when to use alternatives like write_plugin or configure_plugin. The failure condition on existing files gives some guidance, but no when-not or alternative references.

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

create_recordCreate database recordA

Append a new record to a database. The new record's fields are copied from data; missing fields should be filled in to match the shape of existing records (fetch one with get_record as a template first). Returns the new id.

NameRequiredDescriptionDefault
dataYesThe record fields (id is assigned automatically)
typeYesWhich database to access (e.g. actors, items, skills, troops, commonEvents)

TDQS

A4.5/5.0
Behavior4/5

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 that fields are copied from 'data', id is auto-assigned, and returns the new id. It also suggests using get_record as a template, adding useful 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.

Conciseness5/5

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

Two sentences, no waste. The purpose and usage pattern are front-loaded. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (2 params, no output schema), the description covers purpose, parameter behavior, return value (new id), and a recommended usage pattern. It is complete and self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, baseline 3. The description adds meaning beyond the schema: it explains that 'data' fields are copied, id is automatic, and 'type' specifies which database. This provides actionable guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Append a new record to a database') and the resource, distinguishing it from siblings like update_record or list_records.

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

Usage Guidelines4/5

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

The description advises using get_record as a template, providing clear context, but does not explicitly state when not to use the tool or list alternatives beyond the implicit sibling differentiation.

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

create_state_skillCreate state skillB

Create a skill that adds or removes states (poison, sleep, etc.) on the target, each with its own success chance. State ids come from the States database (list_records type=states).

NameRequiredDescriptionDefault
nameYes
noteNo
scopeNoTarget scope: 1 one enemy, 2 all enemies, 3-6 random enemies (1-4), 7 one ally, 8 all allies, 9 one dead ally, 10 all dead allies, 11 the user (default: one enemy for add, one ally for remove)
actionNoadd
mpCostNo
statesYesStates to add/remove
tpCostNo
stypeIdNoSkill type id (1 = Magic by default)
occasionNoWhen usable: 0 always, 1 battle only, 2 menu only, 3 never
iconIndexNoIcon sheet index
animationIdNoAnimation id from the Animations database (0 = none, -1 = normal attack)
descriptionNoTwo-line description shown in menus

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided; description only states the basic action without disclosing side effects, permissions, or other behavioral traits.

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

Conciseness5/5

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

Two sentences, front-loaded with core purpose, no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 12 parameters and no output schema or annotations, the description is too brief to cover tool complexity; key parameters like scope, occasion, icon are left unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage at 58% is moderate; description adds context about state IDs from the States database, but otherwise does not significantly enhance understanding beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool creates a skill that adds/removes states with success chances, distinguishing it from damage/healing skill tools.

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

Usage Guidelines3/5

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

Implies use when you need state effects, but no explicit when-to-use or when-not vs alternatives like create_damage_skill.

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

delete_eventDelete map eventA

Delete an event from a map. The slot is set to null so other event ids are unaffected (matches editor behavior).

NameRequiredDescriptionDefault
mapIdYes
eventIdYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does add real behavioral insight: the slot is nulled so other event ids stay stable, which explains the data-model consequence of deletion. However it never states that the operation is destructive/irreversible, whether it is transactional or undoable via undo_changeset, or what happens to references to the deleted event.

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

Conciseness5/5

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

Two short sentences, zero padding, with the core action stated first and the behavioral caveat second. Nothing could be removed without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter destructive mutation tool with no annotations and no output schema, the description should say whether the deletion is reversible or requires a changeset, and it omits both. The null-slot detail partially compensates but leaves the safety profile underspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate for mapId and eventId, and it largely does not — it only hints at id-slot semantics via the null-slot note. It never clarifies whether eventId is a map-event id versus an event page index, which is the main ambiguity risk in this domain.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Delete an event from a map" is a specific verb plus resource, and the delete verb cleanly separates it from siblings like update_event, get_event, and create_event. An agent can identify the operation from the first four words.

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

Usage Guidelines3/5

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

The usage is implied by the name, but the description never says when to prefer this over update_event, undo_changeset, or discard_changeset, nor whether a changeset must be open first. No exclusions or prerequisites are given.

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

discard_changesetDiscard changesetA

Drop every edit staged by the open changeset. Nothing on disk changes (nothing of the changeset was on disk yet), and reads go back to the files on disk. The RPG Maker editor must stay closed while the server edits the project.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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 that on-disk files are untouched, that reads revert to disk state, and that the RPG Maker editor must stay closed during edits. It stops short of stating what happens if no changeset is open or whether the dropped edits are unrecoverable.

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

Conciseness5/5

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

Three short sentences, front-loaded with the action, then consequences, then the precondition. Every sentence adds distinct information with no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a parameterless tool with no output schema, the description covers effect, side effects, and the editor-closed precondition. Only the failure mode (no open changeset) and the irreversibility of the discard are left unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so there is nothing to disambiguate; baseline applies. The description correctly implies no input is needed beyond there being an open changeset.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb and resource: "Drop every edit staged by the open changeset" precisely names the action and its scope. It does not, however, distinguish itself from the sibling undo_changeset or commit_changeset, which an agent would need to choose among.

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

Usage Guidelines3/5

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

Referring to "the open changeset" implies begin_changeset must have run first and that the editor must be closed, which is useful context. But it never says when to discard versus undo (undo_changeset) or commit, leaving the most consequential choice to inference.

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

editor_statusEditor statusA

Check whether the RPG Maker MV editor appears to be running and which files this server wrote have since been changed by something else (usually the editor saving over them). Report only: it never blocks or undoes any edit.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description does real work: it declares the tool is purely diagnostic, that it never blocks or undoes edits, and that a nonzero result usually means the editor saved over server files. Missing only details of the report's shape or how detection is confirmed.

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

Conciseness5/5

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

Two tight sentences; the primary check is first, the file-divergence case second, and the read-only caveat last. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description carries the burden, and it covers purpose plus read-only safety. It stops short of describing what the report contains (e.g., list of changed paths, running/not-running flag), which is the one thing an agent must guess.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline of 4 applies; nothing in the description could add parameter meaning, and it correctly implies no arguments are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific check: whether the MV editor is running plus which server-written files have diverged, with the likely cause (editor saving over them) named. It is clearly distinguishable from playtest_status and the changeset/backup tools, though it does not name any sibling explicitly.

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

Usage Guidelines3/5

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

The purpose implies when it is useful (detecting external/editor edits to files the server wrote), and 'Report only: it never blocks or undoes any edit' steers agents away from expecting remediation. But there is no explicit 'use this before X' or 'use restore_backup instead if you want to revert', so timing and alternatives remain inferred.

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

event_command_referenceEvent command referenceA

Reference table of RPG Maker MV event command codes and their parameters. Consult this before writing or editing event command lists.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

No annotations exist, so the description carries the burden. 'Reference table' implies a safe read operation, but the description never states that it is read-only, what shape the reference data takes, how complete the code coverage is, or whether it is version-scoped. Adequate but thin for a tool with zero structured behavior metadata.

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

Conciseness5/5

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

Two sentences, zero waste, with the identity of the resource front-loaded and the actionable instruction second. Exactly the right size for a zero-param lookup.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description is the only source of information about what the agent gets back. It says 'reference table' but not the return shape, coverage, or whether it includes examples, which leaves a real gap for a tool whose entire value is its output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, which is the baseline-4 case; there is nothing for the description to disambiguate. No misleading parameter hints are present.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource ('RPG Maker MV event command codes and their parameters') and frames it as a reference/lookup table, which is clearly distinct from mutation siblings like add_event_command or update_event. It stops short of naming a specific sibling to contrast with, keeping it at a solid 4 rather than 5.

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

Usage Guidelines4/5

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

Explicitly says when to use it: 'Consult this before writing or editing event command lists,' which directly points the agent at the pre-write phase and implicitly steers away from the mutating siblings. No explicit exclusions or named alternatives are given, so 4 is right.

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

export_textsExport all game textsA

Export every translatable text of the project to a CSV or JSON file inside the project (default localization/texts.csv) with columns key, context, original, translation. Covers database names/descriptions/messages, System terms and type names, the game title, map display names, and event text (dialogue boxes as one row each with lines joined by newlines, choices, scrolling text, actor name/nickname/profile commands) in maps, common events and troop battle events. If the file already exists its translations are carried over by key, so re-exporting after changes never loses work. Fill in the translation column (leave empty to keep the original), then use import_texts. See the rpgmaker-localization skill for rules about control codes and message length.

NameRequiredDescriptionDefault
fileNoOutput path relative to the project folder (default localization/texts.<format>)
scopeNoLimit to some categories (default: all)
formatNocsv

TDQS

A4.3/5.0
Behavior4/5

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 that the file is written inside the project, the default path, and crucially that existing translations are carried over by key so re-exporting never loses work. It omits whether a re-export overwrites unrelated edits to the file's other columns or clears empty translations, which would complete the mutation story.

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

Conciseness4/5

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

One dense paragraph that front-loads the verb, output format, and default path before the detail. It is long, but nearly every clause carries actionable information (carry-over behavior, column list, import follow-up); only the event-text enumeration is slightly sprawling.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-param, no-output-schema export tool, the description covers effects, defaults, idempotency, and the follow-up tool. The one gap is that it never describes what the call itself returns (row count, file path confirmation, warnings), which is the kind of detail the missing output schema would otherwise supply.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%; the description adds meaning by tying format to the resulting extension (default localization/texts.csv, CSV or JSON), naming the categories that correspond to the scope array, and explaining that the translation column may be left empty. It does not explain how the scope enum values map one-to-one to the listed content categories, but the coverage and defaults make calling it straightforward.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (export) and resource (every translatable text of the project), then enumerates exactly which content categories are covered (database names/descriptions/messages, System terms, type names, game title, map display names, event text). This is clearly distinguishable from the sibling import_texts, which is named as a separate step.

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

Usage Guidelines4/5

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

Explains the workflow explicitly: export, fill in the translation column (leave empty to keep the original), then use import_texts. It also points to the rpgmaker-localization skill for control-code and message-length rules. It does not state any when-not-to-use condition, but the sequencing against import_texts is clear.

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

find_usagesFind usagesA

Lists everywhere one switch, variable, item, weapon, armor, skill, state, actor, class, enemy, troop, common event or map is read, written or used, and warns about dead ends. Use it before renaming, deleting or reusing an id. reads: page conditions, Conditional Branch (111), variable operands and \V[n] text escapes; writes: Control Switches/Variables (121/122), Change Items/Weapons/Armors (126-128), Change Party Member (129), Change State/Skill (313/318), set-switch route steps; uses: Transfer Player (201), Common Event (117), Battle Processing (301), shops (302/605), actor commands, enemy drops and actions, class learnings, actor equipment, troop members, item/skill effects, map encounter lists, System startMapId and partyMembers. It reads staged changeset data. Each location is a string: 'Map003 event 5 page 1 command index 12', 'CommonEvent 4 command index 7', 'Troop 2 page 1 command index 3', 'Enemies #4 dropItems', 'System startMapId', 'Map003 encounterList'. Map ids, event ids, common event ids and troop ids are the real ids and pages are 1-based like the editor shows them, but 'command index N' is the 0-based position in the command list (the index lint_events reports). A location without a command index is a page condition. counts are the true totals; each list is cut at limit entries and truncated gives the omitted counts. warnings cover: a switch or variable that is read but never set, or set but never read; a common event never called (autorun and parallel common events are exempt); a map nothing transfers to; and an id with no name or record (unknown id, not an error). Script commands (355), plugin commands (356), variable-designated transfers and battles, notetags and plugin parameters are not understood, so every 'never ...' warning carries a note when the project has script or plugin commands (or truncated range commands) that could act on the id. Only the 121/122 ids up to 1000 per command are indexed.

NameRequiredDescriptionDefault
idYesId of the switch, variable, database record, common event or map.
kindYesWhat to look up.
limitNoMost locations listed per role (reads, writes, uses).

TDQS

A4.6/5.0
Behavior5/5

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: it discloses that it reads staged changeset data, that counts are true totals while lists truncate at limit, exactly which warning classes are produced, and which constructs (355/356, variable-designated transfers/battles, notetags, plugin params, ids above 1000) are not understood and therefore weaken "never" warnings. This is precisely the caveat an agent needs to avoid over-trusting results.

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

Conciseness4/5

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

Front-loaded with purpose and a use-before-mutating rule, then scoping, then location-string format, then limitations — a sensible order. The exhaustive command-code enumerations (111, 121/122, 126-128, 313/318, 301/302/605) are dense and somewhat redundant with the opening kind list, but each block adds real coverage information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description compensates fully: it gives exact location string forms ('Map003 event 5 page 1 command index 12', 'System startMapId'), defines index/pagination conventions including 0-based command index vs 1-based pages, and describes the shape of counts, truncated and warnings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description goes beyond it by explaining that an id with no name or record yields an 'unknown id' rather than an error, and that each per-role list is cut at limit with omitted counts reported via truncated. It does not spell out the kind enum values beyond the opening enumeration, but the schema covers those.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource: lists every place one switch/variable/record is read, written or used, plus dead-end warnings. The enumerated kinds and the read/write/use taxonomy make it unmistakably distinct from siblings like check_references, search_records or lint_events.

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

Usage Guidelines4/5

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

"Use it before renaming, deleting or reusing an id" gives a concrete trigger condition for calling it. It does not explicitly name competing alternatives (check_references, search_records) or state when not to use it, so it stops short of a full routing rule.

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

generate_enemy_scalingGenerate enemy scalingA

Spread enemy stats along a curve for smooth difficulty progression. Give the enemies ordered from weakest to strongest; the first gets each curve's start, the last its end, the rest are interpolated with the chosen shape. Curves can target any parameter (mhp, mmp, atk, def, mat, mdf, agi, luk) plus exp and gold. Dry run by default - shows before and after per enemy; pass dryRun=false to write.

NameRequiredDescriptionDefault
curvesYes
dryRunNo
enemyIdsYesEnemy ids from weakest to strongest

TDQS

A3.9/5.0
Behavior4/5

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 dry-run-by-default safety behavior, that it shows before/after per enemy, and that dryRun=false actually writes. Missing limits (max 10 curves / 200 enemies) and error behavior, but the core mutation behavior is transparent.

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

Conciseness5/5

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

Front-loaded with the purpose, followed by ordering rules, targetable params, and the write behavior. Four sentences with no filler, each carrying distinct needed information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description covers the safety default, output preview, and interpolation semantics. It omits collection limits and handling of unspecified params, so it is not fully complete but is solidly sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33%, and the description compensates by explaining that enemyIds must be weakest-to-strongest, that the first enemy gets each curve's start and the last its end, that middle ones are interpolated, and that curves target stats plus exp/gold. This adds meaning beyond the schema's per-field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: spreading enemy stats along a curve for difficulty progression. Very clear what it does. However, it does not differentiate from the sibling generate_param_curve, which appears to be the closest alternative, so sibling differentiation is missing.

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

Usage Guidelines3/5

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

Provides operational guidance (order enemies weakest-to-strongest, dry run by default) but gives no explicit when-to-use versus the analogous generate_param_curve sibling, nor any exclusions. Usage is implied rather than stated with clear boundaries.

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

generate_mapGenerate mapA

Procedurally generate a dungeon (rooms joined by corridors) or a cave (organic, one connected region) and paint it with a tile profile. Give exactly one of mapId (generate into an existing map, using its size and tileset) or create (make a new map and register it in MapInfos.json). An existing map that has any tile or any event is refused unless overwrite is true; overwrite resets every tile layer and removes all events. seed makes the result repeatable; when omitted a random seed is picked, and the seed used is always returned. The profile (floor, wall, optional wallTop, optional weighted decor) defaults to suggestTileProfile, which works from the tileset's data only: the lowest-numbered walkable A2 kind as floor (else the first walkable A5 tile), the lowest-numbered blocking A4 wall kind as wall with the floor-rule A4 kind above it as wall top (else the first blocking A5 or B tile), and no decor. The profile used and the reasoning are returned as profileUsed and profileNotes. Nothing is written when the profile's floor is not walkable, its wall or wall top does not block movement, a sheet has no image, or the painted map is not fully reachable from the entrance. Markers are empty placeholder events at priority 0 (below characters, so they never block the player) named Entrance, Exit and Chest 1..n, placed on floor cells; chests are random floor cells away from the entrance and exit, chosen so that no chest cuts off any part of the map. markers defaults to {entrance: true, exit: true, chests: 0}. The result lists each marker's eventId and position under markers. Afterwards: call render_map_image to look at the result (consider showPassability); wire doors to other maps with connect_maps using the returned entrance and exit coordinates; fill the chest markers with create_event_from_template or the event tools. A marker occupies its tile: delete it with delete_event before placing a door or chest there, or pass allowOverlap (connect_maps) / allowStack (create_event_from_template) to place on top of it. A dungeon needs a map of at least 14x7 (or 7x14) cells; smaller maps are refused with a clear error (caves are reliable from about 13x13, and MV's default 17x13 never failed in testing; 9x9 to 12x12 and thin maps fail for many seeds, so try another seed or a larger map). Limits: decor is best-effort (sparse, only on open floor), and wall faces are a one-row simplification, since many tilesets draw wall sides two or more tiles tall.

NameRequiredDescriptionDefault
kindYes
seedNoSame seed, size and options give the same layout; random when omitted
mapIdNoExisting map to generate into (use instead of `create`)
createNoNew map to create (use instead of `mapId`)
markersNo
profileNoTiles to paint with; defaults to a suggestion from the tileset
overwriteNoAllow replacing a map that already has tiles or events

TDQS

A4.7/5.0
Behavior5/5

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 that overwrite resets every tile layer and deletes all events, enumerates the four conditions under which nothing is written (a transactional guarantee), explains seed determinism and that the seed is always returned, and declares limits (decor is best-effort, wall faces are a one-row simplification).

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

Conciseness4/5

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

It is front-loaded (what it does first, then parameters, then workflow, then limits) and nearly every sentence carries unique information. It is nonetheless a dense block of prose with the size-requirement guidance and limits appended as run-on sentences, which hurts scannability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description tells the agent what the result contains (seed, profileUsed, profileNotes, and markers with eventId and position), so return values need no further documentation. For a 7-parameter nested-object generator 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.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

It adds meaning well beyond the 71%-covered schema: the mutual exclusivity of mapId and create is not encoded in the schema but is stated explicitly, the seed's reproducibility contract is described, the markers default object is restated with the tile-occupancy consequence, and the profile default is fully explained via the suggestTileProfile resolution rules.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise verb+resource ('Procedurally generate a dungeon … or a cave') and even defines what each kind produces (rooms joined by corridors vs. one organic connected region). It doesn't explicitly contrast itself with siblings like create_map or paint_tiles, so an agent must infer that this is the generative path rather than the manual one, keeping it short of a 5.

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

Usage Guidelines5/5

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

It states the exclusive mapId-vs-create choice, the overwrite precondition, the refusal conditions, and then prescribes the follow-up workflow (render_map_image to inspect, connect_maps for doors, create_event_from_template for chests, delete_event/allowOverlap for marker placement). Alternative selection and sequencing are spelled out rather than inferred.

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

generate_param_curveGenerate class parameter curveA

Generate stat curves over levels and (optionally) write them into a class. Each curve goes from start at minLevel to end at maxLevel with a shape: linear, ease-in (slow start), ease-out (fast start), ease-in-out, exponential (constant growth factor) or logistic (S-curve). Without classId this is a pure preview of the numbers. With classId the class's params table is rewritten for minLevel..maxLevel (other levels are untouched) - dry run by default, pass dryRun=false to apply. Follow up with balance_report to see how the new curve plays against enemies.

NameRequiredDescriptionDefault
curvesYes
dryRunNo
classIdNoWrite the curves into this class
maxLevelNo
minLevelNo

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the safety burden well: it discloses that classId causes a write, that only minLevel..maxLevel rows change while 'other levels are untouched', and that dryRun defaults to true. It stops short of stating reversibility or whether a changeset must be open (siblings begin_changeset/commit_changeset imply that may matter), leaving one real gap.

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

Conciseness5/5

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

Four tight sentences, front-loaded with purpose, then the shape vocabulary, then the preview/write fork and the dry-run default. Every clause earns its place; nothing is repeated from the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a five-parameter mutation tool with no annotations and no output schema, the description covers the essential decision points: preview vs apply, level range scope, and the follow-up tool. The remaining omission is workflow integration (changeset/commit requirements for the write path), which would matter for an agent editing a live project.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 20%, so the description has to compensate, and it does: start/end endpoint meaning, the classId write target, and dryRun semantics are all clarified, plus the shape names are explained in plain terms ('ease-in (slow start)', 'exponential (constant growth factor)') beyond the bare enum. It does not convey minLevel/maxLevel defaults or the 8-item cap on curves, but the core meaning is supplied.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('Generate stat curves over levels') and immediately distinguishes the two operating modes: pure preview without classId vs. rewriting the class params table with it. Its curve-shape vocabulary and level-scoping language make it clearly separable from siblings like generate_enemy_scaling and balance_report.

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

Usage Guidelines5/5

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

It names the exact condition that switches behavior ('Without classId ... With classId ...'), specifies the dry-run default and how to override it (dryRun=false), and hands off the natural follow-up ('Follow up with balance_report'). An agent has no ambiguity about when to call this or what comes next.

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

get_eventGet map eventA

Get the full JSON of one event on a map, including all pages and command lists.

NameRequiredDescriptionDefault
mapIdYes
eventIdYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. It does disclose the return content ('full JSON ... including all pages and command lists'), which is useful, but says nothing about read-only safety, error behavior for missing ids, or whether the JSON can be large.

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

Conciseness5/5

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

A single front-loaded sentence with no filler; the scope and payload contents come first and every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with no output schema, the description adequately conveys what comes back (full event JSON with pages and command lists). Minor gaps remain around failure behavior and payload size, but nothing essential to invoking it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the two parameters (mapId, eventId) are self-describing by name and the schema supplies types and minimums. The description only implicitly conveys that both identifiers jointly select the record; it adds little beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get the full JSON of one event on a map') and scopes the payload to all pages and command lists, which tells an agent this is a full single-record retrieval. It does not explicitly distinguish itself from siblings like search_map_events or simulate_event, leaving that differentiation implicit.

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

Usage Guidelines3/5

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

The 'one event' framing implies usage when a single event id is known, but there is no explicit when-to-use vs when-not guidance and no named alternative for finding events you cannot identify by id (e.g., search_map_events).

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

get_mapGet mapA

Read a map's properties (size, tileset, music, encounters, notes) and event summaries. Tile data is omitted unless includeTileData=true (it is large: widthheight6 integers).

NameRequiredDescriptionDefault
mapIdYes
includeTileDataNo

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral burden well by disclosing that tile data is omitted by default and is large when included. It also makes the read-only nature clear through 'Read'. It does not cover error behavior for invalid map IDs or 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.

Conciseness5/5

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

The description is two efficient sentences, front-loaded with the main purpose and followed by the important tile-data conditional. Every sentence adds useful information without repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with no output schema, the description gives enough context to call it correctly: it lists returned property categories and explains the costly optional tile data. It could be more complete by mentioning behavior for missing maps or the shape of event summaries.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains includeTileData clearly, including its default omission and size cost, but it does not add meaning for mapId beyond the obvious name and integer constraint.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: read a map's properties and event summaries. It lists concrete returned fields (size, tileset, music, encounters, notes), making the tool clearly distinct from siblings like update_map or list_maps, though it does not explicitly name those alternatives.

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

Usage Guidelines3/5

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

Usage is implied: fetch details for a single map rather than listing or updating maps. However, the description does not explicitly say when to use get_map versus list_maps, render_map, or get_event, nor does it state 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.

get_project_infoGet project infoA

Summary of the current project: game title, database record counts, map count, and plugin count.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It describes the output but does not explicitly state read-only behavior or lack of side effects. Adequate but could be more transparent.

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

Conciseness5/5

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

Single sentence that is front-loaded and efficient, no superfluous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description explains the return value adequately. For a simple parameterless tool, this is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters, schema coverage 100%. Description adds value by listing the specific fields in the summary, which is helpful beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it provides a summary of the current project with specific enumerations: game title, database record counts, map count, and plugin count. Well distinguishes from sibling tools like get_system or list_*.

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

Usage Guidelines3/5

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

Implies usage for obtaining a high-level project overview, but lacks explicit guidance on when to use or not use this tool versus alternatives.

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

get_recordGet database recordA

Get the full JSON of one database record by id.

NameRequiredDescriptionDefault
idYesRecord id (1-based)
typeYesWhich database to access (e.g. actors, items, skills, troops, commonEvents)

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. 'Full JSON' usefully signals that the complete record is returned rather than a summary, but it says nothing about read-only semantics (only implied), error behavior on a missing id, or whether related sub-records are expanded.

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

Conciseness5/5

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

A single front-loaded sentence with no filler; the key constraint ('one record by id') appears immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A simple two-parameter read tool with a fully described schema and no output schema; 'full JSON' adequately sets the return expectation. A brief note on missing-id behavior or the record-type enum would make it complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the 'id' and 'type' semantics are already fully documented in the schema, including the 12-value enum. The description adds only the general notion of selecting by id, which is a baseline-3 contribution.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get the full JSON of one database record by id'), naming both the object and the lookup key. It implicitly contrasts with list_records/search_records by stressing 'one' record, but never names an alternative explicitly.

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

Usage Guidelines3/5

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

Usage is only implied: call it when you already know the record type and id. There is no statement of when to prefer search_records or list_records instead, and no note about what happens for a nonexistent id.

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

get_systemGet System.jsonA

Read System.json (game title, starting party/position, terms, sounds, switches, variables, etc.). Optionally return only one top-level key.

NameRequiredDescriptionDefault
keyNoOptional top-level key to return (e.g. 'switches', 'variables', 'terms')

TDQS

A4/5.0
Behavior4/5

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

The description 'Read' clearly indicates a non-destructive, read-only operation. It also discloses the optional key filtering behavior. However, no annotations are provided, so the description carries the full burden; it could mention safety or lack of side effects explicitly.

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

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the core functionality. Every word serves a purpose, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (one optional param, no output schema), the description covers the main behavior and optional filter. It does not describe the return format, but the tool's purpose is clear. For a read-only tool, it is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers the parameter with description 'Optional top-level key to return (e.g. 'switches', 'variables', 'terms')'. The description repeats this, adding no new semantic detail. Baseline 3 is appropriate for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads System.json and lists its contents (game title, terms, etc.). It also mentions the optional key parameter that allows returning only one top-level key, distinguishing it from other tools like get_project_info.

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

Usage Guidelines3/5

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

The description implies usage for reading system configuration, but does not explicitly state when to use this tool versus alternatives or exclude specific scenarios. No guidance on prerequisites 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.

get_tileset_imageGet tileset sheet imageA

Return one tileset sheet (A1-A5, B-E) as an image so you can see which tile looks like what, together with its grid layout (48px tiles). Use get_tileset_info for the matching tile ids and kinds.

NameRequiredDescriptionDefault
sheetYes
tilesetIdYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden; it does disclose the return type (an image) and the 48px grid layout, which is real value beyond structured fields. However, it omits image format/size, whether a tile set must exist, and any cost or rate considerations for fetching an image payload.

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

Conciseness5/5

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

Two sentences, purpose and return shape front-loaded, then the sibling routing. Every clause earns its place with no repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter image-returning tool with no output schema, the description covers what comes back (image plus grid layout) and how to pair it with get_tileset_info. Minor gaps remain on image format and error conditions, but an agent can call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate; it does clarify that 'sheet' selects one of the A1-A5/B-E sheets and that tilesetId identifies the tileset. It adds no detail on tilesetId validity, existence, or how sheet names map to layout regions beyond the enum already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Return one tileset sheet ... as an image') and explicitly scopes the sheet enum to A1-A5 and B-E. It also distinguishes itself from the closest sibling, get_tileset_info, by stating the visual purpose ('see which tile looks like what').

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

Usage Guidelines4/5

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

Explicitly routes the agent: use this to visually identify tiles, use get_tileset_info 'for the matching tile ids and kinds'. The selection condition is clear, but there is no statement of when not to use it (e.g. if you only need ids, don't fetch the image cost).

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

get_tileset_infoGet tileset infoA

Describe a tileset so you can choose tiles to paint: which image is assigned to each sheet (A1-A5, B-E), the tile id ranges, and for autotile sheets every kind with its type, position on the sheet image and passability. Without sheet you get an overview; pass sheet for the detail of one sheet (for A5/B-E that includes a passability grid laid out like the image: o passable, x blocked, * drawn above characters, p partly blocked). Use get_tileset_image to see what the tiles look like. tileIds decodes passability and terrain flags for specific tile ids.

NameRequiredDescriptionDefault
sheetNoReturn the detail of one sheet
tileIdsNo
tilesetIdYesTileset id (a map's tilesetId, see get_map)

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden. It discloses rich return content (sheet/image mapping, autotile kinds, passability grid with an inline legend of o/x/*/p) and clarifies the overview-vs-detail behavior. It does not cover failure modes for an invalid tilesetId or confirm read-only semantics explicitly, so it stops short of 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.

Conciseness4/5

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

A single dense paragraph that front-loads the purpose and then layers mode selection, legend, and alternatives. Every sentence carries information, though the run-on structure could be broken into clearer clauses for faster parsing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description does substantial work by describing the shape of the returned information and decoding the passability grid. It is nearly complete for a read tool, with only output container/format and error behavior left unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%, and `tileIds` has no schema description, so the description's note that 'tileIds decodes passability and terrain flags for specific tile ids' fills a real gap. It also explains that omitting `sheet` returns an overview while passing it selects one sheet, and defines the passability legend for A5/B-E. It omits limit and range details (max 100 ids, 0-8191), keeping it from a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Describe a tileset') and enumerates what it returns: sheet-to-image assignment (A1-A5, B-E), tile id ranges, and autotile kinds with type, position and passability. It also names the sibling get_tileset_image, so an agent can distinguish the two tools without opening schemas.

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

Usage Guidelines5/5

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

Explicitly frames the two modes: 'Without `sheet` you get an overview; pass `sheet` for the detail of one sheet', and routes visual inspection to get_tileset_image and per-tile flag decoding to `tileIds`. When-to-use and alternatives are both named.

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

import_assetImport assetA

Copy an image or sound file from this computer into the project: //.. source must be an absolute local path to a regular file (no relative paths, network/UNC shares, devices or symbolic links). The type is read from the file's header, never its extension: img/* folders take files with a PNG header (max 32 MiB; only the signature + IHDR is checked, not the whole image), audio/* folders take files whose header is Ogg (OggS) or ISO-BMFF/M4A (ftyp) (max 128 MiB; only the header is checked, not the codec or the full file); the extension (.png, .ogg, .m4a) is chosen from the detected header. name defaults to the source file name without its extension and must be 1-64 characters from A-Z a-z 0-9 space _ ! $ ( ) - (no dots, no path); a '$' prefix on a character sheet means one character per sheet, '!' means no offset. An existing file with the same name (letter case ignored) is only replaced with overwrite: true; the session backup (list_backups / restore_backup) keeps the file as it was before this server session first touched it (until set_project is called again, which starts the snapshots over), so a file that was itself created or changed earlier in the same session has no backup of that intermediate version. Nothing is converted or resized; warnings flag sheet sizes that do not fit the folder's layout, and for audio a missing sibling format (MV's web build needs both .ogg and .m4a). Refused while a changeset is open (binary files cannot be staged): commit or discard it first.

NameRequiredDescriptionDefault
nameNoFile name without extension; defaults to the source's base name
folderYesDestination asset folder, e.g. img/characters or audio/bgm
sourceYesAbsolute path of the file to import, e.g. C:\art\Hero.png or /home/me/art/Hero.png
overwriteNoReplace an existing file with this name

TDQS

A4.7/5.0
Behavior5/5

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 thoroughly: header-based type detection with size caps (32 MiB images, 128 MiB audio) and a note that only the header is checked, not the codec or full file. It also discloses backup/snapshot semantics for the session, the case-insensitive replacement rule, warning behavior for sheet layout mismatches and missing sibling audio formats, and the changeset refusal.

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

Conciseness4/5

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

Front-loaded with purpose and destination, and nearly every sentence contributes operational detail. However, it is one dense paragraph that packs type detection, naming rules, overwrite, backup history, warnings, and changeset constraints together; splitting into short scannable blocks would improve it without losing content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter mutation tool with no annotations and no output schema, the description covers everything an agent needs to call it correctly: path constraints, header rules and size caps, naming rules, overwrite behavior, rollback path, and the changeset precondition.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline would be 3, but the description adds substantial meaning beyond it: source must be an absolute path to a regular file with no relative paths, UNC shares, devices, or symlinks; name is 1-64 chars from a specific character set with no dots or path separators; and the '$'/'!' prefixes carry character-sheet semantics. The extension is derived from the detected header, not the provided name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a concrete verb+resource+destination shape: "Copy an image or sound file from this computer into the project: <project>/<folder>/<name>.<ext>." That clearly separates it from read-only siblings like list_assets, preview_asset, and audit_assets.

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

Usage Guidelines4/5

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

Gives real preconditions and exclusions: overwrite must be true to replace, nothing is converted, and the tool is refused while a changeset is open (commit or discard first). It also points to list_backups/restore_backup for the recovery path. It does not explicitly name alternatives such as preview_asset or audit_assets for pre-import validation, so it falls just 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.

import_textsImport translated textsA

Apply the translation column of a file written by export_texts back into the project's data. DRY RUN BY DEFAULT: reports what would change and nothing is written until dryRun=false. Rows with an empty translation are skipped. A row whose original no longer matches the project text (the text changed after export) is skipped unless force=true. Dialogue translations longer than 4 lines are split into several message boxes automatically; choices are kept in sync. Control codes (\C[n], \V[n], \N[n] ...) are compared with the original and mismatches are reported as warnings.

NameRequiredDescriptionDefault
fileYesPath relative to the project folder, e.g. localization/texts.csv
forceNoApply rows even if their original text no longer matches
dryRunNo

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations at all, the description carries the full burden and does well: it discloses the safe-by-default write posture, the skip semantics, automatic splitting of long dialogue into multiple message boxes with choices kept in sync, and control-code mismatch warnings. It stops short of saying whether changes land inside a changeset (begin_changeset/commit_changeset exist as siblings) or whether a backup is taken, which matters for a bulk mutation.

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

Conciseness5/5

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

Front-loads the riskiest fact (dry run by default) in the second clause, then layers skip rules, splitting behavior, and warnings in descending order of importance. Dense but every sentence carries a distinct behavioral fact; nothing is restated from the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter bulk-write tool with no annotations and no output schema, the description covers the safety model, row-level filtering, and structural side effects well. The remaining gap is what the dry-run report actually contains and how it interacts with the project's changeset/backup machinery, which an agent would want before committing a large import.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67% and the undocumented parameter is dryRun, whose meaning the description fully supplies (default true, read-only report, writes only on false). It also elaborates force beyond the schema's one-liner by explaining that it overrides the original-text mismatch guard. The file path parameter is left to the schema, which documents it adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Apply the translation column ... back into the project's data') and ties itself to the paired sibling export_texts, which makes the import/export pair unambiguous. An agent can distinguish this from export_texts, bulk_update_records, or update_record 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.

Usage Guidelines4/5

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

Gives clear operating conditions: dry run is the default and nothing is written until dryRun=false, empty rows are skipped, and stale rows are skipped unless force=true. It implies the precondition that the file comes from export_texts but never states an explicit exclusion or prerequisite ordering (e.g. re-export instead of forcing).

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

install_skillsInstall skill filesA

Copy the bundled RPG Maker skill files (workflow guides for map building, event writing, balancing, localization, plugins) into the project's .claude/skills folder so Claude Code picks them up automatically in that project. The same files are always available as resources (rpgmaker://skills/). Existing skill folders are skipped unless overwrite=true.

NameRequiredDescriptionDefault
scopeNo'project' = <project>/.claude/skills, 'user' = ~/.claude/skills (all your projects)project
skillsNoOnly these skill names (default: all)
overwriteNoReplace skill files that already exist

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden itself and mostly does: it discloses the default non-destructive behavior (existing folders are skipped unless overwrite=true), and that the resource copies are always available. It does not describe what a read-only versus user scope does to the filesystem or what is returned, leaving some gaps 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.

Conciseness5/5

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

Three short sentences, front-loaded with what it does and where, followed by the resource fallback and the overwrite caveat. No wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-required-parameter tool with full schema coverage and no output schema, the description covers purpose, destination, idempotency, and an alternative access path. Only the return value and any permission requirements are unstated, which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents scope, skills, and overwrite. The description adds the practical consequence of overwrite=false (skipped rather than erroring), which is genuinely useful, but says nothing beyond the schema about the skills filter or the project/user scope choice.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb (copy) and resource (bundled RPG Maker skill files) plus the exact destination (.claude/skills) and the reason (so Claude Code picks them up). No sibling tool does anything similar, so it is trivially distinguishable.

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

Usage Guidelines4/5

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

The description makes the use case explicit (installing skills so they auto-load in a project) and names an alternative route: the same files are always available as rpgmaker://skills/<name> resources, so an agent can decide not to install. It stops short of an explicit 'when not to use' statement.

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

lint_eventsLint event command listsA

Statically checks event command lists in map events, common events and troop pages. Rules: unterminated-list and block-structure (missing code 0 terminator, unclosed or mismatched choices/branches/loops, indent jumps; error), unreachable-command (a command right after Exit Event Processing at the same indent; warning), long-message-line (a Show Text line too long for the window; warning), transfer-missing-map and transfer-out-of-bounds (direct Transfer Player to a map not in MapInfos or outside its size; error), missing-common-event (Common Event call to an id that does not exist; error), unnamed-switch and unnamed-variable (Control Switches/Variables on ids with no name in System.json; info). Variable-designated transfers are not checked. long-message-line removes message control codes (\C[n], \V[n], \N[n], \P[n], \I[n], { } . | ! > < ^) and compares the remaining character count with maxLineChars; the default of 50 is only an approximation, since real fit depends on the font, face graphic and window width. Findings carry location {kind, mapId, eventId, page, index}; page and index are 0-based positions in the event's pages and command list (common events use page 0, troops use the troop id as eventId). minSeverity defaults to warning, so info findings appear only when requested. scope defaults to all; mapId limits the map part to one map. Maps whose file cannot be read are listed in skippedMaps. Results are sorted by severity then location and capped at 300 findings; counts cover all findings and truncated is the number cut.

NameRequiredDescriptionDefault
mapIdNoLint only this map (affects the maps part of the scope).
scopeNoWhich event lists to lint.all
minSeverityNoLowest severity to report.warning
maxLineCharsNoLongest allowed Show Text line after control codes are removed (approximate).

TDQS

A4.4/5.0
Behavior5/5

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 enumerates every rule with its severity class, discloses what is deliberately not checked ('Variable-designated transfers are not checked'), explains the approximate nature of maxLineChars, and reports output mechanics (sort order, 300-finding cap, truncated count, skippedMaps). This is behavioral context an agent could not get from any structured field.

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

Conciseness4/5

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

Purpose is front-loaded in the first sentence and no sentence is filler; the rule catalogue and output mechanics all earn their place. It is a single dense paragraph, though, so the rule list would scan better as a structured block — a minor structural, not length, issue.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates fully: findings carry {kind, mapId, eventId, page, index}, page/index are documented as 0-based with the troop-id convention for eventId, and truncation/counts/skippedMaps are all described. For a four-parameter read-only lint tool, nothing an agent needs to call it or interpret results is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description genuinely adds: it clarifies that minSeverity's warning default suppresses info findings unless requested, that mapId only narrows the map portion of the scope, and it details exactly how maxLineChars is computed (control codes stripped, font-dependent approximation).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Statically checks event command lists in map events, common events and troop pages.' The scope is exact and it is distinguishable from sibling validators like validate_project or check_references, which are not described as linting event command lists with rule-level severities.

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

Usage Guidelines3/5

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

Usage is implied through defaults ('minSeverity defaults to warning, so info findings appear only when requested', 'scope defaults to all; mapId limits the map part to one map'), which tells the agent how to widen or narrow a run. However, it never explicitly says when to choose this over validate_project or check_references, nor does it state any exclusions, so the agent must infer the routing.

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

list_assetsList assetsA

List the image and sound files in the project's asset folders (img/* and audio/*, 18 folders; all of them or one folder). Each file shows its name (without extension), ext, size in bytes and, for images, the pixel size read from the PNG header, plus warnings (a header that does not match the extension, or a sheet size that does not fit the folder). Only the first 64 bytes of each file are read, so a sound's type is judged from its header alone, not the codec or the whole file. Sub-directories and files with other extensions (.rpgmvp, .txt, ...) are skipped. With includeUsage (default true), files in the folders the reference scan covers (all except img/system and img/animations) get usedBy (at most 3 places, e.g. 'Actor 1', 'Map003 event 5') and unused (true when nothing in the database, maps, common events or troops references the name). Names are matched case-sensitively, so a reference that differs only in letter case shows the file as unused: run audit_assets to find case mismatches and missing files. A plugin or script that loads a file by name is not seen, so check before deleting. Files with names outside the import rule (dots, non-ASCII) are listed too, but preview_asset cannot open them. Interlaced PNGs are flagged in warnings. A folder that cannot be read gets an error on its entry instead of failing the listing. Files are sorted by name; each folder shows at most limit files and truncated counts the rest.

NameRequiredDescriptionDefault
limitNoMaximum files listed per folder
folderNoOnly this folder, e.g. img/characters; omit for all folders
includeUsageNoAdd usedBy/unused (scans the project's data files)

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and discloses many behavioral traits: only first 64 bytes read, sound type judged from header alone, sub-directories and other extensions skipped, case-sensitive name matching, usedBy/unused semantics, error handling for unreadable folders, sorting, and truncation behavior.

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

Conciseness4/5

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

The description is a single dense paragraph with no wasted sentences, but its length and compactness make it harder to scan than a structured list. It is front-loaded with the purpose, but could benefit from better organization.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema or annotations, so the description must cover return format and behavior. It does: fields per file, warnings, error entries, usedBy/unused details, truncation, and sorting. Nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds substantial meaning: includeUsage default true, which folders the reference scan covers (all except img/system and img/animations), what usedBy and unused mean, and how limit and truncated work per folder.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List the image and sound files in the project's asset folders', and scopes it to img/* and audio/*. It distinguishes from siblings by naming audit_assets and preview_asset in context.

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

Usage Guidelines5/5

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

It explicitly says to run audit_assets for case mismatches and missing files, and to check for plugin/script loads before deleting. It also clarifies that files outside the import rule are listed but preview_asset cannot open them, giving clear when-to-use and when-not-to-use guidance.

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

list_backupsList backupsA

List automatic backup sessions in /.mcp-backups. A file is snapshotted there the first time each server session modifies it, so every session can be rolled back with restore_backup.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It explains that backups are created automatically on first file modification per session and where they are stored, providing behavioral context beyond a simple list operation.

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

Conciseness5/5

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

Two sentences, no wasted words, front-loaded with the core purpose. Each sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and no output schema, the description is complete. It explains what is listed, where, and why (for rollback). No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 0 parameters, so baseline is 4. Description adds meaning by explaining the purpose and context of the backups, though no parameter details are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists automatic backup sessions in a specific directory (.mcp-backups). The verb 'list' and resource 'backup sessions' are specific, distinguishing it from siblings like restore_backup.

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

Usage Guidelines3/5

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

The description implies usage context (to see backups before restoring) but does not explicitly state when to use or not use this tool, nor does it mention alternatives beyond restore_backup.

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

list_map_connectionsList map connectionsA

Scan every map's events for Transfer Player commands and show how the maps are linked: each door with its destination, one-way links without a way back, transfers to maps that do not exist, and maps that cannot be reached from the game's start map. Transfers whose target is chosen by variables are listed as dynamic and cannot be followed, so 'unreachable' is a hint, not proof.

NameRequiredDescriptionDefault
mapIdNoOnly list doors on this map (the reachability analysis still uses all maps)

TDQS

A3.9/5.0
Behavior4/5

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 that the scan spans all maps, and critically warns that variable-driven transfers are 'dynamic and cannot be followed, so unreachable is a hint, not proof' — a real false-positive caveat. It does not explicitly confirm the operation is read-only or describe cost/pagination, but 'Scan' and the analysis framing make non-mutation clear.

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

Conciseness4/5

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

Front-loaded with the scan verb and the output list, followed by a single valuable caveat sentence. Dense but every clause earns its place; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description compensates by enumerating the return contents and the dynamic-transfer caveat, which is exactly what an agent needs. The only gaps are explicit read-only confirmation and performance expectations, which are minor for a single-param analysis tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the mapId description already explains its scoping ('Only list doors on this map; reachability still uses all maps'). The description itself does not mention mapId, so it adds nothing over the schema — baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource ('Scan every map's events for Transfer Player commands') and enumerates the exact output: doors with destinations, one-way links, dangling transfers, and unreachable maps. This is clearly distinct from the sibling connect_maps (which edits links) and list_maps (which lists maps), so an agent can differentiate 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.

Usage Guidelines3/5

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

The use case (auditing map connectivity) is strongly implied by the output enumeration, but there is no explicit 'use this when' or naming of alternatives such as analyze_progression or connect_maps. Usage must be inferred from context rather than stated.

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

list_mapsList mapsA

List all maps from MapInfos.json as {id, name, parentId, order}.

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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 that the tool reads from MapInfos.json and returns specific fields, but does not mention performance, pagination, or any potential side effects. Basic transparency is present.

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

Conciseness5/5

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

The description is a single sentence that conveys all necessary information efficiently with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and no output schema, the description adequately specifies what the tool returns. However, it could mention if the list is exhaustive or any ordering, but it is largely complete for its simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so schema coverage is 100% trivial. The description does not need to add parameter information. Baseline score of 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (list all maps), the data source (MapInfos.json), and the output format (id, name, parentId, order), which distinguishes it from sibling tools like create_map or update_map.

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

Usage Guidelines3/5

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

The description implies use when needing a list of maps, but provides no explicit guidance on when to use this tool versus alternatives or any prerequisites. It is adequate for a simple list operation but lacks explicit context.

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

list_pluginsList pluginsA

List all plugins registered in js/plugins.js with status and parameters.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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 states what the tool does but does not disclose whether it is read-only, requires authentication, or has any side effects. The description lacks context on permissions or safety.

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

Conciseness5/5

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

The description is a single sentence of 12 words, clearly front-loaded with the action 'List all plugins'. Every word serves a purpose, and there is no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no parameters and no output schema, the description adequately explains what it does and what it returns (status and parameters). It could mention ordering or whether the list is comprehensive, but it is largely complete for a simple list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so schema description coverage is 100%. The description does not need to add parameter information because none exist. It appropriately focuses on the tool's function.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'list' and the resource 'plugins', specifying the source 'js/plugins.js' and the returned information ('status and parameters'). It distinguishes the tool from siblings like 'read_plugin' and 'create_plugin' by indicating it lists all plugins rather than a single one.

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

Usage Guidelines3/5

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

The description implies use when a complete list of plugins is needed, but it does not explicitly state when to use this tool versus alternatives like 'read_plugin' or 'configure_plugin'. No exclusions or conditions are provided.

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

list_recordsList database recordsA

List all records of a database type as {id, name} summaries. Use get_record for full data.

NameRequiredDescriptionDefault
typeYesWhich database to access (e.g. actors, items, skills, troops, commonEvents)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses the output format as '{id, name} summaries', which is sufficient for a simple list operation. It does not mention pagination or limits, but for this tool such details may be implicit.

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

Conciseness5/5

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

The description is two sentences with no wasted words. It front-loads the action ('List all records') and provides relevant guidance in the second sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one enum parameter and no output schema, the description adequately covers the purpose, output format, and alternative. It could mention that the result is a list/array, but overall it is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% coverage for the single required parameter, so baseline is 3. The description does not add parameter-level details beyond what the schema already provides, so it meets but does not exceed the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'List' and clearly states the resource 'database type', and explicitly distinguishes from the sibling tool 'get_record' by noting that this returns '{id, name} summaries' while that returns full data.

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

Usage Guidelines4/5

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

The description clearly states the tool lists all records of a type as summaries and recommends 'Use get_record for full data', providing guidance on when to use an alternative. However, it does not explicitly mention when not to use this tool.

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

list_stampsList stampsA

List the stamps saved in /.mcp-stamps/ (name, size, tilesetId, event count), sorted by name. Stamps captured inside a changeset that is still open are not listed until it is committed.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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 delivers the important non-obvious behavior: the stable sort order and the visibility rule that uncommitted captives from an open changeset are excluded. It could go further by explicitly stating it is a read-only, side-effect-free operation, which is only implied by 'List'.

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

Conciseness5/5

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

Two compact sentences: the first front-loads what the tool returns and where it reads from, the second adds the one caveat an agent would otherwise trip on. Every clause earns its place, with no restating of the title or name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless read tool with no output schema, the description supplies the return field set, ordering, storage location, and the changeset visibility caveat. An agent has everything needed to call it and interpret the result without opening anything else.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the schema is trivially complete and the baseline of 4 applies. The description does not need to compensate for anything.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ('List') plus a precisely scoped resource ('stamps saved in <project>/.mcp-stamps/'), and it enumerates the returned fields (name, size, tilesetId, event count) and sort order. Nothing is ambiguous, and 'stamps' is clearly distinct from the sibling list_* tools (list_maps, list_assets, list_records).

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

Usage Guidelines3/5

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

Usage is only implied: it's evident this is the discovery step before place_stamp or after capture_stamp, but the description never names an alternative or states when to prefer it. It does give one concrete operational constraint — stamps in an open changeset are hidden until commit — which is useful context but not selection guidance.

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

paint_tilesPaint map tilesA

Paint tiles onto a map. Takes a list of operations applied in order: cells (individual positions), rect (filled or hollow rectangle) and fill (flood fill from a cell). Tiles are chosen as {sheet:'A2', kind:N} (autotile sheets A1-A4), {sheet:'B', index:N} (A5/B-E) or a raw tile id; 0 erases. Autotile edge, corner and wall shapes are calculated automatically, including re-shaping neighbours, just like painting in the editor. Layers: 0-1 ground, 2-3 upper tiles, 4 shadows, 5 regions. Typical map: fill layer 0 with a ground kind from A2, then place water/walls/objects on top. Use get_tileset_info / get_tileset_image to pick tiles and render_map to check the result.

NameRequiredDescriptionDefault
mapIdYes
operationsYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the load and does so well: it discloses that autotile edge/corner/wall shapes are computed automatically and that neighbouring tiles get re-shaped, that tile id 0 erases, and that operations apply in order. It does not say whether edits are persisted immediately or only staged in a changeset (begin_changeset / commit_changeset are siblings), which is the main remaining behavioral 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.

Conciseness4/5

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

Front-loaded with the core action, then organized by operations, tile encoding, layers, and workflow. Dense but every clause carries information; only the example workflow sentence could be trimmed without loss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nested, multi-shape mutation tool with no output schema, the description covers operation semantics, tile formats, layer conventions and a starter recipe. It omits the return value / result reporting and the persistence model, both relevant to an agent calling a write tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Top-level schema coverage is effectively 0% (mapId and operations are undocumented), so the description has to compensate and largely does: it enumerates the three operation types (cells/rect/fill), the three tile encodings with their sheet families, the meaning of 0, and the layer map 0-1/2-3/4/5. It adds real value beyond the nested schema, though mapId itself is never explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ("Paint tiles onto a map") and immediately scopes it to an ordered list of operations, which distinguishes it from generic map mutators like update_map and from read-only siblings like get_tileset_info and render_map.

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

Usage Guidelines4/5

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

Explicitly routes the agent to get_tileset_info / get_tileset_image for tile selection and render_map for verification, and gives a concrete typical workflow (fill layer 0 with an A2 ground kind, then place water/walls/objects). It stops short of stating when NOT to use this (e.g., vs. update_map for non-tile edits).

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

place_stampPlace stampA

Paste a stamp made with capture_stamp onto a map with its top-left corner at (x, y). The whole stamp must fit inside the map (it is never clipped) and the map must use the same tileset the stamp was captured from. The rectangle is REPLACED on every layer: empty stamp cells erase what was there. Autotile cells (A1-A4) are re-shaped so their edges blend with the surroundings, including the cells next to the stamp; all other tiles, shadow bits and regions are copied as they are. With includeEvents (default true) the stamp's events are added with new ids and moved to the placement; if one would land on a cell that already has an event, nothing is placed and the cells are listed (includeEvents: false places only the tiles). There is no rotate or mirror. A backup of the map is kept.

NameRequiredDescriptionDefault
xYesLeft edge of the placement
yYesTop edge of the placement
nameYesStamp name
mapIdYes
includeEventsNo

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and delivers: the rectangle is REPLACED on every layer, empty cells erase, autotile edges are re-blended including neighboring cells, events get new ids and failing to place on occupied cells aborts the whole placement with a list of offending cells, no rotate/mirror, and a backup is kept. This is exactly the safety and side-effect context a mutation tool needs.

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

Conciseness4/5

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

The main action and placement anchor are front-loaded, and each subsequent sentence adds a distinct behavioral fact (replacement, autotile, events, no transforms, backup). It is dense but nearly every clause earns its place; only the closing backup remark could be folded in more tightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description covers preconditions, destructive effects, event handling, failure behavior, and recovery (backup). Nothing an agent needs to 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 60%; the description compensates for the undocumented includeEvents parameter by explaining its default, effect, and the tile-only fallback, and clarifies that (x, y) is the top-left corner where the whole stamp lands. mapId is only implicitly conveyed via the same-tileset requirement and backup note, leaving a small gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (paste) and resource (a stamp made with capture_stamp) onto a map at coordinates, and explicitly ties itself to the capture_stamp sibling. An agent can distinguish place_stamp from paint_tiles or capture_stamp without reading any schema.

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

Usage Guidelines4/5

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

Gives clear preconditions: the stamp must have been captured from the same tileset and must fit entirely within the map. It also explains the includeEvents: false alternative for tile-only placement. It stops short of naming other placement tools (e.g. paint_tiles, generate_map) as alternatives, so it is clear but not exhaustive.

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

playtest_logPlaytest logC

Recent stdout/stderr lines from an NW.js playtest process.

NameRequiredDescriptionDefault
tailNoNumber of lines from the end

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description bears full burden. It only states it returns stdout/stderr lines, but omits key behavioral details: whether it's read-only, the buffer/recentcy model, or if it affects state. The term 'Recent' is ambiguous.

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

Conciseness4/5

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

The description is a single sentence, highly concise. It conveys the essential purpose without extraneous words. However, it could be slightly expanded for completeness without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool and lack of output schema, the description is too minimal. It does not explain return format, line limits beyond schema, or how 'Recent' is defined. The agent lacks context to fully understand usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with a clear description of the 'tail' parameter. The tool description adds no extra meaning beyond what the schema provides, so baseline score is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (recent lines) and resource (stdout/stderr from NW.js playtest process). It is specific enough to distinguish from sibling tools like playtest_status, but could be more precise (e.g., 'Retrieve recent log lines').

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

Usage Guidelines2/5

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 (e.g., playtest_status for status, other tools for different purposes). The description does not mention prerequisites or context for usage.

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

playtest_startStart playtestA

Start a playtest of the current project. mode 'nwjs' launches the game with an NW.js runtime (pass runtimePath, e.g. the Game.exe inside the RPG Maker MV install's nwjs-win folder) and captures its stdout/stderr. mode 'browser' serves the project over a local HTTP server and returns a URL to open. Any previous playtest is stopped first.

NameRequiredDescriptionDefault
modeNobrowser
portNoPort for browser mode
runtimePathNoPath to NW.js executable. If omitted in nwjs mode, common install locations (Steam, KADOKAWA, the project's own Game.exe, $RPGMAKER_MV_NWJS) are probed automatically.

TDQS

A4.3/5.0
Behavior4/5

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 discloses the implicit stop of any prior playtest (a side effect), that NW.js mode captures stdout/stderr, that browser mode returns a URL, and how the runtime is resolved when omitted. It doesn't state what happens on failure (e.g., missing runtime, occupied port).

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

Conciseness4/5

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

Four sentences, front-loaded with the core action and each subsequent sentence covering one distinct behavior (mode nwjs, mode browser, prior-playtest stop). Slightly dense parenthetical, but every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-param, no-required, no-annotation, no-output-schema tool, the description covers the essential behaviors an agent needs to call it correctly. The main remaining gap is error/edge-case handling such as an unresolvable runtime or a port conflict.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds real meaning beyond the 67% schema coverage: it explains runtimePath concretely (Game.exe inside the RPG Maker MV install's nwjs-win folder) and ties mode to its consequences. The port parameter and its default are left entirely to the schema, keeping it just short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Start a playtest of the current project") and immediately distinguishes its two modes with concrete, differentiating detail: NW.js launch with captured stdout/stderr vs. browser mode serving over HTTP and returning a URL. An agent can tell this apart from playtest_status, playtest_stop, and playtest_log 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.

Usage Guidelines4/5

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

Gives clear context on when each mode applies and how to supply runtimePath in NW.js mode, plus the key precondition that any previous playtest is stopped first. It doesn't explicitly point to playtest_stop or playtest_log as follow-ups, but the mode-selection guidance is strong.

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

playtest_statusPlaytest statusA

Whether a playtest is running, in which mode, and its URL/PID.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

No annotations; description implies read-only query but doesn't explicitly state non-destructiveness or authorization needs. Adequate for a simple status check.

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

Conciseness5/5

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

Single sentence, front-loaded, zero waste. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Lacks output format details (e.g., how URL/PID are returned). Adequate for a simple tool but could be more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters in schema; description needn't add param info. Baseline 4 for 0-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb+resource: checks whether playtest is running, mode, URL/PID. Distinguishes from siblings like playtest_log by focusing on status rather than logging.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives (e.g., playtest_log for logging events). No context for when it's appropriate.

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

playtest_stopStop playtestA

Stop the running playtest process and/or HTTP server.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral burden. It usefully discloses scope by naming two targets (process and HTTP server) and the "and/or" hints they can be stopped independently, but says nothing about graceful shutdown, whether in-flight state is lost, error behavior when nothing is running, or idempotency.

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

Conciseness5/5

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

A single front-loaded sentence with the action first and the target scope second. Nothing redundant or wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter termination tool with no output schema and no annotations, the description covers the core action but omits the consequences an agent would want: what state remains after stopping, whether unsaved playtest data is discarded, and whether the call is safe to repeat.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, which is the baseline-4 case. The description correctly implies no arguments are needed to identify the target (the running playtest is unique).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("Stop") and resource ("the running playtest process and/or HTTP server"), which cleanly separates it from playtest_start, playtest_status, and playtest_log. It doesn't explicitly name those siblings, but the verb/resource pairing makes the distinction unambiguous.

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

Usage Guidelines3/5

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

Usage is only implied: you stop a running playtest. The description never says when this is appropriate versus leaving a session running, nor what happens if no playtest is active, leaving the agent to infer preconditions.

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

preview_assetPreview assetA

Show a PNG from an img/* folder as an image so you can see it, with its pixel size, file size and, for img/characters and img/faces, the sheet layout implied by the name and size. name is the file name without .png and must match an existing file exactly (see list_assets). The image is scaled down (nearest neighbour, aspect kept) to at most maxSize pixels on its longer edge; smaller images are shown as they are. Files over 32 MiB or 16 million pixels, interlaced PNGs and files that are not valid PNGs are refused. Only names that pass the asset name rule (1-64 characters from A-Z a-z 0-9 space _ ! $ ( ) -) can be opened, even though list_assets may show files with other names. Audio cannot be previewed.

NameRequiredDescriptionDefault
nameYesFile name without extension, e.g. Actor1
folderYesImage folder, e.g. img/characters
maxSizeNoLongest edge of the returned image in pixels

TDQS

A4.6/5.0
Behavior5/5

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 downscaling behavior (nearest neighbour, aspect preserved, only larger images scaled), the maxSize semantics on the longer edge, and a detailed refusal list (32 MiB, 16M pixels, interlaced, invalid PNG, names failing the character rule). It effectively defines the tool's success and failure envelope without needing annotations.

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

Conciseness4/5

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

Purpose is front-loaded in the first clause, followed by output, then scaling and refusal constraints — a sane order. It is a dense single block with run-on sentences that would read better split, but no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description explains what the agent receives (the rendered image, pixel dimensions, file size, and sheet layout for certain folders). Combined with the detailed constraints, an agent has everything needed to call it correctly or predict a rejection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds real semantics: 'name' is the file name without .png and must match an existing file exactly, and maxSize only downscales images whose longer edge exceeds it. The folder enum itself is not expanded beyond 'img/*', which keeps it from a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Show a PNG from an img/* folder as an image') plus the extras returned (pixel size, file size, sheet layout for img/characters and img/faces). This clearly distinguishes it from siblings like list_assets (enumeration) and render_map_image (map rendering).

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

Usage Guidelines4/5

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

Gives clear context for use and a negative case ('Audio cannot be previewed'), and routes the agent to list_assets to find valid names. It does not explicitly delimit itself against adjacent image siblings (get_tileset_image, render_map_image), so it stops short of full when/when-not/alternatives guidance.

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

read_pluginRead plugin sourceA

Read the JavaScript source of js/plugins/.js.

NameRequiredDescriptionDefault
nameYes

TDQS

A3.6/5.0
Behavior2/5

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

Without annotations, the description must disclose behavioral traits. It only states the basic action (read source) but does not mention error handling (e.g., what if plugin does not exist), security implications, or any potential side effects. Minimal behavioral context is provided.

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

Conciseness5/5

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

The description is a single sentence that directly states the tool's purpose with no extraneous information. It is front-loaded and efficiently uses words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity, the description covers the primary purpose. However, it lacks details about the output format (e.g., returns raw JS string) and error behavior (e.g., file not found). With no output schema, slightly more completeness would be ideal, but it is mostly adequate for a single-parameter read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no description for the 'name' parameter (0% coverage). The description adds context by specifying the file pattern 'js/plugins/<name>.js', indicating that the name is likely the filename without extension. However, it does not clarify expected format (e.g., with or without .js) or case sensitivity, so some meaning is added but not fully complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the verb ('Read') and resource ('JavaScript source of js/plugins/<name>.js'), and it distinguishes from sibling tools: list_plugins (listing), write_plugin (writing), remove_plugin (deleting), configure_plugin (configuring).

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

Usage Guidelines3/5

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

The description implies usage for reading plugin source code, but provides no explicit guidance on when to use this tool vs alternatives (e.g., when to use list_plugins instead) or when not to use it. Usage is implied, not stated.

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

remove_pluginUnregister pluginB

Remove a plugin from js/plugins.js. The plugin's .js file is NOT deleted.

NameRequiredDescriptionDefault
nameYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It correctly discloses that the .js file is not deleted, which is a key behavioral trait. However, it does not mention error conditions, required permissions, or reversibility of the action.

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

Conciseness5/5

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

The description is only two sentences, front-loaded with the action, and contains no extraneous information. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description captures the essential action and a critical limitation. However, it omits details about parameter format, error handling, and use cases, leaving some gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'name' has no description in the schema (0% coverage) and the tool description does not explain what the name should be (e.g., with or without extension, path). The meaning is only implied, leaving ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Remove' and the resource 'plugin from js/plugins.js'. It distinguishes from siblings like create_plugin, read_plugin, and list_plugins by specifying the exact file affected and the fact that the .js file is not deleted.

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

Usage Guidelines2/5

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. For example, it doesn't mention when to use remove_plugin vs write_plugin or configure_plugin, and there is no context about prerequisites or consequences.

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

render_diffRender map changesA

Show what changed on a map compared with an earlier version: a text summary (changed tile cells, added/removed/moved/edited events) plus a PNG of the CURRENT map with changed cells outlined yellow and added or moved events outlined green. By default it compares with the most recent backup session that contains the map (the state before this session's first edit); pass against.session to pick a session folder from list_backups, or against.changeset to compare with the pre-image of a committed changeset. Use it after bulk painting or generation to review exactly what you touched. If the map has no earlier version this session, it says so.

NameRequiredDescriptionDefault
mapIdYes
againstNoWhich earlier version to compare with (default: the most recent backup session containing this map)
tileSizeNoPixels per map tile; reduced automatically so the image stays under ~1600px

TDQS

A4.4/5.0
Behavior4/5

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 discloses return content (text summary plus PNG with yellow/green outlines), the default comparison behavior, and the edge case where no earlier version exists ('it says so'). It is silent on performance or size limits beyond the tileSize auto-reduction, but the core behavior is transparent.

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

Conciseness4/5

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

A single dense paragraph that front-loads what the tool produces before covering comparison options and usage guidance. Every sentence contributes, though the paragraph is long and could be broken into bullet points for faster scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description fully covers the return format, the nested against object's variants, default behavior, and the no-baseline edge case. An agent has everything needed to call it correctly and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 67% schema coverage, the description adds real meaning: it explains the default comparison target and the semantics of against.session and against.changeset beyond the schema's terse notes. tileSize is not discussed in the description, but the schema already documents its auto-reduction behavior, so the marginal gap is small.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Show what changed on a map compared with an earlier version,' and immediately specifies the two outputs (text summary of changed tile cells and events, plus an annotated PNG). This clearly distinguishes it from siblings like render_map and render_map_image, which render a current map without a comparison baseline.

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

Usage Guidelines4/5

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

It names a concrete usage context ('Use it after bulk painting or generation to review exactly what you touched') and explains the three ways to choose a baseline: default most-recent backup session, against.session from list_backups, or against.changeset. It does not explicitly contrast with render_map for non-diff viewing, but the routing information is otherwise strong.

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

render_mapRender map as textA

Show a map's tiles as text so you can check what you painted. mode 'symbols' (default) draws one character per cell using the topmost tile of layers 0-3 (or only layer) with a legend naming each symbol; mode 'ids' prints raw tile ids of one layer. Use x/y/width/height to look at a region (default: up to 100x60 from the top-left).

NameRequiredDescriptionDefault
xNo
yNo
modeNosymbols
layerNo
mapIdYes
widthNo
heightNo

TDQS

A4.3/5.0
Behavior4/5

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 that 'symbols' composites the topmost tile of layers 0-3, that a legend is emitted, and that the default region is capped at 100x60 from the top-left. It doesn't state read-only-ness or what happens when layer is omitted in 'ids' mode, which would have closed the loop.

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

Conciseness4/5

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

Two sentences, front-loaded with purpose then the mode/region details; nothing is wasted. The second sentence is dense and chains several clauses together, which costs a bit of scannability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter render tool with no annotations and no output schema, the definition is nearly sufficient: it conveys the output medium, the legend behavior, the compositing rule and the region limits. The exact return payload shape and whether the legend text is part of the same string are the only loose ends.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate and mostly does: it explains mode semantics, the layer parameter ('or only `layer`'), and the meaning plus default of x/y/width/height including a 100x60 cap that appears nowhere in the schema. Only mapId is left unexplained, and that gap is trivial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Show a map's tiles as text') plus the intent ('check what you painted'), which cleanly separates it from the sibling render_map_image. The two modes are named and characterized, so an agent knows exactly what output shape to expect.

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

Usage Guidelines4/5

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

It gives clear usage context ('so you can check what you painted') and states which mode to pick: 'symbols' is default for a visual read, 'ids' for raw tile ids of a single layer. It never explicitly contrasts itself with render_map_image, so the alternative-routing 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.

render_map_imageRender map as imageA

Render a map to a PNG image so you can SEE what it looks like: all tile layers with correct autotile shapes, shadows and tiles that draw above characters, optionally the events' character sprites, coloured event markers with their ids, region ids, a tile grid and a passability overlay (red = blocked in at least one direction). This is the visual counterpart of render_map (text) - use it after paint_tiles / create_event / connect_maps to check your work. Marker colours: blue = event with a Transfer Player command (door/exit), orange = shows text, magenta = autorun/parallel, green = anything else. Needs the tileset images in img/tilesets (sheets without an image are drawn as flat colours and listed). Large maps are shrunk to fit ~1600px; pass x/y/width/height to zoom into a region and raise tileSize for detail.

NameRequiredDescriptionDefault
xNoRegion left edge in tiles
yNoRegion top edge in tiles
mapIdYes
widthNoRegion width in tiles (default: to the map's right edge)
heightNoRegion height in tiles (default: to the map's bottom edge)
showGridNoOverlay a tile grid
tileSizeNoPixels per map tile (48 = full resolution). Reduced automatically so the image stays under ~1600px
showEventsNoDraw event character sprites, coloured id markers, both, or neitherboth
showRegionsNoOverlay region ids (layer 5)
showPassabilityNoTint blocked cells translucent red (blocked in at least one direction by the tileset flags)

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries real weight: it discloses the tileset image dependency in img/tilesets, graceful degradation ("sheets without an image are drawn as flat colours and listed"), and automatic downscaling to ~1600px. It does not say how the PNG is returned to the agent (inline image vs. file path on disk), which is the one gap that matters for invocation.

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

Conciseness4/5

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

Front-loaded with purpose followed by usage, then supporting detail — a sound ordering. It runs long and the marker colour legend (blue/orange/magenta/green) is dense, but each fragment earns its place by encoding information not present in the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter, no-annotation, no-output-schema tool, the description covers rendering modes, dependencies, fallbacks and scaling behavior well. The omission is the return contract — an agent cannot tell whether it receives an image payload or a path to the generated file.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 90%, so the baseline is 3; the description still adds intent the schema cannot: x/y/width/height are for zooming into a region and tileSize should be raised for detail, framing the two parameters as a coupled trade-off. It also explains the marker colour semantics that the showEvents enum values don't convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Render a map to a PNG image") and immediately names the sibling it is the visual counterpart of: "This is the visual counterpart of render_map (text)". An agent can distinguish render_map_image from render_map, get_map and get_tileset_image 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.

Usage Guidelines5/5

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

Gives an explicit trigger sequence: "use it after paint_tiles / create_event / connect_maps to check your work", plus the negative routing to render_map (text) for textual output. Both the when and the alternative are stated rather than inferred.

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

restore_backupRestore backupA

Restore project files from a backup session (see list_backups). Restores one file (project-relative path like 'data/Actors.json') or, with no file given, every file in the session. The current state is itself backed up first, so a restore can be undone. Refused while a changeset is open (commit or discard it first). The RPG Maker editor must stay closed while files are restored.

NameRequiredDescriptionDefault
fileNoProject-relative file to restore; omit to restore all files in the session
sessionNoBackup session name from list_backups; defaults to the most recent

TDQS

A4.6/5.0
Behavior4/5

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 that the current state is backed up first so a restore can be undone, that the operation is refused during an open changeset, and that the editor must stay closed. It does not cover return values or partial-failure behavior, which are minor gaps for a restore operation with clear safety semantics.

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

Conciseness5/5

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

The description is four compact sentences with zero waste. The most important scoping details (what is restored, reversibility, and blocking conditions) are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description covers the key behavioral facts needed to call the tool correctly: restore scope, reversibility, changeset conflict, and editor-state prerequisite. It stops short of explaining what a successful return looks like or how partial failures are reported, but it is otherwise complete for invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already defines both parameters. The description adds useful meaning beyond the schema by giving a concrete project-relative path example ('data/Actors.json') and reinforcing that omitting the file restores the whole session and that the session defaults to the most recent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Restore) and resource (project files from a backup session), and explicitly cross-references list_backups to distinguish the lookup from the restore action. An agent can tell exactly what this tool does 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.

Usage Guidelines5/5

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

It gives explicit conditions for use: restores one file or all files when no file is given, is refused while a changeset is open (with the remedy to commit or discard first), and requires the RPG Maker editor to be closed. These are concrete when-to-use and when-not-to-use guards rather than implied usage.

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

search_map_eventsSearch map eventsA

Case-insensitive substring search across events on one map or every map. Matches event names and notes; with searchCommands=true it also searches inside event command parameters (message text, script lines, plugin commands). Returns {mapId, mapName, eventId, name, x, y, matchedIn}.

NameRequiredDescriptionDefault
limitNo
mapIdNoSearch only this map; omit for all maps
queryYes
searchCommandsNoAlso search inside event command lists (slower, finds text/script content)

TDQS

A4.4/5.0
Behavior4/5

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 case-insensitivity, which fields are matched (names, notes), that command-parameter search is an opt-in deeper mode, and the exact result shape. It does not state that the operation is read-only nor describe the default limit/pagination behavior.

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

Conciseness5/5

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

Three tight sentences with zero filler: purpose first, then the matching scope, then the return shape. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-param search tool with no annotations and no output schema, the description covers purpose, match targets, the opt-in deeper mode, and the return fields. The only real gap is result-count behavior (limit defaults to 50, max 200), which an agent would want to know before paging.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50% (query and limit lack descriptions), and the description compensates by clarifying that query is a case-insensitive substring and that mapId omission means all maps, plus what searchCommands actually reaches into. The limit parameter remains unexplained in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('case-insensitive substring search across events') plus the scope (one map or every map), which immediately separates it from sibling search tools like search_records or find_usages that operate on different resources.

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

Usage Guidelines4/5

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

Explains that omitting mapId searches every map and that searchCommands=true opts into deeper command-parameter searching, giving clear usage context. It stops short of explicitly naming the alternative tool to use when the agent wants records/plugins instead of events, so it lacks full when-not guidance.

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

search_recordsSearch database recordsA

Case-insensitive substring search across database records (name, nickname, description, note, profile, messages). Searches one type, or all types when type is omitted. Returns {type, id, name, matchedIn} summaries.

NameRequiredDescriptionDefault
typeNoDatabase to search; omit to search all databases
limitNo
queryYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries full weight. It discloses case-insensitive substring search across specific fields, non-destructive read behavior, and return format {type, id, name, matchedIn}. No contradictions.

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

Conciseness5/5

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

Two concise sentences, front-loaded with key details (case-insensitive, fields, type omission, return format). No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but description specifies return format. Covers multi-type search and substring matching. Could add edge cases like empty results or pagination, but adequate for a search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33% (only type documented). The description adds meaning to query (substring search) and type (omit to search all), but does not mention the limit parameter, leaving it less clear. Compensates partially.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies it performs a case-insensitive substring search across database records, listing the fields searched. It distinguishes from sibling tools like list_records (listing without search) and create_record (mutation).

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

Usage Guidelines4/5

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

Implies usage for searching records with substring matching, and notes that omitting type searches all types. Lacks explicit 'when not to use' or alternatives, but sufficient for context.

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

set_map_tilesetSet map tilesetA

Switch a map to another tileset (which sheets/tile images it uses). Existing tile ids are kept as they are, so they will show the new tileset's graphics - repaint with paint_tiles if the layouts differ.

NameRequiredDescriptionDefault
mapIdYes
tilesetIdYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral burden, and it does disclose the critical side effect: existing tile ids are preserved but will render using the new tileset's graphics. It also warns that layouts may need repainting. It does not mention permissions, reversibility, or changeset/commit requirements, leaving some behavioral context unstated.

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

Conciseness5/5

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

The description is two tightly written sentences with the main action front-loaded and the important caveat immediately after. Every sentence adds useful information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter mutation tool with no annotations or output schema, the description covers the essential operation and the main semantic caveat about preserved tile ids. It is not fully complete because it omits mutation workflow context such as permissions or whether changes must be committed through the changeset tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the two required parameters, so the description needs to compensate. It conveys that a map and a tileset are involved and describes a tileset as 'which sheets/tile images it uses', but it does not explicitly document mapId or tilesetId formats, valid values, or how to discover a tilesetId.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Switch a map to another tileset', and clarifies that this changes which sheets/tile images the map uses. It also distinguishes the operation from the related repaint action via paint_tiles, so an agent can tell it apart from sibling tools without extra schema inspection.

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

Usage Guidelines4/5

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

It explains the key follow-up condition: repaint with paint_tiles if the layouts differ. This gives clear usage context and names an alternative action, but it does not state broader exclusions such as when not to switch tilesets or prerequisites like obtaining a tilesetId via get_tileset_info.

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

set_projectSet projectA

Select the RPG Maker MV project folder to work on (the folder containing Game.rpgproject and data/). Must be called before other tools unless the server was started with --project. Discards any open changeset (its staged edits are lost).

NameRequiredDescriptionDefault
pathYesAbsolute path to the RPG Maker MV project folder

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does disclose the critical destructive side effect: discarding an open changeset and losing staged edits. It does not describe error behavior for an invalid path or what the tool returns, but the main mutation risk is clearly surfaced.

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

Conciseness5/5

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

Three compact sentences, front-loaded with the core action, followed by the prerequisite and the destructive side effect. Every sentence contributes necessary operational information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter setup tool with no output schema, the description covers the essential prerequisites and side effects. A little more detail on return behavior or invalid-path handling would make it fully complete, but nothing critical to correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, with path documented as an absolute path. The description adds useful semantic detail by specifying what the project folder must contain, which goes beyond the schema's wording.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: selecting the RPG Maker MV project folder. It even disambiguates the target by defining the folder as the one containing Game.rpgproject and data/, so an agent can distinguish this setup tool from the many content-editing siblings.

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

Usage Guidelines5/5

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

It gives an explicit precondition: must be called before other tools unless the server was started with --project. It also warns that calling it discards any open changeset, which is exactly the kind of when-to-call context an agent needs.

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

set_switch_nameName a switchA

Set the editor name of a game switch in System.json (e.g. switch 5 = 'Opened Chest'). The switches array grows if the id is beyond its current size.

NameRequiredDescriptionDefault
idYesSwitch id (1-based)
nameYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses a non-obvious side effect — the switches array grows when the id exceeds its current size — and that the write targets System.json. It does not say whether existing names are overwritten, whether a changeset/commit is required for persistence, or what the response looks like.

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

Conciseness5/5

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

Two short sentences, front-loaded with the core action and location, followed by the edge-case behavior. Zero waste; the example earns its place by making the name semantics concrete.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter mutation with no annotations and no output schema, the description covers the main things an agent needs: target file, name semantics, and array-growth behavior. Missing persistence/changeset semantics is a minor gap given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% (only 'id' is documented as 1-based). The description compensates for the undocumented 'name' parameter by clarifying it is the editor/display name, with the 'switch 5 = Opened Chest' example, and explains id growth for out-of-range values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Set the editor name of a game switch'), names the storage location (System.json), and gives a concrete example. The noun 'switch' distinguishes it from the sibling set_variable_name, though no sibling is named explicitly.

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

Usage Guidelines3/5

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

Usage is implied by the resource and location, but there is no guidance on when to prefer this over set_variable_name, update_system, or whether changes need a changeset to be committed. An agent can infer the use case but receives no exclusions or alternatives.

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

set_variable_nameName a variableA

Set the editor name of a game variable in System.json (e.g. variable 3 = 'Quest Progress'). The variables array grows if the id is beyond its current size.

NameRequiredDescriptionDefault
idYesVariable id (1-based)
nameYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only discloses that the variables array grows if the id is beyond current size, but does not mention side effects, persistence behavior, permission requirements, or error conditions (e.g., invalid names). For a mutation tool, this is insufficient.

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

Conciseness5/5

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

Two sentences with an example—no wasted words. Critical information is front-loaded. Ideal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description does not explain return values or confirmation of success. It also omits error handling, prerequisites (e.g., project loaded), and relationship to other tools (e.g., get_system to verify). Adequate for a simple tool but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: the 'id' parameter is described (1-based), but 'name' lacks description. The description adds an example suggesting 'name' is a string, but does not specify format, length limits, or allowed characters. Overall, minimal added value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Set the editor name of a game variable in System.json' and provides a concrete example ('e.g. variable 3 = 'Quest Progress''). This uniquely identifies the tool's purpose among siblings, as no other sibling focuses on variable naming.

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

Usage Guidelines3/5

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

The description implies usage via the example and notes array auto-growth for new IDs, but it does not explicitly state when to use this tool versus alternatives (e.g., reading variables or setting other system properties). No usage exclusions or comparisons are provided.

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

simulate_battleSimulate a battleA

Run many simulated battles of a troop against a party and report win rate, turns, how much HP the party keeps and who does the damage or dies. Uses the project's real stats (class curves, equipment, traits), damage formulas, variance, critical hits, hit/evasion rates, agility turn order, target weighting (TGR) and enemy action ratings. Party members use skillIds in order (first affordable one, healing only when an ally is below 60% HP), falling back to the Attack skill. Not modelled: states, buffs, items, guarding, TP, enemy conditions on states/switches (treated as false). Seeded, so results are reproducible. Default party: the starting party at their initial level.

NameRequiredDescriptionDefault
runsNo
seedNo
levelNoSet every party member to this level
partyNo
troopIdYes
maxTurnsNo

TDQS

A3.9/5.0
Behavior5/5

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

No annotations are provided, and the description carries the full burden well. It discloses real stat usage, damage formulas, variance, crits, hit/evasion, turn order, target weighting, enemy action ratings, skill selection priority, healing threshold, unmodelled mechanics, seeded reproducibility, and the default party composition.

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

Conciseness4/5

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

The description is dense but front-loads the purpose and outputs before enumerating mechanics, limitations, and defaults. Every sentence carries information relevant to understanding or invoking the simulation, though the long mechanics sentence could be split for readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description does substantial work: it explains return metrics, simulation mechanics, unmodelled systems, reproducibility, and defaults. It remains slightly incomplete on some parameter semantics and limits, but is otherwise sufficient for an agent to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 17%, so the description needs to compensate. It adds meaningful semantics for party skillIds ordering, healing behavior, level defaults, and seed reproducibility, but it leaves runs, maxTurns, and the required troopId unexplained beyond the schema's bare types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: running many simulated battles of a troop against a party and reporting win rate, turns, HP retention, and damage/death outcomes. It is unmistakably distinct from siblings like analyze_progression or playtest_start, but it does not explicitly name or contrast with those alternatives.

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

Usage Guidelines3/5

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

The description implies usage for balance simulation by describing the simulation scope, defaults, and limitations. However, it never states when to prefer this tool over alternatives such as balance_report, analyze_progression, or playtest_start, nor does it give explicit exclusions beyond model limitations.

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

simulate_eventSimulate an eventA

Dry-runs one map event page against a hypothetical game state and returns what it would do, without touching the project or running the game. Supported commands: Show Text (101/401), Show Choices (102/402/403/404), Conditional Branch (111/411/412: switch, variable, self switch, gold, item), Loop/Break (112/113/413), Exit Event Processing (115), Common Event (117, nested up to 8 deep), comments, Control Switches (121), Control Variables (122: constant, variable and random operands), Control Self Switch (123), Change Gold (125), Change Items (126), Transfer Player (201, ends the run) and Plugin Command (356, listed in changes as 'plugin: ...'). Battle Processing (301) is not fought: the branch picked by battleResult runs (win, escape or lose; default win) and the others are skipped; a missing branch adds 'battle: no branch' to changes. A Battle Processing without branches (what the editor writes when neither Can Escape nor Continue when Loss is on) is a single command: nothing is skipped and the next command runs. Label (118) and Jump to Label (119) work: a jump goes to the first label of that name in the current command list and counts as a step, so a label loop ends 'stepLimit'; a missing label is listed in unsupported and the run continues. Presentation commands (Set Movement Route 205, animation and balloon 212/213, screen fades, tint, flash and shake 221-225, wait 230, show/move/erase picture 231/232/235, weather 236, play/fade audio 241/242/245/246/249/250/251, 505 route rows) are ignored and only counted in cosmetic, not listed in unsupported; the one exception is the switch ON/OFF steps of a Set Movement Route, which do change the simulated switches (changes: 'switch N → ON (move route)'; only the first 1000 route entries are scanned, each costing one step, and a longer route adds an unsupported note). A battleResult of escape or lose on a battle that cannot be escaped or lost still runs the branch but adds a note to changes. Everything else (script 355, other condition types, game-data operands, party and scene commands, ...) is listed in unsupported with its index and skipped; an unsupported condition follows unknownCondition: stop (default) ends the run with ended 'unsupported', then/else takes that branch. Message text is returned verbatim, control codes unexpanded. Limits: 10000 steps (ended 'stepLimit'), integer variable math (results are floored like the engine, so -7 / 2 gives -4; division or modulo by zero leaves the variable unchanged; a random or variable operand is evaluated once per command). A command that changes several switches or variables adds one changes entry for the whole range. messages, changes and unsupported are each capped at 2000 entries; omitted counts what was dropped (present only then) and finalState stays exact. State inputs default to everything OFF/0/empty: switches and variables are keyed by id, selfSwitches by letter A to D, items by item id. choices lists the answers to Show Choices in the order they are asked (0-based; a missing answer is 0, an out-of-range one takes the cancel branch). page is a 0-based page index; when omitted the highest page whose conditions hold under the supplied state is used (the actor condition counts as met). The random operand is seeded (default seed 0), so runs repeat exactly. Returns {messages, changes, transfers, unsupported, cosmetic, ended, finalState, pageUsed}.

NameRequiredDescriptionDefault
goldNoParty gold (default 0).
pageNo0-based page index; omit to pick the page that would be active under the supplied state.
seedNoSeed for the random operand (default 0).
itemsNoItems held by id, e.g. {"4": 1}.
mapIdYesMap id.
choicesNoAnswers to Show Choices, in the order they are asked.
eventIdYesEvent id on that map.
switchesNoSwitch states by id, e.g. {"12": true}.
variablesNoVariable values by id, e.g. {"3": 10}.
battleResultNoHow every Battle Processing command ends, which decides the branch that runs (default win).
selfSwitchesNoSelf switches of this event, e.g. {"A": true}.
unknownConditionNoWhat to do at a condition that cannot be simulated.stop

TDQS

A4.2/5.0
Behavior5/5

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 extensively: it enumerates supported and unsupported commands, states that the project is not mutated, documents the 10000-step limit, entry caps of 2000 with omitted counts, seeded determinism, and the exact return-object keys. This is unusually complete behavioral disclosure for a simulation tool.

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

Conciseness2/5

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

The content is relevant, but it is delivered as a single dense paragraph of roughly 700 words with no headings, bullets, or grouping, making it hard to scan or reference. The front-loaded purpose sentence is good, but after that the structure collapses into an undifferentiated wall of detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 12 parameters, nested state objects, no output schema, and no annotations, the description still covers return shape, limits, caps, defaults, and unsupported-command handling. There is no material gap an agent would need to fill before invoking the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline would be 3, but the description adds real meaning beyond the schema: choices are 0-based with missing answers treated as 0 and out-of-range answers taking the cancel branch, page omission selects the highest satisfied page, the random operand is seeded for repeatability, and state inputs default to OFF/0/empty with documented keying conventions. A few inputs such as gold and items get only passing coverage, but the added semantics are substantial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a specific verb and resource ('Dry-runs one map event page against a hypothetical game state') and crisply distinguishes the operation from siblings by saying it returns what the event would do 'without touching the project or running the game'. An agent can tell this apart from lint_events or playtest_start 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.

Usage Guidelines3/5

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

The phrase 'without touching the project or running the game' implies a safe-inspection use case, which is contextual guidance. However, the description never explicitly says when to choose this over lint_events, simulate_battle, or an actual playtest, and it names no exclusions or alternatives. 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.

undo_changesetUndo last changesetA

Roll back the most recently committed changeset from its journal: modified files are restored byte-for-byte, files it created are deleted. Call repeatedly to step back through earlier commits. Edits made to those files after the commit are overwritten too. Refused while a changeset is open (while one is open, reads reflect its staged edits and nothing is on disk until commit). The RPG Maker editor must stay closed while the server edits the project.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior5/5

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: it discloses that post-commit edits are overwritten, that created files are deleted, that the operation is refused while a changeset is open, and that the RPG Maker editor must be closed. Those are exactly the destructive-precondition and environmental facts an agent needs before invoking it.

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

Conciseness4/5

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

Front-loaded with the core action and its effects, followed by repetition behavior, side effects, refusal condition, and environment requirement — each sentence adds information. The nested parenthetical about staged reads is slightly dense but still informative rather than redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no annotations and no output schema, the description covers action, side effects, preconditions, and environment constraints. Only minor gaps remain, such as behavior when there is no prior commit to undo or what is returned on success versus refusal.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing schema-level to clarify; the description correctly describes the operation as acting on the most recent changeset without inventing arguments. Baseline for a parameterless tool applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — roll back the most recently committed changeset from its journal — and enumerates the concrete effects (modified files restored byte-for-byte, created files deleted). This distinguishes it cleanly from begin_changeset, commit_changeset, and discard_changeset without needing their schemas.

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

Usage Guidelines4/5

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

'Call repeatedly to step back through earlier commits' tells the agent how to undo more than one commit, and 'Refused while a changeset is open' defines the exclusion condition that should route it to discard_changeset instead. It stops short of naming discard_changeset explicitly as the alternative, so it is clear context rather than full routing guidance.

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

update_eventUpdate map eventB

Replace an event on a map with the given event JSON (same shape as returned by get_event). The event's id and its array position stay in sync automatically. See event_command_reference for command codes.

NameRequiredDescriptionDefault
eventYesComplete event object (name, x, y, note, pages)
mapIdYes
eventIdYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations are absent, so the description must fully convey behavior. It describes replacement and automatic id/array sync, which is useful, but omits details on destructuring, error conditions, or permissions.

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

Conciseness5/5

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

Two sentences with a reference, no filler. The main action is front-loaded, and the description is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given three required parameters (one nested object) and no output schema, the description covers replacement behavior, shape reference, and command codes. Missing return value details, but sufficient for typical use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33% (event has a generic description). The description adds context by mentioning the event shape matches get_event and references command codes. mapId and eventId lack additional clarification.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool replaces an event on a map using a JSON object, and references get_event for shape. The tool name 'update_event' and verb 'replace' differentiate from create_event, but no explicit sibling comparison is given.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives like create_event or add_event_command. The description does not state 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_mapUpdate map propertiesA

Shallow-merge fields into a map's JSON (e.g. displayName, note, bgm, encounterList). Refuses to touch 'data' or 'events' — use the event tools for events and paint_tiles for tiles. To switch tilesets prefer set_map_tileset.

NameRequiredDescriptionDefault
dataYesMap property fields to set
mapIdYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does disclose important behavior: shallow merge semantics, refused fields ('data' and 'events'), and preferred alternatives. It does not fully cover mutation persistence, error behavior, or return values, so it is strong but not complete.

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

Conciseness5/5

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

The description is short, front-loaded with the core action, and every sentence adds routing or scope information. There is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutating update tool with no annotations and no output schema, it covers the essential scope, examples, exclusions, and sibling alternatives well. It falls short of complete because it does not address persistence requirements, response shape, or error conditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%, but the description adds useful meaning for the nested 'data' parameter by giving example fields such as displayName, note, bgm, and encounterList, plus restrictions on what it will not modify. The required mapId parameter is self-evident, though the use of 'data' for both the input parameter and a forbidden map JSON field could be clearer.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: shallow-merging fields into a map's JSON, with concrete examples. It also explicitly distinguishes this tool from event tools, paint_tiles, and set_map_tileset.

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

Usage Guidelines5/5

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

It states when not to use this tool by naming the fields it refuses to touch and routing events to the event tools, tiles to paint_tiles, and tileset switching to set_map_tileset. These are explicit alternatives rather than implied usage.

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

update_recordUpdate database recordA

Update a database record. By default the given fields are shallow-merged into the existing record; set merge=false to replace it entirely. The record's id always stays fixed to match its array position.

NameRequiredDescriptionDefault
idYesRecord id (1-based)
dataYesFields to set (or the complete record when merge=false)
typeYesWhich database to access (e.g. actors, items, skills, troops, commonEvents)
mergeNoMerge into existing record (true) or replace (false)

TDQS

A4.2/5.0
Behavior4/5

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 key behaviors: shallow-merge by default, replace option, and that the id always stays fixed. This is strong transparency for a CRUD tool, though it could mention error states or authorization needs.

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

Conciseness5/5

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

The description is two sentences, zero filler. The first sentence states the core purpose, and the second adds critical behavior details. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and moderate complexity (4 params, one with enum), the description covers merge behavior and id fixity well. It could briefly mention what happens on success or failure, but overall sufficient for correct tool usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema coverage is 100%, so the schema already documents parameters well. The description adds value by explaining the effect of merge and the id fixity, but these are already implied by the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The tool name 'update_record' and description clearly state it updates a database record, with specific verbs 'update' and semantic distinction from siblings like 'create_record' and 'search_records'. The description adds the merge behavior, further clarifying purpose.

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

Usage Guidelines4/5

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

The description explains when to use merge=true vs false ('shallow-merged' vs 'replace'), providing clear context. However, it does not explicitly state when not to use this tool or compare with alternative tools (e.g., when to use update vs create), which would make it a 5.

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

update_systemUpdate System.jsonB

Shallow-merge the given top-level fields into System.json (e.g. gameTitle, startMapId, startX, startY, switches, variables).

NameRequiredDescriptionDefault
dataYesTop-level System.json fields to set

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that the merge is shallow and limited to top-level fields, but says nothing about permissions, reversibility, validation, whether the file must already exist, or what happens on invalid fields.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no wasted words. The key operation and examples are delivered immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter update tool, the description is minimally adequate: it explains the merge behavior and gives examples. However, because there are no annotations or output schema and this is a mutation, it should disclose more about safety, validation, and merge edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single data parameter is already documented as 'Top-level System.json fields to set.' The description adds useful examples and the shallow-merge semantics, but does not fully enumerate or constrain valid fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: shallow-merge top-level fields into System.json. It also gives concrete example fields, making the operation distinguishable from read-oriented siblings such as get_system and from unrelated update tools.

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

Usage Guidelines2/5

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

It implies the tool is used to update System.json, but gives no explicit when-to-use guidance, no exclusions, and no comparison to alternatives such as get_system or the dedicated set_* tools. An agent must infer the selection conditions.

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

validate_projectValidate projectA

Integrity check of the whole project: parses every database file, verifies MapInfos entries have map files (and finds orphaned map files), checks registered plugins have source files, and scans event commands for references to missing common events or transfer destinations. Returns errors (broken) and warnings (suspicious).

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden. It discloses all major behavioral traits: parsing every database file, verifying associations, finding orphans, checking plugins, and scanning event commands. It also states that it returns errors and warnings.

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

Conciseness4/5

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

The description is one sentence that front-loads the main purpose ('Integrity check of the whole project') and lists specific actions. It is concise but somewhat long due to enumeration. Every part adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description explains return values ('errors (broken) and warnings (suspicious)'). It covers the scope of the validation without missing critical details. Adequate for a tool with no parameters and no nested objects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters and schema coverage is 100%. The description does not need to add parameter information. Baseline 4 for no parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs an 'Integrity check of the whole project' and lists specific checks (parses database files, verifies MapInfos entries, finds orphaned map files, checks plugins, scans event commands). This is a specific verb+resource that distinguishes it from sibling tools like 'create_map' or 'update_event'.

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

Usage Guidelines3/5

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

The description implies the tool should be used to validate project integrity, but does not explicitly state when to use it versus alternatives or provide exclusions. It lacks guidance on prerequisites 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.

write_pluginWrite plugin sourceB

Overwrite the JavaScript source of an existing js/plugins/.js.

NameRequiredDescriptionDefault
codeYesComplete new file contents
nameYes

TDQS

B3.1/5.0
Behavior2/5

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 indicates a destructive overwrite but does not mention backup behavior, validation, permissions, or side effects. The description is insufficient 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.

Conciseness4/5

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

Single sentence with no fluff, but could be more informative without increasing length significantly. Effective minimalism, but under-specified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema and no annotations. For a destructive write tool, critical details like error handling, return value, and file existence checks are missing. The description is incomplete for safe agent usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% (only 'code' has description). The description adds context for 'name' by showing its usage in the file path pattern, but for 'code' it only repeats the schema description. Partial compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Overwrite' and the resource 'JavaScript source of an existing js/plugins/<name>.js', specifying the file path pattern, which distinguishes it from sibling tools like create_plugin or read_plugin.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives, no prerequisites or exclusions provided. The description simply states what it does without contextual usage instructions.

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.

  1. 51 tool updatesv0.5.1
    • Addedadd_dialogue
    • Addedadd_plugin
    • Addedanalyze_progression
    • Addedaudit_assets
    • Addedbalance_report
    • Addedbegin_changeset
    • Addedbuild_dialogue_tree
    • Addedbulk_update_records
    • Addedcapture_stamp
    • Addedcheck_references
    • Addedcommit_changeset
    • Addedconnect_maps
    • Addedcreate_buff_skill
    • Addedcreate_event_from_template
    • Changedcreate_map1 field changed
      • addedInput schema / properties / fill
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maximum": 8191,
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "index": {
        +          "description": "Tile index, for sheets A5 (0-127) and B-E (0-255)",
        +          "type": "integer"
        +        },
        +        "kind": {
        +          "description": "Autotile kind, for sheets A1-A4 (A1 0-15, A2 16-47, A3 48-79, A4 80-127)",
        +          "type": "integer"
        +        },
        +        "sheet": {
        +          "enum": [
        +            "A1",
        +            "A2",
        +            "A3",
        +            "A4",
        +            "A5",
        +            "B",
        +            "C",
        +            "D",
        +            "E"
        +          ],
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "sheet"
        +      ],
        +      "type": "object"
        +    }
        +  ],
        +  "description": "Optional tile to fill layer 0 with, e.g. {sheet:'A2', kind:16} for grass"
        +}
    • Addeddelete_event
    • Addeddiscard_changeset
    • Addededitor_status
    • Addedevent_command_reference
    • Addedexport_texts
    • Addedfind_usages
    • Addedgenerate_enemy_scaling
    • Addedgenerate_map
    • Addedgenerate_param_curve
    • Addedget_event
    • Addedget_map
    • Addedget_record
    • Addedget_tileset_image
    • Addedget_tileset_info
    • Addedimport_asset
    • Addedimport_texts
    • Addedinstall_skills
    • Addedlint_events
    • Addedlist_assets
    • Addedlist_map_connections
    • Addedlist_stamps
    • Addedpaint_tiles
    • Addedplace_stamp
    • Addedplaytest_start
    • Addedplaytest_stop
    • Addedpreview_asset
    • Addedrender_diff
    • Addedrender_map
    • Addedrender_map_image
    • Addedsearch_map_events
    • Addedset_map_tileset
    • Addedset_switch_name
    • Addedsimulate_battle
    • Addedsimulate_event
    • Addedundo_changeset
    • Addedupdate_system
  2. 28 tool updatesv0.1.0
    • First observedadd_event_command
    • First observedconfigure_plugin
    • First observedcreate_damage_skill
    • First observedcreate_event
    • First observedcreate_healing_skill
    • First observedcreate_map
    • First observedcreate_plugin
    • First observedcreate_record
    • First observedcreate_state_skill
    • First observedget_project_info
    • First observedget_system
    • First observedlist_backups
    • First observedlist_maps
    • First observedlist_plugins
    • First observedlist_records
    • First observedplaytest_log
    • First observedplaytest_status
    • First observedread_plugin
    • First observedremove_plugin
    • First observedrestore_backup
    • First observedsearch_records
    • First observedset_project
    • First observedset_variable_name
    • First observedupdate_event
    • First observedupdate_map
    • First observedupdate_record
    • First observedvalidate_project
    • First observedwrite_plugin

TDQS

B3.4/5.0

Scored across 78 tools

Disambiguation3/5

Many tools are distinct, but several clusters overlap: create_event/create_event_from_template/add_dialogue/build_dialogue_tree/add_event_command all touch event content, and the multiple create_*_skill wrappers overlap with generic create_record. The analysis/validation group (analyze_progression, list_map_connections, find_usages, check_references, lint_events, validate_project, audit_assets) is also easy to confuse, though the descriptions do help.

Naming Consistency4/5

The set is predominantly snake_case with verb_noun names (get_map, create_event, delete_event, list_records). There are minor deviations such as noun-style names (event_command_reference, balance_report, editor_status, playtest_status/log) and mixed add/create/import/install verbs for creation, but the convention is still readable and mostly predictable.

Tool Count1/5

78 tools is far beyond the 25-tool threshold for an oversized surface and roughly five times the upper end of a well-scoped 3-15 tool server. Even for a broad RPG Maker MV project domain, this is an extreme count that makes tool selection and documentation maintenance difficult.

Completeness4/5

Coverage is unusually broad: project setup, maps, events, tiles, database records, plugins, playtests, assets, backups, changesets, validation, simulation, localization, stamps, and generation. The main gaps are destructive lifecycle operations such as no explicit delete_record, delete_map, or delete_asset, and event editing is more add/replace than remove/update at the command or page level.

Maintenance

ActivityNo data
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers