Skip to main content
Glama

Reverence - Reverse-Engineering MCP Server

An MCP server that gives Claude Code, OpenCode, and any other MCP client a toolbox for static reverse engineering of binaries, executables, DLLs, shared objects, and web-app code.

Static analysis only. Every tool reads the target as data. Reverence never executes, loads, or runs the files it inspects. The optional radare2 bridge is locked to static mode (the debug command family is refused), and Ghidra runs headless auto-analysis without running the target.

What it can do

Tool

Purpose

capabilities

Report which engines are installed (run this if a tool says a dependency is missing).

analyze

One-shot triage: identify + format summary + notable strings + entry-point disassembly. Start here.

identify_file

Format (magic bytes), size, MD5/SHA1/SHA256, entropy (packing hint).

extract_strings

ASCII and UTF-16LE strings with offsets; optional highlighting of URLs, paths, registry keys, and suspicious Win32 APIs.

hexdump_file

hexdump -C-style window (supports negative offsets).

pe_info

Windows .exe/.dll/.sys: headers, machine, subsystem, entry point, imphash, ASLR/DEP/CFG/SEH mitigations, Authenticode state, PDB path, TLS callbacks, per-section entropy, imports/exports.

elf_info

Linux/Unix ELF: header, arch, PIE/NX, interpreter, needed libs, sections, imports/exports.

macho_info

macOS/iOS Mach-O (incl. fat binaries): CPU, PIE/NX, code-signature, libs, segments, imports/exports.

disassemble

Capstone disassembly of a byte window; auto arch detection (x86/x64/arm/thumb/arm64).

disassemble_entrypoint

Resolve a PE/ELF entry point and disassemble from it.

radare2

Run static r2 commands via r2pipe (needs the r2 binary).

ghidra_decompile

Decompile to pseudo-C with Ghidra headless (needs GHIDRA_HOME).

deobfuscate_javascript

Beautify/unminify JS and flag eval/Function/base64/anti-debug patterns.

wasm_info

Parse a .wasm module: sections, imports, exports.

fetch_web_asset

Read-only GET of a remote script/wasm bundle for analysis.

yara_scan

Match a file against inline or file-based YARA rules (needs yara-python).

Related MCP server: Kawaiidra MCP

Install

Requires Python 3.10+ and uv.

No clone, no manual venv. Point your MCP client at:

uvx --from git+https://github.com/0x3k3h/Reverence-MCP.git reverence-mcp

uvx fetches, builds, caches, and runs the server on demand - same command on Windows, macOS, and Linux. To include the optional engines:

uvx --from "reverence-mcp[extras] @ git+https://github.com/0x3k3h/Reverence-MCP.git" reverence-mcp

Local checkout (for development)

git clone https://github.com/0x3k3h/Reverence-MCP.git
cd Reverence-MCP
uv sync            # add --extra extras for r2pipe + yara-python

Or with plain pip:

python -m venv .venv
.venv\Scripts\activate      # Windows ( source .venv/bin/activate on Unix )
pip install -e ".[extras]"

Optional external tools

Run capabilities any time to see what's active.

Wiring it into a client

The server speaks MCP over stdio. The zero-clone launch command is:

uvx --from git+https://github.com/0x3k3h/Reverence-MCP.git reverence-mcp

Copy-paste client config:

Quickest path, Claude Code:

claude mcp add reverence -s user -- uvx --from git+https://github.com/0x3k3h/Reverence-MCP.git reverence-mcp

Quick start

analyze  C:\Windows\System32\notepad.exe
pe_info  C:\path\to\sample.dll
extract_strings  C:\path\to\sample.exe  highlight=true  minlen=6
disassemble_entrypoint  C:\path\to\sample.exe
deobfuscate_javascript  path=C:\path\to\bundle.min.js

Responsible use

Reverence is for authorized work: analyzing your own software, malware analysis and defensive research, CTFs, interoperability, and security review of code you have permission to examine. Point it at files you're allowed to analyze, and handle real-world malware samples in an isolated environment - Reverence reads them statically but anything else you do with them is on you.

License

MIT

Available Tools

