Skip to main content
Glama

English · Tiếng Việt

One MCP server for symbolic execution, OLLVM unflattening, and active binary intervention across binaries and runtimes.

CI Audit GitHub Release npm version MCP tool catalog Python requirements Node.js requirements MIT license

npx symb-agents setup

📑 Table of Contents (Mục Lục)



Related MCP server: Antardrishti

⚡ What is SYMB?

SYMB is an autonomous reverse engineering, constraint solving, and active binary intervention engine purpose-built for AI agents. It wraps low-level symbolic execution engines (Z3 SMT Solver, angr, Unicorn CPU Emulator, Capstone, pefile) into clean Model Context Protocol (MCP) tool contracts.


⚔️ Architectural Comparison: SYMB vs REA

Mainstream reverse engineering assistants (such as morluto/rea) are designed strictly as passive observers: they decompile, format pseudocode, and catalog observations, but explicitly refuse to perform binary mutations, bypass checks, or intervene in execution.

Feature / Capability

Passive Assistants (e.g. REA)

SYMB (Active RE & Symbolic Engine)

Philosophy

Passive Read-Only Analysis

Active Dynamic Intervention & Weaponization

Binary opcodes mutation

❌ Refused / Out of scope

✔ Surgical disk binary patcher with RVA-to-Raw conversion

PE Optional CheckSum

❌ None

✔ Automated PE CheckSum recalculation on patched binaries

Anti-Debug / Anti-Analysis

⚠️ Report detections only

✔ Automated trap neutralization (NOP out RDTSC, INT 2D, PEB BeingDebugged)

License & DRM Logic

⚠️ Static report

✔ Automated branch conditional inversion (JZ<->JNZ, force success, keygen)

Dynamic Instrumentation

⚠️ Basic passive trace

✔ Frida script generator (SSL Unpinning, Root cloak, Anti-Debug API hook)

Live RAM Hot Patching

❌ None

✔ Zero-disk memory trampolines via Win32 VirtualProtectEx / /proc/pid/mem

OLLVM Deobfuscation

❌ Basic heuristic

✔ Symbolic state-variable dispatcher unflattening via Z3 & angr

Evidence & Provenance

✔ Standard schema

✔ Target Identity (SHA256/MD5), Engine Provenance, Fail-Closed verification

Test Verification

✔ Complex test suite

✔ Vitest Unit/Integration Tests + 8 Automated Verification Suites


🛠️ MCP Tool Reference (20 Native Tools)

SYMB implements 20 high-speed native reversing and intervention tools via standard MCP JSON-RPC:

⚔️ Active Binary Intervention Arsenal (5 Tools)

Tools specifically engineered for active exploitation, cracking, and binary neutralization:

Tool Name

Key Arguments

Primary Capability

Deep-Dive Guide

patch_binary_executable

binary_path, patches, output_path

Surgical physical disk patcher. Converts RVA to physical file offset, modifies arbitrary hex bytes, generates byte-by-byte diffs, and updates PE checksums.

Guide

neutralize_anti_debugging

binary_path, auto_patch, output_path

Scans and neutralizes inline RDTSC timing traps, INT 2D/3 traps, and PEB BeingDebugged checks. Automatically writes patched binaries with recalculated PE checksums.

Guide

bypass_license_authorization

binary_path, force_success, apply_to_file

Evaluates authorization branch conditionals, computes inversion patches (JE<->JNE, force JMP), and writes permanently cracked binaries.

Guide

generate_frida_instrumentation

target, platform, script_type

Generates battle-tested Frida dynamic instrumentation scripts for SSL unpinning, RootBeer cloaking, and Windows native API hooks.

Guide

hot_patch_live_memory

pid, memory_address, patch_bytes_hex

Injects atomic zero-disk trampolines into running process RAM without touching disk binaries.

Guide

🔬 Symbolic Execution & SMT Solver Engines (3 Tools)

Tool Name

Key Arguments

Primary Capability

Deep-Dive Guide

unflatten_control_flow

binary_path, function_address

Symbolically deobfuscates OLLVM switch dispatchers and restores original CFG.

Guide

solve_branch_reachability

binary_path, target_address

Uses Z3 SMT Solver & angr to solve for exact inputs reaching target branches.

Guide

trace_symbolic_taint

binary_path, source_symbol, sink_symbol

Bit-level dataflow propagation analysis from input buffers to critical memory sinks.

Contracts

⚡ Multi-Platform Native Decompilers & Unpackers (4 Tools)

Tool Name

Key Arguments

Primary Capability

Deep-Dive Guide

dynamically_unpack_binary

binary_path, max_instructions

Unicorn CPU emulation unpacker. Executes binary past packer stubs (UPX, Themida, crypters), detects OEP tail jumps, and dumps unpacked memory images.

Guide

decompile_native_function

binary_path, function_address

Decompiles machine code to clean C pseudocode in < 400ms with Capstone and struct layout inference.

Guide

decompile_entire_program

binary_path, max_functions

Automated whole-program decompiler. Recovers function entry points and generates unified C source files.

Guide

decompile_apk_package

target_path, max_classes

5-Pass native Dalvik DEX decompiler. Audits permissions, keystore signature schemes (v1/v2/v3), CWEs, and lifts Dalvik to Java.

Guide

🔍 Deep Binary Auditing & Memory Engines (8 Tools)

Tool Name

Key Arguments

Primary Capability

Deep-Dive Guide

decompile_ios_ipa_package

target_path

Decompiles Apple iOS IPA packages & ARM64 Mach-O binaries. Audits FairPlay DRM (cryptid) and Anti-Jailbreak heuristics.

Contracts

decrypt_obfuscated_strings

binary_path, max_candidates

Solves Single-byte XOR, Multi-byte cycling XOR, Rolling Key XOR, and Base64 across PE, ELF, APK, and .so binaries.

Contracts

detect_binary_protections

binary_path

Detects packers (UPX, Themida, VMProtect, Enigma), Anti-Debug APIs, Anti-VM artifacts, and ASM timing traps.

Contracts

inspect_binary_layout

binary_path

