Skip to main content
Glama

Open Database

open_database

Open a binary or existing IDA database (.i64/.idb) for reverse-engineering analysis. Returns immediately; call wait_for_analysis before using other tools to ensure loading completes.

Instructions

Open a binary or existing IDA database (.i64/.idb) for analysis.

Returns immediately with "opening": true — call wait_for_analysis before using other tools on this database. Re-opening an already-open database returns the existing worker.

Multiple binaries: use a separate subagent per binary. Each agent calls open_database then wait_for_analysis. Do NOT serialize open+wait calls — that blocks parallel loading.

force_new=True is destructive: deletes existing .i64/.idb and all prior analysis. Use only for stale/incompatible DBs.

Fat Mach-O: requires explicit fat_arch (e.g. arm64). Error lists available slices. Use distinct database_id per slice for concurrent analysis. fat_arch must be omitted for non-fat files and existing databases.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
loaderNoIDA loader (e.g. "ELF", "PE", "Binary file"). Auto-detected when omitted. See list_targets.
optionsNoExtra IDA CLI arguments. Do not duplicate processor/loader/base_address flags here.
fat_archNoMach-O fat slice (``x86_64``, ``arm64``, etc.). Required for fat binaries; must be omitted for thin files and existing databases.
file_pathYesPath to the binary file or IDA database.
force_newNoDelete existing DB files and start fresh.
keep_openNoKeep other open databases (default True).
processorNoIDA processor module (e.g. ``metapc``, ``arm``, ``mips``). Auto-detected when omitted. **ARM:** defaults to AArch64 — use ``arm:ARMv7-M`` for Cortex-M, ``arm:ARMv7-A`` for 32-bit. Use list_targets to see options.
database_idNoCustom ID (must match [a-z][a-z0-9_]{0,31}).
base_addressNoBase address for raw binaries (hex/decimal, 16-byte aligned). Ignored for structured formats.
run_auto_analysisNoRun IDA auto-analysis after opening.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A5/5.0
Behavior5/5

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

Annotations are minimal (title only), so the description carries the full behavioral burden. It discloses the immediate return with opening:true, the need to wait, re-opening returning the existing worker, the destructive effect of force_new, and fat-arch requirements. This is far beyond what the annotations provide.

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?

The description is organized into short, bolded sections that each carry distinct operational guidance. There is no filler; every sentence contributes to correct invocation, including concurrency notes, destructive-force warning, and Mach-O edge cases.

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?

For a complex tool with 10 parameters and an output schema, the description covers the critical behavioral contract: return semantics, sequencing with wait_for_analysis, concurrency model, destructive flag, fat-arch constraints, and re-opening behavior. The presence of an output schema means return-value details do not need to be repeated here.

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

Parameters5/5

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

Schema coverage is 100%, so the baseline is already solid, but the description adds meaningful cross-parameter context: force_new deletes prior analysis, fat_arch must be omitted for thin/existing databases, distinct database_id values are needed for concurrent slices, and re-opening an open DB reuses the worker. These constraints are not fully inferable from the schema alone.

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 opens with a specific verb and resource: 'Open a binary or existing IDA database (.i64/.idb) for analysis.' It also distinguishes itself from the sibling wait_for_analysis by stating it returns immediately with opening:true and instructs the agent to wait before using other tools.

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

Usage Guidelines5/5

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

It gives explicit when-to-use and when-not-to-use guidance: call wait_for_analysis after opening, use a separate subagent per binary, do not serialize open+wait calls, and only use force_new for stale or incompatible databases. It also covers fat Mach-O handling and maps to sibling wait_for_analysis without confusion.

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