Skip to main content
Glama

OmniReverse Studio v3.2

Python 3.10+ C++20 Platform MCP License: MIT

OmniReverse Studio is a 42-engine reverse engineering, binary unpacking, symbolic execution, and static analysis suite. It exposes a unified interface across a native x64 Windows GUI (OmniReverse_Studio.exe), a headless CLI with single-file HTML audit export, and a Model Context Protocol (MCP) server for automated agent integration.


Native Win32 GUI Preview


Related MCP server: PseudoLens

Architecture & Subsystems

                                  [ Target Artifact ]
           (PE / ELF / Mach-O / APK / IPA / ASAR / HBC / AOT / PyInstaller / WASM)
                                          │
                                 ┌────────┴────────┐
                                 ▼                 ▼
                         Static Triage      Dynamic & Emulation
                      (Capstone / LIEF)     (Unicorn / Frida / HWBP)
                                 │                 │
            ┌────────────────────┼─────────────────┴──────────────────┐
            ▼                    ▼                                    ▼
    [ Symbolics & MBA ]  [ Runtimes & Unpackers ]             [ Memory & Patch ]
    - Z3 BitVec Solver   - Costura / PyInstaller              - BasicBlock CFG (SVG)
    - OLLVM Unflatten    - Flutter AOT / Hermes HBC           - NOP / JMP / RET Patch
    - Mixed-Boolean-Arith - Unity IL2CPP / Bun SEA            - Live RAM Pointer Scan
            │                    │                                    │
            └────────────────────┬────────────────────────────────────┘
                                 ▼
                     Unified Integration Layer
         ┌───────────────────────┼───────────────────────┐
         ▼                       ▼                       ▼
   CLI Pipeline           Native Win32 GUI            MCP Server
 (omni_cli_runner.py)   (OmniReverse_Studio.exe) (JSON-RPC via stdio)

Engine Breakdown (42 Modules)

Category

Modules

Core Technical Mechanics

Native Disassembly & Headers

granular_engine, native_packer_engine

PE32/PE32+, ELF, Mach-O Fat/Thin parsing via LIEF/Capstone. RIP-relative LEA reconstruction, IAT rebuild via Scylla heuristics, SysWhispers/Hell's Gate SSN extraction.

Dynamic Tracer & Hardware BPs

native_tls_hwbp_engine, dynamic_unpacker

DR0–DR3 hardware breakpoint harness. VEH + NtGetContextThread context hiding, SChannel DecryptMessage and OpenSSL SSL_read inline hooking without integrity trip.

Mobile & Cross-Platform

mobile_deep_engine, apk_engine, android_ext_engine

Android APK/AXML/ARSC parser, DEX multi-dex string pool extractor. React Native Hermes (.hbc) bytecode deserializer, Flutter Dart AOT Snapshot (libapp.so) reader, Unity IL2CPP global-metadata.dat string/method recovery.

Desktop Application Unpackers

modern_packers_engine

Electron .asar virtual filesystem reader, V8 .jsc cache extractor, PyInstaller archive unpacker (pyz extraction), Bun single-executable application (SEA) bundle splitter.

Symbolic Execution & Deobfuscation

symbolic_protocol_engine, mba_engine

Z3 SMT solver for AST-driven serial/keygen constraint verification (BitVec(64)). Mixed Boolean-Arithmetic (MBA) simplifier using Hensel modular inversion. OLLVM control-flow unflattening state-machine solver.

Patching & Memory Forensics

visual_patch_memory_engine

Recursive traversal disassembler for basic-block control flow graph (CFG) generation (JSON + standalone SVG). Non-destructive byte patcher (NOP, force_jmp, ret_true). Windows VirtualQueryEx process RAM scanner with multi-level pointer path resolving.

Static Code & Protocol Auditing

sqli_detector, web_bundle_engine, wasm_engine, report_generator

Python AST and regex taint tracking for SQL injection detection. Webpack SourceMap reconstructor (.map recovery). WebAssembly (.wasm) section decoder. Single-file dark-theme HTML report generator.


Quickstart

1. Requirements

  • Python 3.10 – 3.12

  • Windows 10/11 x64, Linux (Ubuntu 22.04+), or macOS (Apple Silicon / Intel)

  • Optional: C++ compiler (MSVC v143 or GCC 12+) for building the native injector DLLs.

cd OmniReverse-Studio
pip install -e .

2. Standalone Native GUI Launcher

Launch the high-performance Windows x64 GUI with zero web dependencies:

# Launch Native GUI directly
OmniReverse_Studio.exe

3. Command-Line Interface (CLI)

Run automated triage, unpacking, or export standalone HTML security audit reports:

# Export standalone HTML security audit report
omni target_sample.exe --export-html security_audit.html

# Deep triage & vulnerability scan
omni target_sample.exe --mode deep

# Unpack modern application packages (Electron ASAR, PyInstaller, Flutter AOT)
omni app.asar --mode unpack

# Run full v3.2 inspection suite with CFG graph generation
omni target_lib.so --mode v3_suite

4. 1-Click AI Agent MCP Setup

OmniReverse Studio natively implements the Model Context Protocol (MCP) over stdio. Register the server into your installed AI agent in one command:

# Register in Claude Desktop, Cursor, and Antigravity simultaneously
python omni_server.py --install-all

# Or target a specific client
python omni_server.py --install-claude
python omni_server.py --install-cursor
python omni_server.py --install-antigravity

Manual configuration snippet (claude_desktop_config.json or mcp.json):

{
  "mcpServers": {
    "omni-reverse": {
      "command": "python",
      "args": [
        "C:/path/to/OmniReverse-Studio/omni_server.py"
      ]
    }
  }
}

Available MCP Tools:

  • omni_auto_orchestrate: Magic-byte classification and automatic multi-engine triage.

  • omni_advanced_native: PE/ELF/Mach-O header, Scylla IAT, direct syscall extraction.

  • omni_mobile_deep: Flutter AOT, React Native Hermes, Unity IL2CPP, IPA Mach-O.

  • omni_modern_unpacker: Electron ASAR, PyInstaller PYZ, Bun SEA bundles.

  • omni_symbolic_protocol: Z3 SMT constraint solving, OLLVM unflattening, Protobuf recovery.

  • omni_patch_cfg_memory: Basic-block SVG CFG generation, non-destructive binary patch, live RAM pointer scan.

  • omni_bsim_vault: SQLite FTS5 function signature search and binary diffing.