Scans PE/ELF headers, ASLR/DEP/SafeSEH mitigations, IAT/EAT exports, and measures section entropy.

Contracts

detect_crypto_primitives

binary_path

Scans for AES S-Boxes, SHA/MD5 constants, CRC32 tables, RC4 loops, and ChaCha schedules for SMT inversion.

Contracts

scan_byte_entropy

binary_path, block_size

256-byte sliding window Shannon entropy heatmap generator for encrypted shellcode and compressed overlays.

Contracts

trace_binary_xrefs

binary_path

Maps whole-program call graph edges, indirect calls, and string literal cross-references.

Contracts

optimize_large_media_buffer

file_path, target_max_mb

Downsamples oversized videos, isolates audio tracks, and streams multi-GB dumps via zero-RAM mmap.

Guide


📚 Documentation Hub & Architecture Guides (docs/)

SYMB maintains comprehensive, modular documentation covering theoretical foundations, implementation guides, and MCP specifications:

Guide / Document

Focus Area

Description

⚔️ Active Binary Intervention

Binary Cracking & Patching

Complete guide for RVA-to-Raw mapping, PE CheckSum recalculation, Anti-Debug neutralization, and Frida generator.

📜 Canonical MCP Tool Contracts

Protocol Specification

Formal JSON schemas, inputs, outputs, and Canonical Evidence records for all 20 native MCP tools.

🌪️ OLLVM Control-Flow Unflattening

Deobfuscation

Mathematical state-variable solving, dispatcher pruning, and CFG restoration using Z3 & angr.

🎯 SMT Branch Solving Guide

Symbolic Execution

Automated path reachability, SAT solving, and crackme solving with Z3 SMT Theorem Prover.

⚡ Advanced Decompiler Architectures

Native & Dalvik Lifting

Unicorn CPU emulation unpacker, high-speed C pseudocode generator, and 5-pass Android DEX decompiler.

🔒 Zero-Disk Memory Trampolines

Live Memory Hooking

Win32 API (VirtualProtectEx) and Linux /proc/pid/mem live memory surgery without disk footprints.

🎬 Large Media & Buffer Optimizer

Context Management

Hardware-accelerated audio extraction, video downsampling budgets, and zero-RAM mmap streaming.

🧠 Symbolic Engineering Guide

Architecture

Core system principles, mathematical invariants, and agent integration guidelines.

🎯 Target & Architecture Matrix

Compatibility

Platform support matrix across Windows (x86/x64), Linux (x86/x64/ARM), macOS, Android, and iOS.

🚀 Installation & Setup Guide

Getting Started

Detailed step-by-step setup for Claude Desktop, Cursor, Antigravity, and global CLI usage.


💻 Standalone Command-Line Interface (CLI)

# Neutralize Anti-Debugging traps and produce patched binary
symb antidebug ./target.exe --patch

# Bypass license authorization checks and invert branch logic
symb license-bypass ./target.exe --force-success

# Dynamically unpack UPX or encrypted binary via Unicorn CPU emulation
symb unpack ./examples/01_ollvm_cff/CFF_win64.exe

# Decompile native function with control-flow structuring & struct inference
symb decompile ./examples/02_smt_crackme/ais3_crackme 0x4005f6

# Translate an entire binary to a unified C project file
symb decompile-all ./examples/02_smt_crackme/ais3_crackme --limit 10

# Decompile Android APK with resources.arsc symbol resolution
symb apk ./examples/04_apk_sample/sample_protected.apk

🧪 Testing & Rigorous Verification (100% Pass)

SYMB enforces strict fail-closed verification and canonical evidence contracts:

# Run Vitest Unit & Integration Suites
npm run test:unit

# Run All 8 Comprehensive System Verification Suites
npm test

Suites include:

  1. System Capabilities & Solver Audit (Node, Python, Z3, angr, Unicorn, Capstone)

  2. MCP Tool Contracts & Zod Schemas (Validating all 20 tool schemas)

  3. Native High-Speed EXE Decompiler & Layout Engine

  4. Z3 SMT Mathematical Logic Engine

  5. OLLVM Control-Flow Unflattening (PE & ELF)

  6. SMT Branch Reachability Solver

  7. Large Media & Binary Buffer Optimizer Engine

  8. Active Binary Intervention & Weaponized RE Engine


📦 Requirements & Environment

  • Node.js: >= 18.0.0 (Verified on Node 20, 22, and 24)

  • Python: >= 3.10

  • Native Solvers: pip install -r requirements.txt (Z3 SMT Solver, angr, Unicorn, Capstone, pefile).

  • Run symb audit or npx symb-agents setup to automatically audit your local runtime capabilities.


📄 License

MIT License. Open-source for developers, security researchers, and autonomous AI agents.

Available Tools

20 tools
bypass_license_authorizationB

Active reverse engineering intervention. Detects authorization/license validation branches, computes conditional jump inversions, and applies permanent binary bypass patches on disk.

NameRequiredDescriptionDefault
binary_pathYesAbsolute path to target binary
output_pathNoOptional output path
apply_to_fileNoWrite patched binary to disk
force_successNoInvert conditionals to force valid license
function_addressNoTarget validation function address or symbol

TDQS

B3.3/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 behavioral burden. It usefully discloses that patches are permanent and written to disk, but it does not explain reversibility, backup behavior, failure modes, required permissions, or how the optional output_path changes file modification semantics.

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

Conciseness4/5

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

The description is a compact single sentence with front-loaded intent and no wasted clauses. The opening phrase 'Active reverse engineering intervention' is somewhat generic, but the following clauses quickly specify the concrete 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?

For a destructive, on-disk binary modification tool with no annotations and no output schema, the description is too sparse. It states what it patches and that changes are permanent, but omits prerequisites, safety considerations, reversibility, output behavior, and alternatives.

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 five parameters. The description mentions conditional inversion and forcing a valid license, which loosely maps to force_success, but adds no specific parameter usage details beyond the schema.

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

Purpose4/5

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

