retrace-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| retrace_probeA | Diagnose the Retrace installation: Node version, workspace roots, write policy, external analyzer availability (Capstone, binutils, radare2, Ghidra, PS2 toolchain, emulators) and the number of registered tools. Run this first in any session. |
| retrace_skill_listA | List the bundled engineering skills (hardware, reverse engineering, graphics, audio, build/validation) with their purpose and path. |
| retrace_skill_readB | Read the full instructions of one bundled skill before performing the matching engineering task. |
| retrace_limitsA | Show the active safety limits and the level classification of an operation before doing anything destructive. |
| rom_inspectB | Inspect an N64 ROM file: detects byte-order format (.z64, .v64, .n64), parses header, entry point, CRC and ROM name. |
| rom_identify_formatA | Identify byte-order format of an N64 ROM without reading entire file. |
| rom_find_code_regionsB | Scan an N64 ROM for executable MIPS code regions using prologue patterns. |
| rom_compareA | Compare two N64 ROM versions byte-by-byte and report segment differences. |
| elf_inspectA | Inspect a PlayStation 2 or MIPS ELF executable: header, machine type, entry point, section count, segment count. |
| elf_list_sectionsA | List all sections in a PlayStation 2 ELF binary with memory addresses, sizes, and permissions. |
| elf_list_symbolsB | List symbols from .symtab and .dynsym of a PS2 ELF binary. |
| elf_find_functionC | Locate a function by virtual address within a PS2 ELF binary. |
| mips_disassembleA | Disassemble raw MIPS machine code instructions (R4300i for N64 big-endian or R5900 for PS2 little-endian) using Capstone engine. |
| mips_analyze_functionB | Analyze a MIPS function: detects stack frame size, saved registers (ra, s0-s7, fp), calls, jumps, basic blocks and pseudocode. |
| mips_reconstruct_functionA | Reconstruct a function's structure from MIPS instructions: CFG edges, stack frame, saved registers, parameters, loops and heuristic pseudo-C. Never claims to be original source. |
| repo_get_architectureB | Summarize the repository architecture from its real files: languages, build systems, binaries, symbol/config files, directory ownership and Git state. |
| repo_inspectB | Inspect the workspace repository: file tree, detected languages, build tools, binary assets and architecture summary. |
| repo_find_referencesB | Find literal references to a symbol or identifier across repository source files without executing project code. |
| repo_search_codeC | Search repository code files for symbol names, function signatures, or string patterns. |
| repo_find_dependenciesC | Analyze dependencies declared in build files (Make, CMake, Cargo, npm) in the repository. |
| repo_get_file_historyC | Get git commit history for a file in the repository. |
| memory_inspect_regionA | Inspect a virtual memory address: checks which region it belongs to (RDRAM, KSEG, Main RAM, GS registers, VRAM) on N64 or PS2. |
| memory_check_alignmentB | Check a pointer for 4-byte or 8-byte alignment, nullness, and architectural valid range. |
| memory_analyze_overlapC | Detect memory layout collisions between buffers, heaps, display lists, and texture staging areas. |
| crash_analyzeA | Analyze a crash log or register dump from PCSX2 or an N64 emulator: parses PC, RA, SP, BadVAddr, correlates symbols, and formulates hypotheses. |
| texture_inspectB | Calculate N64 texture metadata (format, size, required buffer bytes, completeness) based on format code, size code, width and height. |
| texture_analyze_paletteB | Analyze an N64 TLUT palette buffer: count transparent vs opaque colors, unique colors, and hex values. |
| texture_decode_n64C | Decode raw N64 texture data into RGBA pixels and PNG image. |
| texture_decode_ps2B | Decode a PS2 GS texture (PSMCT32/16/16S, PSMT8/4) from swizzled or linear data, optionally with a CSM2 CLUT, into RGBA and PNG. |
| audio_inspectB | Inspect an audio asset file (PS2 VAG, N64 bank, or raw ADPCM) to detect sample rate, channels, and compression. |
| audio_decode_vag_blockB | Decode a 16-byte Sony PS2 VAG ADPCM block into 28 linear 16-bit PCM samples. |
| audio_decode_fileA | Decode a PS2 VAG/VAGi or N64 AIFC VADPCM file to 16-bit PCM WAV. N64 decoding requires the file's own VADPCMCODES codebook and refuses to invent one. |
| decomp_config_inspectB | Inspect a decompilation configuration file (YAML, JSON, splat) for functions, segments, and symbols. |
| decomp_config_validateC | Validate the syntax and structure of a decompilation configuration file. |
| decomp_config_propose_changesB | Prepare a safe proposed modification to a decompilation config and inspect the unified diff before applying. |
| decomp_config_apply_changesB | Apply an approved modification proposal to a decompilation configuration file. Requires RETRACE_ALLOW_WRITE=1. |
| graph_node_upsertC | Add or update a node in the project Knowledge Graph (file, function, symbol, structure, texture, audio, crash). |
| graph_edge_upsertC | Add or update a relationship edge between two nodes in the Knowledge Graph. |
| graph_query_neighborsB | Query related nodes in the Knowledge Graph up to a given depth (e.g. what textures does this function render? What crashes are linked to this address?). |
| graph_ingestB | Ingest an ELF, an N64 ROM, or a symbol table into the Knowledge Graph. Extracts only what is actually parsed; no code is decompiled during ingestion. |
| generate_forensic_reportB | Generate a structured forensic investigation report as Markdown, JSON, or both. The default is read-only; writing files requires RETRACE_ALLOW_WRITE=1 and write=true. |
| build_analyzeA | Inspect real build manifests and report build systems, scripts, targets, toolchain hints and safety warnings without executing commands. |
| build_runA | Run one allowlisted build command with shell:false, a workspace-bound cwd, a timeout and no shell metacharacters. Requires RETRACE_ALLOW_WRITE=1 and confirm=true. |
| compare_functionsB | Compare two functions across N64 (R4300i) and PS2 (R5900) by canonical instruction shape. Returns exact|structural|probable|unknown and never claims confirmed equivalence. |
| compare_rankC | Rank candidate functions against a reference by canonical instruction-shape similarity. |
| equivalence_recordA | Record a CONFIRMED N64<->PS2 function equivalence with mandatory evidence. Only this tool can mark equivalence as confirmed. |
| equivalence_listC | List recorded confirmed N64<->PS2 equivalences for a workspace. |
| port_project_planC | Build an evidence-driven N64/PS2 porting plan with ISA, ABI, runtime, asset and validation gates. |
| binary_translateA | Translate encoding-preserving MIPS words between N64 and PS2 endian representations. Refuses console-specific instructions unless explicitly allowed. |
| port_validate_translationB | Validate that a supported N64/PS2 encoding translation round-trips exactly; this is not a semantic equivalence proof. |
| project_intakeC | Create a read-only, reproducible intake record for an authorized N64 to PS2 port project. |
| rom_validateB | Validate a local N64 ROM header, byte order, checksum metadata and hash without copying or modifying it. |
| toolchain_probeC | Probe optional N64 reversing and PS2 development tools and report which automated stages are actually available. |
| analyze_n64_romB | Analyze an authorized local N64 ROM and produce format, region, entrypoint, checksum, code-region and string metadata. |
| split_romB | Run the installed splat CLI against a versioned config and return the generated tree. Dry-run is the default. |
| ghidra_importB | Import and analyze an authorized ROM/ELF using Ghidra Headless. Requires explicit write confirmation because Ghidra creates a project. |
| ghidra_analyzeC | Run the same reproducible Ghidra Headless import/analyze step under an explicit tool name for pipeline orchestration. |
| recompile_romC | Run the installed N64Recomp CLI with an authorized config. Returns generated output and diagnostics; it never claims a PS2 port. |
| decompile_functionB | Run m2c over an authorized assembly file and return candidate C plus raw diagnostics. Candidate code is never treated as recovered source. |
| diff_functionC | Compare two MIPS function byte strings using the internal canonical diff engine and return an explicit unverified match level. |
| generate_ps2_projectC | Generate a minimal PS2 port scaffold with CMake, a C entrypoint and an explicit pending-layer checklist. |
| create_ps2_projectC | Alias with an explicit pipeline name for generating the guarded PS2SDK project scaffold. |
| run_pcsx2B | Launch an authorized PS2 ELF with the installed PCSX2 adapter after explicit confirmation; captures are not claimed unless the configured CLI emits them. |
| build_ps2B | Build a PS2 port workspace through the existing allowlisted build runner. Requires explicit confirmation and RETRACE_ALLOW_WRITE=1. |
| save_findingC | Persist an attributed reverse-engineering finding in the workspace knowledge graph. |
| project_autopilotB | Plan or execute the evidence-driven N64-to-PS2 pipeline. It runs only installed adapters and records blocked stages instead of simulating results. |
| project_stateC | Read or persist the reproducible project manifest used by the N64-to-PS2 autopilot. |
| infer_variablesB | Infer stack locals, globals, arguments, returns and register roles from MIPS dataflow observations. Results are candidates with evidence, not automatic source edits. |
| infer_structsC | Group repeated base-register offsets into candidate structs and fields for N64-to-PS2 variable translation. |
| suggest_variable_namesC | Return evidence-ranked names for inferred variables without modifying source files. |
| validate_variable_mapC | Validate inferred variable names, offsets, widths and conflicting observations before an ABI translation is reviewed. |
| port_startC | Create a resumable, evidence-driven N64-to-PS2 port job. It preserves the ROM and never claims a port before validation. |
| port_statusB | Read the last persisted port job, including blocked stages, tool versions, artifacts and source provenance. |
| port_source_manifestC | Verify that a port project contains inspectable generated source, translated variables and provenance before packaging an ISO. |
| package_ps2_isoC | Build a PS2 ISO from an authorized ELF and project tree using mkisofs/genisoimage. The source tree and SYSTEM.CNF remain in the project. |
| iso_verifyB | Verify a PS2 ISO with an installed ISO reader and confirm that SYSTEM.CNF and BOOT.ELF are present. This is a filesystem gate, not a gameplay claim. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 76 tools
Many tools overlap heavily: ghidra_import and ghidra_analyze are explicit aliases, generate_ps2_project and create_ps2_project duplicate the same scaffold generation, and port_start/project_intake/project_autopilot project_state/port_status are hard to distinguish. Several analysis tools also overlap, such as compare_functions, diff_function, compare_rank, and port_validate_translation, making tool selection error-prone despite generally detailed descriptions.
All names use snake_case, which helps, but conventions are mixed: some are verb_noun (generate_forensic_report, analyze_n64_rom, validate_variable_map), others are noun_verb or domain-first (rom_inspect, elf_list_sections, texture_decode_n64, project_intake). Explicit aliases with different naming styles further weaken predictability.
With 76 tools, the surface is far beyond a well-scoped set and includes multiple aliases and redundant pipeline names. For a reverse-engineering/porting server this is an extreme count mismatch, even if the domain is broad.
Coverage is unusually broad across ROM/ELF inspection, MIPS analysis, memory/crash analysis, textures/audio, config editing, graph knowledge, build/run, porting, and ISO packaging/verification. Only minor lifecycle gaps remain, such as graph node deletion, asset encoding, or direct patching operations.