5. Automated CI/CD Audits (GitHub Action)

Add OmniReverse binary audit into your GitHub Actions workflow:

- name: OmniReverse Security Audit
  uses: OmniReverse-Studio/OmniReverse-Studio@main
  with:
    target: 'dist/target_binary.exe'
    mode: 'all'
    output-report: 'dist/security_audit.html'

Educational Examples & Challenges

The examples/ directory contains educational scripts demonstrating practical reverse engineering and constraint solving:

  • examples/crackme_xor.py: A 15-character rolling XOR keygen challenge.

    python examples/crackme_xor.py OMNI-REVERSE-32
  • examples/sample_z3_solver.py: Simplifies Mixed Boolean-Arithmetic (MBA) expressions and computes 64-bit Hensel modular inverses.

    python examples/sample_z3_solver.py
  • examples/sample_hermes_unpack.py: Demonstrates React Native Hermes (.hbc) bytecode header parsing and endpoint recovery.

    python examples/sample_hermes_unpack.py

Verification & Test Suite

The test harness exercises all 42 engines against synthetic and real binary targets (packed executables, mobile bundles, and memory buffers):

# Run full test suite
python -m pytest tests/ -v

Security & Disclosure

This project is built strictly for authorized defensive reverse engineering, malware analysis, interoperability research, and vulnerability discovery. Binary patching is non-destructive and operates on output copies (*_patched) by default. Dynamic memory manipulation features require explicit operator flags.

License

MIT License. See LICENSE for details.

Available Tools

17 tools
omni_advanced_nativeC

Advanced Native & .NET Reverse Engineering: ECMA-335 .NET CIL/BSJB metadata & Costura.Fody unpacker, Scylla-style IAT thunk reconstructor, Hell's Gate / SysWhispers direct syscall scanner, automated YARA + Crypto S-Box synthesizer, and structural BinDiff patch comparator.

NameRequiredDescriptionDefault
actionYesNative analysis action to run.
target_pathYesPrimary binary path (.exe, .dll, .so, .elf, .dylib).
secondary_pathNoSecond binary path (for 'bindiff') or optional export directory / YARA rule name.

TDQS

C2.5/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden, and it discloses almost nothing: it does not say whether the tool writes files, unpacks into memory or disk, requires privileges, has runtime cost, or is safe versus destructive. The only behavioral hint is the word 'unpacker', which leaves ambiguity about side effects. For a binary-manipulation tool with zero annotation coverage this is a substantial gap.

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

Conciseness3/5

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

It is a single front-loaded sentence whose items each correspond to a real action, so there is little pure filler. However, the unbroken jargon chain with no per-action structure or verbs makes it harder to parse than a short list would be. Density substitutes for organization here.

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 tool exposes five distinct analysis modes with no output schema and no annotations, so the description should explain roughly what each action returns and what side effects to expect. Instead it stops at naming the techniques, leaving the agent unable to predict results, output form, or whether artifacts are written to disk. This is inadequate for a multi-mode binary analysis tool.

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 parameters are already documented and the baseline is 3. The description does add a little meaning by expanding each enum value into its underlying technique, which helps interpret terse action names like 'yara_crypto' or 'iat_scylla'. It adds nothing about how target_path or secondary_path interact with each action beyond what the schema already states.

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

Purpose3/5

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

The description is a dense capability list (ECMA-335 CIL/BSJB, Costura.Fody unpacking, IAT reconstruction, direct syscall scanning, YARA/crypto S-box synthesis, BinDiff comparison) that maps loosely onto the five enum values. It never states in plain terms what the tool does as an operation, and it does not distinguish itself from close siblings such as omni_deep_reverse, omni_modern_unpacker, or omni_symbolic_protocol. An agent can guess the domain but cannot cleanly separate this tool from its neighbors.

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 when-to-use guidance, no condition selecting one action over another, and no named alternatives among the many sibling tools. The description only implies usage through the technique names attached to each action. Nothing tells the agent when this tool is the wrong choice.

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

omni_audit_sqliC

AST-based Static Application Security Testing (SAST) to audit Python, JS, PHP, or Java code/files for SQL Injection (SQLi) vulnerabilities and unparameterized query sinks.

NameRequiredDescriptionDefault
codeNoOptional raw code snippet to scan directly.
pathNoPath to the source file or directory to scan for SQLi.
languageNoLanguage: 'auto', 'python', 'javascript', 'php', 'java'. Default 'auto'.auto

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden and does little of it. It does not say whether code is executed or only parsed, whether it is safe/read-only, whether there are depth or size limits, or what findings look like (there is no output schema either).

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 that names the technique, targets, and vulnerability class with no filler. It is dense but efficient; a short follow-on sentence about output or execution model would still be warranted.

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 scanner with no annotations and no output schema, the definition covers what it scans but not what it returns or how it behaves. The critical gap is the execution model and finding format, which an agent needs in order to interpret results.

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 enum and the code/path split are already documented. The description restates the supported languages but adds no meaning about how code and path interact or which takes precedence.

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 technique (AST-based SAST), a concrete target (Python/JS/PHP/Java source code or files), and a concrete vulnerability class (SQLi / unparameterized query sinks). That is enough to tell it apart from siblings like omni_dynamic_probe or omni_obfuscate_snippet, though no sibling is named explicitly.

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 statement of when to choose this over alternatives such as omni_dynamic_probe (runtime testing) or omni_triage_target, and no exclusions. The only implied guidance comes from the tool being SQLi-specific, so the agent must infer the rest.

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

omni_auto_orchestrateB

Autonomous Format-Aware Reverse Engineering Orchestrator: classifies any file or directory (.exe, .dll, .apk, .ipa, .asar, .pyc, .wasm, .js, source dir) by magic bytes and runs the optimal multi-engine audit chain in one call.