The description states a specific operation: detecting license/authorization validation branches, inverting conditional jumps, and applying permanent binary bypass patches on disk. It is clear what the tool does, but it does not explicitly distinguish itself from siblings such as patch_binary_executable or hot_patch_live_memory.

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 phrases 'active reverse engineering intervention' and 'permanent binary bypass patches on disk' imply this is for on-disk permanent modification rather than live-memory or analysis workflows. However, it does not explicitly say when to choose this tool over alternatives or when not to use it.

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

decompile_apk_packageB

5-Pass native Dalvik DEX decompiler. Audits permissions, keystore signature schemes (v1/v2/v3), CWE vulnerabilities, hardcoded secrets, and lifts Dalvik bytecode to Java classes.

NameRequiredDescriptionDefault
max_classesNoMax classes to decompile
target_pathYesAbsolute path to APK or DEX

TDQS

B3.3/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 behavioral burden. It discloses the five-pass analysis and audit categories, but omits whether the target is modified, permission requirements, artifact/file output, and response shape; it is minimum viable but incomplete.

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 compact sentences front-load the core decompiler identity and then list capabilities. The audit list earns its space by signaling scope, and there is no filler.

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 complex decompiler/audit tool with no annotations or output schema, the definition explains what is analyzed but not what is returned or whether artifacts are written. Parameter coverage is complete, but the missing output and side-effect context leaves a clear gap.

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

Parameters3/5

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

Both parameters are fully documented in the schema, so the baseline is 3. The description adds no details about target_path or max_classes beyond what the schema already 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 a specific operation and resource ('Dalvik DEX decompiler') and enumerates the audits plus Java lifting. It is clear what the tool does, though it does not explicitly contrast with sibling decompilers such as decompile_ios_ipa_package or decompile_entire_program.

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 sentence states when to choose this over sibling decompilers or when not to use it. The Dalvik/DEX scope implies a use case, but the guidance is entirely inferential and there are no explicit alternatives or exclusions.

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

decompile_entire_programB

Whole-program C decompiler. Discovers function entry points and generates unified, compilable C source files with forward declarations.

NameRequiredDescriptionDefault
binary_pathYesAbsolute path to binary
max_functionsNoMax functions to decompile

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden, yet it only says the output is "unified, compilable C source files with forward declarations." There is nothing about that being expensive/long-running, how entry-point discovery is done, what happens when decompilation fails on a function, or whether a whole binary (potentially thousands of functions) is processed by default.

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 core identity front-loaded and the output shape second; no filler, no restating of the title or parameter names.

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?

Given no annotations and no output schema, the description does well to characterize the return artifact (compilable C with forward declarations), but it leaves the operational picture incomplete: no runtime/cost expectations, no failure semantics, and no indication of where the generated files land or how they are returned.

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 binary_path and max_functions are already documented in the schema; baseline 3 applies. The description adds no guidance on how max_functions interacts with entry-point discovery (e.g. truncation behavior or ordering).

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?

"Whole-program C decompiler" states a specific verb and resource, and "whole-program" plus "discovers function entry points" implicitly distinguishes it from decompile_native_function and the package-level decompilers. It never names a sibling, so the distinction has to be inferred rather than read.

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 by the scope word "entire/whole-program"; there is no explicit when-to-use statement, no exclusion (e.g. "use decompile_native_function for a single address"), and no mention of prerequisites such as a disassembler backend or supported architectures.

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

decompile_ios_ipa_packageA

Decompiles Apple iOS IPA packages (.ipa) and ARM64 Mach-O executables. Audits FairPlay DRM (cryptid), Anti-Jailbreak heuristics, and reconstructs Objective-C / Swift interfaces.

NameRequiredDescriptionDefault
target_pathYesAbsolute path to IPA or Mach-O

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It does disclose substantive operations beyond the name, including FairPlay DRM auditing and anti-jailbreak heuristics, but it does not state whether the operation is read-only, whether it writes files, what permissions are needed, or how expensive it may be.

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 two compact sentences with the primary action front-loaded, followed by the specific audits and reconstruction capabilities. Every sentence contributes information and there is no filler.

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

Completeness3/5

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

For a tool with a simple one-parameter schema but no output schema and no annotations, the description gives a useful capability overview. However, it omits what the agent should expect as output, any limitations, and how this package-level decompiler relates to the many more granular sibling tools.

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?

There is only one parameter and the schema description coverage is 100%, so the schema already explains that target_path is an absolute path to an IPA or Mach-O. The description adds no further parameter-specific meaning, which is acceptable at the baseline for high schema coverage.

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

Purpose4/5

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

The description states a specific verb and resource: decompiling Apple iOS IPA packages and ARM64 Mach-O executables. It also lists follow-on analyses (FairPlay DRM, anti-jailbreak, Objective-C/Swift reconstruction), making the tool's scope clear. It implicitly distinguishes itself from decompile_apk_package by platform, but does not explicitly contrast with other decompilation or binary-inspection siblings.

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 accepted input types (IPA and ARM64 Mach-O) imply when the tool is applicable, but there is no explicit guidance on when to use it versus siblings such as decompile_entire_program, inspect_binary_layout, or detect_binary_protections. No exclusions or prerequisites are stated.

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

decompile_native_functionB

High-speed machine code decompiler (< 400ms). Lifts x86/x64/ARM assembly into clean C pseudocode with branch conditions, string references, and IAT/PLT stub resolution.

NameRequiredDescriptionDefault
binary_pathYesAbsolute path to binary
function_addressNoHex address or function symbol
max_instructionsNoInstruction window limit

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does add real behavioral value: a latency expectation (<400ms), supported architectures, and the content of the produced pseudocode (branch conditions, string refs, IAT/PLT resolution). However, it never states that the operation is read-only/non-destructive, what permissions or binary access are needed, or what happens on failure or unsupported input.

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 zero filler. The headline capability and the performance guarantee are front-loaded, followed by concrete output characteristics.

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?

No output schema exists, so the description usefully substitutes for one by enumerating what the pseudocode contains (branch conditions, string references, resolved IAT/PLT stubs). Remaining gaps are how the architecture is detected and how failures are surfaced, but nothing essential to invocation is missing.

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 binary_path, function_address, and max_instructions are already documented. The description adds nothing per-parameter, such as how function_address interacts with architecture selection or what happens if it is omitted.

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?

