SYMB
Supports analysis and unflattening of ARM64 root-detection and integrity-checking routines in Android native .so binaries.
Provides an ARM64 backend for symbolic execution, control-flow unflattening, and deobfuscation of ARM64 binaries.
Supports analysis and unflattening of ARM64 root-detection and integrity-checking routines in iOS Mach-O binaries.
Enables analysis of live Linux processes, including zero-disk function hooking and executable trampoline injection into running services.
Supports unflattening switch-heavy WASM dispatchers and normalizing structured block/loop control flow in WebAssembly binaries.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SYMBFind input bytes that reach the success branch in ./crackme"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
English · Tiếng Việt
One MCP server for symbolic execution, OLLVM unflattening, and active binary intervention across binaries and runtimes.
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 ( |
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 |
|
| Surgical physical disk patcher. Converts RVA to physical file offset, modifies arbitrary hex bytes, generates byte-by-byte diffs, and updates PE checksums. | |
|
| Scans and neutralizes inline RDTSC timing traps, INT 2D/3 traps, and PEB BeingDebugged checks. Automatically writes patched binaries with recalculated PE checksums. | |
|
| Evaluates authorization branch conditionals, computes inversion patches ( | |
|
| Generates battle-tested Frida dynamic instrumentation scripts for SSL unpinning, RootBeer cloaking, and Windows native API hooks. | |
|
| Injects atomic zero-disk trampolines into running process RAM without touching disk binaries. |
🔬 Symbolic Execution & SMT Solver Engines (3 Tools)
Tool Name | Key Arguments | Primary Capability | Deep-Dive Guide |
|
| Symbolically deobfuscates OLLVM switch dispatchers and restores original CFG. | |
|
| Uses Z3 SMT Solver & angr to solve for exact inputs reaching target branches. | |
|
| Bit-level dataflow propagation analysis from input buffers to critical memory sinks. |
⚡ Multi-Platform Native Decompilers & Unpackers (4 Tools)
Tool Name | Key Arguments | Primary Capability | Deep-Dive Guide |
|
| Unicorn CPU emulation unpacker. Executes binary past packer stubs (UPX, Themida, crypters), detects OEP tail jumps, and dumps unpacked memory images. | |
|
| Decompiles machine code to clean C pseudocode in < 400ms with Capstone and struct layout inference. | |
|
| Automated whole-program decompiler. Recovers function entry points and generates unified C source files. | |
|
| 5-Pass native Dalvik DEX decompiler. Audits permissions, keystore signature schemes (v1/v2/v3), CWEs, and lifts Dalvik to Java. |
🔍 Deep Binary Auditing & Memory Engines (8 Tools)
Tool Name | Key Arguments | Primary Capability | Deep-Dive Guide |
|
| Decompiles Apple iOS IPA packages & ARM64 Mach-O binaries. Audits FairPlay DRM (cryptid) and Anti-Jailbreak heuristics. | |
|
| Solves Single-byte XOR, Multi-byte cycling XOR, Rolling Key XOR, and Base64 across PE, ELF, APK, and .so binaries. | |
|
| Detects packers (UPX, Themida, VMProtect, Enigma), Anti-Debug APIs, Anti-VM artifacts, and ASM timing traps. | |
|
| Scans PE/ELF headers, ASLR/DEP/SafeSEH mitigations, IAT/EAT exports, and measures section entropy. | |
|
| Scans for AES S-Boxes, SHA/MD5 constants, CRC32 tables, RC4 loops, and ChaCha schedules for SMT inversion. | |
|
| 256-byte sliding window Shannon entropy heatmap generator for encrypted shellcode and compressed overlays. | |
|
| Maps whole-program call graph edges, indirect calls, and string literal cross-references. | |
|
| Downsamples oversized videos, isolates audio tracks, and streams multi-GB dumps via zero-RAM mmap. |
📚 Documentation Hub & Architecture Guides (docs/)
SYMB maintains comprehensive, modular documentation covering theoretical foundations, implementation guides, and MCP specifications:
Guide / Document | Focus Area | Description |
Binary Cracking & Patching | Complete guide for RVA-to-Raw mapping, PE CheckSum recalculation, Anti-Debug neutralization, and Frida generator. | |
Protocol Specification | Formal JSON schemas, inputs, outputs, and Canonical Evidence records for all 20 native MCP tools. | |
Deobfuscation | Mathematical state-variable solving, dispatcher pruning, and CFG restoration using Z3 & angr. | |
Symbolic Execution | Automated path reachability, SAT solving, and crackme solving with Z3 SMT Theorem Prover. | |
Native & Dalvik Lifting | Unicorn CPU emulation unpacker, high-speed C pseudocode generator, and 5-pass Android DEX decompiler. | |
Live Memory Hooking | Win32 API ( | |
Context Management | Hardware-accelerated audio extraction, video downsampling budgets, and zero-RAM | |
Architecture | Core system principles, mathematical invariants, and agent integration guidelines. | |
Compatibility | Platform support matrix across Windows (x86/x64), Linux (x86/x64/ARM), macOS, Android, and iOS. | |
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 testSuites include:
System Capabilities & Solver Audit (Node, Python, Z3, angr, Unicorn, Capstone)
MCP Tool Contracts & Zod Schemas (Validating all 20 tool schemas)
Native High-Speed EXE Decompiler & Layout Engine
Z3 SMT Mathematical Logic Engine
OLLVM Control-Flow Unflattening (PE & ELF)
SMT Branch Reachability Solver
Large Media & Binary Buffer Optimizer Engine
Active Binary Intervention & Weaponized RE Engine
📦 Requirements & Environment
Node.js:
>= 18.0.0(Verified on Node 20, 22, and 24)Python:
>= 3.10Native Solvers:
pip install -r requirements.txt(Z3 SMT Solver, angr, Unicorn, Capstone, pefile).Run
symb auditornpx symb-agents setupto automatically audit your local runtime capabilities.
📄 License
MIT License. Open-source for developers, security researchers, and autonomous AI agents.
Available Tools
20 toolsbypass_license_authorizationB
Active reverse engineering intervention. Detects authorization/license validation branches, computes conditional jump inversions, and applies permanent binary bypass patches on disk.
| Name | Required | Description | Default |
|---|---|---|---|
| binary_path | Yes | Absolute path to target binary | |
| output_path | No | Optional output path | |
| apply_to_file | No | Write patched binary to disk | |
| force_success | No | Invert conditionals to force valid license | |
| function_address | No | Target validation function address or symbol |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| max_classes | No | Max classes to decompile | |
| target_path | Yes | Absolute path to APK or DEX |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| binary_path | Yes | Absolute path to binary | |
| max_functions | No | Max functions to decompile |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| target_path | Yes | Absolute path to IPA or Mach-O |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| binary_path | Yes | Absolute path to binary | |
| function_address | No | Hex address or function symbol | |
| max_instructions | No | Instruction window limit |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| binary_path | Yes | Absolute path to target binary | |
| max_candidates | No | Max candidate decrypted strings |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| binary_path | Yes | Absolute path to binary |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| binary_path | Yes | Absolute path to binary |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| binary_path | Yes | Absolute path to packed binary (PE, ELF) | |
| max_instructions | No | Maximum CPU emulation steps (default: 50000) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | Target process name or package ID | |
| platform | No | Target platform | |
| script_type | No | Type of dynamic instrumentation | |
| custom_filter | No | Optional function or class name filter |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pid | Yes | Process ID | |
| memory_address | Yes | Hex address to hook | |
| patch_bytes_hex | Yes | Hex bytes payload | |
| expected_original_bytes | No | Optional safety check bytes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| binary_path | Yes | Absolute path to binary |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| auto_patch | No | Automatically NOP out traps and write patched binary | |
| binary_path | Yes | Absolute path to binary (PE, ELF) | |
| output_path | No | Optional output destination path |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Absolute path to media or binary file | |
| target_max_mb | No | Target max MB memory budget (default 50) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| patches | Yes | List of byte patches | |
| binary_path | Yes | Absolute path to target binary (PE, ELF, RAW) | |
| output_path | No | Optional destination output path | |
| create_backup | No | Create .bak backup when modifying in-place | |
| recalculate_pe_checksum | No | Recalculate PE optional header checksum |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| block_size | No | Block size in bytes (default 512) | |
| binary_path | Yes | Absolute path to target binary |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| binary_path | Yes | Path to binary | |
| input_length | No | Symbolic input length | |
| target_address | Yes | Hex address of target block | |
| avoid_addresses | No | Pruned addresses |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| binary_path | Yes | Absolute path to target binary (PE, ELF) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| binary_path | Yes | Path to binary | |
| sink_symbol | Yes | Vulnerable sink function | |
| source_symbol | Yes | Input source symbol |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| binary_path | Yes | Path to binary | |
| timeout_seconds | No | Solver timeout | |
| function_address | Yes | Hex address of flattened function |
TDQS
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.
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.
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.
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.
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.
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.
20 tool updates
- Added
bypass_license_authorization - Added
decompile_apk_package - Added
decompile_entire_program - Added
decompile_ios_ipa_package - Added
decompile_native_function - Added
decrypt_obfuscated_strings - Added
detect_binary_protections - Added
detect_crypto_primitives - Added
dynamically_unpack_binary - Added
generate_frida_instrumentation - Changed
hot_patch_live_memory4 fields changed- changed
Input schema / properties / expected_original_bytes / descriptionPrevious value: -"Verification bytes"New value: +"Optional safety check bytes" - changed
Input schema / properties / memory_address / descriptionPrevious value: -"Virtual address or relative offset"New value: +"Hex address to hook" - changed
Input schema / properties / patch_bytes_hex / descriptionPrevious value: -"Hex bytes to write"New value: +"Hex bytes payload" - changed
Input schema / properties / pid / descriptionPrevious value: -"Target Process ID"New value: +"Process ID"
- Added
inspect_binary_layout - Added
neutralize_anti_debugging - Added
optimize_large_media_buffer - Added
patch_binary_executable - Added
scan_byte_entropy - Changed
solve_branch_reachability5 fields changed- changed
Input schema / properties / avoid_addresses / descriptionPrevious value: -"Error paths to avoid"New value: +"Pruned addresses" - changed
Input schema / properties / binary_path / descriptionPrevious value: -"Absolute path to binary"New value: +"Path to binary" - removed
Input schema / properties / input_length / defaultRemoved value: -32 - added
Input schema / properties / input_length / descriptionAdded value: +"Symbolic input length" - changed
Input schema / properties / target_address / descriptionPrevious value: -"Target hex address (e.g. '0x401820')"New value: +"Hex address of target block"
- Added
trace_binary_xrefs - Changed
trace_symbolic_taint2 fields changed- added
Input schema / properties / binary_path / descriptionAdded value: +"Path to binary" - changed
Input schema / properties / sink_symbol / descriptionPrevious value: -"Target sink function"New value: +"Vulnerable sink function"
- Changed
unflatten_control_flow4 fields changed- changed
Input schema / properties / binary_path / descriptionPrevious value: -"Absolute path to target binary"New value: +"Path to binary" - changed
Input schema / properties / function_address / descriptionPrevious value: -"Hex address (e.g. '0x401500') or symbol"New value: +"Hex address of flattened function" - removed
Input schema / properties / timeout_seconds / defaultRemoved value: -60 - added
Input schema / properties / timeout_seconds / descriptionAdded value: +"Solver timeout"
4 tool updates
v2.0.0- First observed
hot_patch_live_memory - First observed
solve_branch_reachability - First observed
trace_symbolic_taint - First observed
unflatten_control_flow
TDQS
Scored across 20 tools
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.
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.
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.
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
Related MCP Connectors
Hunt zero-days by talking to binaries. 40+ tools. Hosted, OAuth + SSO, invite: hi@byteray.ai
Jailbreak-proof AI guardrails. Automated Reasoning SMT solver, not an LLM. ZK proofs included.
Formally-verified injection/exfiltration detector for AI agents (MCP-02).
Autonomous agent guardrails, bash sandboxing, MCP rugpull diffing & prompt firewalls.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides 7 reverse-engineering tools (hexdump, disasm, strings, xref, Ghidra decompilation, angr symbolic execution, OLLVM deobfuscation) for LLM agents like hermes-agent and Claude Desktop.1MIT
- AlicenseNot gradedqualityCmaintenanceEnables 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.1MIT
- FlicenseNot gradedqualityAmaintenanceEnables 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.-
- AlicenseNot gradedqualityCmaintenanceEnables 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.1AGPL 3.0