Skip to main content
Glama

🎮 RPG Maker MV Ultimate

An AI copilot that builds, understands and watches your RPG Maker MV game

npm downloads CI MCP Registry node license

Quick start · What it does · Map generation · Live bridge · Intelligence · Tools


A Model Context Protocol server that lets an AI agent work on a real RPG Maker MV project on disk — database, maps, events, plugins, system — through 13 consolidated tools validated against the actual engine, so what comes out is coherent and playable.

It does three things that are usually missing:

🏗️ Builds

Generates maps that look hand-made, wires events from presets, and edits every database with real IDs instead of invented ones.

🧠 Understands

Reads the whole project and answers why the door never opens, which map nobody can reach, which skill breaks the game.

👀 Watches

Runs the game and reports back: exceptions, player position, screenshots — and reloads a map you just edited without losing the save.

⚡ Quick start

1 — Add it to your MCP client. No clone needed; the package ships an executable.

{
  "mcpServers": {
    "rpgmaker-mv": {
      "command": "npx",
      "args": ["-y", "rpgmaker-mv-mcp"],
      "env": {
        "RPGMAKER_PROJECT_PATH": "C:/path/to/your/RPGMakerMV/project"
      }
    }
  }
}
# Claude Code, user scope
claude mcp add rpgmaker --scope user \
  --env RPGMAKER_PROJECT_PATH="C:/path/to/project" \
  -- npx -y rpgmaker-mv-mcp
# From source
git clone https://github.com/DiegoLopez0208/RpgMakerMVUltimate-MCP
cd RpgMakerMVUltimate-MCP
npm install && npm run build
RPGMAKER_PROJECT_PATH=/path/to/your/project npm start

MCP clients load tool definitions once at startup, so restart the client after adding or upgrading the server.

2 — Point it at a project. RPGMAKER_PROJECT_PATH is the folder containing data/, js/ and index.html. The server starts without it; call set_project_path at runtime instead if you prefer.

3 — Let the agent look around first.

get_project_context { detail: "full" }        → what exists, with real IDs
analyze_project     { view: "overview" }      → health, counts, unreachable maps

Works with Claude Desktop, Claude Code, opencode, and any MCP-compatible client.

Related MCP server: RPG Maker MZ MCP Server

🧭 What it does

flowchart LR
    A["🤖 Agent"] -->|"generate_map · manage_map_event"| B["📁 Project on disk"]
    B -->|"validate · balance · metrics"| A
    B -->|"playtest"| C["🎮 Running game"]
    C -->|"exceptions · position · screenshots"| A
    A -->|"reload_map"| C

The bottom half of that loop is what the bridge adds. Before it, the agent wrote files and hoped.

🗺️ Map generation

Two paths, both behind generate_map. Pick by whether your project uses RTP art.

mode: "procedural" (default)

mode: "semantic"

How

Clones a hand-authored map from the 106 bundled RTP templates, closest size first

Lays out a mission graph, then paints it through a tileset profile

Looks like

Real multi-tile buildings, walls, furniture

Rooms and corridors shaped by what the space is for

Tilesets

RTP, or close to it

Any — DLC, itch.io, custom

Guarantees

Same seed → same map

Same seed → same map, and the key is always reachable before the door it opens

The knowledge-driven path

{ "mode": "procedural", "theme": "town", "name": "Riverbend", "width": 40, "height": 30 }

Themes with a matching template — town, village, dungeon, interior, castle, world and more — clone a real map instead of painting tile noise. Themes without one (beach, swamp, desert…) fall back to Perlin terrain, BSP dungeons and cellular caves. Combat themes auto-wire random encounters from your existing troops; town and village auto-create enterable house interiors with two-way warps.

Themes · forest town village castle dungeon cave beach desert swamp ruins interior snow harbor volcano sewer fortress magic_forest magic_interior space_interior space_exterior world

Other modes: blank (empty canvas), themed (simple layout), template (one specific bundled map), batch (many at once), duplicate (copy an existing map).

The tileset-independent path

The bundled templates are raw MV map JSON, so their tile IDs only mean anything on RTP sheets. Change the tileset and the map turns to noise. semantic keeps the layout abstract until the last moment:

manage_system { action: "mine_templates" }               # learn from THIS project
generate_map  { mode: "semantic", tilesetId: 5, rooms: 6, seed: 42 }
  • Mining reads every map you already made and derives semantic layouts (ground / wall / water / prop / door, multi-tile props kept whole), a tileset profile naming the concrete tile your project uses for each role, and token adjacency counts. Nothing in the project is modified — everything lands in .mcp-cache/.

  • Generating builds the mission first — entrance → key → locked door → treasure → boss → exit, plus side rooms — as a graph whose edges are the only ways through, then paints it. Because the lock is an edge and the key sits on the entrance side of it, the map is solvable by construction. Autotile shapes are recomputed at the end from the finished neighbourhood, never guessed cell by cell.

  • The result includes markers naming the cell of every mission role, which is where to put events with manage_map_event.

  • Pass a mined templateId (e.g. "mined-3") to re-materialise one of your own maps onto a different tileset.

🔌 The live bridge

playtest on its own is fire-and-forget: the game opens and nothing comes back. The bridge closes the loop.

manage_system { action: "install_bridge_plugin" }   # once per project
manage_system { action: "bridge_start" }            # opens ws://127.0.0.1:32123
manage_system { action: "playtest" }                # the game connects on its own
manage_system { action: "bridge_telemetry", types: ["exception", "log"] }
sequenceDiagram
    participant A as 🤖 Agent
    participant S as 🖥️ MCP server
    participant G as 🎮 Game (nwjs)
    A->>S: edit_map
    S->>S: atomic write to Map002.json
    A->>S: bridge_command reload_map
    S->>G: reload_map
    G->>G: reserveTransfer + _needsMapReload
    G-->>S: reload_complete
    A->>S: take_screenshot
    S->>G: capture_screenshot
    G-->>S: PNG in base64
    S-->>A: path for analyze_image
  • 📡 Telemetry — exceptions with stack traces, console.error/warn, scene changes, player position, which event command is executing (so a hung event can be pinpointed), FPS and heap. Frames are consumed as you read them unless you pass peek.

  • ♻️ Hot reloadreload_map re-reads the current MapXXX.json and rebuilds the scene without losing party state: it reserves a transfer to the player's own position with _needsMapReload, the engine's own reload seam, rather than rebuilding Spriteset_Map by hand. reload_database re-reads one data file; System.json and Tilesets.json need a fresh playtest and are refused with an explanation.

  • 📸 Screenshotstake_screenshot { name: "collision-proof" } captures the live playtest through the MCP plugin, saves a timestamped PNG under .mcp-cache/screenshots/, and returns its path for inspection or QA evidence. No shell screenshot command is involved. manage_system { action: "bridge_screenshot" } remains as a compatibility alias.

🔒 Security

The plugin returns before anything else runs unless the game is under NW.js and was launched with a test argument. A deployed build a player double-clicks never reaches the socket code, or even require('fs').

It checks every argument rather than only argv[0] the way Utils.isOptionValid does, because playtest passes the project path first. So a deployed build deliberately launched with a literal test argument would get past the guard — and then find no handshake file, and never connect.

The server binds 127.0.0.1 only, refuses any upgrade carrying a browser Origin (cross-site WebSocket hijacking), and requires the session token from .mcp-bridge.json — compared in constant time — within 5 seconds or the connection is dropped.

The command surface is a fixed allowlist with no eval primitive.

🔍 Project intelligence

analyze_project is read-only and fully offline. It models the whole project once, so an agent can reason about a game it did not build.

View

Answers

overview

Call this first. Counts, health summary, maps unreachable from the start

validate

Every consistency problem at once — see below

explain

Why does this never happen? e.g. "Switch 12 is gated in 3 places but never set ON"

usage

Every event, common event and troop that touches a switch/variable/item, with read-write roles

graph

The map transfer network and what is reachable

ast

One event's logic as a readable tree

plugins

What plugins the project uses, their parameters and commands

critique

A designer's opinion on one map: dead space, clutter, event spread, monotony

metrics

The same map measured — see below

balance