16 tools
analyzeA

One-shot triage of a binary: identification + format summary + notable strings + entry-point disassembly. Start here when handed an unknown file (.exe/.dll/.so/.dylib/.wasm/etc.); then drill in with the specific tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the burden, and it does disclose the composite work performed, including that it runs disassembly (useful hint that this is heavier than a pure metadata read). It does not state side effects, whether anything is written to disk, or performance/cost expectations for a disassembly-containing one-shot.

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

Conciseness5/5

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

Two tight sentences: the first enumerates what the tool returns/does, the second front-loads the 'start here' guidance before the drill-in step. No filler.

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

Completeness4/5

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

An output schema exists, so return-value explanation is correctly omitted, and the description covers purpose, trigger, supported inputs, and next steps. What is missing is lighter-weight context an agent might want, such as expected cost or behavior on unsupported/corrupt files.

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

Parameters3/5

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

Schema description coverage is 0% for the single 'path' parameter, so the description must compensate. Listing supported formats (.exe/.dll/.so/.dylib/.wasm/etc.) adds real meaning about what path is acceptable, but it leaves open whether relative paths, directories, or raw blobs are valid, so compensation is partial.

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

Purpose5/5

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

States a specific verb ('one-shot triage') plus an enumerated resource scope: identification, format summary, notable strings, and entry-point disassembly. This decomposition lets an agent recognize it as the composite of siblings like identify_file, extract_strings, and disassemble_entrypoint rather than any one of them.

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

Usage Guidelines4/5

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

Gives a clear trigger ('Start here when handed an unknown file') and a follow-up policy ('then drill in with the specific tools'). It stops short of naming a concrete alternative tool or stating exclusions (e.g., when NOT to use it, such as a file type already known), so it is clear context without full routing.

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

capabilitiesA

List which analysis engines are available in this install.

Use this first if a tool reports a missing dependency, to see what is installed (pefile, lief, capstone, jsbeautifier) and which optional external engines are present (radare2/r2pipe, Ghidra, YARA).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral burden. It discloses that this is an environment-inspection listing and enumerates exactly what is reported (pefile, lief, capstone, jsbeautifier; optional radare2/r2pipe, Ghidra, YARA), which tells the agent what to expect. It does not state permissions or caching, but for a read-only introspection tool that is a minor gap.

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

Conciseness5/5

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

Two tight sentences, front-loaded with the purpose and followed by the one actionable condition for calling it. No filler or restatement of the title.

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

Completeness5/5

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

An output schema exists, so return values need not be described. Combined with the explicit engine list and the missing-dependency trigger, an agent has everything needed to decide when to call this and what it will learn.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. There is nothing for the description to disambiguate at the parameter level.

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

Purpose4/5

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

States a specific verb and resource: 'List which analysis engines are available in this install.' The name 'capabilities' is vague on its own, but the description resolves it immediately. It does not explicitly contrast with siblings, though no sibling performs this discovery function.

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

Usage Guidelines4/5

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

Gives a clear triggering condition: 'Use this first if a tool reports a missing dependency.' That is actionable guidance for an agent that just hit a failure. It stops short of naming alternatives or stating when-not-to-use, but the trigger is explicit.

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

deobfuscate_javascriptA

Beautify/unminify JavaScript and flag suspicious patterns (eval, Function(), base64, char-code building, hex/unicode blobs, network calls, anti-debug). Provide either a file path or inline code.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNo
pathNo
indicatorsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it does disclose substantive behavior: it beautifies/unminifies and reports specific suspicious constructs. It does not state the operation is read-only/non-destructive or describe output shape, but the enumerated indicator list is meaningful behavioral context beyond a bare restatement.

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

Conciseness4/5

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

Two sentences, front-loaded with the core action and indicator list, followed by input-selection guidance. No filler, though the parenthetical indicator list is long enough to slightly dilute the front-loading.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and the description covers purpose plus input selection adequately for a 3-parameter tool. The remaining gap is the undocumented `indicators` toggle and the absence of routing guidance versus siblings.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It documents `path` and `code` with backticks and their either/or relationship, covering two of three parameters, but never mentions the `indicators` boolean, which governs whether the flagging behavior it advertises actually runs.

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

