Skip to main content
Glama

torch-mcp

License: MIT MCP Protocol HarbourMasters/Torch Distro: Arch & Ubuntu

torch-mcp is a production Model Context Protocol (MCP) server for HarbourMasters/Torch, the Nintendo 64 asset extractor, archive packer, and modding suite used in modern reverse-engineering PC ports (Ship of Harkinian, Star Fox 64, Paper Mario, etc.).

Audited against upstream commit 72960ca16f4723f96aaf4037b76072c230af8c11.


We strongly recommend copying CLAUDE.md into your project root or your global agent configuration (~/.claude/CLAUDE.md).

Key rules enforced in CLAUDE.md:

  • Targeted Mid-Run Order Handling (No Collateral Process Killing): If the user asks for code changes during an active run, only kill the exact conflicting process. Never kill background builds, daemons, watchers, or servers without asking first!

  • No Unauthorized Dependencies or Hand-Rolling: Prohibits agents from adding surprise packages or writing ad-hoc throwaway scripts when dedicated project CLI tools exist.

  • Multi-Distro Compatibility: Guaranteed compatibility across Arch Linux (pacman) and Ubuntu/Debian (apt).

  • Game Dev & Asset Pipeline Standards: Prevents recursive packing loops, verifies disk artifacts, and enforces direct argv array execution without shell quoting bugs.


Related MCP server: MCP Documentation Server

Features

  • Strict Stdio Isolation: Zero non-protocol data leaked to stdout. All diagnostics, progress bars, and subprocess outputs are safely routed to stderr or encapsulated inside JSON-RPC tool responses.

  • Direct Argv Execution: Spawns torch using native argument arrays rather than /bin/sh -c strings, preventing shell injection and escaping issues with complex paths.

  • Post-Run Artifact Verification: Because Torch can return exit code 0 on certain errors (e.g. missing config.yml or unmatched ROM hash), torch-mcp inspects disk artifacts and file sizes to guarantee actual success.

  • Pre-Flight Validation: Computes ROM lowercase SHA-1 checksums, parses config.yml, checks game registration, and validates directory permissions before launching long extraction jobs.

  • Upstream Caveat Protection:

    • Guards against the broken torch binary upstream command by offering safe alternatives (torch_export_archive with O2R or torch_export_modding).

    • Enforces 3-component uint16 version parsing (X.Y.Z, 0–65535).

    • Safeguards torch pack to prevent recursive packing if the output target is inside the input directory.


Installation

Prerequisites

  • Node.js (>= 18)

  • tmux (for persistent background worker execution)

  • Linux (tested on Arch Linux and Ubuntu/Debian) or macOS

Automated Multi-Distro Installer

git clone https://github.com/CodeMasterCody3D/torch-mcp.git
cd torch-mcp
./install.sh

The installer will:

  1. Detect your package manager (pacman on Arch, apt on Ubuntu/Debian, dnf on Fedora, brew on macOS).

  2. Verify or automatically install tmux.

  3. Symlink torch-mcp to ~/.local/bin/torch-mcp.

  4. Run the automated test suite.

Optional: Compile Torch from Source

If Torch is not already installed on your system, install.sh can automatically clone, configure, and build it with Ninja and StormLib:

./install.sh --build-torch

Claude Desktop & Claude Code Setup

Claude Desktop

Add to your ~/.claude/claude_desktop_config.json:

{
  "mcpServers": {
    "torch": {
      "command": "torch-mcp",
      "env": {
        "TORCH_PATH": "/home/cody/.local/bin/torch"
      }
    }
  }
}

Claude Code CLI

claude mcp add torch torch-mcp

MCP Tools Catalog

Tool

Purpose

Key Parameters

torch_capabilities

Inspect Torch binary, registered CLI subcommands, compiled modules, and known caveats

subcommand, torch_path

torch_validate_project

Pre-flight check: ROM SHA1 checksum, config.yml match, output write permissions

rom_path, srcdir, destdir, single_yaml

torch_export_archive

Extract ROM assets into .o2r (ZIP archive) or .otr (StormLib)

rom_path, format, srcdir, destdir, version, single, additional_files

torch_export_code

Export decompiled C source code representation of assets