States a specific verb and resource: lifts x86/x64/ARM assembly into C pseudocode. It is clearly a decompiler, but it never explicitly contrasts with the sibling decompile_entire_program, so the function-vs-program scope distinction must be inferred from the tool name.

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 indication of when to use this versus decompile_entire_program, decompile_apk_package/decompile_ios_ipa_package, or inspect_binary_layout. No prerequisites, no exclusion cases, no routing guidance of any kind.

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

decrypt_obfuscated_stringsA

Automated string decryptor across raw binary sections. Recovers Single-byte XOR, Multi-byte cycling XOR, and Additive Rolling-Key XOR encrypted strings.

NameRequiredDescriptionDefault
binary_pathYesAbsolute path to target binary
max_candidatesNoMax candidate decrypted strings

TDQS

A3.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. It mentions decryption schemes but does not state whether the tool is read-only, modifies the binary, requires specific permissions, or how results are returned; only the capability is disclosed.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose and then scheme specifics, with zero wasted words. Every sentence contributes directly to understanding what the tool does.

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

Completeness3/5

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

For a tool with no annotations and no output schema, the description is missing key contextual details: it does not explain the return format (e.g., candidate strings with offsets) or whether the operation is safe. It covers purpose and schemes but leaves behavioral and output expectations 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 coverage is 100%, so the schema fully documents both parameters. The description adds no additional meaning about binary_path or max_candidates beyond what the schema already provides, matching the baseline of 3.

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

Purpose5/5

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

States a specific verb (decrypt) and resource (obfuscated strings), scoped to raw binary sections, and names three concrete encryption schemes. This clearly distinguishes it from sibling tools like detect_crypto_primitives and scan_byte_entropy.

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?

Implies usage for recovering strings from binaries via static analysis, but gives no explicit when-to-use, when-not-to-use, or alternatives (e.g., dynamically_unpack_binary, detect_crypto_primitives). An agent must infer the applicable context.

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

detect_binary_protectionsC

Detects commercial packers (UPX, Themida, VMProtect, Enigma), Anti-Debugging APIs, Anti-VM heuristics, and RDTSC timing traps.

NameRequiredDescriptionDefault
binary_pathYesAbsolute path to binary

TDQS

C2.9/5.0
Behavior2/5

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

No annotations exist, so the description carries the full disclosure burden, and it discloses almost nothing behavioral. It does not say whether analysis is static or dynamic, whether the binary is executed (a major safety consideration for malware samples), whether the file is modified, or how long a scan takes. Only the detection categories are given.

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 tight sentence that front-loads the verb and packs the detection categories into an efficient list with zero filler. There is no wasted text, though also no structural grouping beyond the comma list.

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 one required param and no output schema, an agent still needs to know what the scan reports (per-protection flags? confidence? addresses?) and whether it is static or dynamic, and neither is stated. The enumeration of targets covers the 'what,' but the operational picture is incomplete for a security-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%: binary_path is documented as 'Absolute path to binary'. The description adds no further parameter meaning (e.g. whether packed/obfuscated inputs are accepted, whether a directory is allowed), so the 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?

States a specific verb ('Detects') plus an enumerated resource set: commercial packers (UPX, Themida, VMProtect, Enigma), anti-debug APIs, anti-VM heuristics, RDTSC traps. An agent can tell this is a passive protection-fingerprinting scan rather than an action tool like neutralize_anti_debugging or dynamically_unpack_binary. It stops short of explicitly naming which sibling it is not, so 4 rather than 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 statement of when to reach for this tool versus dynamically_unpack_binary, neutralize_anti_debugging, or scan_byte_entropy, and no preconditions (e.g. should this run before unpacking, or after?). Usage is only inferable from the list of detection targets, which is guidance by implication at best.

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

detect_crypto_primitivesA

Scans for AES S-Boxes, SHA/MD5 constants, CRC32 tables, RC4 loops, and ChaCha schedules for SMT inversion.

NameRequiredDescriptionDefault
binary_pathYesAbsolute path to binary

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full disclosure burden. It reveals the detection heuristics, which is genuinely behavioral information, but never confirms the operation is read-only, doesn't say whether results are offsets, addresses, or match kinds, and gives no cost/performance expectation for a scan over a whole binary.

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

Conciseness4/5

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

One front-loaded sentence with the verb first and zero filler. The target list is dense but every item earns its place as a distinct detection category; the only mild weakness is that the multi-item enumeration reads as jargon-heavy with no structural break.

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 no annotations and no output schema, the description is the only source of behavioral and return-shape information, and it omits what a scan yields (offsets, addresses, match metadata) and whether scanning is static-only. Adequate to call the tool, but incomplete for interpreting 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?

There is a single required parameter with 100% schema description coverage ('Absolute path to binary'), so the schema already does the work. The description adds nothing about path constraints or format, which is the expected baseline when schema coverage is high.

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?

Specific verb 'Scans for' paired with an enumerated list of concrete targets (AES S-Boxes, SHA/MD5 constants, CRC32 tables, RC4 loops, ChaCha schedules). This is clearly distinguishable from the sibling scan_byte_entropy, which measures entropy rather than matching known crypto constants.

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 trailing phrase 'for SMT inversion' implies a downstream use case, giving partial context for when the tool is appropriate. However, it never states when to prefer it over siblings like scan_byte_entropy or inspect_binary_layout, nor any preconditions such as the binary being unpacked or deobfuscated first.

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

dynamically_unpack_binaryA

Unicorn CPU emulation unpacker. Executes binary past packer stubs (UPX, Themida, crypters), detects OEP tail jumps, and dumps unpacked memory images.

NameRequiredDescriptionDefault
binary_pathYesAbsolute path to packed binary (PE, ELF)
max_instructionsNoMaximum CPU emulation steps (default: 50000)

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the core mechanism (Unicorn CPU emulation), the execution strategy (running past packer stubs), and the result (dumping unpacked memory images), but it omits operational details such as runtime expectations, output location, and whether the tool writes files or only returns data.

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 two short sentences with no wasted words. It front-loads the tool's identity and follows with the key actions and outputs, making it easy for an agent to scan.

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?