NameRequiredDescriptionDefault
target_pathYesTarget file or directory path to automatically classify and analyze.

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden. It discloses the dispatch behavior (classify, then chain engines) but says nothing about cost, runtime, whether the target is executed, what is written to disk, or what permissions are required — critical omissions for an 'autonomous' multi-engine orchestrator run against untrusted binaries.

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?

One front-loaded sentence with a verb, capability list, and format enumeration — no repetition or filler. Minor inflation from marketing adjectives ('Autonomous', 'optimal') that add tone rather than information.

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?

There is no output schema and no annotations, yet the description never says what an 'audit chain' returns — engine list, findings structure, aggregation format, or failure modes when classification is ambiguous. For an orchestrator that fans out to many sibling engines, the agent is left guessing at the response shape and result volume.

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

Parameters4/5

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

There is a single parameter with 100% schema description coverage, so the schema already defines target_path fully. The description adds the useful nuance that format detection is magic-byte based and that directories are accepted, giving a baseline-plus score of 4.

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 verb chain (classifies by magic bytes, runs an audit chain) and a resource scope (file or directory), and enumerates supported formats (.exe, .apk, .pyc, .wasm, source dir). It does not distinguish itself from overlapping siblings such as omni_triage_target or omni_deep_reverse, so an agent still cannot tell from the text alone why this entry point beats those.

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?

'in one call' and 'classifies any file or directory' imply this is the automatic entry point when the target type is unknown, which is implicit routing guidance. However, there is no explicit when-to-use, when-not-to-use, or named alternative despite 16 siblings with heavily overlapping audit/RE capability.

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

omni_bsim_vaultB

Local SQLite FTS5 Function Signature & Binary Fingerprint Vault (FLIRT / Ghidra BSim style): index stripped or reference library prologues, match unknown functions across binaries, and full-text search signatures.

NameRequiredDescriptionDefault
actionYesVault operation to execute.
target_pathNoBinary path (for index_binary / match_functions) or search query.
query_or_label_prefixNoOptional library prefix when indexing (e.g. 'openssl_3') or FTS5 search keyword.

TDQS

B3.2/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 behavioral burden. It mentions local SQLite FTS5 storage and FLIRT/Ghidra BSim style, but it does not state that index_binary writes or updates a vault, whether indexing overwrites or is incremental, what match_functions returns, or what side effects or permissions are involved.

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 front-loaded sentence with no filler, and each clause maps directly to the vault's storage style or one of its capabilities. It is dense but appropriately sized for a short tool description.

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?

For a three-action tool with no annotations and no output schema, the description is too high-level. It omits result formats, indexing side effects, matching criteria or output, and search semantics, so an agent can infer the broad purpose but lacks details needed for confident invocation.

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 three parameters and the action enum. The description restates the broad operations but adds little semantic detail beyond the schema, such as how target_path is interpreted differently for search versus indexing or how query_or_label_prefix is applied in each action.

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 the resource precisely as a local SQLite FTS5 function-signature and binary-fingerprint vault and lists the three capabilities: indexing prologues, matching unknown functions across binaries, and full-text searching signatures. It is clear about what it does, but it does not explicitly distinguish itself from sibling reverse-engineering tools such as omni_inspect_symbol.

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 description implies usage contexts, such as indexing stripped or reference library prologues and matching unknown functions across binaries. However, it gives no explicit when-to-use versus when-not guidance, no alternatives among the many sibling tools, and no prerequisites for indexing or matching.

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

omni_deep_reverseA

Execute the full unified reverse engineering pipeline on a file (.exe, .dll, .lua, .js, .py, .apk, .luac). Detects protectors, unrolls obfuscation, disassembles, and exports clean source code.

NameRequiredDescriptionDefault
pathYesAbsolute filesystem path to the file to reverse engineer.
formatNoOutput report format: 'markdown' or 'json'. Default 'markdown'.markdown
beautifyNoFormat and beautify the output. Default true.
aggressiveNoApply deep multi-pass deobfuscation. Default true.

TDQS

A3.6/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. It does disclose the internal stages (protector detection, multi-pass unrolling, disassembly, source export), which is real behavioral content. But it says nothing about runtime cost, file-size limits, whether input files are modified, where the exported source lands, or failure modes for unsupported binaries.

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, zero filler, with the action and supported formats front-loaded before the pipeline stages. Every clause carries information an agent can use.

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?

For a heavyweight no-annotation tool with a fully described 4-parameter schema and no output schema, the description covers what the tool does and the supported inputs adequately. The remaining gap is operational context: expected duration, size limits, and where results are written.

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 path, format, beautify, and aggressive fully, including defaults and the enum. The description adds no extra meaning beyond naming file extensions, which only loosely maps to the path parameter. Baseline 3 applies.

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?

Names a specific verb and resource ('Execute the full unified reverse engineering pipeline on a file') and enumerates supported input types (.exe, .dll, .lua, .js, .py, .apk, .luac) plus the stages performed. The word 'full unified' implicitly contrasts with partial siblings like omni_deobfuscate_snippet or omni_modern_unpacker, but no sibling is named explicitly.

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?

Usage is only implied: 'full unified pipeline' suggests this is the heavyweight end-to-end option rather than a targeted step. There is no explicit when-to-use/when-not, no guidance on running omni_triage_target first, and no advice to prefer omni_deobfuscate_snippet for a small snippet.

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

omni_deobfuscate_snippetA

Instant deobfuscation of a Lua, JavaScript, or Python code string. Strips CFF loops, resolves string tables, and formats clean source code.

NameRequiredDescriptionDefault
codeYesThe obfuscated source code string.
languageNoLanguage: 'auto', 'lua', 'javascript', 'python'. Default 'auto'.auto

TDQS

A3.6/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. It does disclose meaningful behavior beyond the name: it strips control-flow-flattening loops, resolves string tables, and emits formatted source, and 'instant' implies a synchronous, side-effect-free transformation. It omits failure behavior for unsupported or unrecognized obfuscation, any size or rate limits, and confirmation that the clean code is returned in the response.

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 tight sentences with the primary action and supported targets front-loaded, followed by the specific techniques applied. No filler, no restatement of the tool name.

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?

