crabsmadethis/d2r-horadric-tools
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| D2R_GAME_DIR | No |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| d2r_lookup_uniqueA | Look up a D2R unique item by name or numeric UID. Searches unique_items.py data. Returns item info + stats. Supports substring matching (e.g. "harlequin" finds Harlequin Crest). Args: query: Item name (or substring) or numeric UID |
| d2r_lookup_set_itemA | Look up a D2R set item by name or numeric ID. Searches set_items.py data. Returns item info + set membership. Supports substring matching. Args: query: Item name (or substring) or numeric set item ID |
| d2r_lookup_item_baseA | Look up a D2R base item by 3-char code or name. Searches item_bases.py data. Returns dimensions, requirements, sockets. Supports substring matching on names. Args: query: 3-character item code (e.g. "hax") or item name |
| d2r_lookup_runewordA | Look up a D2R runeword by name or numeric ID. Searches runewords.py data. Returns runes, valid bases, stats. Supports substring matching. Args: query: Runeword name (or substring) or numeric runeword ID |
| d2r_lookup_statA | Look up a D2R stat by ID, canonical name, or YAML alias. Searches item_stat_cost.py data. Returns encoding info (save bits, save add, param bits, value shift) needed for binary stat encoding. Args: query: Stat ID, canonical name (e.g. "fireresist"), or alias (e.g. "fcr") |
| d2r_lookup_skillA | Look up a D2R skill by name or numeric ID. Searches skills.py data. Returns skill ID and class. Supports substring matching. Args: query: Skill name (or substring) or numeric skill ID |
| d2r_searchA | Search across ALL D2R item types: uniques, sets, runewords, bases. Use this when you don't know what type of item you're looking for. Returns up to 20 results tagged by type. Args: query: Search term (substring match across all item names) |
| d2r_save_scanA | Run d2rdoctor scanner on a .d2s save file. Returns a structured result with checksum/size status, item counts, and any scanner errors or warnings. status == "error" iff errors is non-empty. Deployment-blocker rule: never deploy a save that this tool flags as error (see CLAUDE.md Rule #17). Args: path: Absolute path to .d2s file, or bare character name (resolved against Steam saves dir). |
| d2r_save_inspectA | Summarize a .d2s save: class, level, stats, progression, merc. No scanner pass — use d2r_save_scan for validation. Args: path: Absolute path to .d2s file, or bare character name. |
| d2r_save_list_itemsA | List items on disk in a .d2s save, optionally filtered by location. Args: path: Absolute path to .d2s file, or bare character name. location: Filter: equipped, inventory, cube, stash, merc_equipped, or None for all. |
| d2r_save_diffC | Compare two .d2s files and return structural differences. Args: path_a: First save (treated as "before"). path_b: Second save (treated as "after"). |
| d2r_chargen_listA | List character names defined in chars/*.yaml. |
| d2r_chargen_validateB | Validate a character YAML and optionally run a dry-run binary build. Args: name: Character name (resolves to chars/.yaml). yaml_only: Skip the dry-run binary build + scanner pass. |
| d2r_chargen_buildA | Build and deploy a character to the live saves directory. Structurally enforces CLAUDE.md rules #3, #4, #10, #17: backs up the live save, builds to a temp file, runs the scanner on the temp, and only promotes the temp to the live save if the scanner passes. Live save is untouched on scanner failure. Args: name: Character name (chars/.yaml must exist). phase: Deploy through phase (1-4). Default: full deploy (4). force: Skip the freshness gate (discards server progress). Avoid unless intentional. |
| d2r_chargen_importA | Import a server-synced .d2s save into chars/.yaml. Args: name: Character name (reads live save at /.d2s). force: Overwrite an existing chars/.yaml. |
| d2r_mod_buildC | Build mod from vanilla + overlays + scripts into build/. |
| d2r_mod_deployC | Build + deploy mod to the game mod folder (runs CASC injection by default). |
| d2r_mod_undeployA | Revert the deployed D2R mod, restoring the vanilla game state. Removes the mod directory from the D2R install (or keeps it on disk with keep_mod=True) and unregisters the launch options. Use this to roll back a deploy without rebuilding, or before switching to a different mod. Args: keep_mod: If True, leave the built mod directory in place on disk. game_dir: Override the auto-detected D2R install path. |
| d2r_mod_diffC | Compare vanilla/ vs build/ tables. Returns list of changed files. |
| d2r_mod_extractC | Extract vanilla data from CASC archive into vanilla/. |
| d2r_mod_cleanA | Wipe the local mod build artifacts to start from a clean slate. Deletes the build/ directory and resets generated chargen data files. Does NOT touch the deployed D2R install; run d2r_mod_undeploy first if you also want to revert the running game. |
| d2r_mod_updateC | Full recovery pipeline: extract → build → deploy. |
| d2r_mod_auditB | Audit vanilla skills and items; write markdown reports. Args: skills: Run skills audit. items: Run items audit. audit_all: Run both audits (overrides skills/items). output_dir: Directory to write reports into. Default: docs/audit. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/crabsmadethis/d2r-horadric-tools'
If you have feedback or need assistance with the MCP directory API, please join our Discord server