MCP server for interacting with the Scryfall MTG API
Rpgmaker MV is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
MCP server for reading, editing, and playtesting RPG Maker MV projects
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user xerolo44-rpgmaker-mv-mcp '--' npx -y @xerolo44/rpgmaker-mv-mcp
# 2 — ask your agent for something these tools do
# audit_assets, lint_events, simulate_event and 75 more
Rpgmaker MV costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. This one runs on your machine: your client starts Rpgmaker MV as a process under your own user, with your files and your network, so the tool surface below is what it can do to your computer rather than to a server somewhere else. Its scan result is on the Security tab — read the surface before you approve it.
This is a public server: you run it yourself and this marketplace is not in the path. You need Node.js — the current LTS (24) is the safe choice; npx comes with it. Claude Code registers it in one command; --scope user makes it available in every project. The '--' is in quotes so that PowerShell passes it on.
claude mcp add --scope user xerolo44-rpgmaker-mv-mcp '--' npx -y @xerolo44/rpgmaker-mv-mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry your client uses to start the process locally. A local server runs with your file system and your network, which is why it is priced without metering.
78 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Read from its source code. A server that builds its tool list when it starts can list more tools than this.
Checks that every image and audio file the project references exists on disk, and optionally lists files nothing references.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| includeUnused | boolean | no | Also list asset files that no scanned reference uses. |
Statically checks event command lists in map events, common events and troop pages. Rules:
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scope | string | no | Which event lists to lint. |
| mapId | integer | no | Lint only this map (affects the maps part of the scope). |
| maxLineChars | integer | no | Longest allowed Show Text line after control codes are removed (approximate). |
| minSeverity | string | no | Lowest severity to report. |
Dry-runs one map event page against a hypothetical game state and returns what it would do, without touching the project or running the game.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mapId | integer | yes | Map id. |
| eventId | integer | yes | Event id on that map. |
| page | integer | no | 0-based page index; omit to pick the page that would be active under the supplied state. |
| switches | object | no | Switch states by id, e.g. {"12": true}. |
| variables | object | no | Variable values by id, e.g. {"3": 10}. |
| selfSwitches | object | no | Self switches of this event, e.g. {"A": true}. |
| gold | integer | no | Party gold (default 0). |
| items | object | no | Items held by id, e.g. {"4": 1}. |
| choices | array | no | Answers to Show Choices, in the order they are asked. |
| seed | integer | no | Seed for the random operand (default 0). |
| battleResult | string | no | How every Battle Processing command ends, which decides the branch that runs (default win). |
| unknownCondition | string | no | What to do at a condition that cannot be simulated. |
Lists everywhere one switch, variable, item, weapon, armor, skill, state, actor, class, enemy, troop, common event or map is read, written or used,
| Parameter | Type | Required | Notes |
|---|---|---|---|
| kind | string | yes | What to look up. |
| id | integer | yes | Id of the switch, variable, database record, common event or map. |
| limit | integer | no | Most locations listed per role (reads, writes, uses). |
Finds references that point at records which do not exist: a Battle Processing (301) on a missing troop, a shop item (302/605), Change Items/Weapons/Armors (126-128),
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | integer | no | Most missing records (kind + id groups) returned. |
Copy an image or sound file from this computer into the project: <project>/<folder>/<name>.<ext>.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| source | string | yes | Absolute path of the file to import, e.g. C:\art\Hero.png or /home/me/art/Hero.png |
| folder | string | yes | Destination asset folder, e.g. img/characters or audio/bgm |
| name | string | no | File name without extension; defaults to the source's base name |
| overwrite | boolean | no | Replace an existing file with this name |
List the image and sound files in the project's asset folders (img/* and audio/*, 18 folders; all of them or one folder).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| folder | string | no | Only this folder, e.g. img/characters; omit for all folders |
| includeUsage | boolean | no | Add usedBy/unused (scans the project's data files) |
| limit | integer | no | Maximum files listed per folder |
Show a PNG from an img/* folder as an image so you can see it, with its pixel size, file size and, for img/characters and img/faces, the sheet layout implied by the name and size.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| folder | string | yes | Image folder, e.g. img/characters |
| name | string | yes | File name without extension, e.g. Actor1 |
| maxSize | integer | no | Longest edge of the returned image in pixels |
Compiles a nested tree of nodes into correctly indented event commands and optionally inserts it into an event page, so you never hand-write indents,
| Parameter | Type | Required | Notes |
|---|---|---|---|
| tree | array | yes | Dialogue nodes, in order |
| mapId | integer | no | Map to insert into; omit (with eventId) for a dry run |
| eventId | integer | no | Event to insert into; omit (with mapId) for a dry run |
| pageIndex | integer | no | Which event page (0-based) |
| index | integer | no | Position in the page's command list to insert at; defaults to the end (before the terminator). Positions inside a conditional, choice or battle body (the branch markers 402, 403, 404, 411, 412, 413, 6 |
| dryRun | boolean | no | Compile and validate only; never touches the project files |
Creates a complete, ready-to-use map event at (x, y) from a template, in one write. Refuses out-of-bounds tiles, and refuses a tile that already holds an event unless allowStack is true.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mapId | integer | yes | — |
| x | integer | yes | — |
| y | integer | yes | — |
| name | string | no | Event name; defaults to the template name (Chest, Door, Inn, Shop, Save Point, NPC) |
| allowStack | boolean | no | Allow placing the event on a tile that already has an event |
Change one or more fields on many database records at once, with a diff. Example - all weapons +10% attack: {type: 'weapons', changes: [{field: 'params.atk', op: 'percent', value: 10}]}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| type | string | yes | — |
| ids | array | no | Only these record ids |
| where | array | no | Conditions, e.g. [{field: 'wtypeId', op: 'eq', value: 1}, {field: 'name', op: 'contains', value: 'sword'}] |
| changes | array | yes | — |
| dryRun | boolean | no | true = only preview the diff (default), false = write the changes |
| maxPreview | integer | no | Maximum records shown in the diff |
Generate stat curves over levels and (optionally) write them into a class. Each curve goes from start at minLevel to end at maxLevel with a shape: linear, ease-in (slow start), ease-out (fast start), ease-in-out, exponential (constant growth factor) or logistic (S-curve).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| curves | array | yes | — |
| minLevel | integer | no | — |
| maxLevel | integer | no | — |
| classId | integer | no | Write the curves into this class |
| dryRun | boolean | no | — |
Spread enemy stats along a curve for smooth difficulty progression. Give the enemies ordered from weakest to strongest; the first gets each curve's start, the last its end, the rest are interpolated with the chosen shape.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| enemyIds | array | yes | Enemy ids from weakest to strongest |
| curves | array | yes | — |
| dryRun | boolean | no | — |
Measure the game's balance from its data: (1) class stat curves at chosen levels, (2) the attack skill's damage by level against a reference enemy, (3) a matrix of attackers vs enemies (average damage and hits to kill) and (4) enemy threat vs the same characters (damage of the enemy's best attack…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| levels | array | no | Levels for the curve tables |
| classIds | array | no | Classes for the curve tables (default: the first 6) |
| attackers | array | no | Characters for the matrices; default: the starting party at their initial level |
| enemyIds | array | no | Enemies to list (default: the first 40) |
| referenceEnemyId | integer | no | Enemy for the damage-by-level table (default: the one with median HP) |
Run many simulated battles of a troop against a party and report win rate, turns, how much HP the party keeps and who does the damage or dies.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| troopId | integer | yes | — |
| party | array | no | — |
| level | integer | no | Set every party member to this level |
| runs | integer | no | — |
| maxTurns | integer | no | — |
| seed | integer | no | — |
Start a transactional batch of edits. While a changeset is open, every edit tool stages its result in memory: nothing is written to disk until commit_changeset, and all reads (get_map, get_record, list_plugins, ...) reflect the staged edits.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| label | string | yes | Short description of the batch, e.g. 'Add the blacksmith to Town' |
Write every file staged by the open changeset to disk as one unit and return a per-file summary (created/modified, event/tile/record counts). Staged .json files are validated first: if any is invalid, nothing is written and the changeset stays open.
No parameter schema on file.
Drop every edit staged by the open changeset. Nothing on disk changes (nothing of the changeset was on disk yet), and reads go back to the files on disk.
No parameter schema on file.
Roll back the most recently committed changeset from its journal: modified files are restored byte-for-byte, files it created are deleted. Call repeatedly to step back through earlier commits.
No parameter schema on file.
Link two maps with Transfer Player events in both directions in one call. A door event is placed on each map; stepping on (or pressing OK at) the door on map A moves the player to map B's spawn tile and vice versa.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| a | object | yes | — |
| b | object | yes | — |
| twoWay | boolean | no | Create the return door on map B as well |
| trigger | string | no | touch = player walks onto the door tile, action = player presses OK facing it |
| fade | string | no | — |
| doorName | string | no | Event name prefix; default 'To <destination map name>' |
| sound | object | no | Sound effect to play before leaving, e.g. {name: 'Open1'} |
| allowOverlap | boolean | no | — |
Scan every map's events for Transfer Player commands and show how the maps are linked: each door with its destination, one-way links without a way back, transfers to maps that do not exist, and maps that cannot be reached from the game's start map.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mapId | integer | no | Only list doors on this map (the reachability analysis still uses all maps) |
List all records of a database type as {id, name} summaries. Use get_record for full data.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| type | string | yes | Which database to access (e.g. actors, items, skills, troops, commonEvents) |
Get the full JSON of one database record by id.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| type | string | yes | Which database to access (e.g. actors, items, skills, troops, commonEvents) |
| id | integer | yes | Record id (1-based) |
Update a database record. By default the given fields are shallow-merged into the existing record; set merge=false to replace it entirely. The record's id always stays fixed to match its array position.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| type | string | yes | Which database to access (e.g. actors, items, skills, troops, commonEvents) |
| id | integer | yes | Record id (1-based) |
| data | object | yes | Fields to set (or the complete record when merge=false) |
| merge | boolean | no | Merge into existing record (true) or replace (false) |
Append a new record to a database. The new record's fields are copied from data; missing fields should be filled in to match the shape of existing records (fetch one with get_record as a template first). Returns the new id.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| type | string | yes | Which database to access (e.g. actors, items, skills, troops, commonEvents) |
| data | object | yes | The record fields (id is assigned automatically) |
Read System.json (game title, starting party/position, terms, sounds, switches, variables, etc.). Optionally return only one top-level key.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| key | string | no | Optional top-level key to return (e.g. 'switches', 'variables', 'terms') |
Set the editor name of a game switch in System.json (e.g. switch 5 = 'Opened Chest'). The switches array grows if the id is beyond its current size.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| id | integer | yes | Switch id (1-based) |
| name | string | yes | — |
Set the editor name of a game variable in System.json (e.g. variable 3 = 'Quest Progress'). The variables array grows if the id is beyond its current size.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| id | integer | yes | Variable id (1-based) |
| name | string | yes | — |
Shallow-merge the given top-level fields into System.json (e.g. gameTitle, startMapId, startX, startY, switches, variables).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| data | object | yes | Top-level System.json fields to set |
Procedurally generate a dungeon (rooms joined by corridors) or a cave (organic, one connected region) and paint it with a tile profile.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| kind | string | yes | — |
| mapId | integer | no | Existing map to generate into (use instead of create) |
| create | object | no | New map to create (use instead of mapId) |
| seed | integer | no | Same seed, size and options give the same layout; random when omitted |
| profile | no | Tiles to paint with; defaults to a suggestion from the tileset | |
| markers | object | no | — |
| overwrite | boolean | no | Allow replacing a map that already has tiles or events |
Save a rectangle of a map as a reusable stamp in <project>/.mcp-stamps/<name>.json: all six layers (tiles, shadow bits, regions) and, with includeEvents (default true), the events standing inside it.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mapId | integer | yes | — |
| x | integer | yes | — |
| y | integer | yes | — |
| width | integer | yes | — |
| height | integer | yes | — |
| name | string | yes | Stamp name, e.g. "well" or "Tavern 2" |
| includeEvents | boolean | no | Also capture the events inside the rectangle |
| overwrite | boolean | no | Replace a stamp that already has this name |
Paste a stamp made with capture_stamp onto a map with its top-left corner at (x, y). The whole stamp must fit inside the map (it is never clipped) and the map must use the same tileset the stamp was captured from.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mapId | integer | yes | — |
| x | integer | yes | Left edge of the placement |
| y | integer | yes | Top edge of the placement |
| name | string | yes | Stamp name |
| includeEvents | boolean | no | — |
List the stamps saved in <project>/.mcp-stamps/ (name, size, tilesetId, event count), sorted by name. Stamps captured inside a changeset that is still open are not listed until it is committed.
No parameter schema on file.
Export every translatable text of the project to a CSV or JSON file inside the project (default localization/texts.csv) with columns key, context, original, translation.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| format | string | no | — |
| scope | array | no | Limit to some categories (default: all) |
| file | string | no | Output path relative to the project folder (default localization/texts.<format>) |
Apply the translation column of a file written by export_texts back into the project's data. DRY RUN BY DEFAULT: reports what would change and nothing is written until dryRun=false.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| file | string | yes | Path relative to the project folder, e.g. localization/texts.csv |
| dryRun | boolean | no | — |
| force | boolean | no | Apply rows even if their original text no longer matches |
List automatic backup sessions in <project>/.mcp-backups. A file is snapshotted there the first time each server session modifies it, so every session can be rolled back with restore_backup.
No parameter schema on file.
Restore project files from a backup session (see list_backups). Restores one file (project-relative path like 'data/Actors.json') or, with no file given, every file in the session. The current state is itself backed up first, so a restore can be undone. Refused while a changeset is open (commit or…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| session | string | no | Backup session name from list_backups; defaults to the most recent |
| file | string | no | Project-relative file to restore; omit to restore all files in the session |
Check whether the RPG Maker MV editor appears to be running and which files this server wrote have since been changed by something else (usually the editor saving over them). Report only: it never blocks or undoes any edit.
No parameter schema on file.
Integrity check of the whole project: parses every database file, verifies MapInfos entries have map files (and finds orphaned map files), checks registered plugins have source files, and scans event commands for references to missing common events or transfer destinations. Returns errors (broken)…
No parameter schema on file.
List all maps from MapInfos.json as {id, name, parentId, order}.
No parameter schema on file.
Read a map's properties (size, tileset, music, encounters, notes) and event summaries. Tile data is omitted unless includeTileData=true (it is large: width*height*6 integers).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mapId | integer | yes | — |
| includeTileData | boolean | no | — |
Shallow-merge fields into a map's JSON (e.g. displayName, note, bgm, encounterList). Refuses to touch 'data' or 'events' — use the event tools for events and paint_tiles for tiles. To switch tilesets prefer set_map_tileset.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mapId | integer | yes | — |
| data | object | yes | Map property fields to set |
Get the full JSON of one event on a map, including all pages and command lists.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mapId | integer | yes | — |
| eventId | integer | yes | — |
Replace an event on a map with the given event JSON (same shape as returned by get_event). The event's id and its array position stay in sync automatically. See event_command_reference for command codes.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mapId | integer | yes | — |
| eventId | integer | yes | — |
| event | object | yes | Complete event object (name, x, y, note, pages) |
Add a new event to a map at (x, y). If no pages are given, a single empty page (action-button trigger, no commands) is created. Returns the new event id.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mapId | integer | yes | — |
| name | string | yes | — |
| x | integer | yes | — |
| y | integer | yes | — |
| note | string | no | — |
| pages | array | no | Optional event pages; defaults to one empty page |
Delete an event from a map. The slot is set to null so other event ids are unaffected (matches editor behavior).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mapId | integer | yes | — |
| eventId | integer | yes | — |
Insert commands into an event page's command list without resending the whole event. Commands are inserted before the page's terminating {code: 0} entry (or at index if given). Multi-line constructs work naturally, e.g. Show Text is one code-101 command followed by code-401 commands. See…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mapId | integer | yes | — |
| eventId | integer | yes | — |
| pageIndex | integer | no | Which event page (0-based) |
| commands | array | yes | Commands to insert, in order |
| index | integer | no | Position in the list to insert at; defaults to the end (before the terminator) |
Add spoken dialogue to an event page in one call — builds the Show Text (101) and text-line (401) commands automatically, splitting into multiple message boxes every 4 lines. Inserted before the page's end, like add_event_command.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mapId | integer | yes | — |
| eventId | integer | yes | — |
| pageIndex | integer | no | — |
| lines | array | yes | Dialogue lines (a new message box starts every 4 lines) |
| faceName | string | no | Face image file (e.g. 'Actor1'), empty for none |
| faceIndex | integer | no | — |
| background | integer | no | 0 window, 1 dim, 2 transparent |
| position | integer | no | 0 top, 1 middle, 2 bottom |
Create a new map: writes MapXXX.json and registers it in MapInfos.json. The map starts empty unless fill is given (a ground tile for layer 0); afterwards use paint_tiles to paint it, get_tileset_info to choose tiles and add events with the event tools. Returns the new map id.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| width | integer | no | — |
| height | integer | no | — |
| tilesetId | integer | no | — |
| parentId | integer | no | Parent map id in the editor tree (0 = top level) |
| fill | no | Optional tile to fill layer 0 with, e.g. {sheet:'A2', kind:16} for grass |
Reference table of RPG Maker MV event command codes and their parameters. Consult this before writing or editing event command lists.
No parameter schema on file.
Start a playtest of the current project. mode 'nwjs' launches the game with an NW.js runtime (pass runtimePath, e.g. the Game.exe inside the RPG Maker MV install's nwjs-win folder) and captures its stdout/stderr. mode 'browser' serves the project over a local HTTP server and returns a URL to open.…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mode | string | no | — |
| runtimePath | string | no | Path to NW.js executable. If omitted in nwjs mode, common install locations (Steam, KADOKAWA, the project's own Game.exe, $RPGMAKER_MV_NWJS) are probed automatically. |
| port | integer | no | Port for browser mode |
Whether a playtest is running, in which mode, and its URL/PID.
No parameter schema on file.
Recent stdout/stderr lines from an NW.js playtest process.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| tail | integer | no | Number of lines from the end |
Stop the running playtest process and/or HTTP server.
No parameter schema on file.
List all plugins registered in js/plugins.js with status and parameters.
No parameter schema on file.
Enable/disable a registered plugin and/or merge new values into its parameters (parameter values are always strings in RPG Maker MV).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | Plugin name as it appears in list_plugins |
| status | boolean | no | true = enabled, false = disabled |
| parameters | object | no | Parameter values to merge into the plugin's parameters |
Register an existing js/plugins/<name>.js file in the plugin list. Fails if the file does not exist (use create_plugin to make a new one).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| status | boolean | no | — |
| description | string | no | — |
| parameters | object | no | — |
Remove a plugin from js/plugins.js. The plugin's .js file is NOT deleted.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
Create a new plugin file in js/plugins/ and register it. If no code is given, a standard MV plugin scaffold (with @plugindesc header) is written. Fails if the file already exists.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | Plugin file name without .js |
| description | string | no | — |
| code | string | no | Full JavaScript source; omit for a scaffold |
| status | boolean | no | — |
Read the JavaScript source of js/plugins/<name>.js.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
Overwrite the JavaScript source of an existing js/plugins/<name>.js.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| code | string | yes | Complete new file contents |
| Parameter | Type | Required | Notes |
|---|---|---|---|
| goal | object | no | What to check, exactly one key: { switch: n }, { mapId: n } or { event: { mapId, eventId } }. |
| includeGraph | boolean | no | Also return a Mermaid flowchart of the direct map transfers. |
| limit | integer | no | Most entries per list in the report. |
Select the RPG Maker MV project folder to work on (the folder containing Game.rpgproject and data/). Must be called before other tools unless the server was started with --project. Discards any open changeset (its staged edits are lost).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | yes | Absolute path to the RPG Maker MV project folder |
Summary of the current project: game title, database record counts, map count, and plugin count.
No parameter schema on file.
Render a map to a PNG image so you can SEE what it looks like: all tile layers with correct autotile shapes, shadows and tiles that draw above characters, optionally the events' character sprites, coloured event markers with their ids, region ids, a tile grid and a passability overlay (red =…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mapId | integer | yes | — |
| x | integer | no | Region left edge in tiles |
| y | integer | no | Region top edge in tiles |
| width | integer | no | Region width in tiles (default: to the map's right edge) |
| height | integer | no | Region height in tiles (default: to the map's bottom edge) |
| tileSize | integer | no | Pixels per map tile (48 = full resolution). Reduced automatically so the image stays under ~1600px |
| showEvents | string | no | Draw event character sprites, coloured id markers, both, or neither |
| showGrid | boolean | no | Overlay a tile grid |
| showRegions | boolean | no | Overlay region ids (layer 5) |
| showPassability | boolean | no | Tint blocked cells translucent red (blocked in at least one direction by the tileset flags) |
Show what changed on a map compared with an earlier version: a text summary (changed tile cells, added/removed/moved/edited events) plus a PNG of the CURRENT map with changed cells outlined yellow and added or moved events outlined green.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mapId | integer | yes | — |
| against | object | no | Which earlier version to compare with (default: the most recent backup session containing this map) |
| tileSize | integer | no | Pixels per map tile; reduced automatically so the image stays under ~1600px |
Case-insensitive substring search across database records (name, nickname, description, note, profile, messages). Searches one type, or all types when type is omitted. Returns {type, id, name, matchedIn} summaries.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | — |
| type | string | no | Database to search; omit to search all databases |
| limit | integer | no | — |
Case-insensitive substring search across events on one map or every map. Matches event names and notes; with searchCommands=true it also searches inside event command parameters (message text, script lines, plugin commands). Returns {mapId, mapName, eventId, name, x, y, matchedIn}.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | — |
| mapId | integer | no | Search only this map; omit for all maps |
| searchCommands | boolean | no | Also search inside event command lists (slower, finds text/script content) |
| limit | integer | no | — |
Create a complete damaging skill in one call. The formula uses MV damage syntax where a is the user and b the target, e.g. 'a.mat * 4 - b.mdf * 2' or 'a.atk * 2 - b.def'. Returns the new skill id.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| formula | string | yes | Damage formula, e.g. 'a.mat * 4 - b.mdf * 2' |
| damageType | string | no | What the damage hits (drain variants absorb into the user) |
| elementId | integer | no | Element id from System types (0 = none, -1 = normal attack element) |
| hitType | string | no | Hit type (affects evasion/reflection rules) |
| scope | integer | no | — |
| variance | integer | no | Damage variance % |
| critical | boolean | no | Can critically hit |
| tpGain | integer | no | TP the user gains on use |
Create a complete healing skill in one call. The formula uses MV damage syntax (a = user), e.g. 'a.mat * 2 + 200'. Heals HP or MP; optionally also removes states (e.g. a cure spell).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| formula | string | yes | Recovery formula, e.g. 'a.mat * 2 + 200' |
| recoverType | string | no | — |
| scope | integer | no | — |
| variance | integer | no | — |
| removeStates | array | no | State ids to remove from the target (100% chance), e.g. poison |
Create a skill that applies parameter buffs and/or debuffs. Parameter ids: 0 Max HP, 1 Max MP, 2 Attack, 3 Defense, 4 M.Attack, 5 M.Defense, 6 Agility, 7 Luck. If only debuffs are given the scope defaults to one enemy, otherwise one ally.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| buffs | array | no | Buffs to add to the target |
| debuffs | array | no | Debuffs to add to the target |
| scope | integer | no | — |
Create a skill that adds or removes states (poison, sleep, etc.) on the target, each with its own success chance. State ids come from the States database (list_records type=states).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| action | string | no | — |
| states | array | yes | States to add/remove |
| scope | integer | no | — |
Describe a tileset so you can choose tiles to paint: which image is assigned to each sheet (A1-A5, B-E), the tile id ranges, and for autotile sheets every kind with its type, position on the sheet image and passability.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| tilesetId | integer | yes | Tileset id (a map's tilesetId, see get_map) |
| sheet | string | no | Return the detail of one sheet |
| tileIds | array | no | — |
Return one tileset sheet (A1-A5, B-E) as an image so you can see which tile looks like what, together with its grid layout (48px tiles). Use get_tileset_info for the matching tile ids and kinds.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| tilesetId | integer | yes | — |
| sheet | string | yes | — |
Switch a map to another tileset (which sheets/tile images it uses). Existing tile ids are kept as they are, so they will show the new tileset's graphics - repaint with paint_tiles if the layouts differ.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mapId | integer | yes | — |
| tilesetId | integer | yes | — |
Paint tiles onto a map. Takes a list of operations applied in order: cells (individual positions), rect (filled or hollow rectangle) and fill (flood fill from a cell).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mapId | integer | yes | — |
| operations | array | yes | — |
Show a map's tiles as text so you can check what you painted. mode 'symbols' (default) draws one character per cell using the topmost tile of layers 0-3 (or only layer) with a legend naming each symbol; mode 'ids' prints raw tile ids of one layer. Use x/y/width/height to look at a region…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mapId | integer | yes | — |
| mode | string | no | — |
| layer | integer | no | — |
| x | integer | no | — |
| y | integer | no | — |
| width | integer | no | — |
| height | integer | no | — |
No parameter schema on file.
- Every tool, no call limit
- No card, and mcprush charges nothing for it
- Source published under MIT
- Runs on your machine — nothing of it reaches our gateway
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Rpgmaker MV or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | high | capability blast radius (high) — client exposure if the model is manipulated | −6 |
| verification-discount | source | publisher verification (provenance) — cryptographic build provenance ties the artifact to its source | −0 |
| coverage-honesty | source | inspection depth (source) — how much of the target the scan could see | −0 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
Tools were statically extracted from the published source (78 recovered), not enumerated from a running server. Tool-poisoning, Unicode-smuggling, capability and toxic-flow analysis ran on this inferred surface, but a mis-parsed registration could be missed or mis-attributed, so tool-derived findings are capped below “confirmed”. To grade the real runtime surface, scan the running server: --command "npx -y <package>".
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. high is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| install_skills | no tags | |
| audit_assets | no tags | |
| lint_events | no tags | |
| simulate_event | no tags | |
| find_usages | no tags | |
| check_references | no tags | |
| import_asset | no tags | |
| list_assets | no tags | |
| preview_asset | no tags | |
| build_dialogue_tree | no tags | |
| create_event_from_template | no tags | |
| bulk_update_records | no tags | |
| generate_param_curve | no tags | |
| generate_enemy_scaling | no tags | |
| balance_report | no tags | |
| simulate_battle | no tags | |
| begin_changeset | no tags | |
| commit_changeset | no tags | |
| discard_changeset | no tags | |
| undo_changeset | no tags | |
| connect_maps | no tags | |
| list_map_connections | no tags | |
| list_records | no tags | |
| get_record | no tags | |
| update_record | no tags | |
| create_record | no tags | |
| get_system | no tags | |
| set_switch_name | no tags | |
| set_variable_name | no tags | |
| update_system | no tags | |
| generate_map | no tags | |
| capture_stamp | no tags | |
| place_stamp | no tags | |
| list_stamps | no tags | |
| export_texts | no tags | |
| import_texts | no tags | |
| list_backups | no tags | |
| restore_backup | no tags | |
| editor_status | no tags | |
| validate_project | no tags | |
| list_maps | no tags | |
| get_map | no tags | |
| update_map | no tags | |
| get_event | no tags | |
| update_event | no tags | |
| create_event | no tags | |
| delete_event | no tags | |
| add_event_command | no tags | |
| add_dialogue | no tags | |
| create_map | no tags | |
| event_command_reference | no tags | |
| playtest_start | no tags | |
| playtest_status | no tags | |
| playtest_log | no tags | |
| playtest_stop | no tags | |
| list_plugins | no tags | |
| configure_plugin | no tags | |
| add_plugin | no tags | |
| remove_plugin | no tags | |
| create_plugin | no tags | |
| read_plugin | no tags | |
| write_plugin | no tags | |
| analyze_progression | no tags | |
| set_project | no tags | |
| get_project_info | no tags | |
| render_map_image | no tags | |
| render_diff | no tags | |
| search_records | no tags | |
| search_map_events | no tags | |
| create_damage_skill | no tags | |
| create_healing_skill | no tags | |
| create_buff_skill | no tags | |
| create_state_skill | no tags | |
| get_tileset_info | no tags | |
| get_tileset_image | no tags | |
| set_map_tileset | no tags | |
| paint_tiles | no tags | |
| render_map | no tags |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
The public result for this release does not print the flow graph, so there is nothing to show here. That is not the same as "no paths were found": what the scan did read is above, under coverage.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
Always latest — the install command names no version, so it installs the newest release when it runs; the current release on file is 0.5.1. Pin a release below and the command asks for exactly that one.
- Neue Tools für Tilesets, Karten und Event-Bearbeitung, Balancing, Lokalisierung und Playtest-Verbesserungen
No release note was published with this version.
- The version this listing was on when mcprush began following its releases. The registry was not asked when it shipped, so this row carries no date.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Rpgmaker MV can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.