Database entries that are out of line with their peers — see below

refactor

Command sequences copy-pasted across events, worth extracting into a Common Event

search

Find things by meaning across names, dialogue and descriptions

index

The structured digest the other views are built on

Broken transfers, missing map files, dangling common-event/item/troop references, duplicate IDs, named-but-unused switches and variables, a bad starting position, unreachable maps — and actor names written into dialogue as \N[id] that do not resolve.

That last one is worth its own sentence: the engine resolves \N[id] at draw time, not from any structural parameter, so a bad id passes every other check and the editor shows nothing wrong. The line just renders in-game with a hole where the name should be, and a player finds it before you do.

  • Reachability — flood fill from the real entry point. Walkable tiles the player can never get to, and events with no reachable tile beside them, are softlocks rather than style notes.

  • Dead space — the unreachable share of the rectangle, against a band for expected (interior / dungeon / exterior).

  • Shape — the walkable area thinned to a one-cell skeleton and read as a graph: endpoints, junctions, cycles, critical path, linearity. Linearity near 1 is a corridor with no choice to make.

  • Variety — Shannon entropy over 5×5 tile windows: the monotonous-floor problem, measured.

  • Tension — for maps with random encounters, how many steps the player is from a shop, inn or save point.

A skill dealing 400 damage is fine in a game where everything does, and broken in one where nothing else breaks 60. So each entry is scored on a power metric and compared against the others in its category: damage per MP for skills, gold per point of ATK+MAT for weapons, gold per DEF+MDF for armors, HP per EXP for enemies.

The comparison is leave-one-out — an entry is judged against statistics it had no hand in creating. Included in its own numbers, a badly broken entry drags the mean toward itself until it stops looking unusual at all.

Damage formulas are parsed, never executed (tokenise → shunting-yard → evaluate). One that cannot be read statically is listed under unreadableFormulas rather than scored as zero damage, which would pull every average down and hide the very outliers you were looking for.

Narrow with category, loosen or tighten with thresholdSd (default 2).

Offline map inspection

  • query_map { view: "ascii", mapId } — render a map as a character grid with event markers. The cheapest way to see a layout and pick coordinates.

  • query_map { view: "validate", mapId } — lint one map for invalid tile IDs, broken transfers and missing event terminators.

🧰 The 14 tools

Tool

Purpose

query_database

List / get by ID / search any database (actors, classes, skills, items, weapons, armors, enemies, states, troops, tilesets, common events, animations)

create_database_entry

Create entries, with presets: damage_skill, healing_skill, buff_skill, state_skill, boss_enemy, encounter_troop

update_database_entry

Partial updates (incl. troops & animations); append commands to common events; add enemies to troops

delete_database_entry

Delete entries with reference-breakage warnings

query_map

Map tree, full map data, events, single event, lint, offline ASCII render

generate_map

Knowledge-driven, semantic, procedural, blank, themed, template, batch or duplicate

edit_map

Fill tile layers, set display names, organize the map tree, connect two maps, set encounters

manage_map_event

Create (presets: npc, chest, teleport, door, shop, inn, boss, puzzle_switch), update, convert an NPC into a merchant/inn/sign in place, delete, add commands, bulk-populate

manage_system

Title, switch/variable names, starting position, author a plugin, scaffold an editor-openable project, playtest, open/repair in editor, mine templates, and the live bridge

take_screenshot

Capture and name a live playtest PNG through the authenticated MCP bridge

analyze_project

The read-only intelligence layer above

get_project_context

Project digest, asset index, per-tileset tile IDs, bundled-template catalog

set_project_path

Switch projects at runtime

analyze_image

Optional Vision-AI image analysis, plus offline tileset grid measurement and quadrant colors

The 101 fine-grained v4 tool names still work as call aliases. Set RPGMV_LEGACY_TOOLS=1 to advertise them too.

🛡️ Write safety

  • Atomic. Every write goes to a temp file and is renamed over the target, so an interrupted call can never leave half-written JSON.

  • Backed up. Rotated timestamped copies under .mcp-backups/ (last N, RPGMV_BACKUP_KEEP, default 10).

  • Previewable. Pass dryRun: true to any mutating tool to see exactly what it would write, without touching disk.

⚠️ Close the RPG Maker editor while an agent is working. The editor holds the project in memory and will overwrite changes when it saves.

⚙️ Configuration

Variable

Required

Description

RPGMAKER_PROJECT_PATH

recommended

The project folder (the one with data/ and js/). Optional — set_project_path works at runtime

RPGMAKER_MV_INSTALL

for playtest

Engine install root, for playtest / open_editor / scaffold_project. Defaults to the standard Steam path

RPGMV_BRIDGE_PORT

optional

Loopback port for the live bridge (default 32123)

RPGMV_BACKUP_KEEP

optional

Backups kept per file (default 10)

RPGMV_LEGACY_TOOLS

optional

1 also advertises the 101 legacy tool names

VISION_API_URL

to enable vision

Base URL of an OpenAI-compatible vision endpoint. Unset = vision disabled

VISION_API_KEY

optional

Bearer token; only sent when set

VISION_MODEL

optional

Model name (default meta/llama-3.2-90b-vision-instruct)

VISION_API_PATH

optional

Endpoint path (default /v1/chat/completions)

analyze_image { mode: "ai" } sends a project image (tileset, sprite, screenshot, battler) to any OpenAI-compatible endpoint. Nothing is sent anywhere unless you configure it; the grid and colors modes and every other tool work fully offline.

# OpenAI
VISION_API_URL=https://api.openai.com VISION_API_KEY=sk-... VISION_MODEL=gpt-4o npm start
# Ollama (local, no key)
VISION_API_URL=http://localhost:11434 VISION_MODEL=llava npm start

Works with OpenAI, Ollama, LocalAI, NVIDIA NIM, vLLM, LiteLLM, or any OpenAI-compatible proxy.

🎓 Agent Skill

A portable Agent Skill teaches any model the crash-free workflow — build maps with generate_map, add content with manage_map_event presets, never hand-paint tiles or guess IDs. It lives at skill/rpgmaker-mv-mcp/SKILL.md.

# Claude Code / Claude.ai
npx degit DiegoLopez0208/RpgMakerMVUltimate-MCP/skill/rpgmaker-mv-mcp ~/.claude/skills/rpgmaker-mv-mcp
# opencode
npx degit DiegoLopez0208/RpgMakerMVUltimate-MCP/skill/rpgmaker-mv-mcp ~/.opencode/skills/rpgmaker-mv-mcp

Also listed in awesome-claude-skills.

📚 Knowledge base

File

Content

tile-ids.json

Tile ID ranges, autotile formula, sheet descriptions, layer meanings

passage-flags.json

Flag bits, common flags, passage check logic

event-commands.json

~140 event command codes with parameter schemas

enums.json

Scope, occasion, hitType, damageType, restriction, and the rest

trait-effect-codes.json

Trait codes 11-64, effect codes 11-45

database-schemas.json

Full schemas for every MV data type

image-paths.json

img/ directories, tileset slots, naming conventions

map-templates.json

Index of the 106 bundled reference maps

stamps.json

Mined multi-tile object stamps (trees, props) per tileset

maps/

The 106 RTP reference map JSONs used for template cloning

🚧 Known limitations & roadmap

  • Decoration semantics are best-effort in the RTP-template path; rare multi-tile objects may land as single tiles. The mined path keeps multi-tile props whole.

  • Town and dungeon layouts keep improving — planned: a central plaza or well as a landmark, houses in rows facing roads, fences and yards, richer road networks, more room variety.

  • mode: "semantic" currently generates dungeon-shaped missions. Town and open-world mission grammars are next, as is using the mined adjacency counts to decorate rather than only to describe.

  • balance compares like with like inside a category, so a boss will legitimately look like an outlier next to random encounters. Read the flag, not the verdict.

  • The bridge is Windows/nwjs playtest only and needs its plugin installed in the project.

  • Vision AI requires your own endpoint.

🛠️ Development

npm install
npm run build      # tsc compile (+ copies knowledge/ into dist/)
npm test           # vitest
npm run typecheck
npm run dev        # tsx watch mode