There is no output schema, so the description could do more to explain what is returned after dumping memory or how max_instructions affects behavior. It covers the core purpose but leaves operational gaps for a complex dynamic-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 both parameters are already documented in the schema. The description adds no additional meaning about binary_path or max_instructions, and the baseline score of 3 applies when the schema does the heavy lifting.

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

Purpose5/5

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

The description states a specific tool: an emulation-based unpacker that executes binaries past packer stubs, detects OEP tail jumps, and dumps unpacked memory. It names concrete packer families (UPX, Themida, crypters), which lets an agent distinguish it from passive siblings like detect_binary_protections or inspect_binary_layout.

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

Usage Guidelines4/5

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

The description gives clear usage context: this tool is for packed binaries and specifically targets packer stubs and OEP tail jumps. It does not explicitly say when not to use it or name a sibling alternative such as detect_binary_protections as a prerequisite, but the context is clear enough for selection.

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

generate_frida_instrumentationB

Active reverse engineering intervention. Generates production-grade Frida dynamic instrumentation scripts for SSL unpinning, root/jailbreak cloaking, anti-debug runtime hooks, and dynamic crypto sniffing.

NameRequiredDescriptionDefault
targetYesTarget process name or package ID
platformNoTarget platform
script_typeNoType of dynamic instrumentation
custom_filterNoOptional function or class name filter

TDQS

B3.2/5.0
Behavior2/5

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

No annotations exist, so the description carries the full disclosure burden. 'Generates' usefully signals that the tool emits a script rather than attaching to a process, but 'Active reverse engineering intervention' is ambiguous about whether it touches the live target, and nothing states prerequisites (root/jailbreak, target running or not), side effects, or that the result is script text. For a runtime-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.

Conciseness4/5

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

Two compact sentences, front-loaded with the nature of the tool and then the concrete script families. No filler or repetition; the only slack is the vague 'Active reverse engineering intervention' opener.

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 no annotations and no output schema, the description should carry the behavioral and return-format burden, but it only establishes what is generated. An agent knows what to ask for but not what comes back, whether the target must be live, or what privileges are needed.

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% and both enums are self-explanatory, so the schema does the heavy lifting. The description adds no parameter-level meaning (e.g., how script_type interacts with platform, or what custom_filter matches against), so 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?

States a specific verb and resource ('Generates production-grade Frida dynamic instrumentation scripts') and enumerates the four concrete script families (SSL unpinning, root/jailbreak cloaking, anti-debug hooks, crypto sniffing). It is clearly distinguishable from siblings like patch_binary_executable or neutralize_anti_debugging, which act on the binary rather than emit a script. It stops short of explicitly contrasting itself with those siblings.

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?

'Active reverse engineering intervention' plus the enumerated script types imply the usage context, but there is no explicit when-to-use/when-not statement and no named alternative. An agent must infer that this is the script-generation path versus the direct-action tools in the sibling list.

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

hot_patch_live_memoryC

Injects atomic hot-patch memory trampolines into running processes without touching disk binaries.

NameRequiredDescriptionDefault
pidYesProcess ID
memory_addressYesHex address to hook
patch_bytes_hexYesHex bytes payload
expected_original_bytesNoOptional safety check bytes

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 full behavioral disclosure burden. It notes that disk binaries are untouched and that trampolines are injected into memory, but it omits critical context for a destructive live-memory mutation: required privileges, process-state assumptions, reversibility, failure modes, and the purpose of the optional safety check.

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

Conciseness4/5

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

The definition is a single front-loaded sentence with no filler. It is efficient, though its brevity contributes to the broader underspecification of this complex operation.

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, potentially destructive live-process mutation tool with no annotations and no output schema. One descriptive sentence is not enough to cover permissions, expected behavior, safety checks, return values, or operational constraints.

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 all four parameters. The description adds no parameter-level meaning beyond the schema, which is acceptable at baseline but does not enrich interpretation of pid, memory_address, patch_bytes_hex, or expected_original_bytes.

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

Purpose4/5

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

The description states a specific action ("Injects atomic hot-patch memory trampolines") and target ("running processes"), and its phrase "without touching disk binaries" implicitly contrasts with disk-patching siblings such as patch_binary_executable. It is clear, though it does not explicitly name the sibling alternatives.

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

Usage Guidelines2/5

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

The description implies use against a live running process, but gives no explicit when-to-use guidance, prerequisites, or alternatives. It does not tell the agent when to choose this over patch_binary_executable or generate_frida_instrumentation.

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

inspect_binary_layoutB

Scans PE/ELF headers, ASLR/DEP/SafeSEH mitigations, IAT/EAT exports, and measures Shannon entropy per section.

NameRequiredDescriptionDefault
binary_pathYesAbsolute path to binary

TDQS

B3.1/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 burden but only lists inspection targets. It does not state that the operation is read-only, whether it modifies the binary, expected performance on large files, or how errors are handled.

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

Conciseness5/5

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

A single front-loaded sentence that enumerates the key inspection targets with no filler. Every clause maps to a distinct analysis capability.

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 one-parameter, read-only inspection tool, the description adequately enumerates the checks performed. However, with no output schema and no annotations, it omits the shape of the returned report and the tool's safety profile.

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

Parameters3/5

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

The single parameter binary_path has 100% schema description coverage, so the schema already explains the absolute path requirement. The description adds no additional parameter meaning, which is acceptable given complete schema coverage.

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?

It names a specific verb ("Scans") and concrete resources: PE/ELF headers, mitigations, exports, and per-section entropy. The purpose is clear, but it never distinguishes itself from siblings like detect_binary_protections or scan_byte_entropy that cover overlapping checks.

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 detect_binary_protections, scan_byte_entropy, or trace_binary_xrefs, despite clear overlap. The description only states what it scans, leaving routing entirely to inference.

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

neutralize_anti_debuggingA

Active reverse engineering intervention. Scans and neutralizes anti-debugging traps, PEB BeingDebugged checks, INT 2D/3 traps, and RDTSC timing checks. Automatically NOPs out traps on disk binary with PE checksum recalculation.

NameRequiredDescriptionDefault
auto_patchNoAutomatically NOP out traps and write patched binary
binary_pathYesAbsolute path to binary (PE, ELF)
output_pathNoOptional output destination path

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 but does disclose meaningful behavior: it automatically NOPs out traps on disk and recalculates the PE checksum. However, it does not state whether the original binary is overwritten, whether backups are made, whether the operation is reversible, or what permissions are required for a destructive patch.

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

Conciseness4/5

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

The description is two tight sentences: a front-loaded context sentence followed by a dense enumeration of covered traps and patch behavior. It is appropriately sized, though the opening 'Active reverse engineering intervention' is somewhat generic.

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 schema is fully described and the description covers the core operation, which is adequate for a minimum-viable definition. But for a destructive binary-patching tool with no annotations or output schema, important context is missing: overwrite behavior, backup/reversibility, and error conditions when traps are not found.

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 in the schema. The description aligns with binary_path and auto_patch but adds no additional syntax, defaults, or constraints beyond what the schema provides.

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

Purpose5/5

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

The description states a specific verb and resource: scans and neutralizes anti-debugging traps, naming concrete checks like PEB BeingDebugged, INT 2D/3, and RDTSC timing. This clearly distinguishes it from sibling tools such as detect_binary_protections, which only detects rather than neutralizes.

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?

'Active reverse engineering intervention' and 'on disk binary' imply the use case and distinguish it from live-memory patching, but there is no explicit guidance on when to choose this over detect_binary_protections, patch_binary_executable, or hot_patch_live_memory. Usage is inferable but not routed.

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

optimize_large_media_bufferB

Solves agent memory/context exhaustion for oversized media (video/audio) and large binary dumps (> 50MB). Auto-downsamples videos to agent budget, isolates audio tracks for transcription, extracts keyframes, and provides mmap streaming.

NameRequiredDescriptionDefault
file_pathYesAbsolute path to media or binary file
target_max_mbNoTarget max MB memory budget (default 50)

TDQS

B3.4/5.0
Behavior3/5

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

No annotations, so the description must carry the burden, and it does disclose several behavioral traits (downsampling to agent budget, audio isolation, keyframe extraction, mmap streaming). However it omits whether artifacts are written to disk, whether the source file is modified, and what the call returns — meaningful gaps for an operation this stateful.

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 that front-loads the problem being solved and then enumerates capabilities with no filler. Slightly jargon-heavy, but every clause carries information.

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 no output schema and no annotations, the description should explain what the agent receives back (downsampled file path? in-memory buffer? keyframe list?) and any side effects. It covers capabilities but not results, leaving a real gap for a tool whose whole point is producing usable output.

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 both parameters are already documented. The description adds only indirect context ('agent budget', '> 50MB') without clarifying target_max_mb units/behavior or what file types are/aren't accepted, so the 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?

States a specific problem and a set of concrete operations (downsample video, isolate audio, extract keyframes, mmap streaming) on a specific resource class (oversized media/binary). An agent can tell this is a media-memory-mitigation tool, distinct from the binary-analysis siblings, though it never names a sibling 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?

The '> 50MB' threshold and 'agent memory/context exhaustion' framing imply the triggering condition, but there is no explicit when-to-use/when-not-to-use statement and no alternatives named (e.g., what to do with small files or non-media binaries).

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

patch_binary_executableB

Active reverse engineering intervention. Surgical disk binary patcher with RVA-to-Raw conversion, PE/ELF section mapping, arbitrary hex byte modification, automatic backup creation, and PE checksum recalculation.

NameRequiredDescriptionDefault
patchesYesList of byte patches
binary_pathYesAbsolute path to target binary (PE, ELF, RAW)
output_pathNoOptional destination output path
create_backupNoCreate .bak backup when modifying in-place
recalculate_pe_checksumNoRecalculate PE optional header checksum

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It usefully discloses automatic backup creation and PE checksum recalculation, which are real behavioral traits, but it does not state that this is an irreversible in-place mutation, whether patching is atomic, or how failures or verification are handled.

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?

A single dense sentence, front-loaded with the key verb, but the opening clause "Active reverse engineering intervention" earns no place and the capability list is adjective-heavy ("surgical", "arbitrary") where plain statements would be stronger.

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 mutation tool with no annotations and no output schema, the description does cover the essential mechanics: address translation, section mapping, backup, and checksum fixing. It still lacks any mention of return/result reporting or how partial failures are surfaced, which keeps it below a 5.

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 schema already documents binary_path, patches fields, output_path, create_backup, and recalculate_pe_checksum. The description adds only the notion of RVA-to-Raw conversion and PE/ELF section mapping as capabilities, without mapping them to specific parameters 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?

"Surgical disk binary patcher" names a specific verb and resource, and the qualifier "disk" implicitly separates it from hot_patch_live_memory and most other siblings. However, the leading phrase "Active reverse engineering intervention" is filler that delays the actual 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 explicit guidance on when to use this vs. hot_patch_live_memory, bypass_license_authorization, or inspect_binary_layout. The only usage signal is the implied disk-vs-memory distinction a reader must infer from the single word "disk".

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

scan_byte_entropyA

Calculates rolling Shannon entropy heatmap across any binary (PE, ELF, APK, Mach-O). Detects packed/encrypted payloads and outputs visual distribution histograms.

NameRequiredDescriptionDefault
block_sizeNoBlock size in bytes (default 512)
binary_pathYesAbsolute path to target binary

TDQS

A3.8/5.0
Behavior3/5

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

No annotations exist, so the description carries the burden: it does disclose the operation is analytical and names two concrete outputs (heatmap and histograms), which is useful. However, it omits cost/performance characteristics for large binaries, whether the file is only read, and any limits, leaving notable gaps for an un-annotated 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 dense sentence front-loads the core operation and tacks on the outputs with zero waste. Nothing is redundant or 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?