Purpose5/5

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

States specific verbs (beautify/unminify, flag) against a specific resource (JavaScript), and enumerates the exact pattern classes it detects (eval, Function(), base64, char-code building, hex/unicode blobs, network calls, anti-debug). This clearly separates it from the binary-focused siblings like radare2, ghidra_decompile, and disassemble.

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

Usage Guidelines3/5

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

"Provide either a file `path` or inline `code`" usefully resolves the mutually exclusive input choice, so invocation context is implied. However, there is no explicit when-to-use guidance relative to siblings (e.g., use this rather than extract_strings for obfuscated JS), and no stated prerequisites.

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

disassembleB

Disassemble a window of machine code from a file offset with Capstone.

arch: auto|x86|x64|arm|thumb|arm64 (auto detects from the file header).
count: number of instructions. base_addr: virtual address to show as the
first instruction's address (defaults to the file offset).
ParametersJSON Schema
NameRequiredDescriptionDefault
archNoauto
pathYes
countNo
offsetNo
base_addrNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses the disassembly engine (Capstone) and the auto-arch-detection behavior, which is real context beyond the structured fields. However, it says nothing about permissions, error handling on malformed binaries, or the read-only safety profile an agent might want confirmed.

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

Conciseness4/5

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

Purpose is front-loaded in the first sentence, followed by compact per-parameter notes with no filler. Structure is efficient; the arch value list is slightly dense but earns its space.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the key input parameters are covered. The remaining gap is routing: nothing explains when to choose this over disassemble_entrypoint, which is the most important missing piece for an agent with this many siblings.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate and largely does: it enumerates the arch values (auto|x86|x64|arm|thumb|arm64) that the schema leaves unconstrained, explains count and base_addr semantics, and implies the file-offset meaning of offset. Only path and the default for offset are left undocumented, which is minor given the schema provides defaults.

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

Purpose4/5

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

States a specific verb (Disassemble) and resource (a window of machine code from a file offset) and even names the engine (Capstone). It does not, however, distinguish itself from the sibling disassemble_entrypoint, so an agent cannot tell the two apart from the description alone.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no mention of alternatives such as disassemble_entrypoint or ghidra_decompile. The reader must infer that this is the arbitrary-offset variant versus the entrypoint variant without any help.

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

disassemble_entrypointA

Resolve a PE or ELF entry point to its file offset and virtual address, then disassemble from there. The fastest way to see where execution begins.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
countNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses the resolution step and default count, but says nothing about error handling on malformed/non-PE-non-ELF files, whether the format is auto-detected, or the kind of disassembly output returned. A read-only, non-destructive operation can be inferred, but it is not stated.

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

Conciseness5/5

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

Two sentences, front-loaded with the verb and resource, zero filler. The one-liner value proposition at the end is a good routing cue.

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

Completeness3/5

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

For a 2-param read tool with no annotations and no output schema explanation, the description covers the core flow (resolve, then disassemble) but omits error behavior, format auto-detection, and output shape. It is adequate but with clear gaps given the absence of structured support.

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

Parameters2/5

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

Schema description coverage is 0% and the description does not define 'path' (file vs directory, binary format detection) or 'count' (default 80 is in the schema but no description of what it counts – lines, instructions, bytes). With zero schema descriptions, more compensation is required.

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

Purpose5/5

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

States a specific verb (disassemble) and resource (entry point) with format specificity (PE or ELF) and explicitly names the outputs (file offset, virtual address). It distinguishes itself from the generic 'disassemble' sibling by scoping to entry-point resolution.

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

Usage Guidelines4/5

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

"The fastest way to see where execution begins" is a strong usage signal that implies this is the preferred first step, but it doesn't name alternatives or state when not to use it (e.g., when you already have a target address – use disassemble instead).

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

elf_infoB

ELF analysis (Linux/Unix): header, arch, PIE/NX, interpreter, needed libraries, sections, imported and exported functions.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden, and it does contribute by listing the concrete analysis outputs the agent will receive. However, it says nothing about side effects, whether the file must exist locally, permission needs, or truncation behavior. Adequate but incomplete for a tool with zero annotation coverage.

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