Where

What

src/server.ts

Tool handlers and MCP transport

src/toolDefinitions.ts + src/router.ts

The 13-tool surface and its routing

src/tools/*

Per-domain CRUD

src/utils/mapGenerator.ts

Template cloning and procedural generation

src/utils/graphGenerator.ts + src/utils/materialize.ts

Mission graphs and the semantic compiler

src/bridge/*

The loopback WebSocket and the in-game plugin

src/intel/*

The read-only layer behind analyze_project

knowledge/

Static reference data and bundled maps

💬 Feedback

Actively developed, and feedback is very welcome — bug reports, weird maps, missing tools, ideas. Open a GitHub Issue with what you asked the agent to do and what you got; an exported map JSON or a screenshot helps a lot.

DiegoLopez0208/RpgMakerMVUltimate-MCP MCP server

MIT · Built for RPG Maker MV

Available Tools

13 tools
analyze_imageA
Read-onlyIdempotent

Analyze images related to the project. mode "ai" sends a project image file (tileset, character sheet, map screenshot, battler) to an external OpenAI-compatible Vision API and returns {analysis, model, tokens_used} — NETWORK SIDE EFFECT: the resized JPEG leaves your machine to the endpoint configured via VISION_API_URL / VISION_API_KEY / VISION_MODEL env vars; fails if the path escapes the project, the file is missing, or the API is unreachable/times out (120 s). mode "grid" measures a base64 PNG tileset offline and returns its 48px grid {cols, rows, totalTiles}. mode "colors" returns the average RGB of a base64 PNG's four quadrants offline (a crude what-is-on-screen check). For precise offline map layout, query_map view "ascii" is usually better than any image analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoai = Vision API on a project file; grid/colors = offline analysis of a provided base64 PNG. Default "ai"
promptNomode "ai": custom analysis question (default: thorough RPG-Maker-specific analysis)
base64PNGNomodes "grid"/"colors": raw base64 PNG data (no data: URL prefix)
imagePathNomode "ai": image path RELATIVE to the project root, e.g. "img/tilesets/Outside.png"; paths outside the project are rejected
resizeMaxNomode "ai": max width in px before upload (default 1024; lower = fewer tokens)

TDQS

A4.9/5.0
Behavior5/5

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

The description discloses network side effects (image sent to external API), required env vars, and failure modes. Annotations already state readOnly, safe, idempotent, open-world; description adds critical behavioral context without contradiction.

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 fairly long but well-structured with clear mode breakdowns. Every sentence provides necessary info; minor verbosity in the 'ai' mode explanation but overall earns its space.

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 complex tool with three modes, network side effects, and offline analysis, the description covers all important aspects: return values, failure modes, environment dependencies, and alternatives. No output schema but return format is described per mode.

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 descriptions cover all 5 parameters, but the description adds significant value by explaining mode-specific usage, defaults (resizeMax=1024), and constraints (base64PNG must be raw). This goes beyond the schema's basic descriptions.

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 analyzes images with three distinct modes (ai, grid, colors), each with specific functionality. It distinguishes itself from sibling tool query_map by noting that query_map's 'ascii' view is better for precise map layout.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use guidance for each mode, including failure conditions (path escapes, missing file, API timeout) and a clear alternative (query_map for map layout). This helps the agent decide correctly.

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

analyze_projectA
Read-onlyIdempotent

Read-only project intelligence: builds (and caches) an in-memory model of the WHOLE project so you can reason about it instead of re-reading files. view selects the lens: "overview" (default) returns game title, entity/map/event counts, a health summary (errors/warnings/info) with the top issues, and any maps unreachable from the start map — the fastest way to understand a project you did not build; "index" returns the structured digest (every map with its event count, common events, and only the NAMED switches/variables); "validate" runs every consistency check (broken transfers to non-existent maps, MapInfos entries whose Map file is missing, events that call missing common events / items / weapons / armors / troops / animations, duplicate database IDs, named-but-unused switches/variables, bad starting position, unreachable maps) returning {issueCount, bySeverity, issues[]}, optionally filtered by severity; "graph" returns the map transfer network (nodes, directed edges) plus reachability from the start map; "usage" answers "what uses X?" — pass kind (switch/variable/common_event/item/weapon/armor/troop/animation/actor/state/map) and id to get every event, common event and troop that references it, with read/write roles for switches/variables; "explain" reasons about one thing — target "switch"/"variable" + id tells you whether it is set, read, gated, a dead write, or never-set (the usual reason a door/event never triggers), and target "map" + id reports incoming transfers, what becomes unreachable if it is deleted, and whether it is the start map; "ast" parses one event page (mapId + eventId, optional page) or a common event (commonEventId) into a logical tree with a readable outline; "plugins" fuses js/plugins.js with each plugin file's @plugindesc/@author/@param/@command/@help header so you can adapt to the project's OWN systems instead of emitting vanilla events (and flags configured plugins whose file is missing); "critique" reviews ONE map (mapId) like a game designer — dead space, empty/cluttered balance, event distribution across quadrants, floor monotony, fragmented walkable regions — returning metrics plus justified, actionable suggestions and a rough score; "refactor" finds command sequences copy-pasted across events/common events and suggests extracting them into a Common Event; "search" ranks the project's human-readable text (map/NPC names, dialogue, item/skill descriptions, notes) against a free-text query like "the blacksmith" or "the dark forest". Nothing is written. Pair with the editor tools to act on what you find.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoviews "usage"/"explain": numeric id of the switch/variable/map/entity to inspect
kindNoview "usage": what kind of entity `id` refers to
pageNoview "ast": which page of the event (0-based, default 0)
viewNoWhich lens to apply (default "overview")
limitNoview "search": max results (default 20)
mapIdNoview "ast": the map holding the event to parse
queryNoview "search": free-text query, e.g. "the blacksmith", "dark forest"
minLenNoview "refactor": minimum shared command-run length to report (default 4)
targetNoview "explain": what `id` refers to (default "switch")
eventIdNoview "ast": the event on `mapId` to parse
severityNoview "validate": keep only issues of this severity
commonEventIdNoview "ast": parse this common event instead of a map event

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds details: caching of the model, whole-project scope, and specific behaviors for each view (e.g., validate returns issueCount, bySeverity, issues[]). 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.

Conciseness3/5

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

The description is quite long but well-structured with a front-loaded purpose and a bullet-like listing of views. While every sentence adds value, the length could be reduced without losing clarity. Still, it maintains reasonable conciseness for a complex tool.

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, no output schema, and multiple views, the description covers all behaviors, outputs for each lens, parameter dependencies, and caching. It is fully sufficient for an agent to select and invoke the tool correctly.

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

Parameters4/5

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

Schema coverage is 100% with descriptions for all 12 parameters. The description adds significant extra context by associating parameters with specific views (e.g., 'view=usage expects kind and id'), explaining enum values, and detailing output formats. This goes beyond the schema descriptions.

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 provides read-only project intelligence, building an in-memory model for reasoning. It enumerates specific lenses (overview, index, validate, etc.), differentiating it from sibling tools like edit_map or manage_map_event which modify the project.

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 states 'Read-only project intelligence' and 'Nothing is written.' Advises to pair with editor tools for action. This tells the agent when to use (analysis) and when not to (modification), with clear alternatives.

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

create_database_entryA

Create a new entry in an RPG Maker MV database with the next free ID; the data file is written immediately. Returns the complete created object including its new id. Two forms: with entity + data it creates a raw entry (omitted fields get engine defaults; data.name is expected); with preset it builds a ready-to-use entry from a recipe — damage_skill {name, mpCost, scope, formula, element?, animationId?}, healing_skill {name, mpCost, scope, formula}, buff_skill {name, mpCost, scope, paramId 0-7, turns}, state_skill {name, mpCost, scope, stateId, chance 0-1}, boss_enemy {name, battlerName?, specialSkillId?, params?}, encounter_troop {name, enemyIds[]}. Presets validate their required fields and fail with a validation error when missing. Class entries: data.params accepts 8 stat seeds [HP,MP,ATK,DEF,MAT,MDF,AGI,LUK] expanded to full level 1-99 curves automatically. Not supported for tilesets/animations (author those in the editor). Referenced IDs (classId, stateId, enemyIds...) are NOT validated — confirm them with query_database first.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesEntry fields. Raw entries: same properties as the RPG Maker database (name, note, traits, params...; effects for items/skills, members [{enemyId,x,y}] for troops, trigger/switchId/list for common_events). Presets: the recipe fields listed in the description
entityNoWhich database receives the new entry. Optional when preset is given (the preset implies it)
presetNoRecipe for common content; see the tool description for each preset's required data fields. Omit for a raw entry

TDQS

A4.9/5.0
Behavior5/5

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

The description discloses key behaviors: immediate file write, return of complete object, preset validation with error on missing fields, automatic curve expansion for class params, and non-validation of referenced IDs. This adds substantial value beyond the annotations, which only mark read/write safety.

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 comprehensive but well-structured: core function and return in first sentence, then forms, presets, special cases, and limitations. While lengthy, each sentence adds necessary detail, and the front-loading of key info aids quick comprehension.

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 (two modes, presets, special handling) and no output schema, the description fully covers return values, validation behavior, unsupported types, and ID validation warnings, providing complete guidance for correct invocation.

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?

With 100% schema coverage, the description still enriches understanding by clarifying raw vs preset usage, listing exact preset required fields, explaining class param expansion, and detailing expected data structures (e.g., effects for items, members for troops). This goes well beyond the schema's basic property descriptions.

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 creates a new entry with the next free ID in an RPG Maker MV database. It distinguishes itself from sibling tools like query_database and delete_database_entry by detailing two creation forms (raw and preset) and specifying the returned object.

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

Usage Guidelines5/5

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

The description explains when to use each form: raw entity+data for custom entries, presets for common types. It explicitly excludes tilesets/animations (use the editor) and advises confirming referenced IDs with query_database, providing clear usage context and alternatives.

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

delete_database_entryA
DestructiveIdempotent

DESTRUCTIVE: delete a database entry by nulling it out in its data file (written immediately; not undoable — re-create it if needed; IDs are never reused). References elsewhere are NOT cleaned up and will break at runtime: actors in the starting party, classes assigned to actors, skills in class learnings/enemy actions, items in chests/shops, enemies in troops, states in skill effects — check and update those first with query_database/update_database_entry. NEVER delete skill 1 (Attack), skill 2 (Guard) or state 1 (KO); the engine uses them directly. Supported entities: actors, classes, skills, items, weapons, armors, enemies, states. Returns the deleted object for reference; fails with an error if the ID does not exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID of the entry to delete (never skill 1/2 or state 1)
entityYesWhich database contains the entry to delete

TDQS

A4.6/5.0
Behavior5/5

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

The description adds concrete behavioral details beyond annotations: nulls out in data file, written immediately, not undoable, IDs never reused, and broken references. Annotations only indicate destructive and idempotent, so the description greatly enhances transparency.

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 well-structured, front-loading the critical 'DESTRUCTIVE' label and immediate behaviors. Every sentence provides necessary information, though slightly longer than ideal; still clear and concise.

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 lacking output schema, the description covers all needed context: purpose, side effects, forbidden IDs, supported entities, and return value. It is complete for a destructive tool with 2 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 100% and the schema already describes both parameters, including the prohibition on specific IDs for skills and states. The description restates the constraint but adds no new semantic detail beyond the schema, resulting in a baseline score of 3.

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 (delete), the resource (database entry), and specifics about how it works (nulling in data file, immediate, not undoable). It lists supported entities and distinguishes from sibling tools like create, update, and query.

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

Usage Guidelines5/5

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

The description explicitly warns about side effects (broken references) and advises to check/update related data with query_database/update_database_entry first. It also specifies forbidden IDs (skill 1/2, state 1), providing 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.

edit_mapA
DestructiveIdempotent

Modify existing maps; the affected map files / MapInfos.json are written immediately. action selects the edit: "fill_layer" overwrites an ENTIRE tile layer with one tile ID (destructive, not undoable; layers: 0-1 ground, 2-3 upper, 4 shadow bits 0-15, 5 region IDs 0-255; tileId 0 clears; find valid IDs with get_project_context detail "tileset"); "set_display_names" sets the player-visible displayName of several maps at once (entries whose map file is missing are reported in skipped, not errors); "organize_tree" re-parents maps in the editor tree (purely organizational, gameplay unaffected); "connect" creates a bidirectional pair of transfer events between two maps so the player can walk both ways; "set_encounters" sets the map's random-battle list so enemies appear while walking — encounters is [{troopId, weight?, regionSet?}] (weight default 5; regionSet [] = whole map; troopId must exist) plus optional encounterStep. WITHOUT encounters set, a map has no random battles. Returns a per-action summary. Fails with an error if a referenced map does not exist (except set_display_names, which skips). For event-level work use manage_map_event.

ParametersJSON Schema
NameRequiredDescriptionDefault
posANoaction "connect": transfer event position on map A {x, y, trigger} (trigger 1=walk-on default, 0=action button for doors)
posBNoaction "connect": transfer event position on map B {x, y, trigger}
layerNoaction "fill_layer": layer index 0-5
mapIdNoaction "fill_layer": map to modify
namesNoaction "set_display_names": [{mapId, name}] — name is what the player sees on map entry
actionYesWhich edit to perform; see the tool description
mapIdANoaction "connect": first map ID
mapIdBNoaction "connect": second map ID
tileIdNoaction "fill_layer": tile ID to write into every cell (0 = clear)
foldersNoaction "organize_tree": [{mapId, parentId}] — parentId 0 means root level
encountersNoaction "set_encounters": [{troopId, weight?, regionSet?}] random-battle entries; troopId must exist (create via create_database_entry "troops")
encounterStepNoaction "set_encounters": average steps between random battles (default 30)

TDQS

A4.8/5.0
Behavior5/5

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

Discloses that fill_layer is destructive and not undoable, writes immediately, and per-action error behavior. Matches annotations: destructiveHint=true, idempotentHint=true. Adds context like layer ranges, tile clearing, and encounter defaults beyond 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?

Description is moderately sized and front-loaded with main purpose. Each sentence contributes, but could be slightly tighter (e.g., repeating 'action' reference). Still well-structured and readable.

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?

Covers all 5 actions, parameters, side effects, error handling, and links to related tools. No output schema, but 'Returns per-action summary' suffices. Complex tool (12 params, nested) fully addressed.

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% with parameter descriptions, but tool description adds critical context (e.g., layer meanings, tile ID source via get_project_context, encounter format). Enriches understanding beyond schema alone.

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?

Tool name 'edit_map' and title 'Edit map' are clear. Description begins with 'Modify existing maps' and enumerates 5 distinct actions, each with specific purpose. Distinguishes from sibling tools like 'manage_map_event' and implicitly from 'generate_map'.

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 states 'For event-level work use manage_map_event' as alternative. Each action's use case is described (e.g., 'organize_tree' is purely organizational, 'set_encounters' affects random battles). Provides conditions like required map existence and exception for set_display_names.

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

generate_mapA

Create a new map file (next free map ID, registered in MapInfos.json; both files written immediately). mode selects the generator: "blank" makes an empty map you paint later (edit_map fill_layer); "themed" generates a simple tile layout for a theme using the tileset's real tiles; "procedural" is the full generator — for themes with matching RTP reference templates (town, dungeon, interior, castle, world, etc.) it CLONES a hand-authored template from the 106 bundled maps (real 3D buildings, walls, furniture), auto-picking the closest size; for themes without templates (beach, swamp, etc.) it generates procedurally (Perlin terrain, BSP dungeons, cellular caves). Same seed + params = same map. Pass templateId to force a specific template, or useTemplate:false to force procedural. 21 themes incl. snow, volcano, sewer, space_interior; "batch" generates several procedural maps in one call from batch specs; "duplicate" copies an existing map (transfer events still point at their ORIGINAL destinations — review them); "template" instantiates one of the 106 bundled reference maps by templateId (list them with get_project_context detail "templates"). Returns {mapId, ...} — procedural also returns the seed; batch returns all mapIds keyed for edit_map "connect". Fails with an error on unknown theme/template or unwritable files.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoWhich generator to use; see the tool description. Default "procedural"
nameNoInternal map name for the editor tree (required for mode "duplicate")
noteNoFree-form note field for plugin metadata
seedNoprocedural/batch: random seed for reproducible output (omit for random; returned in the result)
batchNomode "batch" only: one spec per map [{key, name, theme, width, height, tilesetId, seed, parentId}]; key is echoed back to match returned mapIds
themeNoRequired for themed/procedural. themed: forest, dungeon, town, castle, cave, village, swamp, desert, ruins, interior, beach. procedural adds: snow, harbor, volcano, sewer, fortress, magic_forest, magic_interior, space_interior, space_exterior, world
widthNoMap width in tiles (defaults: blank/themed 17, procedural 30; template uses the template's size)
heightNoMap height in tiles (defaults: blank/themed 13, procedural 25)
bgmNameNoAudio file from audio/bgm/ to autoplay on entry
parentIdNoMap tree folder to nest the new map under (0 = root)
addEventsNoprocedural: also place themed NPCs/chests/bosses/transfers (default true)
tilesetIdNoTileset to render with. Defaults to the one matching the theme (Outside=2, Inside=3, Dungeon=4, Overworld=1), so you normally omit it — only set it to override. A mismatched tileset renders the map as garbage
encountersNoprocedural combat themes (dungeon/cave/world/fortress/sewer/volcano): auto-populate the map's random encounters from the project's existing troops so enemies appear while walking. Default true (no-op if the project has no troops yet)
keepEventsNomode "template" only: also copy the template's events (default true)
templateIdNomode "template": bundled template ID. mode "procedural": OPTIONAL — force a specific template ID (from get_project_context detail "templates") instead of auto-picking by theme+size
displayNameNoLocation name briefly shown to the player on entry
sourceMapIdNomode "duplicate" only: existing map ID to copy (unchanged by the operation)
useTemplateNoprocedural: when true (default), clone an RTP template for themes that have one (town, dungeon, interior, etc.) instead of generating procedurally. Set false to force procedural generation even when templates exist
enterableHousesNoprocedural town/village only: also auto-generate an interior map per house with a two-way warp (action-button door outside → interior, walk-on mat inside → back to the street). Default true; the new interior map IDs are returned in interiorMapIds

TDQS

A4.9/5.0
Behavior5/5

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

The description discloses key behaviors beyond annotations: immediate file writing, cloning of hand-authored templates, auto-picking closest size, reproducibility with same seed and params, transfer events pointing to original destinations in duplicate mode, and failure conditions (unknown theme/template, unwritable files). Annotations (readOnlyHint=false, destructiveHint=false) are consistent and complemented.

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 well-structured, with the core purpose upfront and mode-specific details logically organized. It is slightly long due to the complexity (6 modes, 19 parameters), but every sentence adds value. A minor condensation could improve conciseness.

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 (19 parameters, 6 modes, no output schema), the description provides complete context: all modes, parameter interactions, defaults, return values (mapId, seed, interiorMapIds, batch keys), and failure conditions. No gaps are evident.

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?

With 100% schema description coverage, the tool description adds significant context for parameters: defaults (e.g., mode defaults to procedural, width/height defaults per mode), required conditions (e.g., name required for duplicate, theme required for themed/procedural), and warnings (mismatched tileset renders garbage). This exceeds mere schema repetition.

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 creates a new map file with a free ID, registers it, and writes immediately. It distinguishes six modes (blank, themed, procedural, batch, duplicate, template) and their specific behaviors, which differentiates it from siblings like edit_map.

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

Usage Guidelines5/5

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

The description explicitly explains when to use each mode, e.g., blank for later painting, themed for simple tile layout, procedural for full generator with templates, batch for multiple maps, duplicate for copying, template for instantiating bundled maps. It also mentions alternatives like edit_map for painting layers and get_project_context for listing templates.

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

get_project_contextA
Read-onlyIdempotent

Read-only: pre-digested project knowledge — CALL THIS FIRST in a session. detail selects the depth: "full" (default) returns id+name lists for every database, switch/variable names, starting position, and available sprite filenames per img/ folder — everything needed to create content without inventing broken references; "summary" is a cheap health check (entry counts per data file); "assets" scans img/ and Tilesets.json into a complete index (sheet dimensions, autotile kinds, categorized usable tiles, all PNG names); "tileset" returns the categorized usable tile IDs of ONE tileset (ground/water/walls/roof/decoration) for edit_map "fill_layer" — guessing tile IDs produces glitched maps; "templates" lists the 106 bundled reference maps (id, category, theme) usable with generate_map mode "template", optionally filtered by category/theme. Returns one structured object (or array for templates). GOLDEN RULES for good results: (1) build whole maps with generate_map (it stamps real houses/trees and wires encounters) and add content with the manage_map_event presets — do NOT hand-paint tiles or place decorations one tile at a time; (2) never invent tile IDs or sprite/troop/skill IDs — take them from this tool; (3) for enemies to appear, create troops then set encounters (edit_map "set_encounters"), which generate_map does automatically for combat themes.

ParametersJSON Schema
NameRequiredDescriptionDefault
themeNodetail "templates": filter by template theme
detailNoHow much and what kind of context; see the tool description. Default "full"
categoryNodetail "templates": filter by template category
tilesetIdNodetail "tileset": which tileset to categorize

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds valuable behavioral context: warns against inventing tile IDs ('guessing tile IDs produces glitched maps'), explains return types, and details what each mode outputs. 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.

Conciseness4/5

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

Well-structured with clear ordering: main purpose, detail modes, golden rules. Every sentence adds value, though the description is lengthy due to the tool's complexity. Could be slightly tighter, but still efficient.

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?

Completely covers all aspects: explains every detail mode, parameters, return types, and golden rules for correct usage. Even without an output schema, the description makes it clear what to expect. No gaps for an agent to misuse the tool.

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?

Input schema has 100% coverage, but description adds meaning beyond schema: explains what each enum value of 'detail' returns, and for tilesetId, category, theme, it specifies their role in filtering. Schema defers to description for full semantics.

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?

Explicitly states it is 'read-only: pre-digested project knowledge' and advises 'CALL THIS FIRST'. Clearly distinguishes each detail mode (full, summary, assets, tileset, templates) with specific use cases, differentiating it from sibling tools like query_map and generate_map.

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?

Provides explicit when-to-use instructions: 'CALL THIS FIRST'. Golden rules guide proper usage: use generate_map for maps, never invent IDs, set encounters correctly. Details when to use each detail mode (e.g., 'tileset' for edit_map 'fill_layer').

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

manage_map_eventA
Destructive

Create, modify or remove events on a map; the map file is written immediately. action "create" without preset makes a low-level event at x/y (empty page unless pages given; add behavior later with add_command). action "create" WITH preset builds a complete, ready-to-play event: "npc" (2-page dialogue NPC: {name, dialogues[], characterName?, characterIndex?}), "chest" (one-time loot: {items: [{type: item|weapon|armor, id, amount}]} — IDs not validated, confirm with query_database), "teleport" (one-way walk-on transfer zone: {destMapId, destX, destY, trigger?} — destination not validated), "door" (action-button warp into another map, e.g. a house entrance: {destMapId, destX, destY, characterName?, characterIndex?, trigger?, lockedSwitchId?, lockedMessage?}; with lockedSwitchId it shows a "locked" message until that game switch is ON), "shop" ({goods: [[type 0=item/1=weapon/2=armor, id, priceType 0=standard/1=custom, price]]}), "inn" ({cost?} full-recovery flow with gold check), "boss" ({troopId} one-time battle, game over on loss), "puzzle_switch" ({switchX, switchY, doorX, doorY, gameSwitchId, switchName?, doorName?} creates TWO linked events). action "update" overwrites only fields on an event; action "convert" RE-PURPOSES an existing event in place — keeping its id, position, name and sprite but replacing its behaviour — via kind: "merchant" (a working shop; pass options.goods [[type,id,priceType,price]] or the friendly options.items [{type,id}], plus optional options.greeting), "inn" (options.cost? full-recovery flow with gold check), "sign" (options.text string or string[] read-only message); ideal for "turn this NPC into a merchant" without re-placing it; "delete" removes it permanently (DESTRUCTIVE); "add_command" appends one command before a page's terminator; "populate" scatters N events of a kind (npc/chest/boss) at random positions (walkability not checked — validate with query_map "ascii"). Returns the created/updated event(s) with ids. Fails with an error if the map (or event, for update/delete) does not exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoTile X position (0-based; create/presets except puzzle_switch)
yNoTile Y position (0-based)
costNopreset "inn": gold charged for a full recovery (default 50)
kindNoaction "convert": what to turn the existing event into
nameNoEvent name shown in the editor
optsNoaction "populate": overrides {name, troopId, x, y}
countNoaction "populate": how many events (default 3)
destXNopreset "teleport"/"door": destination tile X (should be walkable)
destYNopreset "teleport"/"door": destination tile Y
doorXNopreset "puzzle_switch": door tile X
doorYNopreset "puzzle_switch": door tile Y
goodsNopreset "shop": wares [[type, id, priceType, price]] — priceType 1 uses the custom price, 0 the database price
itemsNopreset "chest": loot [{type: "item"|"weapon"|"armor", id, amount}]
mapIdYesMap the event lives on (always required)
pagesNoaction "create" without preset: full event page objects (optional)
actionYesWhat to do; see the tool description. Default "create"
fieldsNoaction "update": properties to overwrite, e.g. {"x": 5, "y": 9} or {"pages": [...]} (replaces all pages)
presetNoaction "create" only: ready-made event recipe; omit for a low-level empty event
commandNoaction "add_command": event command {code, indent, parameters}; e.g. 201=Transfer Player [0, mapId, x, y, dir, fade]
eventIdNoExisting event ID (update/delete/add_command); find it with query_map view "events"
optionsNoaction "convert": kind-specific settings — merchant {goods|items, greeting?}, inn {cost?}, sign {text}
switchXNopreset "puzzle_switch": floor-switch tile X
switchYNopreset "puzzle_switch": floor-switch tile Y
triggerNoHow the event activates: 0=action button, 1=player touch, 2=event touch, 3=autorun, 4=parallel
troopIdNopreset "boss" / populate boss: troop to battle (create it first via create_database_entry preset encounter_troop)
doorNameNopreset "puzzle_switch": editor name for the door event (default "Door")
destMapIdNopreset "teleport"/"door": destination map ID
dialoguesNopreset "npc": dialogue lines, each becomes one text box
eventTypeNoaction "populate": kind of events to scatter — "npc", "chest" or "boss"
pageIndexNoaction "add_command": which page receives the command (0-based, default 0)
switchNameNopreset "puzzle_switch": editor name for the switch event (default "Switch")
gameSwitchIdNopreset "puzzle_switch": game switch linking switch and door — pick an unused ID via manage_system get switches
characterNameNoSprite sheet from img/characters/ without extension; list options with get_project_context
lockedMessageNopreset "door": message shown while locked (default "It's locked.")
characterIndexNoWhich of the 8 characters in the sheet (0-7)
lockedSwitchIdNopreset "door": if set, the door shows lockedMessage until this game switch is ON, then warps

TDQS

A4.8/5.0
Behavior5/5

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

The description discloses behaviors beyond annotations: immediate write ('written immediately'), destructive nature of delete ('DESTRUCTIVE'), no validation for IDs or walkability, and side effects of convert (replaces behavior in place). Annotations already indicate destructiveHint=true, but description adds rich context.

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 well-structured: grouped by action and preset with clear hierarchy. Every sentence adds value, though some redundancy could be trimmed (e.g., repeating 'action'). Given the complexity (36 params, 6 actions, 8 presets), it is appropriately concise.

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?

The description covers return values ('Returns the created/updated event(s) with ids') and failure conditions ('Fails with an error if the map... does not exist'). No output schema exists, so return description is minimal but adequate. Could add more on error messages or pagination, but overall complete for the tool's complexity.

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

Parameters5/5

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

With 100% schema coverage, baseline is 3, but the description adds extensive semantics: explaining role of each preset, required fields for nested objects (e.g., items for chest, goods for shop), and behavioral nuances (locked door, puzzle_switch creating two events). It significantly enhances understanding beyond schema descriptions.

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's purpose: 'Create, modify or remove events on a map'. It distinguishes multiple actions (create, update, convert, delete, add_command, populate) and presets, providing specific details for each, differentiating it from siblings like edit_map or create_database_entry.

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

Usage Guidelines5/5

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

The description gives explicit guidance for each action and preset, including when to use alternatives (e.g., 'add behavior later with add_command'), validation notes (IDs not validated, destination not validated), and prerequisites (map must exist). It also references sibling tools like query_database and get_project_context for further steps.

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

manage_systemA
Idempotent

Read or edit project-wide settings in data/System.json (writes are immediate). action "get" returns the requested section: "full" (everything — large), "switches" or "variables" (name arrays indexed by ID; unnamed entries are empty strings — use these to find free IDs), or "title". action "set_title" changes the game title shown on the title screen. "name_switch"/"name_variable" label a switch/variable by ID — documentation only, runtime values are untouched, but good names keep event logic readable. "set_starting_position" sets where new games begin {mapId, x, y} — NOT validated against existing maps, verify with query_map "infos" first; does not affect saved games. Returns the read section or the updated values.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoset_starting_position: starting tile X (should be walkable)
yNoset_starting_position: starting tile Y
idNoname_switch/name_variable: switch or variable ID to label (1-based)
nameNoname_switch/name_variable: descriptive label, e.g. "BridgeRepaired"
mapIdNoset_starting_position: map where new games start (must exist)
titleNoaction "set_title": new game title
actionYesWhat to do; see the tool description. Default "get"
sectionNoaction "get": which part of System.json to return (default "full")

TDQS

A4.6/5.0
Behavior5/5

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

Beyond annotations (which indicate not read-only, not destructive, idempotent), the description discloses that writes are immediate, set_starting_position is not validated, and name_switch/name_variable is documentation-only. 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.

Conciseness4/5

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

The description is well-structured with a clear first sentence and subsequent details per action, but slightly verbose. However, every sentence 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?

The description covers all actions and parameters comprehensively, including warnings about unvalidated map IDs and no effect on saved games. Lacks error handling details, but acceptable given no output schema.

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?

With 100% schema coverage, the description still adds significant meaning: explains the 'full' section is large, unnamed entries are empty strings (useful for finding free IDs), and set_starting_position requires map validation via another tool.

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 or edits project-wide settings in data/System.json, lists all actions, and distinguishes itself from sibling tools that handle other database entries, maps, or 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?

The description explains when to use each action (e.g., 'get' for reading sections, 'set_starting_position' for starting position), but does not explicitly state when not to use this tool or mention alternative tools.

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

query_databaseA
Read-onlyIdempotent

Read-only: query any RPG Maker MV database (data/*.json). Three forms depending on arguments: no id/query lists every non-null entry of the entity; id fetches one entry (returns null, not an error, if it does not exist); query does a case-insensitive name search (items/weapons/armors/skills also match descriptions). Returns an array (list/search) or a single object/null (id). Use this to discover valid IDs before create/update/delete or before wiring references (class learnings, troop members, chest loot). For maps use query_map; for a digest of everything at once use get_project_context.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoFetch a single entry by its database ID (1-based). Omit to list or search
queryNoCase-insensitive substring to match against entry names (and descriptions for items/weapons/armors/skills). Ignored when id is given
entityYesWhich database to read: actors, classes, skills, items (consumables), weapons, armors, enemies, states (status conditions), troops (enemy formations), tilesets, common_events, animations

TDQS

A5/5.0
Behavior5/5

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

Annotations already indicate read-only, non-destructive, idempotent. Description adds key behaviors: returns null for missing id (not error), case-insensitive search, description matching for certain entities. 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?

Concise and well-structured: starts with read-only safety emphasis, then enumerates three usage forms, provides usage guidance, and ends with sibling differentiation. Every sentence adds value without redundancy.

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

Completeness5/5

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

Despite no output schema, description explains return types (array vs single object/null) and covers all three modes. Provides complete context for usage, parameter interactions, and relationship to sibling tools. Fully sufficient for an AI agent.

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?

100% schema coverage with descriptions, but description adds crucial semantics: explains that omitting id and query lists all entries, id returns null on missing, query is case-insensitive and also matches descriptions for items/weapons/armors/skills. Significantly enriches understanding.

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 queries RPG Maker MV database files, specifies three forms (list, fetch by id, search), and distinguishes from siblings (query_map, get_project_context). Verb 'query' and resource 'database' are explicit.

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 advises using before create/update/delete operations to discover IDs, and directs to query_map for maps and get_project_context for a full digest. Provides 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.

query_mapA
Read-onlyIdempotent

Read-only: inspect maps. view selects what you get: "infos" lists the map tree from MapInfos.json (ids, names, folder parentIds — no mapId needed); "full" returns one complete MapNNN.json (dimensions, 6-layer tile data, events — can be large); "events" lists a map's events (with query, filters by name, case-insensitive); "event" returns one event by eventId (null if absent); "validate" lints a map (invalid tile IDs per layer, missing page terminators, transfers to map 0, Self Switch OFF where ON was likely meant) returning {issueCount, issues[]}; "ascii" renders the map as a character grid with event markers and a legend — the cheapest way to "see" a layout and pick coordinates, entirely offline. Fails with an error if the map file does not exist. For player-visible images use analyze_image instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewYesWhat to read; see the tool description for each view
layerNoview "ascii" only: tile layer to draw, 0=ground (default) or 2=upper decorations
mapIdNoMap ID (required for every view except "infos"); map 1 is Map001.json
queryNoview "events" only: case-insensitive substring filter on event names
eventIdNoEvent ID within the map (required for view "event")
showEventsNoview "ascii" only: overlay event markers (default true)
showRegionsNoview "ascii" only: also return the region-ID layer as a second grid (default false)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already provide readOnlyHint and idempotentHint; description adds specifics like failure on missing file, offline nature of ascii view, and validation behavior, adding value beyond 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?

Efficient and front-loaded with 'Read-only: inspect maps.' Each sentence serves a purpose, but the description is somewhat dense; could be slightly shorter.

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 7 parameters, 1 required, and no output schema, the description thoroughly explains each view's return format, failure cases, and even provides a cheap way to 'see' layout via ASCII. Complete for the tool's complexity.

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

Parameters4/5

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

While schema has 100% coverage, the description adds meaning by explaining what each view returns (e.g., 'full' returns dimensions and tile data, 'validate' returns issueCount and issues). This compensates for the lack of output 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 it is a read-only tool to inspect maps, with specific verbs like 'inspect' and lists each view. It distinguishes itself from siblings like edit_map and generate_map by emphasizing read-only nature.

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 explicit when-to-use for each view and mentions an alternative tool (analyze_image) for player-visible images. Could be more explicit about when not to use, but context is clear.

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

set_project_pathA
Idempotent

Switch this server to a DIFFERENT RPG Maker MV project directory for all subsequent tool calls (session-wide side effect; persists until changed again or the server restarts). Validates that the path contains data/System.json and fails with an error otherwise, leaving the previous project active. Returns the new active path. Without this tool, the RPGMAKER_PROJECT_PATH environment variable set at startup applies.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute path to an RPG Maker MV project root (the folder containing data/System.json and img/)

TDQS

A4.7/5.0
Behavior5/5

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

Annotations provide idempotentHint=true, readOnlyHint=false, destructiveHint=false. The description adds behavioral details: session-wide side effect, path validation (checks for data/System.json), error behavior (fails leaving previous active), and return value (new active path). 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?

Three sentences front-load the purpose, then side effect, then return/alternative. No wasted words; 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 simplicity (one parameter, no output schema), the description covers purpose, side effects, validation, return value, and the alternative (environment variable). No missing critical details.

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 covers 100% of parameters with a clear description. The description adds validation context (must contain data/System.json) and emphasizes absolute path, which enhances understanding 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 tool's purpose: switching to a different RPG Maker MV project directory. It specifies the action (switch), the resource (project directory), and distinguishes from the startup environment variable, making it unique among 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 description explains when to use the tool (to change the project directory) and notes the alternative (environment variable at startup). It implies persistence until changed or restart, but doesn't explicitly mention when not to use it or compare with other tools.

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

update_database_entryA
DestructiveIdempotent

Partially update an existing database entry: only the keys in fields are overwritten (arrays like traits/learnings/actions are replaced wholesale, not merged); the data file is written immediately and there is no undo, so fetch current values with query_database first if you may revert. Returns the full entry after the update. Fails with an error if the ID does not exist. Special append forms that do not need fields: common_events + appendCommand inserts one event command before the list terminator; troops + addEnemyId adds a member at an auto-computed battle position. Plain troop updates and animations are not supported. Class params in fields accept 8 seeds (expanded to full curves) or 8 arrays of 100 per-level values. Editing tilesets affects every map using them; malformed flags break passability project-wide.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID of the entry to modify (must exist; find it with query_database)
entityYesWhich database contains the entry
fieldsNoSubset of properties to overwrite, e.g. {"name": "Hero", "price": 250}. Not needed when using appendCommand/addEnemyId
addEnemyIdNotroops only: enemy ID to append as a new member at an auto-computed screen position
appendCommandNocommon_events only: one event command {code, indent, parameters} appended before the terminator. Common codes: 101+401=Show Text, 121=Control Switches, 122=Control Variables

TDQS

A4.7/5.0
Behavior5/5

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

Discloses multiple behavioral traits beyond annotations: partial update with array replacement, immediate write with no undo, error on missing ID, special append operations, class parameter handling, and side effects of editing tilesets. No contradiction with annotations.

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

Conciseness4/5

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

The description is lengthy but every sentence adds necessary detail. It front-loads the main purpose and then logically covers nuances. Minor room for trimming, but well-structured overall.

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?

Covers return value (full entry after update), error conditions (ID not existing, unsupported updates), and provides sufficient detail for the 5-parameter, nested-object input. No output schema needed.

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 has 100% parameter description coverage, but the description adds meaning: clarifies fields behavior (overwrites only given keys, arrays replaced), explains append operations and their parameters, and adds context for class params (seeds or full curves).

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 partially updates an existing database entry, specifying that only keys in 'fields' are overwritten and arrays are replaced wholesale. It distinguishes from sibling tools like create_database_entry and delete_database_entry by focusing on update behavior.

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 explicit guidance: fetch current values with query_database before updating if a revert might be needed. Notes unsupported cases like plain troop updates and animations. However, does not directly compare to alternatives like create_database_entry or delete_database_entry.

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. Dates show when Glama detected each change.

  1. 2 tool updatesv5.12.2
    • Addedanalyze_project
    • Changedmanage_map_event3 fields changed
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "create",
        -  "update",
        -  "delete",
        -  "add_command",
        -  "populate"
        -]New value: +[
        +  "create",
        +  "update",
        +  "convert",
        +  "delete",
        +  "add_command",
        +  "populate"
        +]
      • addedInput schema / properties / kind
        Added value: +{
        +  "description": "action \"convert\": what to turn the existing event into",
        +  "enum": [
        +    "merchant",
        +    "inn",
        +    "sign"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / options
        Added value: +{
        +  "description": "action \"convert\": kind-specific settings — merchant {goods|items, greeting?}, inn {cost?}, sign {text}",
        +  "type": "object"
        +}
  2. 1 tool updatev5.8.1
    • Changedgenerate_map2 fields changed
      • changedInput schema / properties / templateId / description
        Previous value: -"mode \"template\" only: bundled template ID from get_project_context detail \"templates\""New value: +"mode \"template\": bundled template ID. mode \"procedural\": OPTIONAL — force a specific template ID (from get_project_context detail \"templates\") instead of auto-picking by theme+size"
      • addedInput schema / properties / useTemplate
        Added value: +{
        +  "description": "procedural: when true (default), clone an RTP template for themes that have one (town, dungeon, interior, etc.) instead of generating procedurally. Set false to force procedural generation even when templates exist",
        +  "type": "boolean"
        +}
  3. 109 tool updatesv5.8.0
    • Removedadd_common_event_command
    • Removedadd_enemy_to_troop
    • Removedadd_event_command
    • Addedanalyze_image
    • Removedanalyze_screenshot
    • Removedanalyze_tileset_image
    • Removedconnect_maps
    • Removedcreate_armor
    • Removedcreate_boss_enemy
    • Removedcreate_boss_event
    • Removedcreate_buff_skill
    • Removedcreate_chest
    • Removedcreate_class
    • Removedcreate_common_event
    • Removedcreate_damage_skill
    • Addedcreate_database_entry
    • Removedcreate_enemy
    • Removedcreate_healing_skill
    • Removedcreate_inn
    • Removedcreate_item
    • Removedcreate_map
    • Removedcreate_map_event
    • Removedcreate_npc
    • Removedcreate_puzzle_switch
    • Removedcreate_random_encounter_troop
    • Removedcreate_shop
    • Removedcreate_skill
    • Removedcreate_state
    • Removedcreate_state_skill
    • Removedcreate_teleport_event
    • Removedcreate_troop
    • Removedcreate_weapon
    • Removeddelete_actor
    • Removeddelete_class
    • Addeddelete_database_entry
    • Removeddelete_enemy
    • Removeddelete_item
    • Removeddelete_map_event
    • Removeddelete_skill
    • Removeddelete_state
    • Removedduplicate_map
    • Addededit_map
    • Removedfill_map_layer
    • Addedgenerate_map
    • Removedgenerate_map_batch
    • Removedgenerate_map_v3
    • Removedget_all_skills
    • Removedget_animation
    • Removedget_animations
    • Removedget_armors
    • Removedget_class
    • Removedget_classes
    • Removedget_common_events
    • Removedget_enemies
    • Removedget_enemy
    • Removedget_game_title
    • Removedget_items
    • Removedget_map
    • Removedget_map_event
    • Removedget_map_events
    • Removedget_map_infos
    • Changedget_project_context4 fields changed
      • addedInput schema / properties / category
        Added value: +{
        +  "description": "detail \"templates\": filter by template category",
        +  "type": "string"
        +}
      • addedInput schema / properties / detail
        Added value: +{
        +  "description": "How much and what kind of context; see the tool description. Default \"full\"",
        +  "enum": [
        +    "full",
        +    "summary",
        +    "assets",
        +    "tileset",
        +    "templates"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / theme
        Added value: +{
        +  "description": "detail \"templates\": filter by template theme",
        +  "type": "string"
        +}
      • addedInput schema / properties / tilesetId
        Added value: +{
        +  "description": "detail \"tileset\": which tileset to categorize",
        +  "type": [
        +    "number",
        +    "string"
        +  ]
        +}
    • Removedget_project_summary
    • Removedget_skill
    • Removedget_skills
    • Removedget_state
    • Removedget_states
    • Removedget_switches
    • Removedget_system
    • Removedget_tile_ids_for_tileset
    • Removedget_tileset
    • Removedget_tilesets
    • Removedget_troop
    • Removedget_troops
    • Removedget_variables
    • Removedget_weapons
    • Addedmanage_map_event
    • Addedmanage_system
    • Removedorganize_map_tree
    • Removedpopulate_map_events
    • Addedquery_database
    • Addedquery_map
    • Removedread_screenshot
    • Removedrender_map_ascii
    • Removedscan_project_assets
    • Removedsearch_actors
    • Removedsearch_classes
    • Removedsearch_enemies
    • Removedsearch_items
    • Removedsearch_map_events
    • Removedsearch_skills
    • Removedsearch_states
    • Removedset_map_display_names
    • Changedset_project_path1 field changed
      • changedInput schema / properties / path / description
        Previous value: -"Absolute path to the new RPG Maker MV project directory"New value: +"Absolute path to an RPG Maker MV project root (the folder containing data/System.json and img/)"
    • Removedset_switch_name
    • Removedset_variable_name
    • Removedupdate_actor
    • Removedupdate_class
    • Removedupdate_common_event
    • Addedupdate_database_entry
    • Removedupdate_enemy
    • Removedupdate_game_title
    • Removedupdate_item
    • Removedupdate_map_event
    • Removedupdate_skill
    • Removedupdate_starting_position
    • Removedupdate_state
    • Removedupdate_tileset
    • Removedvalidate_map
  4. 99 tool updatesv1.0.0
    • First observedadd_common_event_command
    • First observedadd_enemy_to_troop
    • First observedadd_event_command
    • First observedanalyze_screenshot
    • First observedanalyze_tileset_image
    • First observedconnect_maps
    • First observedcreate_armor
    • First observedcreate_boss_enemy
    • First observedcreate_boss_event
    • First observedcreate_buff_skill
    • First observedcreate_chest
    • First observedcreate_class
    • First observedcreate_common_event
    • First observedcreate_damage_skill
    • First observedcreate_enemy
    • First observedcreate_healing_skill
    • First observedcreate_inn
    • First observedcreate_item
    • First observedcreate_map
    • First observedcreate_map_event
    • First observedcreate_npc
    • First observedcreate_puzzle_switch
    • First observedcreate_random_encounter_troop
    • First observedcreate_shop
    • First observedcreate_skill
    • First observedcreate_state
    • First observedcreate_state_skill
    • First observedcreate_teleport_event
    • First observedcreate_troop
    • First observedcreate_weapon
    • First observeddelete_actor
    • First observeddelete_class
    • First observeddelete_enemy
    • First observeddelete_item
    • First observeddelete_map_event
    • First observeddelete_skill
    • First observeddelete_state
    • First observedduplicate_map
    • First observedfill_map_layer
    • First observedgenerate_map_batch
    • First observedgenerate_map_v3
    • First observedget_all_skills
    • First observedget_animation
    • First observedget_animations
    • First observedget_armors
    • First observedget_class
    • First observedget_classes
    • First observedget_common_events
    • First observedget_enemies
    • First observedget_enemy
    • First observedget_game_title
    • First observedget_items
    • First observedget_map
    • First observedget_map_event
    • First observedget_map_events
    • First observedget_map_infos
    • First observedget_project_context
    • First observedget_project_summary
    • First observedget_skill
    • First observedget_skills
    • First observedget_state
    • First observedget_states
    • First observedget_switches
    • First observedget_system
    • First observedget_tile_ids_for_tileset
    • First observedget_tileset
    • First observedget_tilesets
    • First observedget_troop
    • First observedget_troops
    • First observedget_variables
    • First observedget_weapons
    • First observedorganize_map_tree
    • First observedpopulate_map_events
    • First observedread_screenshot
    • First observedrender_map_ascii
    • First observedscan_project_assets
    • First observedsearch_actors
    • First observedsearch_classes
    • First observedsearch_enemies
    • First observedsearch_items
    • First observedsearch_map_events
    • First observedsearch_skills
    • First observedsearch_states
    • First observedset_map_display_names
    • First observedset_project_path
    • First observedset_switch_name
    • First observedset_variable_name
    • First observedupdate_actor
    • First observedupdate_class
    • First observedupdate_common_event
    • First observedupdate_enemy
    • First observedupdate_game_title
    • First observedupdate_item
    • First observedupdate_map_event
    • First observedupdate_skill
    • First observedupdate_starting_position
    • First observedupdate_state
    • First observedupdate_tileset
    • First observedvalidate_map

TDQS

A4.6/5.0
Disambiguation4/5

Tools are largely distinct with clear purposes, but query_database and get_project_context both provide database information, potentially causing minor confusion. Otherwise, each tool targets a specific operation.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case, such as create_database_entry, generate_map, and query_map, making naming predictable and clear.

Tool Count5/5

With 12 tools, the server covers essential RPG Maker MV operations (CRUD for databases, maps, events, system settings) without being overly numerous or sparse.

Completeness4/5

The toolset provides comprehensive coverage for editing and querying databases, maps, and events. Minor gaps include lack of a direct map deletion tool and limited support for common events, but overall functionality is robust.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/DiegoLopez0208/RpgMakerMVUltimate-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server