Skip to main content
Glama

Decompile

decompile

Converts function addresses or names to C pseudocode via Hex-Rays for reverse engineering across IDA Pro instances.

Instructions

Decompile function(s) at given address(es). Requires Hex-Rays.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "addr": "<addr>"
    },
    "name": "decompile"
  }
}

Input Schema

NameRequiredDescriptionDefault
addrYesFunction address or name (single or comma-separated)
timeoutNoTimeout in seconds
instance_idNoREQUIRED whenever more than one database is open (from open_database's result or list_databases()); optional only while exactly one instance is live.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.0.1
    • changedInput schema / properties / instance_id / description
      Previous value: -"Instance id override"New value: +"REQUIRED whenever more than one database is open (from open_database's result or list_databases()); optional only while exactly one instance is live."
  2. First observedv0.9.7

TDQS

B3.2/5.0
Behavior2/5

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

No annotations exist, so the description carries the full burden. It usefully discloses the Hex-Rays plugin dependency, but says nothing about the return (pseudocode text), error behavior when Hex-Rays is unavailable, cost/latency, or whether decompilation mutates the database.

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 short sentences, the core action front-loaded and the prerequisite trailing. No filler; every clause carries information.

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

Completeness2/5

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

For a tool with no annotations and no output schema, the description is too thin: it does not explain what comes back (decompiled pseudocode), what happens on bad/ambiguous addresses, or how multi-address requests are handled.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented in the schema. The description's 'function(s) at given address(es)' only echoes the `addr` parameter and adds no semantics for `timeout` or `instance_id`.

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+resource: 'Decompile function(s) at given address(es).' The decompile-vs-disasm distinction from the sibling tool `disasm` is inherently clear from the wording, but the description never names or explicitly contrasts that sibling.

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?

'Requires Hex-Rays' is a genuine usability condition that helps route an agent (no Hex-Rays plugin → fall back to `disasm`), but there is no explicit when-to-use / when-not guidance nor a named alternative.

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