For a two-parameter, schema-fully-described utility, the description covers what the tool does and the transformations it applies, and 'formats clean source code' implicitly answers the return-value question even without an output schema. Minor gaps are error handling and any constraints on input size.

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%, including the enum values and the 'auto' default, so the schema already documents both parameters fully. The description's mention of Lua/JavaScript/Python merely echoes the enum and adds no meaning about how 'auto' detection works or what happens when detection fails. Baseline 3 applies.

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?

Names a specific verb and resource ('deobfuscation of a Lua, JavaScript, or Python code string') and lists the concrete transformations performed (CFF loops, string tables, formatting). It clearly operates on source text rather than binaries or samples, but it does not explicitly distinguish itself from overlapping siblings such as omni_modern_unpacker or omni_deep_reverse.

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 scope is implied by 'code string' and the named languages, which steers an agent away from the binary/sample-oriented siblings. However there is no explicit when-to-use/when-not statement, no guidance on when to prefer omni_modern_unpacker or omni_deep_reverse, and no prerequisites mentioned.

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

omni_dynamic_probeB

Live dynamic instrumentation, memory dumping & CPU emulation: Win32 dynamic memory unrolling (Themida/VMProtect/Crypters), Unicorn x86/x64 instruction tracing, Frida script hooking, and ADB device control.

NameRequiredDescriptionDefault
actionYesAction: 'memory_dump' (dump RAM & decrypt LCG strings/VM from running packed process), 'unicorn_emulate', 'frida_devices', 'frida_processes', 'frida_inject', 'adb_devices', 'adb_shell', 'adb_pull', 'adb_logcat'.
targetNoTarget PE path (for unicorn_emulate), PID, process name, device ID, or remote path.
payloadNoEmulation range 'start_va:end_va' (e.g. '0x140001000:0x140001200'), Frida JavaScript script payload, shell command string, or local destination path.
timeoutNoExecution timeout or max instructions (default 5.0 / 10000).

TDQS

B3.1/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. It conveys that operations are live/intrusive (runtime memory dumping, process injection via Frida, arbitrary adb_shell), which hints at side effects, but it never states permission/root requirements, that frida_inject attaches to a running process, or that adb_shell executes arbitrary commands.

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 a colon-delimited capability list; dense with jargon but every clause names a distinct capability without filler. It could be split for scannability but wastes no words.

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 ten-action multiplexer with no output schema and no annotations, yet the description says nothing about what any action returns (dump artifact path, trace output, logcat format) or about per-action prerequisites. Given the tool's complexity, the definition is materially incomplete.

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 explains action, target, payload, and timeout, including the emulation-range and payload-per-action formats. The description adds no parameter meaning beyond that, so the baseline of 3 applies.

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 concrete verbs and resources: memory dumping, Unicorn x86/x64 instruction tracing, Frida script hooking, and ADB device control, plus named targets like Themida/VMProtect. It clearly distinguishes itself from most siblings by being the live-runtime/mobile instrumentation tool, though the multi-action grab-bag nature slightly blurs a single purpose.

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 omni_modern_unpacker or omni_deep_reverse, nor on which of the ten actions to pick for a given goal. The action enum implies usage, but nothing is stated about prerequisites (Frida installed, ADB connected, root) or exclusions.

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

omni_export_annotationsC

Export OmniReverse session bookmarks, comments, symbol renames, and Scylla IAT slots into ready-to-run IDAPython (.py), Ghidra (.py), Binary Ninja (.py), or x64dbg (.dd64.json) scripts.

NameRequiredDescriptionDefault
output_pathNoOptional safe output path inside workspace.
export_formatNoTarget reverse engineering IDE script format.idapython
session_or_targetYesSession ID ('sess_...') or target binary file path.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden. It states the output is "ready-to-run" scripts, which is useful, but it never discloses whether existing files at output_path are overwritten, where output lands if output_path is omitted, whether the session must be live, or what the tool returns on success/failure. For a write-to-disk export operation, these omissions are significant.

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 dense sentence with the action and artifact scope front-loaded and the format list trailing; no filler or redundant restatement of the title. The parenthetical extension list is compact and informative rather than wasteful.

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 tool is simple (three params, one required, no nesting) and the description covers what is exported and into which formats. However, with no output schema and no annotations, the description should have covered the return value (path? manifest?) and the side effect of writing files, which it does not.

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 parameters are already documented in the schema and a baseline of 3 applies. The description does add a little value by mapping format names to concrete file extensions (.py, .dd64.json), but it says nothing extra about session_or_target resolution or output_path safety beyond what the schema states.

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 opens with a specific verb ("Export") and enumerates the exact artifacts exported (bookmarks, comments, symbol renames, Scylla IAT slots) plus the four target formats with file extensions. It is unambiguous about what the tool produces; the only minor gap is that it doesn't explicitly contrast with any sibling, though no sibling tool appears to overlap.

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 choose this tool, no prerequisites (e.g., whether an active OmniReverse session is required), and no mention of alternatives or when not to use it. The reader must infer the entire usage context from the name and the artifact list.

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

omni_inspect_symbolC

Granular reverse engineering & cryptanalysis: inspect PE symbols, disassemble with Capstone, decompile Java with JADX, decompile C with Ghidra, recover Go/Rust/Flutter symbols, simplify MBA expressions with Z3, compute Hensel lifting / modular inverses, rebuild unpacked PEs, detect honeypot traps, read bytes/RVAs, search byte patterns, detect crypto constant tables, extract structured IoC indicators, disassemble WASM modules via WABT, unpack web sourcemaps, and extract Android XRef/resources.