rom_path, srcdir, destdir, verbose, single

torch_export_headers

Generate C asset headers (--otr for OTR/O2R style)

rom_path, srcdir, destdir, otr

torch_export_modding

Export editable assets and modding.yml (raw or --xml)

rom_path, srcdir, destdir, xml

torch_import_modding

Import edited assets back into code, otr, o2r, or header

mode, rom_path, srcdir, destdir, verbose

torch_pack_archive

Pack existing directory into .o2r or .otr archive (no ROM needed)

folder, target, format, version

torch_bk64_hashes

Generate Banjo-Kazooie asset table hashes from ROM offset 0x5E90

rom_path, output_path

torch_diagnose_binary

Explains upstream torch binary bug and provides working alternatives

rom_path

torch_render_sequences

Headless audio rendering: outputs 32kHz 16-bit PCM WAV sequence driver previews

rom_path, wav_outdir, filter

torch_parse_config

Parse and inspect config.yml games, GBI settings, output paths, and segments

config_path


Game Porting & Reverse Engineering Workflows

1. Tribes 2 & Torque Asset Porting Pipeline

When porting older games like Tribes 2 (Torque Game Engine) to modern engines or cross-compiling assets:

  • Legacy Torque assets typically consist of:

    • 3D Shapes: .dts (DTS mesh hierarchy)

    • Interiors: .dif (CSG interior structures)

    • Terrain: .ter (heightmaps)

    • Missions: .mis & Scripts: .cs

    • Textures: .dds / .png

  • Use torch_pack_archive to bundle converted game resources directly into .o2r or .otr virtual filesystems for modern ports.

  • Use torch_validate_project to ensure all asset paths and manifests resolve cleanly before starting bulk conversions.

2. Standard N64 Extraction Walkthrough

  1. Validate Pre-Flight:

    {
      "name": "torch_validate_project",
      "arguments": {
        "rom_path": "/path/to/baserom.z64",
        "srcdir": "/path/to/project",
        "destdir": "/path/to/output"
      }
    }
  2. Export O2R Resource Archive:

    {
      "name": "torch_export_archive",
      "arguments": {
        "rom_path": "/path/to/baserom.z64",
        "format": "o2r",
        "srcdir": "/path/to/project",
        "destdir": "/path/to/output",
        "version": "1.0.0"
      }
    }
  3. Modding Round-Trip:

    • Run torch_export_modding to dump editable assets into output/modding/.

    • Modify the textures or models in output/modding/.

    • Run torch_import_modding with mode o2r to re-inject modified assets into a fresh game archive.


Technical Audit Findings (Commit 72960ca)

  1. torch binary Subcommand: Registered in CLI11, but its callback assigns ArchiveType::None. The Binary exporter switch rejects None, causing execution to fail. Use torch_export_archive with format o2r (which is a standard ZIP archive containing raw assets) or torch_export_modding instead.

  2. Exit Code 0 on Missing Config: If config.yml is missing or the ROM SHA-1 does not match, Torch prints a warning to console and exits with code 0. torch-mcp performs pre-flight checks and verifies disk artifacts to prevent silent failures.

  3. Target Isolation: In torch pack FOLDER TARGET ARCHIVE_TYPE, TARGET must never be inside FOLDER. The tool slices entry paths relative to the folder name length; placing the target inside the folder causes recursive self-packing corruption.

  4. Log Levels: Torch uses CRITICAL log severity for normal extraction progress indicators. torch-mcp does not treat CRITICAL in logs as an automatic fatal error.


Testing

Run the test suite:

npm test
# or
node test/index.js

All 4 test suites cover:

  • Path normalization, directory containment, and uint16 version checks.

  • SHA-1 calculation and config.yml parser.

  • Tool registry schemas, error guards, and capabilities probing.

  • Full end-to-end JSON-RPC protocol over stdio.


License

MIT License. Copyright (c) 2026 Cody (CodeMasterCody3D). HarbourMasters/Torch is developed by the Harbour Masters team.

Available Tools

12 tools
torch_bk64_hashesB

Generate Banjo-Kazooie (BK64) baseline asset table hashes from a ROM at offset 0x5E90.