With fully documented parameters, no output schema, and no annotations, this description covers the essential what-and-outputs. It leaves performance expectations and explicit read-only guarantees unstated, so it is nearly but not fully complete.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (binary_path and block_size) are already documented in the schema. The description's mention of 'rolling' entropy only loosely implies how block_size is used and adds no syntax or constraint details, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource (calculates rolling Shannon entropy heatmap) and enumerates the binary formats it handles (PE, ELF, APK, Mach-O). An agent can distinguish this analysis tool from siblings like detect_binary_protections without opening the schema.

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

Usage Guidelines3/5

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

The phrase 'Detects packed/encrypted payloads' implies when this tool is useful, but it never explicitly says when to prefer it over siblings such as dynamically_unpack_binary or detect_binary_protections, nor does it state prerequisites like needing a raw file path.

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

solve_branch_reachabilityB

Uses Z3 SMT Theorem Prover and angr to solve for exact concrete inputs reaching target branches while pruning failure paths.

NameRequiredDescriptionDefault
binary_pathYesPath to binary
input_lengthNoSymbolic input length
target_addressYesHex address of target block
avoid_addressesNoPruned addresses

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral-disclosure burden. It usefully discloses the Z3/angr symbolic-execution approach, the concrete-input output goal, and failure-path pruning, but it omits important behavior such as timeouts, unsat/error handling, architecture constraints, and result format.

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

Conciseness4/5

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

The description is a single efficient sentence with no wasted text. It front-loads implementation names rather than the action, but remains compact and readable.

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 complex symbolic-execution tool with no annotations and no output schema, the definition is only minimally adequate. It covers the core purpose and schema parameters, but leaves result format, operational limits, and failure behavior under-specified.

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 four parameters and the baseline is 3. The description loosely reinforces target_address and avoid_addresses via 'target branches' and 'pruning failure paths,' but adds no syntax, defaults, or constraints beyond the schema.

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

Purpose4/5

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

The description states a specific verb and resource: solving for exact concrete inputs that reach target branches. It is clear what the tool does, though it does not explicitly differentiate itself from siblings such as trace_symbolic_taint or unflatten_control_flow.

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

Usage Guidelines2/5

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

The description gives no explicit when-to-use guidance, prerequisites, or alternatives. The phrase 'while pruning failure paths' implies a use case, but an agent must infer when to choose this tool over related symbolic-execution tools.

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

trace_binary_xrefsB

Traces whole-program call graph edges, indirect calls, resolved IAT/PLT stubs, and literal string cross-references (XREFs).

NameRequiredDescriptionDefault
binary_pathYesAbsolute path to target binary (PE, ELF)

TDQS

B3.3/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It does convey meaningful behavioral scope — whole-program (not per-function) coverage, static resolution of IAT/PLT stubs and string literals — which tells the agent this is a static read-only analysis. However, it says nothing about cost/runtime on large binaries, whether it requires a pre-unpacked or deobfuscated input, or how results are structured.

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?

One sentence, zero filler, and the scope qualifier ('whole-program') is front-loaded immediately after the verb. Nothing could be removed without losing information.

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 one-parameter tool this is close to sufficient, and the enumerated XREF categories describe what is computed. But with no annotations and no output schema, the description should say what the agent receives back (graph, edge list, per-reference records) and any input preconditions, which it omits.

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 single parameter (binary_path) is described in the schema as an absolute path to a PE/ELF. The description adds no further constraint or format detail, which is acceptable at this coverage level but is pure baseline.

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

Purpose4/5

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

States a concrete verb ('Traces') and enumerates the exact artifacts produced: whole-program call graph edges, indirect calls, resolved IAT/PLT stubs, and string XREFs. This is far more specific than a generic 'analyze binary' claim and implicitly separates it from decompile_* and trace_symbolic_taint, 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 reach for this versus trace_symbolic_taint, decompile_entire_program, or inspect_binary_layout. The only hint is 'whole-program', which implies a broad static sweep, but the agent must infer that on its own.

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

trace_symbolic_taintB

Symbolic dataflow taint analysis proving whether attacker-controlled inputs propagate to dangerous memory sinks.

NameRequiredDescriptionDefault
binary_pathYesPath to binary
sink_symbolYesVulnerable sink function
source_symbolYesInput source symbol

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description bears the full burden. It discloses the analysis's nature (symbolic, propagation-proving) but says nothing about preconditions such as symbol availability or obfuscation resistance, no indication of cost/runtime for a whole-binary symbolic analysis, and no hint of what a result looks like (no output schema exists either).

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

Conciseness5/5

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

A single front-loaded sentence with no filler; the core technique and the question it answers arrive immediately. Nothing is redundant.

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 complex symbolic-analysis tool with no annotations and no output schema, one sentence is insufficient: it omits prerequisites, expected runtime, precision/caveats, and any description of the result it returns. An agent would need to guess whether it is safe to call and what it will get back.

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 binary_path, source_symbol, and sink_symbol are already documented. The description adds only the framing that source is 'attacker-controlled input' and sink is 'dangerous memory sink', which is marginal added meaning over the schema's own labels.

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 technique (symbolic dataflow taint analysis) and states exactly what question it answers: whether attacker-controlled inputs reach dangerous memory sinks. This is distinguishable from sibling analysis tools like trace_binary_xrefs or decompile_native_function, though the description never explicitly contrasts them.

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 implied by the phrase 'proving whether attacker-controlled inputs propagate to dangerous memory sinks' – an agent can infer this is for vulnerability-reachability questions – but there is no statement of when to prefer it over sibling analyses or what prerequisites must hold (e.g., symbolized binaries).

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

unflatten_control_flowC

Symbolically deobfuscates OLLVM Control-Flow Flattening (CFF) state dispatchers and reconstructs clean linear basic blocks.

NameRequiredDescriptionDefault
binary_pathYesPath to binary
timeout_secondsNoSolver timeout
function_addressYesHex address of flattened function

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It identifies the deobfuscation target but does not disclose whether the binary is modified in place, whether the operation is read-only or destructive, required permissions, or what happens on solver timeout. It adds technical context but leaves core behavioral traits unstated.

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, dense sentence with the core technical action front-loaded. There is no filler or repetition, and every term ('symbolically', 'OLLVM CFF', 'linear basic blocks') carries domain meaning.

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

Completeness2/5

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

With no annotations, no output schema, and a non-trivial symbolic deobfuscation operation, the description is too thin. An agent would still lack guidance on prerequisites, side effects, failure modes, and expected results beyond the one-line purpose statement.

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% for all three parameters, so binary_path, function_address, and timeout_seconds are already documented. The description adds no parameter-level nuance such as address format expectations or timeout semantics beyond what the schema provides, which is acceptable baseline behavior.

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

Purpose4/5

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

The description states a specific verb and technical resource: 'Symbolically deobfuscates OLLVM Control-Flow Flattening (CFF) state dispatchers and reconstructs clean linear basic blocks.' This is far more specific than a generic decompile tool, though it does not explicitly differentiate itself from siblings like decompile_native_function or solve_branch_reachability.

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

Usage Guidelines2/5

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

The description gives no when-to-use or when-not-to-use guidance, no prerequisites (e.g., supported architectures or OLLVM variants), and no named alternatives among the many sibling binary-analysis tools. Usage is only implied by the technical term 'OLLVM Control-Flow Flattening.'

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. 20 tool updates
    • Addedbypass_license_authorization
    • Addeddecompile_apk_package
    • Addeddecompile_entire_program
    • Addeddecompile_ios_ipa_package
    • Addeddecompile_native_function
    • Addeddecrypt_obfuscated_strings
    • Addeddetect_binary_protections
    • Addeddetect_crypto_primitives
    • Addeddynamically_unpack_binary
    • Addedgenerate_frida_instrumentation
    • Changedhot_patch_live_memory4 fields changed
      • changedInput schema / properties / expected_original_bytes / description
        Previous value: -"Verification bytes"New value: +"Optional safety check bytes"
      • changedInput schema / properties / memory_address / description
        Previous value: -"Virtual address or relative offset"New value: +"Hex address to hook"
      • changedInput schema / properties / patch_bytes_hex / description
        Previous value: -"Hex bytes to write"New value: +"Hex bytes payload"
      • changedInput schema / properties / pid / description
        Previous value: -"Target Process ID"New value: +"Process ID"
    • Addedinspect_binary_layout
    • Addedneutralize_anti_debugging
    • Addedoptimize_large_media_buffer
    • Addedpatch_binary_executable
    • Addedscan_byte_entropy
    • Changedsolve_branch_reachability5 fields changed
      • changedInput schema / properties / avoid_addresses / description
        Previous value: -"Error paths to avoid"New value: +"Pruned addresses"
      • changedInput schema / properties / binary_path / description
        Previous value: -"Absolute path to binary"New value: +"Path to binary"
      • removedInput schema / properties / input_length / default
        Removed value: -32
      • addedInput schema / properties / input_length / description
        Added value: +"Symbolic input length"
      • changedInput schema / properties / target_address / description
        Previous value: -"Target hex address (e.g. '0x401820')"New value: +"Hex address of target block"
    • Addedtrace_binary_xrefs
    • Changedtrace_symbolic_taint2 fields changed
      • addedInput schema / properties / binary_path / description
        Added value: +"Path to binary"
      • changedInput schema / properties / sink_symbol / description
        Previous value: -"Target sink function"New value: +"Vulnerable sink function"
    • Changedunflatten_control_flow4 fields changed
      • changedInput schema / properties / binary_path / description
        Previous value: -"Absolute path to target binary"New value: +"Path to binary"
      • changedInput schema / properties / function_address / description
        Previous value: -"Hex address (e.g. '0x401500') or symbol"New value: +"Hex address of flattened function"
      • removedInput schema / properties / timeout_seconds / default
        Removed value: -60
      • addedInput schema / properties / timeout_seconds / description
        Added value: +"Solver timeout"
  2. 4 tool updatesv2.0.0
    • First observedhot_patch_live_memory
    • First observedsolve_branch_reachability
    • First observedtrace_symbolic_taint
    • First observedunflatten_control_flow

TDQS

A3.5/5.0

Scored across 20 tools

Disambiguation4/5

Most tools target clearly distinct reverse-engineering actions, such as static decompilation, symbolic solving, probing entropy, unpacking, and mobile package analysis. Some overlap exists among active patching tools (patch_binary_executable, hot_patch_live_memory, neutralize_anti_debugging, bypass_license_authorization), but their descriptions distinguish disk, live-memory, anti-debug, and licensing scopes.

Naming Consistency5/5

All tools use snake_case and begin with an action-oriented verb or verb phrase, e.g. decompile_*, detect_*, trace_*, scan_*, patch_*. Minor modifier phrases like dynamically_unpack_binary and hot_patch_live_memory are still readable and consistent within the overall convention.

Tool Count4/5

Twenty tools is slightly heavy, but the breadth of binary analysis, decompilation, dynamic instrumentation, patching, unpacking, and mobile/desktop coverage justifies most of them. A few capabilities are specialized enough that consolidation could reduce overlap, but the set is not bloated for a reverse-engineering suite.

Completeness5/5

The surface covers static analysis, decompilation, entropy/protection detection, symbolic execution, taint tracing, anti-debug neutralization, binary patching, live memory patching, Frida instrumentation, unpacking, and iOS/Android decompilation. It addresses both analysis and active intervention workflows, leaving no obvious major gap for the stated domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides 7 reverse-engineering tools (hexdump, disasm, strings, xref, Ghidra decompilation, angr symbolic execution, OLLVM deobfuscation) for LLM agents like hermes-agent and Claude Desktop.
    1
    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
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to import, disassemble, and debug binaries directly so they can perform cross-reference reasoning, rename stripped functions, and recover structure layouts during native reverse-engineering workflows. It integrates with offline ELF reconnaissance output to support symbol and struct recovery without opening the Ghidra GUI.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI coding agents to inspect and reverse-engineer large binaries through bounded stdio JSON-RPC 2.0 tools for graph queries, SSA facts, path solving, runtime grounding, and mod scaffolding.
    1
    AGPL 3.0