NameRequiredDescriptionDefault
archNoArchitecture for disassembly: 'x64', 'x86', 'arm64', 'arm'. Default 'x64'.x64
countNoNumber of instructions to disassemble (default 25).
queryNoAddress/offset (e.g. '0x140001000' or RVA) for disassembly/pseudo_c/rebuild_pe/read_bytes/read_rva, search pattern (hex '55 48 89 E5' or 'str:admin'), MBA expression, hex value for modular/Hensel inverse, or Java class name.
actionYesInspection action: 'pe_symbols', 'disassemble_address', 'android_class', 'pseudo_c', 'go_symbols', 'rust_metadata', 'flutter_dart', 'simplify_mba', 'hensel_inverse', 'modular_inverse', 'rebuild_pe', 'scan_honeypots', 'read_bytes', 'read_rva', 'search_bytes', 'crypto_signatures', 'indicators', 'capabilities', 'wasm_disasm', 'wasm_headers', 'unpack_sourcemap', 'analyze_web_bundle', 'android_xref', 'android_resources', 'pe_lea_xrefs', 'native_crypto_prologues'.pe_symbols
target_pathYesPath to target binary (.exe, .dll, .apk, .so, .dex, .wasm, .js).

TDQS

C2.5/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 behavioral burden, and it discloses almost nothing about behavior. It does not say whether actions are read-only, whether rebuild_pe or unpack_sourcemap write files to disk, whether targets are modified in place, whether elevated permissions or long runtimes are involved, or what any action returns. For a 26-action tool that includes mutations like rebuild_pe, this is a substantial gap.

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

Conciseness3/5

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

The entire description is a single run-on sentence that mechanically re-lists the 26 enum values already present in the schema, which is wasteful duplication. It is front-loaded with 'Granular reverse engineering & cryptanalysis', which is the only genuinely informative clause. There is no structure to help an agent scan the 26 actions.

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?

For a tool with 26 distinct actions, 5 parameters, no annotations, and no output schema, the description should explain at minimum which parameters apply to which action and what each action produces. It does neither, leaving the agent to guess, for example, what read_bytes versus read_rva returns or how search_bytes differs from crypto_signatures. The definition is under-specified relative to the tool's complexity.

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 target_path, action, arch, count, and query are already documented in the schema, including the multi-purpose nature of query. The description adds no parameter-level meaning beyond restating the action list in prose, so the baseline 3 applies. It does not clarify which parameters are relevant to which action (e.g., arch/count only matter for disassembly).

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

Purpose3/5

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

The description enumerates a very long list of concrete capabilities (PE symbols, Capstone disassembly, JADX, Ghidra pseudo-C, Z3 MBA simplification, etc.), so an agent can see the general domain: binary reverse engineering and cryptanalysis. But it is a catch-all enumerating 26 actions that duplicate the action enum verbatim, and it never distinguishes this tool from overlapping siblings such as omni_deep_reverse, omni_advanced_native, or omni_mobile_deep. The purpose reads as 'everything binary' rather than a sharply bounded verb+resource.

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 choose this tool over the many siblings that appear to overlap (omni_deep_reverse, omni_modern_unpacker, omni_mobile_deep, omni_advanced_native). No prerequisites, no when-not-to-use conditions, and no indication of which action fits which scenario are given. The agent must infer routing purely from the action names.

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

omni_mobile_deepC

Deep Mobile Reverse Engineering (Android & iOS): Flutter libapp.so Dart AOT snapshot analyzer, React Native Hermes (.hbc) bytecode decoder, Unity IL2CPP (global-metadata.dat) C# symbol dumper, iOS .ipa / Mach-O / FairPlay / Swift demangler, and multi-platform Frida SSL-Pinning & Anti-Debug bypass generator.

NameRequiredDescriptionDefault
actionYesMobile reverse engineering action.
target_pathNoPath to .apk, .ipa, libapp.so, .hbc, global-metadata.dat, Mach-O, or package name (for frida_bypass).
profile_or_metaNoOptional Frida profile ('all', 'ssl_pinning', 'anti_debug', 'root_jailbreak') or secondary metadata path.

TDQS

C2.8/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 disclosure burden and largely fails it: it never says whether analysis is static or dynamic, whether anything is written to disk, or what a 'Frida SSL-Pinning & Anti-Debug bypass generator' actually emits. 'Bypass generator' hints at producing scripts or patched artifacts, a side effect an agent should know about before calling. Nothing is said about permissions, sandboxing, runtime requirements, or expected duration for these heavyweight analyses.

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

Conciseness3/5

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

It is a single dense sentence, so it is compact and front-loaded with the domain, but it reads as a marketing feature list of tool names rather than operational guidance. The space is spent on enumerating engines and formats that the action enum already encodes, leaving no room for when-to-use or behavior.

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 five-action dispatcher covering very different pipelines with no output schema and no annotations, so the description should explain what each action returns or at least that outputs differ per action. It provides none of that, nor any note on which parameters apply to which action. For a tool of this complexity the definition is materially under-informative.

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 action, target_path, and profile_or_meta, and that sets the baseline at 3. The description adds modest value by listing the exact artifact types that target_path accepts, which helps map an action to the right path. It adds nothing about profile_or_meta or about how the action enum determines which other parameters matter.

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 verb ('Deep Mobile Reverse Engineering') and enumerates concrete resources and formats: Flutter libapp.so Dart AOT, Hermes .hbc, Unity global-metadata.dat, iOS .ipa/Mach-O, and Frida bypass generation. An agent can tell this is the mobile-artifact analysis tool rather than a generic desktop/native one. It loses a point because it never contrasts itself with near-siblings such as omni_deep_reverse, omni_advanced_native, or omni_modern_unpacker, so the boundary is inferred rather than stated.

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 the many sibling reverse-engineering tools, and no stated prerequisites (e.g. that an .apk must first be unpacked, or that frida_bypass targets a package name rather than a file). The action names imply routing by artifact type, but that is left entirely implicit. No exclusions or alternatives are named.

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

omni_modern_unpackerB

Modern Application Packager Unpacker: Electron app.asar virtual filesystem & V8 bytecode (.jsc) unpacker, Python frozen binary unpacker (PyInstaller MEI CArchive, Nuitka, PyArmor, .pyc disassembler), and Node.js SEA / Vercel pkg / Bun standalone JS bundle extractor.

NameRequiredDescriptionDefault
actionYesModern application unpacker engine.
extract_dirNoOptional safe export directory inside workspace.
target_pathYesPath to app.asar, .jsc, frozen .exe, or .pyc file.

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the entire behavioral burden. It says the tool is an 'unpacker' and mentions a 'virtual filesystem,' but never states that it writes files to disk, what extract_dir defaults to, whether the target is modified, whether elevated permissions are needed, or how large outputs are surfaced. For a tool that materializes extracted artifacts, that leaves the agent guessing about side effects.

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?

It is a single dense sentence with no filler, and the format coverage is front-loaded. The only waste is the leading 'Modern Application Packager Unpacker:' label, which largely restates the tool name before the substantive content begins.

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 three parameters, no annotations, and no output schema, the description needs to do real work. It adequately covers what inputs are accepted but is thin on behavioral consequences, expected outputs, and error conditions (e.g., unsupported packer versions, corrupted archives). Adequate but with clear gaps for a multi-engine extraction tool.

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 three parameters are already documented and the baseline is 3. The description does add useful mapping context: it clarifies which artifact types correspond to each engine family behind the action enum (electron_asar, python_frozen, node_bun_sea). The extract_dir containment constraint and target_path formats are left entirely to 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 names a concrete resource and enumerates the exact artifact families handled: Electron app.asar / .jsc, PyInstaller MEI CArchive, Nuitka, PyArmor, .pyc, Node SEA, Vercel pkg, and Bun bundles. That is far more specific than the tool name alone. It stops short of distinguishing itself from siblings such as omni_deep_reverse or omni_deobfuscate_snippet, which an agent could plausibly also reach for.

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?

Usage is only implied: an agent can infer it should call this when the target is an app.asar, a frozen executable, or a .pyc. There is no explicit when-to-use statement, no exclusions, and no routing to or away from sibling reverse-engineering tools.

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

omni_native_tls_tracerC

Native Windows x64 TLS Plaintext Interceptor (SChannel DecryptMessage / OpenSSL SSL_read), VMProtect-safe Hardware Breakpoint (DR0/DR1 + VEH + NtGetContextThread Cloak), RIP-relative LEA + CALL/TEST/Jcc Branch Scanner, libsodium/Ed25519 Prologue Auditor & C++ Tracer SDK Exporter.

NameRequiredDescriptionDefault
queryNoOptional target string needle for 'scan_lea_xrefs'.
actionYesAction: 'audit_target' (full PE/source TLS, Ed25519 prologue, 4-stage verifier, IAT/Self-CRC/Timebomb & LEA branch audit), 'scan_lea_xrefs' (locate strings, RIP-relative LEA refs & 4-pattern JE/JNE branches), 'scan_crypto_prologues' (detect libsodium Ed25519 prologues, wrappers & .vmp sections), 'scan_verify_4stage' (Priority 0/1/2/3 hierarchical verifier & 512B backward CALL+TEST scanner), 'audit_iat_integrity' (IAT FirstThunk slot VAs, MsvcString SSO scan, Self-CRC MapViewOfFile, Anti-HWBP NtGetContextThread, TLS coalescing, 0xC0DEBABE NTP timebomb & mshta adware audit), 'ed25519_self_test' (RFC 8032 Ed25519 + SHA-512 detached sign/verify test), 'export_tracer_sdk' (export clean C++ x64 SChannel/OpenSSL plaintext dumper & HWBP/VEH SDK).audit_target
target_pathNoPath to target PE/source file or directory (for audit/scan), or output directory (for export_tracer_sdk).

TDQS

C2.2/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden and largely fails: it never says the actions are read-only analysis versus that 'export_tracer_sdk' writes files to disk, nor whether hardware-breakpoint/VEH instrumentation is invasive or requires attaching to a live process. Terms like 'VMProtect-safe' and 'NtGetContextThread Cloak' hint at stealth debugging but disclose no consequences, side effects, or runtime requirements.

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

Conciseness2/5

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

It is a single dense sentence of buzzword stacking rather than a front-loaded purpose statement; the reader must decode jargon like 'RIP-relative LEA + CALL/TEST/Jcc Branch Scanner' before learning anything actionable. Nothing is wasted in length, but the structure buries the lede entirely.

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?

For a seven-action native reverse-engineering tool with no annotations and no output schema, the description should explain workflow, prerequisites, and expected outputs; instead it only names capabilities. An agent would not know what a successful call returns or which action to chain first.

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?

Input schema coverage is 100% — every parameter and every enum value is documented in the schema itself — so the baseline of 3 applies. The description adds no additional meaning about 'query', 'target_path', or path semantics (file vs. directory vs. output dir) beyond what the schema already states.

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

Purpose2/5

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

The description is a stacked noun phrase of capabilities ('TLS Plaintext Interceptor', 'Prologue Auditor', 'Tracer SDK Exporter') with no governing verb, so it never states what a call actually does — decrypt live traffic, statically analyze a binary, or export code. The domain (Windows x64 TLS/SChannel/Ed25519) does separate it from generic siblings, but an agent cannot infer a single concrete purpose from the sentence alone.

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 when-to-use guidance at all: no indication of which of the seven actions fits which situation, no prerequisites (Windows-only, elevated privileges, debuggee attach), and no routing toward siblings like omni_deep_reverse or omni_dynamic_probe. The only selection help lives in the enum descriptions within the schema, not in the description.

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

omni_patch_cfg_memoryC

Visual CFG, Binary Patcher & Live Memory/Pointer Scanner: Hex + ASCII inspector, non-destructive x86/x64 binary patcher (NOP, RET, Jcc->JMP, raw hex), Basic-Block Control Flow Graph (JSON + inline SVG), and Cheat-Engine-style live process memory value & 64-bit pointer scanner.