ParametersJSON Schema
NameRequiredDescriptionDefault
rom_pathYesPath to the Banjo-Kazooie N64 ROM
timeout_msNoTimeout in milliseconds
torch_pathNoOptional custom path to torch binary
output_pathNoOutput YAML file path (defaults to hashes.yaml in output dir)

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses the read source (ROM at offset 0x5E90) but omits that the tool writes an output file (implied only by the output_path parameter), any failure modes, ROM validity requirements, or compute cost. For a tool that produces artifacts, the write side-effect should be stated.

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

Conciseness5/5

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

A single well-formed sentence, verb first, with zero filler. Every word is informative, and the precise offset detail earns its place.

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

Completeness3/5

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

For a single-purpose tool with 100% schema coverage this is mostly adequate, but it leaves gaps: no usage context among the torch_* family, no confirmation of the output format (only hinted by output_path's 'Output YAML file path'), and no prerequisites such as requiring a valid BK64 ROM.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline 3 applies. The description adds the domain detail 'offset 0x5E90' which enriches the ROM-source context, but it adds no parameter-specific semantics beyond what the schema already documents for rom_path, timeout_ms, torch_path, and output_path.

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

Purpose5/5

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

States a specific verb ('Generate'), a specific resource ('Banjo-Kazooie (BK64) baseline asset table hashes from a ROM at offset 0x5E90'), and a precise offset that removes ambiguity. The sibling tools (capabilities, validation, rendering, parsing, export/pack/import, diagnostics) are all clearly different in purpose, so no agent could confuse this with them.

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

Usage Guidelines2/5

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

The description offers no explicit when-to-use guidance, no exclusions, and names no alternative. Usage context is only implied by the tool's unique purpose among the torch_* siblings; there is no statement of the conditions that select this tool over any other.

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

torch_capabilitiesB

Probe Torch executable, inspect registered CLI subcommands, detect compiled features, and review registered asset types and upstream caveats.

ParametersJSON Schema
NameRequiredDescriptionDefault
subcommandNoOptional subcommand to query detailed CLI11 help for
torch_pathNoOptional path to torch binary override

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. The verbs 'probe', 'inspect', 'detect', and 'review' strongly imply a read-only, non-destructive operation, which is conveyed. However, the description does not explicitly state the operation is safe/read-only, nor does it disclose failure behavior (e.g., what happens if torch_path is invalid or a subcommand is unsupported) or potential slowness from probing an external binary.

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

Conciseness4/5

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

A single sentence front-loaded with the core action ('Probe Torch executable') followed by a compact list of distinct aspects. Efficient and free of waste, though packing four actions into one sentence slightly blurs each item's clarity. Every clause earns its place.

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

Completeness2/5

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

This is a moderately complex tool (8 subcommand enum values, external binary dependency) with no output schema and no annotations, so the description must carry more weight. It covers the 'what' but not the 'what you get back' — there is no indication of return format or how to interpret detected features/asset types. The cryptic enum values are also left unexplained. For a discovery tool, this is a notable gap.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. Both parameters are well-described in the schema (subcommand queries CLI11 help; torch_path overrides binary path), and the tool description reinforces the subcommand concept. However, the 8 enum values (otr, o2r, code, binary, header, pack, hashes, modding, ui) are cryptic abbreviations that neither the schema nor the description explains, leaving meaning for the agent to guess.

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

Purpose4/5

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

The description uses specific action verbs (Probe, inspect, detect, review) against a clear resource (Torch executable) and enumerates four distinct things it covers: CLI subcommands, compiled features, asset types, and upstream caveats. This clearly distinguishes it from all operational siblings (validate, render, export, import, pack, hash), which act on projects rather than introspect the binary itself. However, some specifics remain fuzzy — 'compiled features' and 'upstream caveats' are vague terms an agent can't fully act on.

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

Usage Guidelines3/5

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

The usage context is implied rather than stated: as an introspection/discovery tool among purely operational siblings, it is naturally a precursor to the export/pack/import tools. But the description never explicitly says when to use it, when not to, or names an alternative (e.g., 'use torch_diagnose_binary for binary-level debugging'). The guidance is left to inference from sibling names.

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

torch_diagnose_binaryA

Diagnose the upstream "torch binary" subcommand bug and get recommended workarounds for extracting raw binary assets.

ParametersJSON Schema
NameRequiredDescriptionDefault
rom_pathNoOptional path to ROM to evaluate

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the transparency burden. 'Diagnose' suggests a read-only operation and 'get recommended workarounds' indicates a return value, but side effects, failure modes, and behavior when rom_path is omitted are not disclosed.

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

Conciseness5/5

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

The description is a single sentence with no filler. The primary action and outcome are front-loaded, making it efficient and easy to parse.

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

Completeness3/5

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

The description is minimally adequate for basic invocation: it says what the tool does and the schema covers the optional parameter. However, with no output schema and no annotations, it omits output format, alternatives, and edge-case behavior that would make it fully self-sufficient.

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

Parameters3/5

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

The single parameter rom_path is fully documented in the schema with 100% coverage. The description adds no additional meaning about how rom_path affects the diagnosis or the recommended workarounds, so it lands at the high-coverage baseline.

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

Purpose4/5

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

The description names a specific action ('Diagnose the upstream "torch binary" subcommand bug') and a concrete outcome ('get recommended workarounds for extracting raw binary assets'). This distinguishes it from the sibling pack/export tools, though it never explicitly contrasts them. The use of 'upstream' is slightly jargon-heavy, preventing a 5.

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

Usage Guidelines3/5

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

The intended context is implied: use this when encountering the upstream torch binary subcommand bug during raw-binary-asset extraction. However, there is no explicit when-not-to-use guidance and no mention of alternatives among the torch_* siblings.

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

torch_export_archiveB

Extract assets from an N64 ROM into an O2R (ZIP resource archive) or OTR (StormLib archive) file using Torch.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoTarget archive format. o2r is ZIP-based (default). otr requires Torch built with StormLib (BUILD_STORMLIB=ON).o2r
singleNoExtract only a single asset YAML file (resolved relative to the matched game asset path)
srcdirNoDirectory containing config.yml (defaults to cwd or ROM parent directory)
destdirNoOutput directory where the archive and debug files will be written
verboseNoEnable verbose logging and diagnostic output
versionNoArchive port-version string (e.g. "1.0.0"). Must be 3 uint16 numbers (0-65535 each).
rom_pathYesPath to the N64 ROM file
timeout_msNoTimeout in milliseconds (default 600000 = 10 minutes)
torch_pathNoOptional custom path to torch binary
additional_filesNoOptional additional files to package into the root of the archive (o2r only)

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure dirty. It names the operation 'Extract' and the archive formats, but does not disclose side effects (e.g., writing debug files), external dependencies (the torch binary), or success/failure behavior. This is minimal for a tool that wraps an external process.

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

Conciseness5/5

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

The description is a single clear, front-loaded sentence with no filler. Every word contributes to identifying the tool's core function and output formats.

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

Completeness2/5

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

Given the tool's complexity (10 parameters, two archive formats, and an external binary), this description is too sparse. It omits the need for a config.yml, the distinction between o2r and otr behavior beyond the schema enum, debug output, and the external Torch dependency. The schema covers parameter names but not the overall execution context.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 10 parameters. The description itself adds no parameter-level meaning beyond the general concept of extracting assets into archives; it does not compensate beyond that baseline.

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

Purpose5/5

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

States a specific verb ('Extract assets') and resource ('an N64 ROM') with explicit target formats (O2R and OTR). This clearly distinguishes it from likely sibling tools such as torch_pack_archive, which would more likely package already-extracted assets.

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

Usage Guidelines2/5

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

The description gives no guidance about when to choose this tool over alternatives like torch_pack_archive, torch_export_code, or torch_export_modding. It implies the general use case of extracting from a ROM, but does not state any exclusions, prerequisites, or recommended scenarios.

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

torch_export_codeB

Export decompiled C source code representation of N64 assets from a ROM using Torch.

ParametersJSON Schema
NameRequiredDescriptionDefault
singleNoExport code for only a single YAML asset file
srcdirNoDirectory containing config.yml
destdirNoOutput directory where C code will be written
verboseNoEnable verbose output and include byte offsets where supported
rom_pathYesPath to the N64 ROM file
timeout_msNoTimeout in milliseconds (default 600000 = 10 minutes)
torch_pathNoOptional custom path to torch binary

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden of behavioral disclosure. It says the tool 'exports' decompiled C code, implying filesystem output, but it does not state whether files are overwritten, where output goes, whether the ROM is modified, or what side effects occur. The 10-minute default timeout and optional custom torch path suggest heavier operations that are not disclosed.

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

Conciseness4/5

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

The description is one concise sentence that front-loads the action and resource. It avoids fluff, but the phrase 'decompiled C source code representation' is slightly awkward and the description could be more readable without significant length increase.

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

Completeness2/5

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

With 7 parameters, no annotations, and no output schema, a one-sentence description is not enough context for reliable invocation. The schema describes parameter names, but the description does not explain operational details such as whether a config.yml is needed by default, where output lands, or what the tool returns or writes on success.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters including 'single', 'srcdir', 'destdir', and 'torch_path'. The description adds no parameter-level meaning beyond the schema, which is acceptable at the baseline 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 names a specific action ('Export') and a specific resource ('decompiled C source code representation of N64 assets from a ROM'). 'C source code' differentiates it from sibling export tools like torch_export_headers and torch_export_archive, so an agent can identify what this tool produces without opening the schema.

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

Usage Guidelines3/5

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

The intended use is implied: use this when you want decompiled C code for N64 assets from a ROM. However, the description gives no explicit when-not-to-use guidance, prerequisites, or references to alternative export tools, so the agent must infer context from the sibling list.

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

torch_export_headersC

Generate C headers for assets from an N64 ROM using Torch.

ParametersJSON Schema
NameRequiredDescriptionDefault
otrNoSelect OTR/O2R-style headers (--otr flag)
srcdirNoDirectory containing config.yml
destdirNoOutput directory where headers will be generated
rom_pathYesPath to the N64 ROM file
timeout_msNoTimeout in milliseconds
torch_pathNoOptional custom path to torch binary

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Generate C headers' and does not mention that this likely invokes an external binary, writes files to destdir, may require a config.yml in srcdir, or what side effects or failure modes exist. This is a meaningful transparency gap for a tool that produces files.

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

Conciseness4/5

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

The description is one short sentence and is front-loaded with the core purpose. However, 'using Torch' is somewhat redundant with the tool name and context, and the sentence is too terse to carry operational guidance, though there is no filler or structural clutter.

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

Completeness2/5

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

Given six parameters, no output schema, and no annotations, the description is incomplete. It does not explain what output the agent should expect, whether destdir or srcdir are needed for typical use, or what happens during generation. An agent would need to inspect parameter names and infer workflows to call this tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 even without additional parameter details in the description. The description adds general purpose context but does not enrich the meaning of rom_path, destdir, srcdir, or timeout_ms beyond their schema descriptions.

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

Purpose4/5

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

The description states a specific action and resource: 'Generate C headers for assets from an N64 ROM using Torch.' This distinguishes it from sibling export tools like torch_export_archive or torch_export_modding by naming the artifact type (C headers) and source (N64 ROM). It is clear but does not elaborate on which assets or what the headers are used for.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as torch_export_code, torch_export_archive, or torch_export_modding. The description gives no context for selecting it, no prerequisites, and no exclusions. An agent must infer the use case entirely from the tool name and the single sentence.

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

torch_export_moddingA

Export editable asset files from an N64 ROM using Torch modding export. Produces modding.yml manifest and editable raw or XML assets.

ParametersJSON Schema
NameRequiredDescriptionDefault
xmlNoSelect XML exporter instead of default Modding exporter
srcdirNoDirectory containing config.yml
destdirNoDestination root directory (modding assets are written into destdir/modding)
rom_pathYesPath to the N64 ROM file
timeout_msNoTimeout in milliseconds
torch_pathNoOptional custom path to torch binary

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of disclosing behavior. It states that the tool 'Produces modding.yml manifest and editable raw or XML assets', which conveys the primary output and side effects (writes files). However, it does not mention potential overwrites, prerequisites like config.yml in srcdir, or whether the ROM is modified, leaving some behavioral ambiguity for an export/write operation.

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

Conciseness5/5

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

Two sentences with no filler. The first sentence front-loads the action and method; the second lists concrete outputs. Every word contributes to understanding the tool, making it highly efficient.

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

Completeness4/5

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

With 6 parameters but 100% schema coverage and a clear description of outputs, the definition is nearly complete for an export tool. The main missing piece is explicit mention of prerequisites (e.g., config.yml in srcdir) and return behavior, but these are either in the schema or minor for this tool. Overall, an agent can invoke it correctly with the provided information.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds marginal meaning by mentioning 'raw or XML assets', which hints at the xml parameter, but the schema already details each parameter including the xml switch. No additional semantic value beyond that is provided.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Export editable asset files from an N64 ROM using Torch modding export.' It further distinguishes itself from sibling export tools by naming the 'modding.yml manifest' and 'editable raw or XML assets' as outputs, which separates it from torch_export_archive, torch_export_code, and torch_export_headers.

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

Usage Guidelines4/5

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

The description clearly states the scenario: exporting editable assets via the Torch modding export. It implies when to use this tool (when moddable, editable assets are needed) but does not explicitly mention alternatives or exclusion conditions, such as 'use torch_export_archive for packed outputs'. This is clear context without explicit when-not guidance.

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

torch_import_moddingB

Import edited modding assets from destdir/modding/modding.yml back into code, otr, o2r, or header targets.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYesTarget export mode to import edited assets into
srcdirNoSource directory containing config.yml
destdirNoDestination directory containing the modding/ folder and modding.yml
verboseNoEnable verbose output
rom_pathYesPath to the N64 ROM file
timeout_msNoTimeout in milliseconds
torch_pathNoOptional custom path to torch binary

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden of behavioral disclosure. It indicates that assets are imported into build targets, which implies writes or modifications, but it does not disclose whether existing targets are overwritten, what files are affected, or any ROM/path requirements beyond the schema.

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

Conciseness5/5

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

The description is a single sentence with no filler. It is front-loaded with the primary action and includes the most relevant path and target information, earning its place.

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

Completeness2/5

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

Given 7 parameters, no annotations, and no output schema, the description is too minimal. It conveys the core action but lacks side-effect disclosure, usage routing, and enough workflow context for an agent to invoke it confidently in a modding pipeline.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds the path relationship 'destdir/modding/modding.yml' and names the target modes, which maps to the mode enum, but it does not explain srcdir, destdir, rom_path, or other parameters beyond what the schema already states.

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

Purpose5/5

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

The description states a specific verb ('Import'), a specific resource path ('destdir/modding/modding.yml'), and the destination targets ('code, otr, o2r, or header'). This clearly identifies the tool's function and distinguishes it from siblings like torch_export_modding.

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

Usage Guidelines3/5

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

The phrase 'back into' implies this is the reverse of an export operation and should be used after editing modding assets, but the description does not explicitly state when to use the tool versus alternatives, nor does it mention preconditions or exclusions.

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

torch_pack_archiveB

Pack a directory of prepared resource files into an O2R or OTR archive without requiring a ROM or config.yml.

ParametersJSON Schema
NameRequiredDescriptionDefault
folderYesInput directory containing prepared assets to pack recursively
formatYesArchive type: "o2r" or "otr"
targetYesOutput archive file path (.o2r or .otr). Must NOT be inside the input folder!
versionNoOptional archive port-version (X.Y.Z uint16 format e.g. "1.0.0")
timeout_msNoTimeout in milliseconds
torch_pathNoOptional custom path to torch binary

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and it does add one genuinely useful behavioral trait: no ROM or config.yml is required, which shapes an agent's expectation about prerequisites. However, it discloses nothing about side effects such as whether an existing target file is overwritten, whether the source folder is left untouched, or that it shells out to a torch binary (implied only by torch_path/timeout_ms params).

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

Conciseness4/5

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

A single, front-loaded sentence with zero filler. The purpose is stated immediately and the key differentiator is included. It is efficient, though the one-sentence structure leaves no room for usage routing or behavioral caveats.

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

Completeness3/5

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

For a 6-parameter tool with no output schema and no annotations, the description covers the essential purpose but leans heavily on the schema for everything else. It adequately explains what the tool does and one distinguishing constraint, but an agent still cannot infer overwrite behavior, dependency on the torch binary, or error conditions without additional probing.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds marginal meaning by framing 'folder' as 'a directory of prepared resource files' and referencing the O2R/OTR archive types that map to the format enum, but it does not explain the version uint16 format or the torch_path dependency beyond the schema.

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

Purpose4/5

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

The description states a specific verb and resource ('Pack a directory of prepared resource files into an O2R or OTR archive') and adds a key scoping fact: it works without a ROM or config.yml. It does not explicitly name the closest sibling (torch_export_archive), but the 'without requiring a ROM or config.yml' clause effectively carves out its niche.

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

Usage Guidelines3/5

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

The phrase 'without requiring a ROM or config.yml' implies when to prefer this tool (when those inputs are unavailable), but it never names alternatives like torch_export_archive, nor states when NOT to use it. Usage context is implied rather than explicit.

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

torch_parse_configA

Parse, inspect, and summarize a Torch config.yml file, displaying registered ROM SHA1s, game titles, asset paths, GBI microcodes, output maps, and segment definitions.

ParametersJSON Schema
NameRequiredDescriptionDefault
config_pathYesPath to config.yml file (or directory containing config.yml)

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries full responsibility for behavioral disclosure. It implies a read-only operation (parse, inspect, summarize) but does not explicitly state it is non-destructive, nor does it mention error handling, side effects, or permission requirements. It does list the output content, which is useful, but lacks depth for a tool with no annotation support.

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

Conciseness5/5

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

The description is a single sentence that front-loads the action (Parse, inspect, and summarize) and the resource (Torch config.yml file), then efficiently lists the specific data elements. There is no filler or redundant information, making it concise and well-structured.

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

Completeness3/5

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

For a tool with one parameter and no output schema or annotations, the description lists what it displays but does not specify the return format or behavior on invalid config files. It also does not mention whether the operation has any side effects or prerequisites. While adequate for a simple parsing tool, it leaves gaps that an agent would need to infer.

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

Parameters3/5

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

Schema description coverage is 100%, as the config_path parameter is fully described in the schema ('Path to config.yml file (or directory containing config.yml)'). The description adds no extra semantics about the parameter, so the baseline of 3 applies since the schema already handles it.

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 with specific verbs (Parse, inspect, and summarize) and identifies the exact resource (Torch config.yml file). It enumerates the specific content it processes (ROM SHA1s, game titles, asset paths, GBI microcodes, output maps, segment definitions), which distinguishes it from sibling tools like torch_validate_project or torch_export_archive.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention when it is appropriate to choose this over torch_validate_project for validation or torch_export_* for conversion. There is no context about prerequisites or typical use cases, leaving the agent to infer.

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

torch_render_sequencesA

Headless audio extraction: renders sequence-driver audio assets and writes 16-bit PCM stereo 32kHz WAV files via Torch UI test harness without opening a display window.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoOptional asset-name substring filter (TORCH_SEQ_FILTER e.g. "music" or "seq")
srcdirNoSource directory containing config.yml
rom_pathYesPath to N64 ROM
timeout_msNoTimeout in milliseconds
torch_pathNoOptional custom path to torch binary
wav_outdirYesDirectory where rendered .wav files will be saved

TDQS

A3.7/5.0
Behavior3/5

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

There are no annotations, so the description carries the full burden for behavioral disclosure. It does disclose headless execution, the test-harness mechanism, and the output WAV format, which is helpful. However, it does not mention overwrite behavior, prerequisites, failure conditions, or any return value.

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

Conciseness5/5

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

A single, front-loaded sentence with a clear 'Headless audio extraction:' label. Every phrase adds useful detail, with no filler or repetition.

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

Completeness3/5

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

With six parameters, no annotations, and no output schema, the description should cover more context. It defines the output artifact and headless behavior, but it omits what the tool returns on success and what project/configuration prerequisites are required, so it is adequate but not complete.

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

Parameters3/5

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

Schema description coverage is 100%, so all six parameters are already documented in the schema. The description does not add per-parameter meaning beyond aligning audio rendering with WAV output, so the baseline of 3 applies.

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

Purpose5/5

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

The description states a specific verb ('renders'), a resource ('sequence-driver audio assets'), and a concrete output ('16-bit PCM stereo 32kHz WAV files'). It also clarifies the headless execution mode, which distinguishes this tool from sibling export/import/config utilities.

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

Usage Guidelines3/5

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

The phrase 'Headless audio extraction' implies this is the tool to use when audio must be rendered without a display window, but it gives no explicit when-to-use vs alternatives. No sibling tools are named and no exclusion conditions are provided.

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

torch_validate_projectB

Pre-flight validation for a Torch project: calculates ROM SHA1, parses config.yml, checks hash matches, verifies destination permissions, and validates asset paths.

ParametersJSON Schema
NameRequiredDescriptionDefault
srcdirNoPath to source project directory containing config.yml (defaults to current working directory)
destdirNoTarget output destination directory
rom_pathYesAbsolute or relative path to the N64 ROM file (.z64, .n64, .v64)
single_yamlNoOptional single YAML asset file to test path resolution for

TDQS

B3.3/5.0
Behavior3/5

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

The description lists the validation steps (SHA1 calculation, config parsing, permission verification, asset path checks) which provides a good sense of what happens, but it does not disclose whether the operation is read-only, what side effects occur (if any), or how failures are reported (exceptions, error codes, etc.). With no annotations provided, the description carries the full burden and only partially fulfills it.

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

Conciseness4/5

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

The description is a single, efficient sentence that front-loads the primary purpose ('Pre-flight validation') and lists the key checks. It avoids fluff and is easy to parse, though it could be organized as a short list for even faster scanning.

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

Completeness2/5

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

The description gives an overview of what the tool does but omits essential runtime context: what the tool returns (e.g., a success/failure report, exit code), how to interpret results, and what happens on validation failure. There is no output schema and no mention of error behavior, so an agent cannot anticipate the tool's outcome beyond the general validation actions. For a validation tool, this is a significant gap.

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

Parameters3/5

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

All four parameters are fully described in the input schema (coverage 100%). The description adds only a high-level overview (e.g., mentions 'calculates ROM SHA1' for rom_path, 'parses config.yml' for srcdir) without providing extra constraints, formats, or interaction details. Since the schema already documents the parameters, the description adds minimal incremental value.

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

Purpose5/5

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

The description clearly identifies the tool as a validation step with a specific verb ('validate') and resource ('Torch project'). It enumerates concrete checks (ROM SHA1, config parsing, hash match, permissions, asset paths), which distinguishes it from siblings like torch_parse_config (which only parses config) and the export tools. An agent can immediately understand its role.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives. The description does not mention that it should be run before exports or other operations, nor does it contrast with sibling tools. An agent would have to infer its placement from the name and sibling context.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 12 tool updatesv1.0.0
    • First observedtorch_bk64_hashes
    • First observedtorch_capabilities
    • First observedtorch_diagnose_binary
    • First observedtorch_export_archive
    • First observedtorch_export_code
    • First observedtorch_export_headers
    • First observedtorch_export_modding
    • First observedtorch_import_modding
    • First observedtorch_pack_archive
    • First observedtorch_parse_config
    • First observedtorch_render_sequences
    • First observedtorch_validate_project

TDQS

A3.7/5.0

Scored across 12 tools

Disambiguation5/5

Each tool targets a distinct operation or output type. The four export tools differ by output format (archive, code, headers, modding), and import_modding is the clear inverse of export_modding. No two tools appear to serve the same purpose.

Naming Consistency4/5

Most tools follow the verb_noun pattern (e.g., validate_project, parse_config, export_archive). However, torch_capabilities and torch_bk64_hashes are noun-only, breaking the otherwise consistent pattern.

Tool Count5/5

With 12 tools, the server is well-scoped for the N64 ROM modding domain. Each tool covers a specific capability without redundancy, fitting comfortably in the ideal range.

Completeness5/5

The tool surface covers the full lifecycle: probing, validation, parsing, rendering, exporting/importing in multiple formats, packing, hashing, and even diagnosing a known bug. There are no obvious missing operations that would block common workflows.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers