execute
Run Python code to chain multiple reverse-engineering tool calls. Use await invoke() to combine outputs, filter results, and handle multi-step pipelines or cross-database queries.
Instructions
Run Python code that chains tool calls. Use await invoke(name, params) to call tools; use return to produce output.
database is auto-injected into every invoke — omit it from params. Override per-call with explicit database for cross-database work.
When NOT to use execute
Single tool call → use the call meta-tool (or the direct tool if pinned).
N independent calls → use
batch(lower overhead, per-item errors). → Otherwise, use the batch meta-tool for sequential multi-tool execution with per-item error collection and progress reporting.Check if a tool has a built-in batch parameter first (e.g. get_strings
filters=[...]).
When to use execute
Multi-step pipelines — chaining one tool's output into another:
decomp = await invoke("decompile_function", {"address": "0x1234"})
addrs = re.findall(r'sub_([0-9A-Fa-f]+)', decomp["pseudocode"])
xrefs = [await invoke("get_xrefs_to", {"address": f"0x{a}"}) for a in addrs]
return {"decomp": decomp, "xrefs": xrefs}Cross-database parallel queries — use asyncio.gather with explicit database params. Same-database calls are serialized by the worker.
Reference
Blocked tools: open_database, close_database, wait_for_analysis, list_targets, and meta-tools (search_tools, get_schema, execute, batch, call) must be called directly. save_database and list_databases are allowed.
Addresses are strings: "0x401000", "4010a0", or symbol names.
filter_pattern is Python regex — use
re.escape()for literals.Available imports: asyncio, collections, functools, itertools, json, math, operator, re, struct, typing. No FS/network I/O.
Paginated results have
items,total,offset,limit,has_more— always checkhas_more.Use
get_schema(tools=[...])to look up parameter names and types.Return only what you need — filter before returning to save context.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Python async code to execute tool calls via invoke(name, arguments) | |
| database | Yes | Database to target (stem ID from open_database). Available as `database` variable in code and auto-injected into invoke params. Individual calls can override by passing `database` explicitly. |