NameRequiredDescriptionDefault
actionYesVisual CFG, binary patching, or live RAM scanning action.
targetYesTarget binary path (for hex_view/binary_patch/visual_cfg) or live process PID (for memory_scan/pointer_scan).
scan_typeNoData type for live memory_scan.ascii
patch_or_valueNoPatch spec ('nop:5', 'ret_true', 'ret_false', 'force_jmp', or hex bytes) OR memory value to scan.
address_or_offsetNoFile offset or VA (e.g. '0x400' or '0x140001000'), or target pointer VA for pointer_scan.

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full disclosure burden, and it leaves key behaviors unexplained. 'Non-destructive' binary patching is asserted but never clarified (does it write in place, make a backup, or operate on a copy?), and live memory/pointer scanning raises obvious questions the text ignores: required debug privileges, whether the target process is paused, stability/detection risk, and per-action return shapes. The single word 'non-destructive' is the only behavioral context offered.

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

Conciseness3/5

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

It is a single compact sentence with no filler, which is good, but it is a dense comma-blob of five features with no front-loaded guidance about what to do first. Every clause earns its place as a capability claim, yet the structure gives the agent no hierarchy or decision aid.

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 complex five-action tool with no annotations and no output schema, so the description should explain what each action produces and what preconditions apply. Instead it only lists features, leaving output formats (e.g. what the CFG JSON/SVG contains, what a scan returns) and prerequisites for live process access entirely unstated.

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's mention of patch modes (NOP, RET, Jcc->JMP, raw hex) and scan targets largely restates what the enum and the patch_or_value description already specify, adding little semantic detail 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 names five specific capabilities with concrete verbs and resources (hex/ASCII inspector, x86/x64 binary patcher, control flow graph, live memory value scanner, 64-bit pointer scanner), so an agent can tell this is a binary-analysis and memory-scanning tool. It does not differentiate itself from the many reverse-engineering siblings, and the compressed comma-list makes the mapping between features and the five enum actions slightly implicit.

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 pick this tool over siblings such as omni_dynamic_probe, omni_deep_reverse, or omni_modern_unpacker, nor any when-not-to-use condition. The only routing hint lives in the schema (actions map to file path vs PID), not in the description, so the agent must open the schema to learn usage context.

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

omni_pdb_traffic_correlateC

PE RSDS CodeView PDB GUID/Symbol-Server resolver, SQLCipher/DPAPI/Keystore encrypted vault header inspector, and HAR/HTTP log -> OpenAPI 3.1 Swagger schema synthesizer.

NameRequiredDescriptionDefault
actionYesCorrelation or inspection mode.
target_pathYesPath to PE binary, encrypted .db/vault file, or .har/.json capture.

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits, but it does not say whether the symbol resolver contacts a network symbol server, whether vault header inspection requires DPAPI/Keystore access, or whether any mode writes files or has side effects. The verbs imply operations but leave the agent without essential safety and execution context.

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

Conciseness3/5

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

The description is a single sentence with no wasted filler, but it is a dense slash-separated noun phrase rather than a front-loaded action statement. It is compact yet hard to parse, and the three capabilities would be clearer as a structured list.

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 multi-mode forensic tool with no annotations and no output schema, so the description needs to explain mode-specific behavior, outputs, and limitations. Instead it only names the three capabilities, leaving the agent without enough context to invoke each mode confidently.

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 input schema already documents both parameters and the action enum. The description implicitly maps each of its three capabilities to the corresponding enum value, but adds no further syntax, constraints, or per-mode parameter meaning beyond what the schema provides.

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 three specific capabilities with concrete resources: PE/PDB GUID lookup, encrypted vault header inspection, and HAR-to-OpenAPI synthesis. It is clear what the tool does overall, but it does not differentiate this tool from relevant siblings such as omni_inspect_symbol, omni_bsim_vault, or omni_native_tls_tracer.

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 explicit guidance on when to choose this tool over its many siblings, nor any prerequisites or exclusions. The action enum implies three modes, but the description does not explain the selection conditions for any of them.

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

omni_sessionB

Stateful reverse engineering session manager: open binary projects, persist bookmarks, function comments, symbol renaming, and query active analysis state across turns.

NameRequiredDescriptionDefault
valueNoAnnotation text, label, or renamed symbol value.
actionYesSession action: 'open', 'annotate', 'get', 'list'.
addressNoAddress or symbol key for annotation.
session_idNoActive session ID (e.g. 'sess_...').
target_pathNoTarget file path (required for 'open').
annotation_typeNoType of annotation: 'bookmark', 'comment', 'rename_symbol', 'note'.

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations supplied, the description carries the full burden, and it does disclose the key trait that state persists across turns and that annotations are durable. It omits important behavior: session lifetime/expiry, whether session_id is required for every action after open, and what happens when an unknown or stale session is referenced.

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 the identity of the tool first and its capabilities after; no filler. It is dense but readable, and nothing is redundant with the schema.

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 six-parameter, multi-action stateful tool with no annotations and no output schema, the definition covers the what but not the mechanics: action-to-parameter requirements, session lifecycle, and return shape are left unstated. Adequate to select the tool, thin for invoking it correctly on the first try.

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 a little meaning by tying actions to outcomes (open projects, persist bookmarks/comments/renames, query state), but it does not clarify which parameters each action requires or how 'get' versus 'list' differ in output.

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 resource (stateful reverse engineering session) and enumerates the concrete operations it covers: opening binary projects, persisting bookmarks/comments/renames, and querying analysis state. An agent can distinguish it from siblings like omni_export_annotations or omni_inspect_symbol, though the sibling differentiation is implicit rather than stated.

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?

'Across turns' implies this is the tool to reach for when continuity between calls matters, but the description never says when to use it versus omni_export_annotations for annotation handling, nor does it state that 'open' must precede 'annotate'. Usage is inferable from the action list but not spelled out.

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

omni_symbolic_protocolC

Symbolic Solving, OLLVM Deobfuscation & Protocol Synthesis: Z3 SMT symbolic serial/keygen solver, OLLVM Control-Flow Flattening (CFF) dispatcher unflattener, Chrome-124 stealth curl_cffi Python client generator, and embedded Protobuf / gRPC .proto schema recoverer.