Conciseness5/5

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

A single dense sentence with the platform scope front-loaded and the payload enumerated compactly. Every token is doing work; there is no filler.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the description covers the scope well. The gap is the undocumented 'limit' parameter, which leaves a real invocation question unanswered for a two-parameter tool.

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

Parameters2/5

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

Schema description coverage is 0% for both parameters, and the description compensates for neither. 'path' is self-evident, but 'limit' (default 300) is completely unaddressed — an agent cannot tell what it bounds (sections, imports, strings) or what happens when truncated.

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

Purpose4/5

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

States a specific resource (ELF) and verb (analysis), then enumerates the concrete artifacts it extracts: header, arch, PIE/NX, interpreter, needed libraries, sections, imports/exports. The '(Linux/Unix)' qualifier implicitly separates it from pe_info and macho_info, though it never names those siblings directly.

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

Usage Guidelines3/5

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

Usage is only implied: an agent must infer from '(Linux/Unix)' that this is the right tool for ELF binaries and that pe_info/macho_info cover other formats. There is no explicit when-to-use, when-not-to-use, or prerequisite statement.

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 strings (ASCII + UTF-16LE) with file offsets.

minlen: minimum run length. limit: max strings returned. offset/length:
restrict to a byte window. include_wide: also pull UTF-16 (important on
Windows). highlight: tag URLs, paths, registry keys, module names, and
suspicious Win32 APIs.
ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
limitNo
lengthNo
minlenNo
offsetNo
highlightNo
include_wideNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses useful behavior: output is annotated with file offsets, both ASCII and UTF-16LE encodings are handled, and highlight tags categorise URLs, paths, registry keys, module names, and suspicious Win32 APIs. However it does not state that this is a non-mutating read operation or note anything about large-file/performance behavior.

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

Conciseness4/5

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

The description is short, front-loaded with the core purpose, then a compact per-parameter block. The telegraphic style for parameters is efficient but slightly clipped; nothing is wasted, though it reads as notes rather than prose.

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

Completeness4/5

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

An output schema exists so return-value shape need not be explained, and the description covers the operational parameters and modes of a 7-param forensic tool. It is nearly complete, with only minor gaps around default behavior and error conditions.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it largely does: it defines minlen (minimum run length), limit (max strings), offset/length (byte window), include_wide (UTF-16), and highlight (tag categories). Only the trivial required 'path' param is left implicit, so the schema gap is well covered.

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

Purpose5/5

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

States a specific verb (extract) plus resource (printable strings) and names the encodings supported (ASCII + UTF-16LE) and the output enrichment (file offsets). This is clearly distinguishable from sibling tools like hexdump_file or disassemble.

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

Usage Guidelines2/5

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

The description never says when to reach for this tool versus hexdump_file or yara_scan, nor any prerequisites. The only contextual hint is 'important on Windows' for include_wide, which is parameter guidance rather than tool-selection guidance.

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

fetch_web_assetA

