re-lief
Analyzes Android DEX, OAT, and ART binaries, providing class and method listing, string extraction, and format-specific metadata.
Analyzes Mach-O binaries used on iOS, exposing load commands, segments, code signature, and dyld info.
Analyzes ELF binaries for Linux, including sections, segments, dynamic symbols, RELRO, NX, PIE, RPATH/RUNPATH, and library dependencies.
Analyzes Mach-O binaries used on macOS, providing segment details, code signature, Objective-C metadata, and dyld shared cache support.
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., "@re-liefCan you parse this binary and show its sections?"
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.
re-lief
MCP server exposing LIEF (Library to Instrument Executable Formats) for cross-format binary analysis. Handles PE, ELF, MachO, COFF, DEX, ART, OAT in a single, normalized API.
Why
LIEF is the Python successor to pefile — same data for PE, plus ELF, MachO, DEX, ART, and OAT. It also handles DWARF/PDB debug info, ObjC metadata, the Dyld Shared Cache, and (optionally) has a built-in disassembler/assembler.
This server is the foundation of the RE-AI plugin: it works without any system tools installed (no rizin, no gdb, no anything), is pure Python, and runs in-process.
Related MCP server: re-rizin
Tools
Tool | What it does |
| Health check — return LIEF version, supported formats |
| Auto-detect format and return normalized header + high-level structure |
| Section list with permissions (R/W/X), virtual vs raw size, entropy |
| Symbol-level import/export tables (per format) |
| PE signature details (Win) |
| Appended data after the last section |
| Android DEX class list |
| Methods of a DEX class |
| Android OAT/ART method list |
| Capstone disassembly (works for any LIEF-parsed binary) |
| ASCII + UTF-16LE string extraction with section awareness |
| ASCII + UTF-16LE string extraction, section-aware, bucketed into keyword categories from |
| PE import hash (MD5 of normalized import table) |
| Produce a structural snapshot suitable for diffing two binaries |
Install
This server is part of the RE-AI plugin. The plugin's install.sh / install.bat installs it as part of the standard flow.
To install standalone:
pip install -e ./servers/re-liefRun
re-lief # stdio transport (default for MCP)
python -m re_lief # equivalentFormat support
LIEF auto-detects the format and exposes a polyglot API. Most tools return results shaped by format:
PE (
.exe,.dll,.sys): full sections, imports/exports, imphash, Authenticode, resources, exceptions, TLS, debug info (PDB path)ELF (Linux binaries, .so, kernel modules): sections, segments (program headers), dynamic symbols, RELRO, BIND_NOW, NX, PIE, RPATH/RUNPATH, SONAME, dynamic libs
MachO (macOS/iOS binaries, .dylib, frameworks): load commands, segments, LC_BUILD_VERSION, code signature, dyld info, ObjC metadata
DEX (Android Dalvik): class list with FQN, method list per class, string pool
OAT/ART (Android runtime): method list with class/method indices, vdex references
COFF (Windows object files, EFI): sections, symbols, relocations
Deprecation of pefile
If you're familiar with the v1 re-ai repo, this server supersedes the old pefile-based code. The string-extraction algorithm (ASCII + UTF-16LE) and imphash logic were ported from backend/analysis/native.py; the rest of the API is LIEF-native and works for all formats.
Categorization vocabulary
categorize_strings reads its 11 keyword categories from
data/drm-indicators.yaml::string_categories at MCP-server load
time. The anti_debug and hwid categories inherit their
keyword lists from
drm-indicators.yaml::anti_debug_indicators.checks[].name and
hwid_apis.high_signal[].api via a seed_from: YAML pointer —
when a future agent adds a new HWID API to hwid_apis.high_signal,
the categorizer picks it up automatically on next reload. The
other 9 categories have their keyword lists inline in the YAML
under string_categories.categories[].keywords.
This makes the categorizer idempotent with the catalog: the
YAML is the single source of truth for both the indicator set
that re-drm-fingerprint reads and the keyword set that the
categorizer reads. Both the static analysis and the string
analysis will give consistent answers.
On large binaries (>100 MB, e.g. a Unity IL2CPP GameAssembly.dll
wrapped by an encrypted-VM bytecode interpreter), pass
skip_sections=[".idata", ".xtls", ".xpdata", ".udata", ".xdata", ".didata", ".ecode", ".00cfg"] to skip the encrypted-VM
bytecode regions. Note: on the bundled IL2CPP target sample,
the import-table strings live inside those sections,
so skipping them blinds the categorizer to the imports. Use
skip_sections for memory-bound runs; use the full section walk
for completeness.
Available Tools
17 toolscategorize_stringsA
Extract strings from path and bucket them into semantic categories.
The categorization vocabulary is loaded from
data/drm-indicators.yaml::string_categories at MCP-server
load time. Two categories (anti_debug, hwid) inherit
their keyword lists from the existing catalog sections via a
seed_from pointer; the rest have inline keyword lists.
When a future agent adds a new HWID API to
hwid_apis.high_signal, the hwid category picks it up on
next MCP-server reload with zero Python change.
The return shape is a strict superset of extract_strings:
::
{
"path": "...",
"min_length": 5,
"totals": {"ascii_extracted": N, "utf16le_extracted": N,
"deduplicated": N, "categorized": N},
"truncated": {"input": bool, "per_category": bool,
"per_encoding": bool},
"by_category": {
"anti_debug": {"count": N, "samples": [{"string":..., "section":...}, ...]},
"hwid": {"count": N, "samples": [...]},
"crypto": {"count": N, "samples": [...]},
"network": {"count": N, "samples": [...]},
"registry": {"count": N, "samples": [...]},
"process": {"count": N, "samples": [...]},
"file": {"count": N, "samples": [...]},
"fingerprint": {"count": N, "samples": [...]},
"activation": {"count": N, "samples": [...]},
"obfuscation": {"count": N, "samples": [...]},
"misc": {"count": N, "samples": [...]}
},
"ascii_capped": [...], # backward-compat with extract_strings
"utf16le_capped": [...],
"uncategorized_sample": [...] # 50 misc strings (helps spot missing categories)
}On large binaries (e.g. a 500+ MB Unity IL2CPP GameAssembly.dll
wrapped by an encrypted-VM bytecode interpreter), pass
skip_sections=[".idata", ".xtls", ".xpdata", ".udata", ".xdata", ".didata", ".ecode", ".00cfg"] to skip the encrypted-VM
bytecode regions. Those sections contain no readable strings;
the categorization result is the same and the memory footprint
drops dramatically.
Categories are descriptive — they describe observable string content, not specific commercial products.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| min_length | No | ||
| categories | No | ||
| include_misc | No | ||
| max_per_category | No | ||
| samples_per_category | No | ||
| skip_sections | No |
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 details the return shape, categorization vocabulary source, and performance considerations (skip sections). It does not cover auth or destructive behavior, but the tool is read-only by nature.
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 front-loaded with the main purpose and uses a structured format with a code block for the return shape. Some details (e.g., YAML loading mechanism) are slightly verbose but not wasteful.
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 7 parameters and no output schema, the description provides a detailed output structure and behavior for some parameters, but fails to document several key parameters. The return shape is well-specified, partially compensating for the lack of output schema.
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 0%, so the description must compensate. Only `path`, `min_length`, and `skip_sections` are explained; the other 4 parameters (`categories`, `include_misc`, `max_per_category`, `samples_per_category`) are not mentioned, leaving a significant gap.
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 clearly states it extracts strings and buckets them into semantic categories, with a specific verb and resource. It distinguishes itself from sibling tool `extract_strings` by noting it is a strict superset.
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 usage by contrasting with `extract_strings` and provides a practical example for large binaries with `skip_sections`. It does not explicitly state when not to use, but the differentiation is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_liefA
Return LIEF version, supported formats, and a green/yellow status.
Returns a JSON-serializable dict suitable for scripts/check_deps.py.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the burden. It states the return type (JSON-serializable dict) but does not disclose potential failures, side effects, or permissions. For a simple read-only check, the information is adequate but minimal.
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 succinct sentences, front-loaded with the essential purpose. No wasted words.
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 parameters and no output schema, the description covers what it returns and its intended use. It could mention prerequisites (LIEF installation) but is otherwise 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?
No parameters exist, and schema coverage is 100% trivially. The baseline for high coverage is 3, and the description adds no parameter-specific info.
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 clearly states the tool returns LIEF version, supported formats, and status, which is a specific verb and resource. It distinguishes from sibling tools that analyze binaries rather than check the tool itself.
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 usage for checking dependencies via 'scripts/check_deps.py' but provides no explicit when-to-use or alternatives. Siblings are all different, so differentiation is less critical, but lack of explicit context lowers the score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
classify_native_protectionA
Classify a native binary's protection class (category-only).
Combines get_sections + get_imports_exports +
the vendored native_packer_signatures regex catalog
entropy heuristics to label a binary's likely protection class. Returns one of:
"plain-pe"— no protection observed."packer-stub-wrapped"— UPX / ASPack / MPRESS / Petite / kkrunchy style (single non-standard section name)."vm-bytecoded-pe"— single.vmp0/.vmp1style section set."encrypted-vm-bytecode-interpreter"— the proprietary-engine section family (.arch/.xcode/.xtext/.sbss/.link/.xtls/.xpdata)."il2cpp-runtime"— large.idata+ tiny.text+GameAssembly.dllsibling."anti-debug-wrapped"— bare anti-debug surface but no packer."unpacked-debug-pe"— debug build (PDB section + lots of stdio / conio / assert symbols).
Args: path: file to classify
Returns::
{
"path": "...",
"protection_class": "...",
"evidence": [{"category": "...", "indicator": "...",
"section": "..."}, ...]
}
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses the tool's behavior: it combines get_sections, get_imports_exports, packer signatures, and entropy heuristics. It also lists all possible output labels and evidence structure. This provides strong transparency, though it does not mention potential side effects or performance considerations.
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 well-structured with bullet points for return values and clear section headers. At 18 lines, it is reasonably concise while covering necessary details. A slight reduction in verbosity could improve it, but overall it is effectively organized.
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 the tool's moderate complexity and lack of output schema, the description provides comprehensive context. It explains the underlying analyses, lists all possible return values, and describes the evidence object structure. This fully equips an agent to invoke the tool and interpret its results correctly.
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 'path' is described as 'file to classify', adding minimal meaning beyond its name and type. Since schema description coverage is 0%, the description compensates slightly but not substantially. The parameter is straightforward and requires little additional explanation.
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 clearly states the tool's purpose: classifying a native binary's protection class. It enumerates the possible return values with examples, making the purpose highly specific. It distinguishes itself from sibling tools like get_sections and get_imports_exports by combining multiple analyses into a single classification.
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 does not explicitly state when to use this tool versus its siblings, such as calling get_sections or get_imports_exports directly. It implies this tool is for a high-level classification, but lacking explicit usage guidance minimizes its helpfulness for an AI agent deciding between tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disasm_capstoneA
Disassemble size bytes of section section_name starting at offset.
Returns a JSON list of instructions (address, mnemonic, operands, bytes). Truncates to max_insns (default 500) — call again with a different offset to see more.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| section_name | Yes | ||
| offset | No | ||
| size | No | ||
| max_insns | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes output format and truncation behavior, but without annotations, it misses potential error conditions or required permissions.
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, no filler, front-loaded with core action, efficient and clear.
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?
Adequate for a disassembly tool with no output schema or annotations: explains return type and pagination, but could mention edge cases like invalid section.
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?
With 0% schema coverage, description compensates by explaining size, offset, section_name, and max_insns with defaults, though path parameter is not detailed.
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?
Description clearly states verb 'disassemble' with specific resource ('section_name' in binary) and scoping parameters (size, offset), distinguishing it from sibling analysis tools.
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?
Provides pagination guidance ('call again with a different offset to see more') and default behavior for max_insns, but lacks explicit when-to-use vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_stringsA
Extract printable ASCII and UTF-16LE strings from path.
Returns {"ascii": [...], "utf16le": [...], "totals": {...}, "truncated": bool}.
Each string has string, offset, and section fields.
.. note::
This is the v2.4 shape, kept stable for backward compatibility.
New code should call categorize_strings (below), which
returns the same ascii / utf16le arrays plus a
keyword-bucketed by_category block.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| min_length | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses return structure (fields, totals, truncated flag) and notes stability for backward compatibility. Lacks mention of side effects or performance, but overall transparent.
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?
Concise overall, with a clear front-loaded purpose. The note adds value without excessive verbosity. A slight improvement would be integrating parameter info, but structure is good.
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 2 parameters, no output schema, and no annotations, the description covers return structure and sibling context well. The only missing element is the min_length parameter explanation, but otherwise 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 0%. The description only mentions path implicitly. The min_length parameter is not described, its default or effect is missing, leaving the agent with incomplete information for parameter usage.
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 clearly states the verb 'Extract', the resource 'strings', and specifies the types 'printable ASCII and UTF-16LE'. It also distinguishes from sibling 'categorize_strings' by noting the return shape and backward compatibility.
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?
Explicitly advises new code to use 'categorize_strings' instead, providing clear when-to-use guidance and alternatives, making it straightforward for an AI agent to choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_authenticodeC
Return Authenticode signature details for PE binaries.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for disclosing behavioral traits. However, it only states the core function, omitting important details such as whether the operation is read-only, any permissions required, potential error states, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence without unnecessary words, effectively communicating the tool's purpose. However, its brevity comes at the cost of missing important contextual details, preventing a higher score.
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 the tool's simplicity (one parameter, no output schema), the description is incomplete. It does not mention the return format, error handling, or what happens if the input is invalid. A complete description would cover these for reliable agent use.
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 input schema has 0% description coverage for its single parameter 'path'. The description does not explain what 'path' means or any constraints (e.g., file must exist, must be a PE). While the parameter name is somewhat self-explanatory, the tool description fails to add value 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 clearly states the tool returns Authenticode signature details for PE binaries, specifying the verb 'Return' and the resource 'Authenticode signature details' for a specific file type (PE binaries). This distinguishes it from sibling tools like get_sections or parse_binary, which address different aspects of binary analysis.
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 provides no guidance on when to use this tool versus alternatives, no prerequisites, and no conditions under which it should or should not be used. Without such context, an agent may misuse it or fail to consider appropriate alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_debug_directoryA
Return the PE debug directory entries (incl. IMAGE_DEBUG_TYPE_POGO).
The POGO entry (type 10) is the third-party-ATD
layer's trigger-arming metadata (per
ANTI-TAMPER-TAXONOMY.md Pattern A-DW). Surfaced
with kind: "POGO" in the response dict. The
CODEVIEW entry (type 2) is the PDB pointer; the
canonical vendor-tag signal lives
in the RSDS CodeView stream (resolved by re-pdb
parse_pdb rather than this read-path).
The skill-side fallback references/pogo_debug_check.py
in skills/re-drm-fingerprint/ mirrors this same
shape for hosts that don't have the new MCP tool
installed.
See See the RE-AI output directory per-target/p3r/stage5-pogo-debug-check.md for the
canonical Pattern A-DW detection pattern.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the types of entries returned (POGO, CODEVIEW) and notes that the POGO entry is third-party-ATD trigger-arming metadata. It also indicates it is a read operation. However, it references internal documentation paths, slightly reducing clarity.
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 overly long with references to internal docs and fallback scripts that are not essential for tool selection. The first sentence is clear, but subsequent sentences add noise and reduce conciseness.
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 one parameter and no output schema, the description is somewhat complete: it specifies return values (debug directory entries) and mentions output key 'kind'. However, it does not fully describe the response structure or other potential fields, leaving gaps for an agent.
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 0%, so the description must compensate. It does not explicitly describe the 'path' parameter—only indirectly as 'PE debug directory'—leaving the agent to infer it is a file path. This is inadequate given the lack of schema documentation.
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 clearly states it returns PE debug directory entries including IMAGE_DEBUG_TYPE_POGO and CODEVIEW. It specifies the resource and what it returns, distinguishing it from sibling tools like get_authenticode or get_sections.
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 explains that the CODEVIEW entry is for PDB pointer and that the canonical vendor-tag signal is resolved by a different tool (re-pdb parse_pdb), implying this tool is not for that purpose. It also mentions a fallback script for hosts without the tool, providing context on when to use this MCP tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_imphashA
Return the PE import hash (imphash) for path.
Imphash is the MD5 of the normalized import table — used for malware variant identification. Returns an empty string for non-PE formats.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the return value for non-PE formats (empty string) but does not specify behavior for invalid paths, missing files, or access errors. The safety profile (e.g., read-only) is implied but not explicit.
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 sentences, front-loaded with the core action, and contains no extraneous information. Every sentence adds value: first states the function, second explains the hash and a key edge case.
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 output schema or annotations, the description covers the return value and a notable edge case (non-PE). However, it omits expected input constraints (e.g., file existence), error conditions, and whether the tool requires pre-parsed data. Context from siblings like 'parse_binary' is not integrated.
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 schema description coverage is 0%, so the description must compensate. It adds that 'path' is a file path for a PE binary, but does not clarify format (absolute/relative), protocol support, or error handling. This provides some meaning beyond the schema but is not fully informative.
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 clearly states that the tool returns the PE import hash (imphash) for a given path. It uses a specific verb ('Return') and resource ('PE import hash'), and the purpose is distinct from sibling tools like 'extract_strings' or 'get_sections'.
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 hints at usage for malware variant identification, but does not explicitly state when to use this tool versus alternatives, nor does it provide when-not-to-use guidance. There is no mention of prerequisites or exclusions, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_imports_exportsA
Return symbol-level import and export tables for path.
Args:
path: PE / ELF / MachO to analyze.
max_imports: cap the returned imports list to this many
entries. 0 = no cap (the v2.9.0 default).
max_exports: same cap for the exports list.
library_filter: optional substring filter against the
library name (pipe-separated for OR). e.g.
"kernel32|user32" to keep only those two.
Added in v2.9.1+ to fix Gap 27 (the response-size ceiling
on the 4 large VM-protected targets). The response includes
a truncated flag + original_count / returned_count
when the caps fire. The v2.9.0 callers (no kwargs) are
unaffected.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| max_imports | No | ||
| max_exports | No | ||
| library_filter | No |
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 discloses that the response includes a 'truncated' flag and original_count/returned_count when caps fire, and that v2.9.0 callers are unaffected. It does not mention side effects, but for a read-only tool this is sufficient.
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 well-structured with a purpose sentence, bulleted args, and a note on version. It is not overly verbose, though the version info could be considered extra. The first sentence contains the core purpose.
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, but the description explains the output features (truncated flag, counts). It covers all 4 parameters, version context, and behavioral details. For a tool with 4 params and no output schema, it is very 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?
Description explains each parameter in detail: path, max_imports (with cap default), max_exports, library_filter (with example). Since schema has 0% coverage, the description fully compensates, providing defaults and 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 clearly states 'Return symbol-level import and export tables for *path*.' It uses a specific verb 'Return' and resource 'symbol-level import and export tables', and distinguishes from sibling tools like get_sections or get_authenticode that deal with different binary aspects.
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 explicit argument usage and mentions the version context (v2.9.1+ to fix Gap 27) and that v2.9.0 callers are unaffected. However, it does not explicitly state when not to use this tool or provide direct alternatives, so it is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_overlayB
Return appended data after the last section (PE overlay).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description only indicates a read operation, but lacks details on error handling, behavior when no overlay exists, or format of returned 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?
One concise sentence with no redundancy. Key information is front-loaded.
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?
Tool is simple, but no output schema or annotations. Lacks differentiation from siblings. Adequate but not comprehensive.
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?
Single parameter 'path' has no description in schema, and the description does not clarify its meaning (e.g., file path, URL). Schema coverage is 0%, and description adds no value.
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 clearly states the action ('Return') and the specific resource ('appended data after the last section (PE overlay)'), distinguishing it from sibling tools like 'get_sections'.
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 explicit guidance on when to use or alternatives. The description implies usage when overlay data is needed, but does not specify when not to use or mention sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sectionsA
Return section list with permissions, virtual vs raw size, and entropy.
Works for PE (.text/.rdata/.data/.rsrc), ELF (.text/.rodata/.data), and MachO (__TEXT/__DATA/__LINKEDIT).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, description discloses output fields and supported formats, giving transparency about what to expect. Does not mention side effects or permissions, but 'get' implies read-only.
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 key purpose, no unnecessary words.
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 an output schema present, the description covers binary format support, output fields, and typical section names. However, missing parameter documentation reduces completeness.
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 only parameter 'path' is not described in the description. Schema coverage is 0%, and the description adds no meaning beyond the schema, failing to clarify that path is the binary file path.
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?
Clearly states it returns section list with permissions, virtual vs raw size, and entropy. Mentions supported binary formats and typical section names, effectively distinguishing from sibling tools.
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 getting section details from supported binary types, but no explicit guidance on when to use this vs alternatives like 'parse_binary' or 'check_lief'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dex_classesB
List all classes in a Dalvik DEX file.
Returns FQN, access flags, and method/field counts.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the return format (FQN, access flags, counts) and implies a read operation, but lacks details on error handling, side effects, or authorization needs. Without annotations, it partially fulfills transparency but leaves gaps.
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 concise sentences front-load the purpose and output, with no redundant or extraneous content. Every sentence adds value.
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 the lack of annotations, the description should compensate. It misses parameter documentation and usage context, making it incomplete for autonomous agents despite having an output schema.
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 input schema has one required parameter 'path' with no description, and the tool description does not clarify its meaning. With 0% schema coverage, this is a critical omission for correct invocation.
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 clearly states the tool lists all classes in a Dalvik DEX file and specifies return data (FQN, access flags, method/field counts). This distinguishes it from siblings like 'list_dex_methods' which lists methods.
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 explicit guidance on when to use this tool versus alternatives, nor any prerequisites or constraints. The description only states what it does, leaving the agent without context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dex_methodsC
List all methods of a DEX class identified by FQN (e.g. Lcom/foo/Bar;).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| class_fqn | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry full burden. It only says 'list all methods' but does not disclose whether inherited methods are included, performance characteristics, or any side effects. The output schema exists but description adds no behavioral context.
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?
Single sentence is concise, but could be structured with a brief parameter explanation. No waste, but not optimally front-loaded.
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 output schema exists and two params, the description is functionally complete but lacks parameter details and usage guidance. Adequate but not thorough.
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 0%. The description only mentions FQN with an example for class_fqn, but does not explain path or provide any constraints or formats for parameters. Minimal value added beyond 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 clearly states the action (list) and the resource (methods of a DEX class identified by FQN), with an example format. This distinguishes it from siblings like list_dex_classes.
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 explicit when-to-use or when-not-to-use guidance. No mention of alternatives or prerequisites, though the FQN hint implies context. For a tool with many siblings, this is insufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_oat_artC
List all methods in an OAT/ART Android runtime file.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It only states the basic operation without mentioning read-only nature, error handling, performance, or effects. 'List' implies reading but not explicitly.
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 sentence of 9 words, which is concise but misses important details. It is appropriately short but at the cost of completeness.
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 the tool has a single required parameter and an output schema, the description should at least hint at the output structure. It lacks any mention of what 'all methods' returns (names, objects). Overall 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?
The single parameter 'path' has 0% schema description coverage, and the tool description adds no additional meaning. It does not explain what the path should point to (e.g., file path on device, local system) or format.
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 clearly states the action ('list all methods') and the specific resource ('OAT/ART Android runtime file'). It distinguishes from siblings like list_dex_classes and list_dex_methods which operate on DEX files.
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 guidance on when to use this tool vs alternatives, prerequisites, or context. The lack of any usage instructions leaves the agent without decision-support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
normalize_for_diffA
Return a structural snapshot suitable for diffing two binaries.
Strips variable-length fields (hashes, timestamps) and keeps the parts that should match between two builds of the same source.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that it strips variable-length fields like hashes and timestamps, which are key behavioral traits. It does not mention authorization or side effects, but for a snapshot function this is sufficient.
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 concise sentences with no wasted words. The purpose and behavior are front-loaded and clear.
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 one parameter and no output schema, the description covers the core functionality. However, it does not specify the output format or structure of the snapshot, which would help an agent interpret the result. It is adequate but not comprehensive.
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 input schema has one parameter 'path' with 0% description coverage. The description does not explain what 'path' refers to (e.g., file path, binary path) or any constraints. Schema coverage is low, and description should compensate but fails to add meaning.
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 clearly states it returns a structural snapshot for diffing binaries, explaining what it strips (variable-length fields) and what it keeps. This is a specific verb+resource, and it distinguishes from sibling tools like 'get_sections' or 'extract_strings'.
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 usage for diffing two binaries by normalizing them. It does not explicitly state when not to use or point to alternatives, but the context of sibling tools makes its use case clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_binaryA
Auto-detect the format of path and return a normalized header dict.
Returns hashes, format name, architecture, entrypoint, and format-specific fields (imphash for PE, PIE/NX/RELRO for ELF, code signature for MachO, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, required permissions, or potential side effects. It only describes the output.
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 concise sentences that front-load the primary action and list key return values without unnecessary detail.
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 the lack of output schema and annotations, the description covers basic functionality and return fields but omits details about the dict structure or usage context among many 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?
The description explains that 'path' is a file path for auto-detection, adding meaning beyond the schema which only specifies type and requirement. This compensates for the 0% 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 clearly states it auto-detects format and returns a normalized header dict with specific fields listed, distinguishing it from more specialized sibling tools.
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 this is the primary entry point for binary analysis, but does not explicitly state when to use it versus alternatives like get_imphash or get_sections.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_anti_analysis_primitivesA
Scan a binary for anti-analysis primitives (defender side).
Walks the string table + the IAT + (best-effort) the
section table and matches the content against the
vendored data/anti-analysis-catalog.json. Returns
category-only labels (anti_debug, anti_vm,
anti_emulator, anti_sandbox, process_introspection,
memory_integrity, code_integrity). Never names
a specific commercial product.
The byte-sequence evidence (RDTSC = 0F 31, INT 2D = CD 2D,
INT 3 = CC, CPUID = 0F A2) is not checked here — that
requires a disasm pass via re-rizin.search_bytes.
re-anti-analysis is the cross-tool orchestrator that
does both the string-table pass and the disasm pass.
Args: path: file to scan max_per_category: per-category cap (default 100)
Returns::
{
"path": "...",
"matches": [{"primitive": "...", "category": "...",
"evidence_kind": "...", "offset": N,
"section": "..."}, ...],
"by_category": {"anti_debug": 4, "anti_vm": 2, ...},
"truncated": bool
}
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| max_per_category | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It describes walking the string table, IAT, and section table, matching against a catalog, returning category-only labels without naming commercial products, and explicitly states what it does not check (byte-sequence evidence). This exceeds basic behavioral disclosure.
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 moderately concise with a clear structure: purpose, scope, limitations, arguments, and return format. It is front-loaded with the main action. A few extra details (e.g., listing categories) are justified, but it could be slightly more streamlined.
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 output schema, the description provides a detailed return format including fields like primitive, category, evidence_kind, offset, section, and by_category counts. It also mentions truncated. This covers the return value comprehensively for a tool of moderate complexity.
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 0%, so description must compensate. It explains that max_per_category is a per-category cap with default 100, adding meaning beyond the schema. Path is self-explanatory for a file scan tool. While not exhaustive, it adds sufficient context.
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 clearly states it scans a binary for anti-analysis primitives, lists specific categories, and distinguishes from sibling tools like re-rizin.search_bytes and re-anti-analysis. The verb 'scan' and resource 'binary for anti-analysis primitives' are specific and unambiguous.
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 explains when to use this tool by noting that byte-sequence evidence requires a disasm pass via re-rizin.search_bytes, and that re-anti-analysis is the cross-tool orchestrator. It provides context for alternatives, though it does not explicitly list negative conditions for use.
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.
17 tool updates
v0.1.0- First observed
categorize_strings - First observed
check_lief - First observed
classify_native_protection - First observed
disasm_capstone - First observed
extract_strings - First observed
get_authenticode - First observed
get_debug_directory - First observed
get_imphash - First observed
get_imports_exports - First observed
get_overlay - First observed
get_sections - First observed
list_dex_classes - First observed
list_dex_methods - First observed
list_oat_art - First observed
normalize_for_diff - First observed
parse_binary - First observed
scan_anti_analysis_primitives
TDQS
Scored across 17 tools
Most tools have distinct purposes, but there is minor overlap between extract_strings and categorize_strings, as the latter is a superset retained for backward compatibility. Otherwise, each tool targets a specific analysis task.
All tool names follow a consistent snake_case verb_noun pattern (e.g., classify_native_protection, get_sections), making them predictable and easy for an agent to understand.
With 17 tools covering binary analysis across multiple formats (PE, ELF, MachO, DEX, OAT), the count is well-scoped for the domain without being excessive or sparse.
The tool set covers a wide range of binary analysis operations, including headers, sections, imports/exports, disassembly, strings, and protection classification. Minor gaps exist (e.g., no relocation or resource tools), but core workflows are supported.
Maintenance
Related MCP Connectors
Self-hosted MCP server: 26 deterministic dev, security, and EVM tools.
MCP server for static security analysis of Android source code
MCP server for ScanMalware.com URL scanning, malware detection, and analysis.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceA multi-backend MCP server that exposes binary analysis capabilities from IDA Pro and Ghidra, allowing LLMs to directly drive reverse-engineering tools via natural language.152Apache 2.0
- AlicenseNot gradedqualityCmaintenanceMCP server exposing the rizin CLI for static binary analysis of executables.MIT
- AlicenseNot gradedqualityAmaintenanceMCP server for reverse engineering Windows executables and related binary formats, offering static analysis, Ghidra-assisted function recovery, plugin-driven tooling, and optional isolated Windows runtime execution.3241MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for analyzing Android APK, DEX, or JAR files via a headless jadx engine, enabling LLM agents to query decompiled code, symbols, call graphs, and more.2GPL 3.0