NameRequiredDescriptionDefault
extraNoOptional prefix (for z3_keygen), function VA/offset (for ollvm_unflatten), HTTP method (for generate_client), or output path.
actionYesSymbolic or protocol synthesis action.
key_lengthNoKey byte length for z3_keygen (default 16).
target_or_exprYesZ3 byte constraint expression (e.g. 'b[0] ^ 0x42 == 0x0f; b[1] + b[2] == 150'), binary path, or API URL.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are supplied, so the description must carry behavioral disclosure. It names techniques but does not state side effects, permissions, whether it executes binaries or makes network calls, file writes via extra output path, generated-code safety, or reversibility.

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 dense sentence/fragment front-loads the four capabilities with little waste. It could be organized by action for readability, but it is appropriately brief.

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?

For a multi-action reverse-engineering tool with no annotations and no output schema, the description omits action selection guidance, behavioral constraints, and output expectations. It covers purpose at a high level but is incomplete for safe/correct invocation.

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

Parameters3/5

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

Schema coverage is 100% and the enum/param descriptions document action, target_or_expr, extra, and key_length. The tool description adds no parameter meaning beyond the schema, so baseline 3 is appropriate.

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 enumerates four concrete capabilities (Z3 keygen, OLLVM CFF unflattening, curl_cffi client generation, protobuf recovery), giving a specific verb/resource set. It does not explicitly differentiate from sibling reverse-engineering tools such as omni_deobfuscate_snippet, so it stops short of 5.

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 when-to-use or when-not-to-use guidance is provided; it only lists action capabilities, leaving the agent to infer action selection from the enum and schema. No alternatives or prerequisites are named.

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

omni_triage_targetA

Fast reconnaissance on a target file: detects format, architecture, entropy, compiler, packers, and 25+ protector signatures without full decompilation.

NameRequiredDescriptionDefault
pathYesPath to the target file.

TDQS

A4/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 disclosure burden. It does add real value by bounding scope ("fast", "without full decompilation") and implying a passive inspection, but it never states that it is read-only, what permissions or file types are required, or how large a file it handles. Competent but not thorough for an unannotated tool.

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 sentence with the core action front-loaded, followed by the concrete detection list and the differentiator. Every clause earns its place and nothing is padded.

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?

For a one-parameter reconnaissance tool with no output schema, the description is nearly sufficient: it enumerates the categories of results an agent will get back. The only minor gap is that the response format and whether results are text or structured is left unstated.

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

Parameters4/5

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

There is a single required parameter with 100% schema description coverage, so the schema already defines "path" fully; the description correctly needs to add little. It adds no meaning beyond the schema, but with one fully documented param the baseline applies and no gap is created.

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 verb and resource ("Fast reconnaissance on a target file") and enumerates concrete outputs — format, architecture, entropy, compiler, packers, 25+ protector signatures. The qualifier "without full decompilation" separates it from heavier siblings like omni_deep_reverse and omni_modern_unpacker without needing their schemas.

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?

"Fast reconnaissance" and "without full decompilation" imply a first-pass triage role that precedes deeper analysis, so the usage context is inferable. However, no sibling is named, there is no explicit "use this before X" or "not for Y" rule, and no prerequisites (e.g., file must be local/readable) are stated.

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. 17 tool updatesv3.2.0
    • First observedomni_advanced_native
    • First observedomni_audit_sqli
    • First observedomni_auto_orchestrate
    • First observedomni_bsim_vault
    • First observedomni_deep_reverse
    • First observedomni_deobfuscate_snippet
    • First observedomni_dynamic_probe
    • First observedomni_export_annotations
    • First observedomni_inspect_symbol
    • First observedomni_mobile_deep
    • First observedomni_modern_unpacker
    • First observedomni_native_tls_tracer
    • First observedomni_patch_cfg_memory
    • First observedomni_pdb_traffic_correlate
    • First observedomni_session
    • First observedomni_symbolic_protocol
    • First observedomni_triage_target

TDQS

C2.9/5.0

Scored across 17 tools

Disambiguation2/5

Several tools overlap heavily around the core reverse-engineering workflow: omni_triage_target, omni_auto_orchestrate, omni_deep_reverse, and omni_inspect_symbol all perform detection, disassembly, decompilation, or unpacking to varying degrees. omni_inspect_symbol is an especially broad catch-all that duplicates capabilities also exposed by omni_dynamic_probe, omni_symbolic_protocol, omni_advanced_native, and omni_patch_cfg_memory, making tool selection ambiguous for an agent.

Naming Consistency4/5

All tool names use the same omni_ prefix and snake_case convention, giving the set a predictable visual pattern. The suffixes mix verb_noun and descriptive noun phrases rather than following a strict verb_noun scheme, but the naming remains readable and mostly consistent.

Tool Count3/5

Seventeen tools is slightly heavy for a typical MCP surface, though the broad reverse-engineering domain can justify a larger set. The bigger issue is granularity: many entries are mega-tools bundling multiple unrelated capabilities, so the count feels less intentionally scoped than it could be.

Completeness4/5

The surface covers a wide reverse-engineering lifecycle: triage, static and dynamic analysis, mobile and native targets, unpacking, symbolic solving, patching, memory scanning, session management, and annotation export. Minor gaps exist around explicit reporting or guided format discovery, but the core domain is well covered.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to conduct authorized mobile banking reverse engineering and security research through 50+ MCP tools spanning APK analysis, Frida instrumentation, malware detection, Play Integrity bypass detection, no-root traffic interception, and evidence reporting.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to safely fetch malware samples, run isolated headless Ghidra static analysis, and retrieve decompiled function logic, imports, and strings through callable MCP tools.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables agents to take software apart over MCP — native binaries, Go/Rust/.NET assemblies, WASM and EVM bytecode, Android and Flutter apps, firmware, databases, crashes and network captures — returning findings backed by code, references and explicit unknowns. Drives deep-analysis engines such as Hopper, Ghidra, IDA, JADX and Frida entirely locally, letting agents explain behavior or rebuild a feature in your own project.
    481,841 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to locally analyze and reverse engineer binaries through a compact 12-tool MCP interface for triage, function discovery, disassembly/decompilation, cross-references, strings/imports, call graphs, memory reads, annotations, and binary diffs.
    1
    MIT