Read-only GET of a remote text/script/wasm asset so it can be analyzed (e.g. a site's bundle.js). Returns the content and content-type; it is not executed. http(s) only.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
max_bytesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well: it declares the operation is read-only, that the payload is fetched but never executed, that content and content-type come back, and that only http(s) is accepted. It omits operational behavior an agent would want — what happens when max_bytes is exceeded (silent truncation vs error), redirect following, auth for private resources, and timeouts — which keeps it below 5.

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

Conciseness5/5

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

Three short sentences, front-loaded with the operation and its purpose, then the return shape, then the scheme constraint. No filler and no repetition of schema content.

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

Completeness4/5

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

An output schema exists, so return-value detail is unnecessary. For a two-parameter read-only fetch tool the description covers operation, safety, and target restrictions adequately; only the max_bytes/truncation and error-path semantics remain unstated.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It adds real meaning for url (http(s) only, text/script/wasm asset types), but max_bytes is never mentioned at all — an agent cannot tell whether exceeding it truncates silently or errors, despite it having a 4 MiB default. Partial compensation warrants a 3.

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

Purpose5/5

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

The description states a specific verb (read-only GET), a specific resource (remote text/script/wasm asset), and the reason it exists (so it can be analyzed, e.g. bundle.js). That framing cleanly separates it from the sibling analysis tools (radare2, ghidra_decompile, disassemble, etc.), which operate on already-obtained artifacts.

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

Usage Guidelines4/5

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

Usage context is clear: reach for this when you need to pull a remote asset down for subsequent analysis, and it is restricted to http(s) targets. There is no explicit when-not guidance (e.g. do not use for local files, or for binary/opaque content), so it stops short of a full routing rule.

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

ghidra_decompileA

Decompile to pseudo-C with Ghidra's headless analyzer (requires Ghidra; set GHIDRA_HOME). function: a name or address to decompile just one function; omit to decompile all (slower). Large binaries take minutes.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
timeoutNo
functionNo
ghidra_homeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description must carry behavioral context, and it does disclose key traits: an external dependency/environment requirement (Ghidra, GHIDRA_HOME) and performance characteristics ('large binaries take minutes'). It omits return-format detail, but an output schema exists to cover that.

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

Conciseness5/5

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

Tight and front-loaded: purpose first, then the environment prerequisite, then the parameter behavior, then the perf caveat. Every clause earns its place with no filler.

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

Completeness4/5

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

For a 4-parameter tool with an output schema, the description covers purpose, prerequisites, param behavior, and performance. Return values are handled by the output schema, so the only minor gap is not describing path/timeout explicitly.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It explains 'function' well (name or address, omit for all) and implies 'ghidra_home' via the GHIDRA_HOME mention, but says nothing about 'path' or 'timeout' beyond what the schema already names.

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

Purpose5/5

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

States a specific verb (decompile) and target artifact (pseudo-C), plus the mechanism (Ghidra's headless analyzer). This cleanly distinguishes it from sibling tools like disassemble or radare2, which produce assembly rather than pseudo-C.

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

Usage Guidelines4/5

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

Gives prerequisites (requires Ghidra; set GHIDRA_HOME) and guidance on the function parameter (single function vs. all, noting the latter is slower). It does not explicitly name alternative tools or state when not to use it, but the context is clear.

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

hexdump_fileB

Hex + ASCII dump of a byte window (like hexdump -C). offset may be negative to read from the end of the file.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
lengthNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden but adds genuinely useful behavioral detail: it names the output format and the non-obvious negative-offset 'read from end' behavior. It omits what happens at/after EOF, whether huge windows are truncated, and any permission constraints.

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

Conciseness5/5

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

Two tight sentences, front-loaded with the format and then the offset quirk, with zero filler. Every clause earns its place.

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

Completeness3/5

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

An output schema exists, so return values need not be explained. However, given 0% schema coverage and absent annotations, the description is thin on path/length meaning and safety/output-size context for a filesystem-reading tool.

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

Parameters2/5

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

Schema description coverage is 0%, so the description should compensate. It clarifies offset's negative semantics well, but `path` and `length` (with its default of 256) are documented nowhere, leaving two of three parameters without meaning.

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

Purpose4/5

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

The description gives a specific verb and resource ('Hex + ASCII dump of a byte window') and reinforces it with a concrete reference format ('like `hexdump -C`'), so an agent understands exactly what it produces. It separates itself from string/code siblings by emphasizing raw bytes, but does not explicitly name a contrasting sibling.

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

Usage Guidelines2/5

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

No when-to-use framing or alternatives are given; the agent must infer that this is for low-level byte inspection versus extract_strings or disassemble. Usage is only implied by the format analogy, with no exclusions or prerequisites stated.

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

identify_fileA

Identify a file: format (by magic bytes), size, MD5/SHA1/SHA256 hashes, and entropy (flags likely packing/encryption). Cheap first look.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description must carry the full behavioral burden. It discloses what is computed and that the operation is 'cheap,' which is useful, but it does not explicitly state that it is read-only, what permissions are needed, or whether any side effects occur.

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

Conciseness5/5

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

One tightly packed sentence, front-loaded with the tool's action and followed by the exact data it returns. Every phrase earns its place and there is no filler.

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

Completeness4/5

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

For a simple one-parameter inspection tool with an output schema, the description covers the outputs and cost well enough for an agent to call it. It is slightly incomplete because it leaves the 'path' parameter and read-only safety implicit.

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

Parameters2/5

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

Schema description coverage is 0% and the single 'path' parameter is not mentioned in the description at all. While the parameter is obvious from its name, the description does not clarify whether it expects a local filesystem path, a URL, or something else.

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

Purpose4/5

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

States a specific verb and resource ('Identify a file') and enumerates the exact outputs: format by magic bytes, size, MD5/SHA1/SHA256 hashes, and entropy. It is clear but does not explicitly distinguish itself from format-specific siblings like pe_info, elf_info, or macho_info.

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

Usage Guidelines4/5

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

The phrase 'Cheap first look' gives clear context for when to reach for this tool—early, before deeper analysis. It does not name alternatives or state when not to use it, so it falls short of a fully explicit routing instruction.

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

macho_infoA

Mach-O analysis (macOS/iOS), including fat/universal binaries: header, CPU type, PIE/NX, code-signature presence, linked libraries, segments, imports and exports.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. Listing the extracted artifacts conveys useful behavioral context about what the tool reports, and 'analysis' implies a read-only operation. However, it never states that the operation is non-destructive, how large outputs are bounded, or the role of the limit parameter.

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

Conciseness5/5

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

A single dense sentence with no filler; the format scope (fat/universal binaries) and the enumerated outputs are front-loaded. Every clause adds information.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the format coverage is adequate. But with zero annotations the description should at least assert the operation is a safe read and clarify the limit parameter; those omissions leave the definition minimally complete.

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

Parameters3/5

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

Schema description coverage is 0%. The single required 'path' is self-evident from context, but 'limit' (default 300) is undocumented in both the schema and the description, leaving the agent to guess what it truncates. This is a partial gap rather than a total one.

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

Purpose4/5

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

States a specific resource (Mach-O binaries, macOS/iOS) and enumerates the artifacts extracted (header, CPU type, PIE/NX, code signature, linked libraries, segments, imports/exports). This clearly separates it from format peers like pe_info, elf_info, and wasm_info. The verb 'analysis' is somewhat generic, keeping it from a 5.

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

Usage Guidelines3/5

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

The macOS/iOS/Mach-O framing implicitly scopes when this tool applies versus pe_info/elf_info/wasm_info, but there is no explicit when-to-use statement, no mention of prerequisites (e.g. path must be a binary), and no named alternatives. Usage is inferable rather than stated.

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

pe_infoA

Full PE/PE32+ analysis for Windows .exe/.dll/.sys: headers, machine, subsystem, entry point, timestamp, imphash, security mitigations (ASLR/DEP/CFG/SEH), Authenticode signing state, PDB path, TLS callbacks, sections with per-section entropy, imports (by DLL), and exports.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
max_exportsNo
max_importsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does convey that this is a static inspection yielding structured metadata, which implies a non-destructive read, but it never states read-only behavior, whether the sample is executed or sandboxed, or that results are truncated by caps. With no annotation coverage and no safety/limit disclosure, this is only partially adequate.

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

Conciseness4/5

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

One dense sentence, front-loaded with the purpose and format qualifier before the feature list, with no filler. It is compact for the amount of content, though it reads as a return-value dump rather than prose tuned to decision-making.

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

Completeness3/5

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

An output schema exists, so enumerating headers, mitigations, imports, and exports in the description is largely redundant with structured data. What an agent actually needs to call it correctly—parameter semantics and usage/alternative guidance—is absent, leaving it minimally viable for this 3-parameter analysis tool.

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

Parameters2/5

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

Schema coverage is 0%, so the description must explain all three parameters. It only gestures at two of them by listing 'imports (by DLL), and exports', without explaining that max_imports/max_exports are truncation limits or what happens when exceeded, and it says nothing about the required 'path' parameter's expected form.

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

Purpose5/5

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

It names a specific artifact class and verb ('Full PE/PE32+ analysis for Windows .exe/.dll/.sys'), which cleanly separates it from siblings like elf_info, macho_info, and wasm_info without the agent opening any schema. The scope of analysis (headers through exports) is stated concretely.

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

Usage Guidelines3/5

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

The Windows-PE format qualifier implies when the tool applies versus elf_info/macho_info, so usage is inferable. But there is no explicit when-to-use, when-not-to-use, or named alternative, and no guidance on whether it is meant for triage versus deep reverse engineering (vs. ghidra_decompile or radare2).

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

radare2A

Run static radare2 commands via r2pipe (requires the r2 binary).

Opens the target read-only in static mode; the debug command family is
refused. analyze=True runs `aaa` first. Useful commands: iI (info),
ii (imports), iE (exports), afl (functions), 'pdf @ main' (disasm a
function), 'axt @ sym.name' (xrefs), '/ <bytes>' (search).
ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
analyzeNo
commandsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the external dependency (requires the r2 binary), the safety posture (opens read-only, debug family refused), and the analyze=True side effect (runs `aaa` first). It stops short of describing output format, but an output schema exists to cover that.

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

Conciseness5/5

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

Front-loaded with the core action, then requirements, then mode constraints, then worked examples. Every sentence adds actionable information and nothing is redundant.

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

Completeness4/5

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

For a scriptable multi-command runner this is close to complete: dependency, mode, mutation-equivalent flag, and command vocabulary are all covered, and return values are handled by the existing output schema. The only gap is the ambiguity of the required path parameter.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does for two of three params: it explains analyze's behavior ('runs `aaa` first') and clarifies the commands format through concrete syntax examples like 'pdf @ main' and '/ <bytes>'. Only the meaning of path (the target binary vs. an offset) is left implicit.

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

Purpose5/5

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

States a specific verb and resource ('Run static radare2 commands via r2pipe') and immediately scopes it ('static mode, read-only, debug refused'), which cleanly differentiates it from sibling tools like ghidra_decompile, disassemble, and disassemble_entrypoint that expose narrower fixed operations.

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

Usage Guidelines3/5

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

It gives a helpful list of example commands, which implies when the tool is useful, but never states when to prefer it over alternatives such as ghidra_decompile or disassemble, nor any explicit exclusions beyond the debug-refusal note. Usage is implied rather than directed.

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

wasm_infoA

Parse a WebAssembly (.wasm) module: version, section layout, and imported/exported names (functions, memories, globals, tables).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Parse' implies a non-mutating read and the output fields are listed, but it never states that the file is not modified, how errors on malformed modules surface, or how large output is capped. Adequate for a conventional inspector, but not rich.

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

Conciseness5/5

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

A single front-loaded sentence that names the operation, the target format, and the extracted data with zero filler. Every clause earns its place.

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

Completeness3/5

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

An output schema exists, so return-value detail in the description is a bonus rather than a requirement, and the listed fields are a good orientation. The gap is parameter coverage: with 0% schema descriptions, the description should have clarified 'limit', leaving the definition only minimally complete.

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

Parameters2/5

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

Schema description coverage is 0% for two parameters, and the description mentions neither. 'path' is self-evident, but 'limit' (default 200) is entirely unexplained — the agent cannot tell whether it caps sections, imports, exports, or something else, nor what happens when it is exceeded.

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

Purpose5/5

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

States a specific verb (parse) and resource (WebAssembly .wasm module) and enumerates exactly what is extracted: version, section layout, and imported/exported names by kind. The explicit '.wasm' format marker cleanly separates it from the sibling family of format-specific inspectors (pe_info, elf_info, macho_info).

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

Usage Guidelines3/5

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

The format-specific naming implies 'use this when the artifact is a .wasm file', which is workable given the pe_info/elf_info/macho_info sibling set. However it names no alternative and gives no conditions, prerequisites, or exclusions (e.g. what happens on malformed input, or whether it handles WASI components).

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

yara_scanA

Scan a file with YARA (requires yara-python). Provide inline rules_source or a path to a .yar file in rules_file. Returns matched rules with string offsets.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
rules_fileNo
rules_sourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose the runtime dependency (yara-python) and that results are matched rules with string offsets. However, it omits key behavioral detail: what happens when neither rules_source nor rules_file is supplied (both are nullable with null defaults), and it doesn't state that the operation is 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.

Conciseness5/5

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

Two tight sentences, front-loaded with the core action, then parameter guidance, then return-value note. Every clause adds information and nothing is wasted.

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

Completeness4/5

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

A return value note is present even though an output schema exists, and the dependency requirement is called out, which covers most of what an agent needs. The remaining gap is the unstated behavior when both rules parameters are omitted, which matters given they are optional with null defaults.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate, and it partially does by framing rules_source and rules_file as alternative ways to supply rules. It does not state whether they are mutually exclusive or required, does not clarify error behavior if neither is given, and says nothing about path semantics beyond "a file".

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

Purpose4/5

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

States a specific verb and resource ("Scan a file with YARA") and clearly routes the agent to the YARA matching concept, which is distinct from siblings like identify_file, extract_strings, or pe_info. It stops short of explicitly differentiating itself from those siblings, but the purpose is unambiguous.

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

Usage Guidelines3/5

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

The description implies when to use it (YARA pattern scanning) and gives a useful prerequisite, requiring yara-python, plus guidance on supplying rules. It offers no when-not guidance or explicit comparison to alternatives such as extract_strings or identify_file, leaving the agent to infer the choice.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 16 tool updatesv0.1.0
    • First observedanalyze
    • First observedcapabilities
    • First observeddeobfuscate_javascript
    • First observeddisassemble
    • First observeddisassemble_entrypoint
    • First observedelf_info
    • First observedextract_strings
    • First observedfetch_web_asset
    • First observedghidra_decompile
    • First observedhexdump_file
    • First observedidentify_file
    • First observedmacho_info
    • First observedpe_info
    • First observedradare2
    • First observedwasm_info
    • First observedyara_scan

TDQS

A3.6/5.0

Scored across 16 tools

Disambiguation4/5

Most tools target clearly distinct actions (pe_info vs elf_info vs macho_info, disassemble vs disassemble_entrypoint, radare2 vs ghidra_decompile). The one real overlap is `analyze`, which bundles identification, strings, and entry-point disassembly that identify_file, extract_strings, and disassemble_entrypoint also do alone, but the descriptions explicitly frame analyze as a triage entry point, which mitigates confusion.

Naming Consistency4/5

Nearly all tools use snake_case with a predictable verb_noun or noun_info shape (identify_file, extract_strings, pe_info, wasm_info, yara_scan). Minor deviations exist: `radare2` is a bare engine name, and `capabilities`/`analyze` are bare nouns/verbs rather than following the noun_info pattern, but the set remains readable and coherent.

Tool Count4/5

16 tools is reasonable for a multi-engine reverse-engineering toolkit covering several file formats and analysis techniques. Each tool maps to a distinct capability (per-format parsers, decompilers, scanners), though the count sits at the upper edge of the comfortable 3-15 range.

Completeness4/5

Strong lifecycle coverage for static binary analysis: identification, hashing/entropy, strings, hexdump, disassembly, per-format PE/ELF/Mach-O/WASM parsers, JS deobfuscation, YARA, radare2, and Ghidra decompilation. Minor gaps include no section/segment extraction or dumping and no WASM disassembly beyond metadata, but core read-only analysis workflows are well covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Exposes Ghidra reverse engineering capabilities via MCP, enabling LLMs and agents to analyze binaries, decompile, search, and edit programs headlessly or with GUI integration.
    443
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that integrates Ghidra for binary analysis, enabling decompilation, disassembly, and advanced reverse engineering tasks through Claude Code.
    16
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to safely fetch malware samples, run isolated headless Ghidra static analysis, and retrieve decompiled function logic, imports, and strings through callable MCP tools.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables MCP clients to run hardened, read-only radare2-based static binary triage tools, including disassembly, cross-reference following, string decoding, function renaming, and evidence-checked report generation without executing the sample.
    MIT