Newer
Older
AMI-Aptio-BIOS-Reversed / RegAccessPeim / tools_list.json
@Ajax Dong Ajax Dong 2 days ago 108 KB Init
{"jsonrpc": "2.0", "result": {"tools": [{"name": "server_health", "description": "Health/ready probe for MCP server and current IDB state.", "inputSchema": {"type": "object", "properties": {}, "required": []}, "outputSchema": {"type": "object", "properties": {"status": {"type": "string"}, "uptime_sec": {"type": "number"}, "idb_path": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "module": {"type": "string"}, "input_path": {"type": "string"}, "imagebase": {"type": "string"}, "auto_analysis_ready": {"anyOf": [{"type": "boolean"}, {"type": "null"}]}, "hexrays_ready": {"type": "boolean"}, "strings_cache_ready": {"type": "boolean"}, "strings_cache_size": {"type": "integer"}}, "required": ["status", "uptime_sec", "idb_path", "module", "input_path", "imagebase", "auto_analysis_ready", "hexrays_ready", "strings_cache_ready", "strings_cache_size"], "additionalProperties": false}}, {"name": "server_warmup", "description": "Warm up IDA subsystems to reduce first-call latency and transient failures.", "inputSchema": {"type": "object", "properties": {"wait_auto_analysis": {"type": "boolean", "description": "Wait for auto analysis queue"}, "build_caches": {"type": "boolean", "description": "Build core caches (currently strings)"}, "init_hexrays": {"type": "boolean", "description": "Initialize Hex-Rays decompiler plugin"}}, "required": []}, "outputSchema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "steps": {"type": "array", "items": {"type": "object", "properties": {"step": {"type": "string"}, "ok": {"type": "boolean"}, "ms": {"type": "number"}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}, "health": {"type": "object", "properties": {"status": {"type": "string"}, "uptime_sec": {"type": "number"}, "idb_path": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "module": {"type": "string"}, "input_path": {"type": "string"}, "imagebase": {"type": "string"}, "auto_analysis_ready": {"anyOf": [{"type": "boolean"}, {"type": "null"}]}, "hexrays_ready": {"type": "boolean"}, "strings_cache_ready": {"type": "boolean"}, "strings_cache_size": {"type": "integer"}}, "required": ["status", "uptime_sec", "idb_path", "module", "input_path", "imagebase", "auto_analysis_ready", "hexrays_ready", "strings_cache_ready", "strings_cache_size"], "additionalProperties": false}}, "required": ["ok", "steps", "health"], "additionalProperties": false}}, {"name": "lookup_funcs", "description": "Get functions by address or name (auto-detects)", "inputSchema": {"type": "object", "properties": {"queries": {"anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "string"}], "description": "Address(es) or name(s)"}}, "required": ["queries"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"query": {"type": "string"}, "fn": {"anyOf": [{"type": "object", "properties": {"addr": {"type": "string"}, "name": {"type": "string"}, "size": {"type": "string"}}, "required": ["addr", "name", "size"], "additionalProperties": false}, {"type": "null"}]}, "error": {"anyOf": [{"type": "string"}, {"type": "null"}]}}, "required": ["query", "fn", "error"], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "int_convert", "description": "Convert numbers to different formats", "inputSchema": {"type": "object", "properties": {"inputs": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"text": {"type": "string", "description": "Number string to convert"}, "size": {"type": "integer", "description": "Byte size for conversion (omit for auto)"}}, "required": [], "additionalProperties": false}}, {"type": "object", "properties": {"text": {"type": "string", "description": "Number string to convert"}, "size": {"type": "integer", "description": "Byte size for conversion (omit for auto)"}}, "required": [], "additionalProperties": false}], "description": "Convert numbers to various formats (hex, decimal, binary, ascii)"}}, "required": ["inputs"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"input": {"type": "string"}, "result": {"anyOf": [{"type": "object", "properties": {"decimal": {"type": "string"}, "hexadecimal": {"type": "string"}, "bytes": {"type": "string"}, "ascii": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "binary": {"type": "string"}}, "required": ["decimal", "hexadecimal", "bytes", "ascii", "binary"], "additionalProperties": false}, {"type": "null"}]}, "error": {"anyOf": [{"type": "string"}, {"type": "null"}]}}, "required": ["input", "result", "error"], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "list_funcs", "description": "List functions with optional filtering and offset/count pagination.", "inputSchema": {"type": "object", "properties": {"queries": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"filter": {"type": "string", "description": "Glob filter"}, "offset": {"type": "integer", "description": "Start index"}, "count": {"type": "integer", "description": "Max results (0=all)"}}, "required": [], "additionalProperties": false}}, {"type": "object", "properties": {"filter": {"type": "string", "description": "Glob filter"}, "offset": {"type": "integer", "description": "Start index"}, "count": {"type": "integer", "description": "Max results (0=all)"}}, "required": [], "additionalProperties": false}], "description": "List functions with optional filtering and pagination"}}, "required": ["queries"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object"}}}, "required": ["result"]}}, {"name": "func_query", "description": "Query functions with richer filtering than list_funcs.", "inputSchema": {"type": "object", "properties": {"queries": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"filter": {"type": "string", "description": "Name glob/regex"}, "name_regex": {"type": "string", "description": "Name regex"}, "min_size": {"type": "integer", "description": "Min size in bytes"}, "max_size": {"type": "integer", "description": "Max size in bytes"}, "has_type": {"type": "boolean", "description": "Require type info"}, "offset": {"type": "integer", "description": "Start index"}, "count": {"type": "integer", "description": "Max results (0=all)"}, "sort_by": {"type": "string", "description": "Sort: addr|name|size"}, "descending": {"type": "boolean", "description": "Descending"}}, "required": [], "additionalProperties": false}}, {"type": "object", "properties": {"filter": {"type": "string", "description": "Name glob/regex"}, "name_regex": {"type": "string", "description": "Name regex"}, "min_size": {"type": "integer", "description": "Min size in bytes"}, "max_size": {"type": "integer", "description": "Max size in bytes"}, "has_type": {"type": "boolean", "description": "Require type info"}, "offset": {"type": "integer", "description": "Start index"}, "count": {"type": "integer", "description": "Max results (0=all)"}, "sort_by": {"type": "string", "description": "Sort: addr|name|size"}, "descending": {"type": "boolean", "description": "Descending"}}, "required": [], "additionalProperties": false}], "description": "Richer function query (size/type/name filters + pagination)"}}, "required": ["queries"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"data": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "name": {"type": "string"}, "size": {"type": "string"}, "has_type": {"type": "boolean"}, "size_int": {"type": "integer"}}, "required": ["addr", "name", "size"], "additionalProperties": false}}, "next_offset": {"anyOf": [{"type": "integer"}, {"type": "null"}]}, "error": {"anyOf": [{"type": "string"}, {"type": "null"}]}}, "required": [], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "list_globals", "description": "List globals with optional filtering and offset/count pagination.", "inputSchema": {"type": "object", "properties": {"queries": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"filter": {"type": "string", "description": "Glob filter"}, "offset": {"type": "integer", "description": "Start index"}, "count": {"type": "integer", "description": "Max results (0=all)"}}, "required": [], "additionalProperties": false}}, {"type": "object", "properties": {"filter": {"type": "string", "description": "Glob filter"}, "offset": {"type": "integer", "description": "Start index"}, "count": {"type": "integer", "description": "Max results (0=all)"}}, "required": [], "additionalProperties": false}], "description": "List global variables with optional filtering and pagination"}}, "required": ["queries"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object"}}}, "required": ["result"]}}, {"name": "entity_query", "description": "Query IDB entities with typed filters, projection, and pagination.", "inputSchema": {"type": "object", "properties": {"queries": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"kind": {"type": "string", "description": "functions|globals|imports|strings|names"}, "filter": {"type": "string", "description": "Glob/regex filter"}, "regex": {"type": "string", "description": "Regex on primary text field"}, "min_addr": {"type": "string", "description": "Min address bound"}, "max_addr": {"type": "string", "description": "Max address bound"}, "segment": {"type": "string", "description": "Segment filter"}, "module": {"type": "string", "description": "Import module filter"}, "offset": {"type": "integer", "description": "Start index"}, "count": {"type": "integer", "description": "Max results (0=all)"}, "sort_by": {"type": "string", "description": "Sort: addr|name|size|length"}, "descending": {"type": "boolean", "description": "Descending"}, "fields": {"type": "array", "items": {"type": "string"}, "description": "Projection field list"}}, "required": ["kind"], "additionalProperties": false}}, {"type": "object", "properties": {"kind": {"type": "string", "description": "functions|globals|imports|strings|names"}, "filter": {"type": "string", "description": "Glob/regex filter"}, "regex": {"type": "string", "description": "Regex on primary text field"}, "min_addr": {"type": "string", "description": "Min address bound"}, "max_addr": {"type": "string", "description": "Max address bound"}, "segment": {"type": "string", "description": "Segment filter"}, "module": {"type": "string", "description": "Import module filter"}, "offset": {"type": "integer", "description": "Start index"}, "count": {"type": "integer", "description": "Max results (0=all)"}, "sort_by": {"type": "string", "description": "Sort: addr|name|size|length"}, "descending": {"type": "boolean", "description": "Descending"}, "fields": {"type": "array", "items": {"type": "string"}, "description": "Projection field list"}}, "required": ["kind"], "additionalProperties": false}], "description": "Generic entity query with filtering, projection, and pagination"}}, "required": ["queries"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"kind": {"type": "string"}, "data": {"type": "array", "items": {"type": "object", "additionalProperties": {}}}, "next_offset": {"anyOf": [{"type": "integer"}, {"type": "null"}]}, "total": {"type": "integer"}, "error": {"anyOf": [{"type": "string"}, {"type": "null"}]}}, "required": [], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "imports", "description": "List imports with module names using offset/count pagination.", "inputSchema": {"type": "object", "properties": {"offset": {"type": "integer", "description": "Starting pagination index (default: 0)"}, "count": {"type": "integer", "description": "Maximum rows (0 returns all imports)"}}, "required": ["offset", "count"]}, "outputSchema": {"type": "object"}}, {"name": "imports_query", "description": "Query imports with richer filtering than imports(offset,count).", "inputSchema": {"type": "object", "properties": {"queries": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"filter": {"type": "string", "description": "Name glob/regex"}, "module": {"type": "string", "description": "Module glob/regex"}, "offset": {"type": "integer", "description": "Start index"}, "count": {"type": "integer", "description": "Max results (0=all)"}}, "required": [], "additionalProperties": false}}, {"type": "object", "properties": {"filter": {"type": "string", "description": "Name glob/regex"}, "module": {"type": "string", "description": "Module glob/regex"}, "offset": {"type": "integer", "description": "Start index"}, "count": {"type": "integer", "description": "Max results (0=all)"}}, "required": [], "additionalProperties": false}], "description": "Import query with import/module filters and pagination"}}, "required": ["queries"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"data": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "imported_name": {"type": "string"}, "module": {"type": "string"}}, "required": ["addr", "imported_name", "module"], "additionalProperties": false}}, "next_offset": {"anyOf": [{"type": "integer"}, {"type": "null"}]}}, "required": ["data", "next_offset"], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "idb_save", "description": "Save active IDB to disk, optionally to a provided path.", "inputSchema": {"type": "object", "properties": {"path": {"type": "string", "description": "Optional destination path (default: current IDB path)"}}, "required": []}, "outputSchema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "path": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "error": {"type": "string"}}, "required": ["ok", "path"], "additionalProperties": false}}, {"name": "find_regex", "description": "Search strings by case-insensitive regex with offset/limit pagination.", "inputSchema": {"type": "object", "properties": {"pattern": {"type": "string", "description": "Regex pattern to search for in strings"}, "limit": {"type": "integer", "description": "Max matches (default: 30, max: 500)"}, "offset": {"type": "integer", "description": "Skip first N matches (default: 0)"}}, "required": ["pattern"]}, "outputSchema": {"type": "object", "properties": {"n": {"type": "integer"}, "matches": {"type": "array", "items": {"type": "object", "additionalProperties": {}}}, "cursor": {"type": "object", "additionalProperties": {}}, "error": {"anyOf": [{"type": "string"}, {"type": "null"}]}}, "required": [], "additionalProperties": false}}, {"name": "search_text", "description": "Search the rendered listing using IDA's native text search (fast C++ scan).\n\nDiscovers candidate EAs with `ida_search.find_text()`, then renders each hit\nonce via `ida_lines.generate_disassembly()` to extract matching lines and\nclassify them as disasm or comment. Returns one hit per EA.", "inputSchema": {"type": "object", "properties": {"pattern": {"type": "string", "description": "Text to search for in the rendered listing (literal substring by default)"}, "limit": {"type": "integer", "description": "Max hits per page (default: 30, max: 500)"}, "start": {"type": "string", "description": "Cursor: address to resume from (hex or symbol). Empty = first segment."}, "regex": {"type": "boolean", "description": "Treat pattern as a regex (uses IDA's SEARCH_REGEX)"}, "case_sensitive": {"type": "boolean", "description": "Case-sensitive match (default: false)"}, "include": {"type": "string", "description": "'disasm' | 'comments' | 'all' (default: all)"}, "code_only": {"type": "boolean", "description": "Restrict search to executable segments (default: true)"}}, "required": ["pattern"]}, "outputSchema": {"type": "object", "properties": {"n": {"type": "integer"}, "hits": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "function": {"type": "string"}, "segment": {"type": "string"}, "matches": {"type": "array", "items": {"type": "object", "properties": {"kind": {"type": "string"}, "text": {"type": "string"}}, "required": [], "additionalProperties": false}}}, "required": [], "additionalProperties": false}}, "cursor": {"type": "object", "additionalProperties": {}}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}, {"name": "decompile", "description": "Decompile function(s) at address(es); returns pseudocode and per-item errors.", "inputSchema": {"type": "object", "properties": {"addr": {"type": "string", "description": "Function address or name to decompile"}, "include_addresses": {"type": "boolean", "description": "Append /*0xNNNN*/ markers per line (default: true). Set false to save tokens."}}, "required": ["addr"]}, "outputSchema": {"type": "object", "properties": {"addr": {"type": "string"}, "code": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "refs": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "name": {"type": "string"}, "string": {"type": "string"}}, "required": ["addr", "name"], "additionalProperties": false}}, "error": {"type": "string"}}, "required": ["addr", "code"], "additionalProperties": false}}, {"name": "disasm", "description": "Disassemble function with offset/max_instructions pagination and optional total count.", "inputSchema": {"type": "object", "properties": {"addr": {"type": "string", "description": "Function address or name to disassemble"}, "max_instructions": {"type": "integer", "description": "Max instructions per function (default: 5000, max: 50000)"}, "offset": {"type": "integer", "description": "Skip first N instructions (default: 0)"}, "include_total": {"type": "boolean", "description": "Compute total instruction count (default: false)"}}, "required": ["addr"]}, "outputSchema": {"type": "object", "properties": {"addr": {"type": "string"}, "asm": {"anyOf": [{"type": "object", "properties": {"name": {"type": "string"}, "start_ea": {"type": "string"}, "segment": {"type": "string"}, "return_type": {"type": "string"}, "arguments": {"type": "array", "items": {"type": "object", "properties": {"name": {"type": "string"}, "type": {"type": "string"}}, "required": ["name", "type"], "additionalProperties": false}}, "stack_frame": {"type": "array", "items": {"type": "object", "properties": {"name": {"type": "string"}, "offset": {"type": "string"}, "size": {"type": "string"}, "type": {"type": "string"}}, "required": ["name", "offset", "size", "type"], "additionalProperties": false}}, "lines": {"type": "array", "items": {"type": "object", "properties": {"segment": {"type": "string"}, "addr": {"type": "string"}, "label": {"type": "string"}, "instruction": {"type": "string"}, "comments": {"type": "array", "items": {"type": "string"}}, "refs": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "name": {"type": "string"}, "string": {"type": "string"}}, "required": ["addr", "name"], "additionalProperties": false}}}, "required": ["addr", "instruction"], "additionalProperties": false}}}, "required": ["name", "start_ea", "lines"], "additionalProperties": false}, {"type": "null"}]}, "instruction_count": {"type": "integer"}, "total_instructions": {"anyOf": [{"type": "integer"}, {"type": "null"}]}, "cursor": {"type": "object", "properties": {"next": {"type": "integer"}, "done": {"type": "boolean"}}, "required": [], "additionalProperties": false}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}, {"name": "func_profile", "description": "Profile functions with summary metrics and optional sampled details.", "inputSchema": {"type": "object", "properties": {"queries": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string", "description": "Function address or name (omit or '*' for all)"}, "filter": {"type": "string", "description": "Name glob/regex"}, "offset": {"type": "integer", "description": "Start index"}, "count": {"type": "integer", "description": "Max results (0=all)"}, "sort_by": {"type": "string", "description": "Sort: addr|name|size"}, "descending": {"type": "boolean", "description": "Descending"}, "include_lists": {"type": "boolean", "description": "Include callers/callees/strings/constants"}, "max_items": {"type": "integer", "description": "Max items per list"}, "include_prototype": {"type": "boolean", "description": "Include prototype"}}, "required": [], "additionalProperties": false}}, {"type": "object", "properties": {"addr": {"type": "string", "description": "Function address or name (omit or '*' for all)"}, "filter": {"type": "string", "description": "Name glob/regex"}, "offset": {"type": "integer", "description": "Start index"}, "count": {"type": "integer", "description": "Max results (0=all)"}, "sort_by": {"type": "string", "description": "Sort: addr|name|size"}, "descending": {"type": "boolean", "description": "Descending"}, "include_lists": {"type": "boolean", "description": "Include callers/callees/strings/constants"}, "max_items": {"type": "integer", "description": "Max items per list"}, "include_prototype": {"type": "boolean", "description": "Include prototype"}}, "required": [], "additionalProperties": false}], "description": "Function profiling query (supports name/address filters + pagination)"}}, "required": ["queries"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"target": {"type": "string"}, "data": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "name": {"type": "string"}, "size": {"type": "string"}, "instruction_count": {"type": "integer"}, "basic_block_count": {"type": "integer"}, "caller_count": {"type": "integer"}, "callee_count": {"type": "integer"}, "string_ref_count": {"type": "integer"}, "constant_count": {"type": "integer"}, "has_type": {"type": "boolean"}, "prototype": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "callers": {"type": "array", "items": {"type": "object", "additionalProperties": {}}}, "callers_truncated": {"type": "boolean"}, "callees": {"type": "array", "items": {"type": "object", "additionalProperties": {}}}, "callees_truncated": {"type": "boolean"}, "strings": {"type": "array", "items": {"type": "object", "additionalProperties": {}}}, "strings_truncated": {"type": "boolean"}, "constants": {"type": "array", "items": {"type": "object", "additionalProperties": {}}}, "constants_truncated": {"type": "boolean"}, "error": {"anyOf": [{"type": "string"}, {"type": "null"}]}}, "required": [], "additionalProperties": false}}, "next_offset": {"anyOf": [{"type": "integer"}, {"type": "null"}]}, "error": {"anyOf": [{"type": "string"}, {"type": "null"}]}}, "required": [], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "analyze_batch", "description": "Run comprehensive analysis over one or more target functions.", "inputSchema": {"type": "object", "properties": {"queries": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string", "description": "Function address or name"}, "include_decompile": {"type": "boolean", "description": "Include decompiler output"}, "include_disasm": {"type": "boolean", "description": "Include disassembly"}, "include_xrefs": {"type": "boolean", "description": "Include xrefs-to/from"}, "include_callers": {"type": "boolean", "description": "Include callers"}, "include_callees": {"type": "boolean", "description": "Include callees"}, "include_strings": {"type": "boolean", "description": "Include strings"}, "include_constants": {"type": "boolean", "description": "Include constants"}, "include_basic_blocks": {"type": "boolean", "description": "Include basic blocks"}, "include_proto": {"type": "boolean", "description": "Include prototype"}, "max_disasm_insns": {"type": "integer", "description": "Max disasm instructions"}, "max_callers": {"type": "integer", "description": "Max callers"}, "max_callees": {"type": "integer", "description": "Max callees"}, "max_strings": {"type": "integer", "description": "Max strings"}, "max_constants": {"type": "integer", "description": "Max constants"}, "max_blocks": {"type": "integer", "description": "Max blocks"}}, "required": ["addr"], "additionalProperties": false}}, {"type": "object", "properties": {"addr": {"type": "string", "description": "Function address or name"}, "include_decompile": {"type": "boolean", "description": "Include decompiler output"}, "include_disasm": {"type": "boolean", "description": "Include disassembly"}, "include_xrefs": {"type": "boolean", "description": "Include xrefs-to/from"}, "include_callers": {"type": "boolean", "description": "Include callers"}, "include_callees": {"type": "boolean", "description": "Include callees"}, "include_strings": {"type": "boolean", "description": "Include strings"}, "include_constants": {"type": "boolean", "description": "Include constants"}, "include_basic_blocks": {"type": "boolean", "description": "Include basic blocks"}, "include_proto": {"type": "boolean", "description": "Include prototype"}, "max_disasm_insns": {"type": "integer", "description": "Max disasm instructions"}, "max_callers": {"type": "integer", "description": "Max callers"}, "max_callees": {"type": "integer", "description": "Max callees"}, "max_strings": {"type": "integer", "description": "Max strings"}, "max_constants": {"type": "integer", "description": "Max constants"}, "max_blocks": {"type": "integer", "description": "Max blocks"}}, "required": ["addr"], "additionalProperties": false}], "description": "Comprehensive per-function analysis with selectable sections"}}, "required": ["queries"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"target": {"type": "string"}, "addr": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "analysis": {"anyOf": [{"type": "object", "properties": {"size": {"type": "string"}, "prototype": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "decompile": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "decompile_error": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "disasm": {"anyOf": [{"type": "object", "properties": {"lines": {"type": "array", "items": {"type": "string"}}, "instruction_count": {"type": "integer"}, "truncated": {"type": "boolean"}}, "required": ["lines", "instruction_count", "truncated"], "additionalProperties": false}, {"type": "null"}]}, "xrefs": {"anyOf": [{"type": "object", "properties": {"to": {"type": "array", "items": {"type": "object", "additionalProperties": {"type": "string"}}}, "from": {"type": "array", "items": {"type": "object", "additionalProperties": {"type": "string"}}}, "to_truncated": {"type": "boolean"}, "from_truncated": {"type": "boolean"}, "to_count": {"type": "integer"}, "from_count": {"type": "integer"}}, "required": ["to", "from", "to_truncated", "from_truncated", "to_count", "from_count"], "additionalProperties": false}, {"type": "null"}]}, "callers": {"anyOf": [{"type": "array", "items": {"type": "object", "additionalProperties": {}}}, {"type": "null"}]}, "caller_count": {"type": "integer"}, "callers_truncated": {"type": "boolean"}, "callees": {"anyOf": [{"type": "array", "items": {"type": "object", "additionalProperties": {}}}, {"type": "null"}]}, "callee_count": {"type": "integer"}, "callees_truncated": {"type": "boolean"}, "strings": {"anyOf": [{"type": "array", "items": {"type": "object", "additionalProperties": {}}}, {"type": "null"}]}, "string_ref_count": {"type": "integer"}, "strings_truncated": {"type": "boolean"}, "constants": {"anyOf": [{"type": "array", "items": {"type": "object", "additionalProperties": {}}}, {"type": "null"}]}, "constant_count": {"type": "integer"}, "constants_truncated": {"type": "boolean"}, "basic_blocks": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"start": {"type": "string"}, "end": {"type": "string"}, "size": {"type": "integer"}, "type": {"type": "integer"}, "successors": {"type": "array", "items": {"type": "string"}}, "predecessors": {"type": "array", "items": {"type": "string"}}}, "required": ["start", "end", "size", "type", "successors", "predecessors"], "additionalProperties": false}}, {"type": "null"}]}, "basic_block_count": {"type": "integer"}, "basic_blocks_truncated": {"type": "boolean"}}, "required": [], "additionalProperties": false}, {"type": "null"}]}, "error": {"anyOf": [{"type": "string"}, {"type": "null"}]}}, "required": [], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "xrefs_to", "description": "Return xrefs to address(es) or named symbols, capped per target with truncation flag.", "inputSchema": {"type": "object", "properties": {"addrs": {"anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "string"}], "description": "Addresses or function names to find cross-references to (e.g. '0x11a9', 'check_pw', 'main')"}, "limit": {"type": "integer", "description": "Max xrefs per address (default: 100, max: 1000)"}}, "required": ["addrs"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "xrefs": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "type": {"type": "string"}, "fn": {"anyOf": [{"type": "object", "properties": {"addr": {"type": "string"}, "name": {"type": "string"}, "size": {"type": "string"}}, "required": ["addr", "name", "size"], "additionalProperties": false}, {"type": "null"}]}}, "required": ["addr", "type", "fn"], "additionalProperties": false}}, {"type": "null"}]}, "more": {"type": "boolean"}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "xref_query", "description": "Query xrefs with direction/type filters and pagination.", "inputSchema": {"type": "object", "properties": {"queries": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string", "description": "Address or name"}, "direction": {"type": "string", "description": "to|from|both (default: both)"}, "xref_type": {"type": "string", "description": "any|code|data (default: any)"}, "offset": {"type": "integer", "description": "Start index (default: 0)"}, "count": {"type": "integer", "description": "Max results (default: 200, max: 5000)"}, "include_fn": {"type": "boolean", "description": "Include function metadata"}, "dedup": {"type": "boolean", "description": "Deduplicate by addr/type"}, "sort_by": {"type": "string", "description": "Sort: addr|type"}, "descending": {"type": "boolean", "description": "Descending"}}, "required": ["addr"], "additionalProperties": false}}, {"type": "object", "properties": {"addr": {"type": "string", "description": "Address or name"}, "direction": {"type": "string", "description": "to|from|both (default: both)"}, "xref_type": {"type": "string", "description": "any|code|data (default: any)"}, "offset": {"type": "integer", "description": "Start index (default: 0)"}, "count": {"type": "integer", "description": "Max results (default: 200, max: 5000)"}, "include_fn": {"type": "boolean", "description": "Include function metadata"}, "dedup": {"type": "boolean", "description": "Deduplicate by addr/type"}, "sort_by": {"type": "string", "description": "Sort: addr|type"}, "descending": {"type": "boolean", "description": "Descending"}}, "required": ["addr"], "additionalProperties": false}], "description": "Generic xref query with direction/type filters and pagination"}}, "required": ["queries"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"target": {"type": "string"}, "resolved_addr": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "direction": {"type": "string"}, "xref_type": {"type": "string"}, "data": {"type": "array", "items": {"type": "object", "properties": {"direction": {"type": "string"}, "addr": {"type": "string"}, "from": {"type": "string"}, "to": {"type": "string"}, "type": {"type": "string"}, "fn": {"anyOf": [{"type": "object", "properties": {"addr": {"type": "string"}, "name": {"type": "string"}, "size": {"type": "string"}}, "required": ["addr", "name", "size"], "additionalProperties": false}, {"type": "null"}]}}, "required": [], "additionalProperties": false}}, "next_offset": {"anyOf": [{"type": "integer"}, {"type": "null"}]}, "total": {"type": "integer"}, "error": {"anyOf": [{"type": "string"}, {"type": "null"}]}}, "required": [], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "xrefs_to_field", "description": "Get cross-references to structure fields", "inputSchema": {"type": "object", "properties": {"queries": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"struct": {"type": "string", "description": "Structure name"}, "field": {"type": "string", "description": "Field name"}}, "required": ["struct", "field"], "additionalProperties": false}}, {"type": "object", "properties": {"struct": {"type": "string", "description": "Structure name"}, "field": {"type": "string", "description": "Field name"}}, "required": ["struct", "field"], "additionalProperties": false}]}}, "required": ["queries"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"struct": {"type": "string"}, "field": {"type": "string"}, "xrefs": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "type": {"type": "string"}, "fn": {"anyOf": [{"type": "object", "properties": {"addr": {"type": "string"}, "name": {"type": "string"}, "size": {"type": "string"}}, "required": ["addr", "name", "size"], "additionalProperties": false}, {"type": "null"}]}}, "required": ["addr", "type", "fn"], "additionalProperties": false}}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "callees", "description": "Return unique callees per function, capped by limit.", "inputSchema": {"type": "object", "properties": {"addrs": {"anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "string"}], "description": "Function addresses or names to get callees for (e.g. '0x123e', 'main')"}, "limit": {"type": "integer", "description": "Max callees per function (default: 200, max: 500)"}}, "required": ["addrs"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "callees": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "name": {"type": "string"}, "type": {"type": "string"}}, "required": ["addr", "name", "type"], "additionalProperties": false}}, {"type": "null"}]}, "more": {"type": "boolean"}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "find_bytes", "description": "Search byte patterns (supports ??) with offset/limit pagination.", "inputSchema": {"type": "object", "properties": {"patterns": {"anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "string"}], "description": "Byte patterns to search for (e.g. '48 8B ?? ??')"}, "limit": {"type": "integer", "description": "Max matches per pattern (default: 1000, max: 10000)"}, "offset": {"type": "integer", "description": "Skip first N matches (default: 0)"}}, "required": ["patterns"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"pattern": {"type": "string"}, "matches": {"type": "array", "items": {"type": "string"}}, "n": {"type": "integer"}, "cursor": {"type": "object", "properties": {"next": {"type": "integer"}, "done": {"type": "boolean"}}, "required": [], "additionalProperties": false}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "basic_blocks", "description": "Return function CFG blocks with offset/max_blocks pagination.", "inputSchema": {"type": "object", "properties": {"addrs": {"anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "string"}], "description": "Function addresses or names to get basic blocks for (e.g. '0x123e', 'main')"}, "max_blocks": {"type": "integer", "description": "Max basic blocks per function (default: 1000, max: 10000)"}, "offset": {"type": "integer", "description": "Skip first N blocks (default: 0)"}}, "required": ["addrs"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "error": {"type": "string"}, "blocks": {"type": "array", "items": {"type": "object", "properties": {"start": {"type": "string"}, "end": {"type": "string"}, "size": {"type": "integer"}, "type": {"type": "integer"}, "successors": {"type": "array", "items": {"type": "string"}}, "predecessors": {"type": "array", "items": {"type": "string"}}}, "required": ["start", "end", "size", "type", "successors", "predecessors"], "additionalProperties": false}}, "count": {"type": "integer"}, "total_blocks": {"type": "integer"}, "cursor": {"type": "object", "properties": {"next": {"type": "integer"}, "done": {"type": "boolean"}}, "required": [], "additionalProperties": false}}, "required": [], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "find", "description": "Search strings/immediates/refs for targets with offset/limit pagination.", "inputSchema": {"type": "object", "properties": {"type": {"type": "string", "description": "Search type: 'string', 'immediate', 'data_ref', or 'code_ref'"}, "targets": {"anyOf": [{"type": "array", "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}}, {"type": "string"}, {"type": "integer"}], "description": "Search targets (strings, integers, or addresses)"}, "limit": {"type": "integer", "description": "Max matches per target (default: 1000, max: 10000)"}, "offset": {"type": "integer", "description": "Skip first N matches (default: 0)"}}, "required": ["type", "targets"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"query": {"anyOf": [{"type": "string"}, {"type": "integer"}, {"type": "null"}]}, "matches": {"type": "array", "items": {"type": "string"}}, "count": {"type": "integer"}, "cursor": {"type": "object", "properties": {"next": {"type": "integer"}, "done": {"type": "boolean"}}, "required": [], "additionalProperties": false}, "error": {"anyOf": [{"type": "string"}, {"type": "null"}]}}, "required": [], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "insn_query", "description": "Query instructions with mnemonic/operand filters and scoped scans.", "inputSchema": {"type": "object", "properties": {"queries": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"mnem": {"type": "string", "description": "Mnemonic to match"}, "op0": {"type": "integer", "description": "Match first operand"}, "op1": {"type": "integer", "description": "Match second operand"}, "op2": {"type": "integer", "description": "Match third operand"}, "op_any": {"type": "integer", "description": "Match any operand"}, "func": {"type": "string", "description": "Scope: function address"}, "segment": {"type": "string", "description": "Scope: segment name"}, "start": {"type": "string", "description": "Scope: start address"}, "end": {"type": "string", "description": "Scope: end address (exclusive)"}, "offset": {"type": "integer", "description": "Start index"}, "count": {"type": "integer", "description": "Max matches (max: 5000)"}, "max_scan_insns": {"type": "integer", "description": "Max instructions to scan"}, "include_fn": {"type": "boolean", "description": "Include function metadata"}, "include_disasm": {"type": "boolean", "description": "Include disassembly text"}, "allow_broad": {"type": "boolean", "description": "Allow scopeless scan"}}, "required": [], "additionalProperties": false}}, {"type": "object", "properties": {"mnem": {"type": "string", "description": "Mnemonic to match"}, "op0": {"type": "integer", "description": "Match first operand"}, "op1": {"type": "integer", "description": "Match second operand"}, "op2": {"type": "integer", "description": "Match third operand"}, "op_any": {"type": "integer", "description": "Match any operand"}, "func": {"type": "string", "description": "Scope: function address"}, "segment": {"type": "string", "description": "Scope: segment name"}, "start": {"type": "string", "description": "Scope: start address"}, "end": {"type": "string", "description": "Scope: end address (exclusive)"}, "offset": {"type": "integer", "description": "Start index"}, "count": {"type": "integer", "description": "Max matches (max: 5000)"}, "max_scan_insns": {"type": "integer", "description": "Max instructions to scan"}, "include_fn": {"type": "boolean", "description": "Include function metadata"}, "include_disasm": {"type": "boolean", "description": "Include disassembly text"}, "allow_broad": {"type": "boolean", "description": "Allow scopeless scan"}}, "required": [], "additionalProperties": false}], "description": "Instruction query with mnemonic/operand filters and scoped scan"}}, "required": ["queries"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"query": {"type": "object", "properties": {"mnem": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "op0": {"anyOf": [{"type": "integer"}, {"type": "string"}, {"type": "null"}]}, "op1": {"anyOf": [{"type": "integer"}, {"type": "string"}, {"type": "null"}]}, "op2": {"anyOf": [{"type": "integer"}, {"type": "string"}, {"type": "null"}]}, "op_any": {"anyOf": [{"type": "integer"}, {"type": "string"}, {"type": "null"}]}, "func": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "segment": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "start": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "end": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "offset": {"type": "integer"}, "count": {"type": "integer"}, "max_scan_insns": {"type": "integer"}, "allow_broad": {"type": "boolean"}}, "required": [], "additionalProperties": false}, "ranges": {"type": "array", "items": {"type": "object", "properties": {"start": {"type": "string"}, "end": {"type": "string"}}, "required": ["start", "end"], "additionalProperties": false}}, "matches": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "disasm": {"type": "string"}, "fn": {"anyOf": [{"type": "object", "properties": {"addr": {"type": "string"}, "name": {"type": "string"}, "size": {"type": "string"}}, "required": ["addr", "name", "size"], "additionalProperties": false}, {"type": "null"}]}}, "required": [], "additionalProperties": false}}, "count": {"type": "integer"}, "cursor": {"type": "object", "properties": {"next": {"type": "integer"}, "done": {"type": "boolean"}}, "required": [], "additionalProperties": false}, "scanned": {"type": "integer"}, "truncated": {"type": "boolean"}, "next_start": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "error": {"anyOf": [{"type": "string"}, {"type": "null"}]}}, "required": [], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "export_funcs", "description": "Export function data for addresses in json/c_header/prototypes formats.", "inputSchema": {"type": "object", "properties": {"addrs": {"anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "string"}], "description": "Function addresses or names to export (e.g. '0x123e', 'main')"}, "format": {"type": "string", "description": "Export format: json (default), c_header, or prototypes"}}, "required": ["addrs"]}, "outputSchema": {"type": "object", "anyOf": [{"type": "object", "properties": {"format": {"type": "string"}, "functions": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "prototype": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "size": {"type": "string"}, "comments": {"type": "object", "additionalProperties": {"type": "object", "additionalProperties": {"type": "string"}}}, "asm": {"type": "string"}, "code": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "xrefs": {"type": "object", "additionalProperties": {"type": "array", "items": {"type": "object", "additionalProperties": {"type": "string"}}}}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}}, "required": ["format", "functions"], "additionalProperties": false}, {"type": "object", "properties": {"format": {"type": "string"}, "content": {"type": "string"}}, "required": ["format", "content"], "additionalProperties": false}, {"type": "object", "properties": {"format": {"type": "string"}, "functions": {"type": "array", "items": {"type": "object", "properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "prototype": {"type": "string"}}, "required": [], "additionalProperties": false}}}, "required": ["format", "functions"], "additionalProperties": false}]}}, {"name": "callgraph", "description": "Build bounded callgraph from roots with depth/node/edge limits.", "inputSchema": {"type": "object", "properties": {"roots": {"anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "string"}], "description": "Root function addresses to start call graph traversal from"}, "max_depth": {"type": "integer", "description": "Maximum depth for call graph traversal"}, "max_nodes": {"type": "integer", "description": "Max nodes across the graph (default: 1000, max: 100000)"}, "max_edges": {"type": "integer", "description": "Max edges across the graph (default: 5000, max: 200000)"}, "max_edges_per_func": {"type": "integer", "description": "Max edges per function (default: 200, max: 5000)"}}, "required": ["roots"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"root": {"type": "string"}, "nodes": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "depth": {"type": "integer"}}, "required": ["addr", "name", "depth"], "additionalProperties": false}}, "edges": {"type": "array", "items": {"type": "object", "properties": {"from": {"type": "string"}, "to": {"type": "string"}, "type": {"type": "string"}}, "required": ["from", "to", "type"], "additionalProperties": false}}, "max_depth": {"type": "integer"}, "truncated": {"type": "boolean"}, "limit_reason": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "max_nodes": {"type": "integer"}, "max_edges": {"type": "integer"}, "max_edges_per_func": {"type": "integer"}, "per_func_capped": {"type": "boolean"}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "get_bytes", "description": "Read bytes from memory addresses", "inputSchema": {"type": "object", "properties": {"regions": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string", "description": "Address to read from (hex or decimal)"}, "size": {"type": "integer", "description": "Number of bytes to read"}}, "required": ["addr", "size"], "additionalProperties": false}}, {"type": "object", "properties": {"addr": {"type": "string", "description": "Address to read from (hex or decimal)"}, "size": {"type": "integer", "description": "Number of bytes to read"}}, "required": ["addr", "size"], "additionalProperties": false}]}}, "required": ["regions"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"addr": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "data": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "error": {"type": "string"}}, "required": ["addr", "data"], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "get_int", "description": "Read integer values from memory addresses", "inputSchema": {"type": "object", "properties": {"queries": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string", "description": "Address to read from (hex or decimal)"}, "ty": {"type": "string", "description": "Integer class (i8/u64/i16le/i16be/etc)"}}, "required": ["addr", "ty"], "additionalProperties": false}}, {"type": "object", "properties": {"addr": {"type": "string", "description": "Address to read from (hex or decimal)"}, "ty": {"type": "string", "description": "Integer class (i8/u64/i16le/i16be/etc)"}}, "required": ["addr", "ty"], "additionalProperties": false}], "description": "Integer read requests (ty, addr). ty: i8/u64/i16le/i16be/etc"}}, "required": ["queries"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "ty": {"type": "string"}, "value": {"anyOf": [{"type": "integer"}, {"type": "null"}]}, "error": {"type": "string"}}, "required": ["addr", "ty", "value"], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "get_string", "description": "Read strings from memory addresses", "inputSchema": {"type": "object", "properties": {"addrs": {"anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "string"}], "description": "Addresses to read strings from"}}, "required": ["addrs"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "value": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "error": {"type": "string"}}, "required": ["addr", "value"], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "get_global_value", "description": "Read global variable values by address or symbol name.", "inputSchema": {"type": "object", "properties": {"queries": {"anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "string"}], "description": "Global variable addresses or names to read values from"}}, "required": ["queries"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"query": {"type": "string"}, "value": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "error": {"type": "string"}}, "required": ["query", "value"], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "patch", "description": "Patch bytes at memory addresses with hex data", "inputSchema": {"type": "object", "properties": {"patches": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string", "description": "Address to patch (hex or decimal)"}, "data": {"type": "string", "description": "Hex data to write (space-separated bytes)"}}, "required": ["addr", "data"], "additionalProperties": false}}, {"type": "object", "properties": {"addr": {"type": "string", "description": "Address to patch (hex or decimal)"}, "data": {"type": "string", "description": "Hex data to write (space-separated bytes)"}}, "required": ["addr", "data"], "additionalProperties": false}]}}, "required": ["patches"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"addr": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "size": {"type": "integer"}, "error": {"type": "string"}}, "required": ["addr", "size"], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "put_int", "description": "Write integer values to memory addresses", "inputSchema": {"type": "object", "properties": {"items": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string", "description": "Address to write to (hex or decimal)"}, "ty": {"type": "string", "description": "Integer class (i8/u64/i16le/i16be/etc)"}, "value": {"type": "string", "description": "Integer value as string (decimal or 0x..; negatives allowed for signed)"}}, "required": ["addr", "ty", "value"], "additionalProperties": false}}, {"type": "object", "properties": {"addr": {"type": "string", "description": "Address to write to (hex or decimal)"}, "ty": {"type": "string", "description": "Integer class (i8/u64/i16le/i16be/etc)"}, "value": {"type": "string", "description": "Integer value as string (decimal or 0x..; negatives allowed for signed)"}}, "required": ["addr", "ty", "value"], "additionalProperties": false}], "description": "Integer write requests (ty, addr, value). value is a string; supports 0x.. and negatives"}}, "required": ["items"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "ty": {"type": "string"}, "value": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "error": {"type": "string"}}, "required": ["addr", "ty", "value"], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "declare_type", "description": "Declare C type definitions in local type library.", "inputSchema": {"type": "object", "properties": {"decls": {"anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "string"}], "description": "C type declarations"}}, "required": ["decls"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"decl": {"type": "string"}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "enum_upsert", "description": "Create or extend local enums in an idempotent way.", "inputSchema": {"type": "object", "properties": {"queries": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"name": {"type": "string", "description": "Enum type name"}, "members": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"name": {"type": "string", "description": "Enum member name"}, "value": {"anyOf": [{"type": "integer"}, {"type": "string"}], "description": "Enum member value"}}, "required": [], "additionalProperties": false}}, {"type": "object", "properties": {"name": {"type": "string", "description": "Enum member name"}, "value": {"anyOf": [{"type": "integer"}, {"type": "string"}], "description": "Enum member value"}}, "required": [], "additionalProperties": false}], "description": "Members to upsert"}, "bitfield": {"type": "boolean", "description": "Bitfield enum"}}, "required": [], "additionalProperties": false}}, {"type": "object", "properties": {"name": {"type": "string", "description": "Enum type name"}, "members": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"name": {"type": "string", "description": "Enum member name"}, "value": {"anyOf": [{"type": "integer"}, {"type": "string"}], "description": "Enum member value"}}, "required": [], "additionalProperties": false}}, {"type": "object", "properties": {"name": {"type": "string", "description": "Enum member name"}, "value": {"anyOf": [{"type": "integer"}, {"type": "string"}], "description": "Enum member value"}}, "required": [], "additionalProperties": false}], "description": "Members to upsert"}, "bitfield": {"type": "boolean", "description": "Bitfield enum"}}, "required": [], "additionalProperties": false}], "description": "Create enums if missing and upsert enum members without destructive replacement"}}, "required": ["queries"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"name": {"type": "string"}, "enum_id": {"type": "string"}, "created": {"type": "boolean"}, "bitfield": {"type": "boolean"}, "members": {"type": "array", "items": {"type": "object", "properties": {"name": {"type": "string"}, "value": {"type": "integer"}, "created": {"type": "boolean"}, "skipped": {"type": "boolean"}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}, "summary": {"type": "object", "properties": {"created": {"type": "integer"}, "skipped": {"type": "integer"}, "conflicts": {"type": "integer"}}, "required": ["created", "skipped", "conflicts"], "additionalProperties": false}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "read_struct", "description": "Read struct fields from memory at address; auto-detect type when possible.", "inputSchema": {"type": "object", "properties": {"queries": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string", "description": "Address"}, "struct": {"type": "string", "description": "Struct name (auto-detect if omitted)"}}, "required": [], "additionalProperties": false}}, {"type": "object", "properties": {"addr": {"type": "string", "description": "Address"}, "struct": {"type": "string", "description": "Struct name (auto-detect if omitted)"}}, "required": [], "additionalProperties": false}]}}, "required": ["queries"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"addr": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "struct": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "members": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"offset": {"type": "string"}, "type": {"type": "string"}, "name": {"type": "string"}, "size": {"type": "integer"}, "value": {"type": "string"}}, "required": ["offset", "type", "name", "size", "value"], "additionalProperties": false}}, {"type": "null"}]}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "search_structs", "description": "Search local structs/unions by name pattern.", "inputSchema": {"type": "object", "properties": {"filter": {"type": "string", "description": "Case-insensitive substring to search for in structure names"}}, "required": ["filter"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"name": {"type": "string"}, "size": {"type": "integer"}, "cardinality": {"type": "integer"}, "is_union": {"type": "boolean"}, "ordinal": {"type": "integer"}}, "required": ["name", "size", "cardinality", "is_union", "ordinal"], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "type_query", "description": "Query local types with structured filters/projection-friendly output.", "inputSchema": {"type": "object", "properties": {"queries": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"filter": {"type": "string", "description": "Name glob/regex"}, "kind": {"type": "string", "description": "any|struct|union|enum|typedef|func|ptr|udt"}, "offset": {"type": "integer", "description": "Start index"}, "count": {"type": "integer", "description": "Max results (0=all)"}, "sort_by": {"type": "string", "description": "Sort: name|size|ordinal"}, "descending": {"type": "boolean", "description": "Descending"}, "include_decl": {"type": "boolean", "description": "Include declaration text"}, "include_members": {"type": "boolean", "description": "Include UDT member details"}, "max_members": {"type": "integer", "description": "Max members per UDT"}, "include_relationships": {"type": "boolean", "description": "Include related type names"}}, "required": [], "additionalProperties": false}}, {"type": "object", "properties": {"filter": {"type": "string", "description": "Name glob/regex"}, "kind": {"type": "string", "description": "any|struct|union|enum|typedef|func|ptr|udt"}, "offset": {"type": "integer", "description": "Start index"}, "count": {"type": "integer", "description": "Max results (0=all)"}, "sort_by": {"type": "string", "description": "Sort: name|size|ordinal"}, "descending": {"type": "boolean", "description": "Descending"}, "include_decl": {"type": "boolean", "description": "Include declaration text"}, "include_members": {"type": "boolean", "description": "Include UDT member details"}, "max_members": {"type": "integer", "description": "Max members per UDT"}, "include_relationships": {"type": "boolean", "description": "Include related type names"}}, "required": [], "additionalProperties": false}], "description": "Type catalog query with filtering, pagination, and optional relationships"}}, "required": ["queries"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"kind": {"type": "string"}, "data": {"type": "array", "items": {"type": "object", "properties": {"ordinal": {"type": "integer"}, "name": {"type": "string"}, "size": {"type": "integer"}, "kind": {"type": "string"}, "declaration": {"type": "string"}, "member_count": {"type": "integer"}, "members": {"type": "array", "items": {"type": "object", "properties": {"name": {"type": "string"}, "offset": {"type": "string"}, "size": {"type": "integer"}, "type": {"type": "string"}}, "required": ["name", "offset", "size", "type"], "additionalProperties": false}}, "members_truncated": {"type": "boolean"}, "related_count": {"type": "integer"}, "related_types": {"type": "array", "items": {"type": "string"}}, "related_truncated": {"type": "boolean"}}, "required": [], "additionalProperties": false}}, "next_offset": {"anyOf": [{"type": "integer"}, {"type": "null"}]}, "total": {"type": "integer"}}, "required": ["kind", "data", "next_offset", "total"], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "type_inspect", "description": "Inspect named types (size/kind/declaration/members).", "inputSchema": {"type": "object", "properties": {"queries": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"name": {"type": "string", "description": "Type name"}, "include_members": {"type": "boolean", "description": "Include UDT member details"}, "max_members": {"type": "integer", "description": "Max members"}}, "required": ["name"], "additionalProperties": false}}, {"type": "object", "properties": {"name": {"type": "string", "description": "Type name"}, "include_members": {"type": "boolean", "description": "Include UDT member details"}, "max_members": {"type": "integer", "description": "Max members"}}, "required": ["name"], "additionalProperties": false}], "description": "Inspect named types and optionally include member layout"}}, "required": ["queries"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"name": {"type": "string"}, "exists": {"type": "boolean"}, "declaration": {"type": "string"}, "size": {"type": "integer"}, "is_func": {"type": "boolean"}, "is_ptr": {"type": "boolean"}, "is_enum": {"type": "boolean"}, "is_udt": {"type": "boolean"}, "members": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"name": {"type": "string"}, "offset": {"type": "string"}, "size": {"type": "integer"}, "type": {"type": "string"}}, "required": ["name", "offset", "size", "type"], "additionalProperties": false}}, {"type": "null"}]}, "member_count": {"type": "integer"}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "set_type", "description": "Apply types (function/global/local/stack)", "inputSchema": {"type": "object", "properties": {"edits": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string", "description": "Address (function, global, or stack frame)"}, "ty": {"type": "string", "description": "Type name or declaration"}, "name": {"type": "string", "description": "Variable/function name"}, "kind": {"type": "string", "description": "Entity kind (auto-detected)"}, "signature": {"type": "string", "description": "Function signature"}, "variable": {"type": "string", "description": "Local variable name"}}, "required": ["addr"], "additionalProperties": false}}, {"type": "object", "properties": {"addr": {"type": "string", "description": "Address (function, global, or stack frame)"}, "ty": {"type": "string", "description": "Type name or declaration"}, "name": {"type": "string", "description": "Variable/function name"}, "kind": {"type": "string", "description": "Entity kind (auto-detected)"}, "signature": {"type": "string", "description": "Function signature"}, "variable": {"type": "string", "description": "Local variable name"}}, "required": ["addr"], "additionalProperties": false}]}}, "required": ["edits"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"edit": {"type": "object", "additionalProperties": {}}, "kind": {"type": "string"}, "ok": {"type": "boolean"}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "type_apply_batch", "description": "Apply multiple type edits and return aggregate status.", "inputSchema": {"type": "object", "properties": {"batch": {"type": "object", "properties": {"edits": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string", "description": "Address (function, global, or stack frame)"}, "ty": {"type": "string", "description": "Type name or declaration"}, "name": {"type": "string", "description": "Variable/function name"}, "kind": {"type": "string", "description": "Entity kind (auto-detected)"}, "signature": {"type": "string", "description": "Function signature"}, "variable": {"type": "string", "description": "Local variable name"}}, "required": ["addr"], "additionalProperties": false}}, {"type": "object", "properties": {"addr": {"type": "string", "description": "Address (function, global, or stack frame)"}, "ty": {"type": "string", "description": "Type name or declaration"}, "name": {"type": "string", "description": "Variable/function name"}, "kind": {"type": "string", "description": "Entity kind (auto-detected)"}, "signature": {"type": "string", "description": "Function signature"}, "variable": {"type": "string", "description": "Local variable name"}}, "required": ["addr"], "additionalProperties": false}], "description": "Type edits to apply"}, "stop_on_error": {"type": "boolean", "description": "Stop on first failure"}}, "required": ["edits"], "additionalProperties": false, "description": "Batch type edits with optional stop_on_error behavior"}}, "required": ["batch"]}, "outputSchema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "applied": {"type": "integer"}, "failed": {"type": "integer"}, "stopped": {"type": "boolean"}, "results": {"type": "array", "items": {"type": "object", "properties": {"edit": {"type": "object", "additionalProperties": {}}, "kind": {"type": "string"}, "ok": {"type": "boolean"}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}}, "required": ["ok", "applied", "failed", "stopped", "results"], "additionalProperties": false}}, {"name": "infer_types", "description": "Infer and apply likely types at target addresses.", "inputSchema": {"type": "object", "properties": {"addrs": {"anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "string"}], "description": "Addresses to infer types for"}}, "required": ["addrs"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "inferred_type": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "method": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "confidence": {"type": "string"}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "set_comments", "description": "Set comments at addresses (both disassembly and decompiler views)", "inputSchema": {"type": "object", "properties": {"items": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string", "description": "Address (hex or decimal)"}, "comment": {"type": "string", "description": "Comment text"}}, "required": ["addr", "comment"], "additionalProperties": false}}, {"type": "object", "properties": {"addr": {"type": "string", "description": "Address (hex or decimal)"}, "comment": {"type": "string", "description": "Comment text"}}, "required": ["addr", "comment"], "additionalProperties": false}]}}, "required": ["items"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "error": {"type": "string"}}, "required": ["addr"], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "append_comments", "description": "Append comments at addresses, deduping exact text by default.", "inputSchema": {"type": "object", "properties": {"items": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string", "description": "Address (hex or decimal)"}, "comment": {"type": "string", "description": "Comment text to append"}, "scope": {"type": "string", "description": "auto|func|line (default: auto)"}, "dedupe": {"type": "boolean", "description": "Skip if exact text already exists (default: true)"}}, "required": ["addr", "comment"], "additionalProperties": false}}, {"type": "object", "properties": {"addr": {"type": "string", "description": "Address (hex or decimal)"}, "comment": {"type": "string", "description": "Comment text to append"}, "scope": {"type": "string", "description": "auto|func|line (default: auto)"}, "dedupe": {"type": "boolean", "description": "Skip if exact text already exists (default: true)"}}, "required": ["addr", "comment"], "additionalProperties": false}]}}, "required": ["items"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "scope": {"type": "string"}, "appended": {"type": "boolean"}, "skipped": {"type": "boolean"}, "error": {"type": "string"}}, "required": ["addr"], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "patch_asm", "description": "Patch assembly instructions at addresses", "inputSchema": {"type": "object", "properties": {"items": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string", "description": "Address (hex or decimal)"}, "asm": {"type": "string", "description": "Assembly instruction(s), semicolon-separated"}}, "required": ["addr", "asm"], "additionalProperties": false}}, {"type": "object", "properties": {"addr": {"type": "string", "description": "Address (hex or decimal)"}, "asm": {"type": "string", "description": "Assembly instruction(s), semicolon-separated"}}, "required": ["addr", "asm"], "additionalProperties": false}]}}, "required": ["items"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "error": {"type": "string"}}, "required": ["addr"], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "rename", "description": "Batch-rename funcs/globals/locals/stack vars with dry-run options.", "inputSchema": {"type": "object", "properties": {"batch": {"type": "object", "properties": {"func": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string", "description": "Function address (hex or decimal)"}, "name": {"type": "string", "description": "New function name"}}, "required": ["addr", "name"], "additionalProperties": false}}, {"type": "object", "properties": {"addr": {"type": "string", "description": "Function address (hex or decimal)"}, "name": {"type": "string", "description": "New function name"}}, "required": ["addr", "name"], "additionalProperties": false}], "description": "Function rename operations"}, "data": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"old": {"type": "string", "description": "Current variable name"}, "new": {"type": "string", "description": "New variable name"}}, "required": ["old", "new"], "additionalProperties": false}}, {"type": "object", "properties": {"old": {"type": "string", "description": "Current variable name"}, "new": {"type": "string", "description": "New variable name"}}, "required": ["old", "new"], "additionalProperties": false}], "description": "Global/data variable rename operations"}, "local": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"func_addr": {"type": "string", "description": "Function address"}, "old": {"type": "string", "description": "Current variable name"}, "new": {"type": "string", "description": "New variable name"}}, "required": ["func_addr", "old", "new"], "additionalProperties": false}}, {"type": "object", "properties": {"func_addr": {"type": "string", "description": "Function address"}, "old": {"type": "string", "description": "Current variable name"}, "new": {"type": "string", "description": "New variable name"}}, "required": ["func_addr", "old", "new"], "additionalProperties": false}], "description": "Local variable rename operations"}, "stack": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"func_addr": {"type": "string", "description": "Function address"}, "old": {"type": "string", "description": "Current variable name"}, "new": {"type": "string", "description": "New variable name"}}, "required": ["func_addr", "old", "new"], "additionalProperties": false}}, {"type": "object", "properties": {"func_addr": {"type": "string", "description": "Function address"}, "old": {"type": "string", "description": "Current variable name"}, "new": {"type": "string", "description": "New variable name"}}, "required": ["func_addr", "old", "new"], "additionalProperties": false}], "description": "Stack variable rename operations"}, "stop_on_error": {"type": "boolean", "description": "Stop on first failure"}, "dry_run": {"type": "boolean", "description": "Validate only, no changes"}, "allow_overwrite": {"type": "boolean", "description": "Force overwrite existing names"}}, "required": [], "additionalProperties": false, "description": "Rename batch with func/data/local/stack fields (at least one required)"}}, "required": ["batch"]}, "outputSchema": {"type": "object", "properties": {"func": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "func_addr": {"type": "string"}, "old": {"type": "string"}, "new": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "name": {"type": "string"}, "dir": {"type": "string"}, "dir_error": {"type": "string"}, "dry_run": {"type": "boolean"}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}, "data": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "func_addr": {"type": "string"}, "old": {"type": "string"}, "new": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "name": {"type": "string"}, "dir": {"type": "string"}, "dir_error": {"type": "string"}, "dry_run": {"type": "boolean"}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}, "global_alias": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "func_addr": {"type": "string"}, "old": {"type": "string"}, "new": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "name": {"type": "string"}, "dir": {"type": "string"}, "dir_error": {"type": "string"}, "dry_run": {"type": "boolean"}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}, "local": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "func_addr": {"type": "string"}, "old": {"type": "string"}, "new": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "name": {"type": "string"}, "dir": {"type": "string"}, "dir_error": {"type": "string"}, "dry_run": {"type": "boolean"}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}, "stack": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "func_addr": {"type": "string"}, "old": {"type": "string"}, "new": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "name": {"type": "string"}, "dir": {"type": "string"}, "dir_error": {"type": "string"}, "dry_run": {"type": "boolean"}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}, "summary": {"type": "object", "properties": {"total": {"type": "integer"}, "ok": {"type": "integer"}, "failed": {"type": "integer"}, "stopped": {"type": "boolean"}, "dry_run": {"type": "boolean"}, "allow_overwrite": {"type": "boolean"}, "stop_on_error": {"type": "boolean"}, "stopped_at": {"type": "string"}}, "required": [], "additionalProperties": false}}, "required": [], "additionalProperties": false}}, {"name": "define_func", "description": "Define functions; IDA infers bounds unless end is provided.", "inputSchema": {"type": "object", "properties": {"items": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string", "description": "Address to define (hex or decimal). Use 'start:end' for explicit bounds."}, "end": {"type": "string", "description": "Optional end address for explicit bounds"}}, "required": [], "additionalProperties": false}}, {"type": "object", "properties": {"addr": {"type": "string", "description": "Address to define (hex or decimal). Use 'start:end' for explicit bounds."}, "end": {"type": "string", "description": "Optional end address for explicit bounds"}}, "required": [], "additionalProperties": false}]}}, "required": ["items"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "ea": {"type": "string"}, "start": {"type": "string"}, "end": {"type": "string"}, "size": {"type": "integer"}, "length": {"type": "integer"}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "define_code", "description": "Convert bytes to code instruction(s) at address(es).", "inputSchema": {"type": "object", "properties": {"items": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string", "description": "Address to define (hex or decimal). Use 'start:end' for explicit bounds."}, "end": {"type": "string", "description": "Optional end address for explicit bounds"}}, "required": [], "additionalProperties": false}}, {"type": "object", "properties": {"addr": {"type": "string", "description": "Address to define (hex or decimal). Use 'start:end' for explicit bounds."}, "end": {"type": "string", "description": "Optional end address for explicit bounds"}}, "required": [], "additionalProperties": false}]}}, "required": ["items"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "ea": {"type": "string"}, "start": {"type": "string"}, "end": {"type": "string"}, "size": {"type": "integer"}, "length": {"type": "integer"}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "undefine", "description": "Undefine item(s) at address(es), converting back to raw bytes.", "inputSchema": {"type": "object", "properties": {"items": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string", "description": "Address to undefine (hex or decimal)"}, "end": {"type": "string", "description": "Optional end address"}, "size": {"type": "integer", "description": "Optional size in bytes"}}, "required": [], "additionalProperties": false}}, {"type": "object", "properties": {"addr": {"type": "string", "description": "Address to undefine (hex or decimal)"}, "end": {"type": "string", "description": "Optional end address"}, "size": {"type": "integer", "description": "Optional size in bytes"}}, "required": [], "additionalProperties": false}]}}, "required": ["items"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "ea": {"type": "string"}, "start": {"type": "string"}, "end": {"type": "string"}, "size": {"type": "integer"}, "length": {"type": "integer"}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "stack_frame", "description": "Return stack variables for function address(es).", "inputSchema": {"type": "object", "properties": {"addrs": {"anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "string"}], "description": "Address(es)"}}, "required": ["addrs"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "vars": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"name": {"type": "string"}, "offset": {"type": "string"}, "size": {"type": "string"}, "type": {"type": "string"}}, "required": ["name", "offset", "size", "type"], "additionalProperties": false}}, {"type": "null"}]}, "error": {"type": "string"}}, "required": ["addr", "vars"], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "declare_stack", "description": "Create stack variables from typed stack declarations.", "inputSchema": {"type": "object", "properties": {"items": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string", "description": "Function address"}, "offset": {"type": "string", "description": "Stack offset"}, "name": {"type": "string", "description": "Variable name"}, "ty": {"type": "string", "description": "Type name"}}, "required": ["addr", "offset", "name", "ty"], "additionalProperties": false}}, {"type": "object", "properties": {"addr": {"type": "string", "description": "Function address"}, "offset": {"type": "string", "description": "Stack offset"}, "name": {"type": "string", "description": "Variable name"}, "ty": {"type": "string", "description": "Type name"}}, "required": ["addr", "offset", "name", "ty"], "additionalProperties": false}]}}, "required": ["items"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "name": {"type": "string"}, "error": {"type": "string"}}, "required": ["addr", "name"], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "delete_stack", "description": "Delete stack variables by name or offset.", "inputSchema": {"type": "object", "properties": {"items": {"anyOf": [{"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string", "description": "Function address"}, "name": {"type": "string", "description": "Variable name"}}, "required": ["addr", "name"], "additionalProperties": false}}, {"type": "object", "properties": {"addr": {"type": "string", "description": "Function address"}, "name": {"type": "string", "description": "Variable name"}}, "required": ["addr", "name"], "additionalProperties": false}]}}, "required": ["items"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "name": {"type": "string"}, "error": {"type": "string"}}, "required": ["addr", "name"], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "survey_binary", "description": "Get a compact overview of the binary in one call. Returns file metadata,\nsegment layout, entry points, statistics, top 15 strings and functions ranked\nby xref count (functions include classification: thunk/wrapper/leaf/dispatcher/\ncomplex), imports by category, and call graph summary. Use this as your FIRST\ntool call when starting analysis. Do not call list_funcs, imports, or find_regex\nseparately for triage \u2014 this returns all of that. Use detail_level='minimal'\nfor binaries with >10k functions.", "inputSchema": {"type": "object", "properties": {"detail_level": {"type": "string", "description": "Detail level: 'standard' or 'minimal'"}}, "required": []}, "outputSchema": {"type": "object", "properties": {"metadata": {"type": "object", "properties": {"path": {"type": "string"}, "module": {"type": "string"}, "arch": {"type": "string"}, "base_address": {"type": "string"}, "image_size": {"type": "string"}, "md5": {"type": "string"}, "sha256": {"type": "string"}}, "required": ["path", "module", "arch", "base_address", "image_size", "md5", "sha256"], "additionalProperties": false}, "statistics": {"type": "object", "properties": {"total_functions": {"type": "integer"}, "named_functions": {"type": "integer"}, "library_functions": {"type": "integer"}, "unnamed_functions": {"type": "integer"}, "total_strings": {"type": "integer"}, "total_segments": {"type": "integer"}}, "required": ["total_functions", "named_functions", "library_functions", "unnamed_functions", "total_strings", "total_segments"], "additionalProperties": false}, "segments": {"type": "array", "items": {"type": "object", "properties": {"name": {"type": "string"}, "start": {"type": "string"}, "end": {"type": "string"}, "size": {"type": "string"}, "permissions": {"type": "string"}}, "required": ["name", "start", "end", "size", "permissions"], "additionalProperties": false}}, "entrypoints": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "name": {"type": "string"}, "ordinal": {"type": "integer"}}, "required": ["addr", "name", "ordinal"], "additionalProperties": false}}, "interesting_strings": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "string": {"type": "string"}, "xref_count": {"type": "integer"}}, "required": ["addr", "string", "xref_count"], "additionalProperties": false}}, "interesting_functions": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "name": {"type": "string"}, "size": {"type": "integer"}, "xref_count": {"type": "integer"}, "callee_count": {"type": "integer"}, "type": {"type": "string"}}, "required": ["addr", "name", "size", "xref_count", "callee_count", "type"], "additionalProperties": false}}, "imports_by_category": {"type": "object", "properties": {"crypto": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "name": {"type": "string"}, "module": {"type": "string"}}, "required": ["addr", "name", "module"], "additionalProperties": false}}, "network": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "name": {"type": "string"}, "module": {"type": "string"}}, "required": ["addr", "name", "module"], "additionalProperties": false}}, "file_io": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "name": {"type": "string"}, "module": {"type": "string"}}, "required": ["addr", "name", "module"], "additionalProperties": false}}, "process": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "name": {"type": "string"}, "module": {"type": "string"}}, "required": ["addr", "name", "module"], "additionalProperties": false}}, "registry": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "name": {"type": "string"}, "module": {"type": "string"}}, "required": ["addr", "name", "module"], "additionalProperties": false}}, "other": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "name": {"type": "string"}, "module": {"type": "string"}}, "required": ["addr", "name", "module"], "additionalProperties": false}}}, "required": ["crypto", "network", "file_io", "process", "registry", "other"], "additionalProperties": false}, "call_graph_summary": {"type": "object", "properties": {"total_edges": {"type": "integer"}, "max_depth_estimate": {"type": "null"}, "root_functions": {"type": "array", "items": {"type": "string"}}, "leaf_functions_count": {"type": "integer"}}, "required": ["total_edges", "max_depth_estimate", "root_functions", "leaf_functions_count"], "additionalProperties": false}, "_note": {"type": "string"}}, "required": [], "additionalProperties": false}}, {"name": "analyze_function", "description": "Compact single-function analysis: pseudocode, strings, constants, callers, callees, xrefs, blocks.", "inputSchema": {"type": "object", "properties": {"addr": {"type": "string", "description": "Function address or name"}, "include_asm": {"type": "boolean", "description": "Include full disassembly (default: false, saves tokens)"}}, "required": ["addr"]}, "outputSchema": {"type": "object", "properties": {"addr": {"type": "string"}, "name": {"type": "string"}, "prototype": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "size": {"type": "integer"}, "decompiled": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "decompile_truncated": {"type": "integer"}, "assembly": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "strings": {"type": "array", "items": {"type": "string"}}, "constants": {"type": "array", "items": {"type": "object", "additionalProperties": {}}}, "callees": {"type": "array", "items": {"type": "string"}}, "callers": {"type": "array", "items": {"type": "string"}}, "xrefs": {"type": "object", "additionalProperties": {}}, "comments": {"type": "object", "additionalProperties": {}}, "basic_blocks": {"type": "object", "properties": {"count": {"type": "integer"}, "cyclomatic_complexity": {"type": "integer"}}, "required": ["count", "cyclomatic_complexity"], "additionalProperties": false}, "error": {"anyOf": [{"type": "string"}, {"type": "null"}]}}, "required": [], "additionalProperties": false}}, {"name": "analyze_component", "description": "Analyze related functions as a group: per-function summaries, internal call graph, shared data.", "inputSchema": {"type": "object", "properties": {"addrs": {"anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "string"}], "description": "Function addresses (comma-separated or list)"}}, "required": ["addrs"]}, "outputSchema": {"type": "object", "properties": {"functions": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "name": {"type": "string"}, "prototype": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "size": {"type": "integer"}, "callees": {"type": "array", "items": {"type": "string"}}, "strings": {"type": "array", "items": {"type": "string"}}, "basic_blocks": {"type": "integer"}, "complexity": {"type": "integer"}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}, "internal_call_graph": {"type": "object", "properties": {"nodes": {"type": "array", "items": {"type": "string"}}, "edges": {"type": "array", "items": {"type": "object", "properties": {"from": {"type": "string"}, "to": {"type": "string"}, "name": {"type": "string"}}, "required": ["from", "to", "name"], "additionalProperties": false}}}, "required": ["nodes", "edges"], "additionalProperties": false}, "shared_globals": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "name": {"type": "string"}, "accessed_by": {"type": "array", "items": {"type": "string"}}}, "required": ["addr", "name", "accessed_by"], "additionalProperties": false}}, "interface_functions": {"type": "array", "items": {"type": "string"}}, "internal_only": {"type": "array", "items": {"type": "string"}}, "string_usage": {"type": "object", "additionalProperties": {"type": "array", "items": {"type": "string"}}}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}, {"name": "trace_data_flow", "description": "Follow cross-references from or to an address, automatically traversing\nmultiple hops. Use 'forward' to see where data flows TO (xrefs-from), or\n'backward' to see where data flows FROM (xrefs-to). At each node in the\ntraversal, returns the function name, instruction, and whether it's code or\ndata. Use this when you find an interesting string, constant, or global and\nwant to understand every code path that touches it without manually chaining\nxrefs_to calls. Do not use for call graph traversal \u2014 use callgraph for that.\nmax_depth controls how many hops to follow (default 5, max 20).", "inputSchema": {"type": "object", "properties": {"addr": {"type": "string", "description": "Starting address"}, "direction": {"type": "string", "description": "'forward' (xrefs from) or 'backward' (xrefs to)"}, "max_depth": {"type": "integer", "description": "Maximum traversal depth"}}, "required": ["addr"]}, "outputSchema": {"type": "object", "properties": {"start": {"type": "string"}, "direction": {"type": "string"}, "depth_reached": {"type": "integer"}, "nodes": {"type": "array", "items": {"type": "object", "properties": {"addr": {"type": "string"}, "func": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "instruction": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "type": {"type": "string"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "depth": {"type": "integer"}}, "required": ["addr", "func", "instruction", "type", "name", "depth"], "additionalProperties": false}}, "edges": {"type": "array", "items": {"type": "object", "properties": {"from": {"type": "string"}, "to": {"type": "string"}, "type": {"type": "string"}}, "required": ["from", "to", "type"], "additionalProperties": false}}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}, {"name": "open_file", "description": "Open a file in a new IDA Pro instance.\n\nLaunches a new IDA process for the given binary. If an existing IDB/i64 database\nis found, opens that directly (skips the packed/unpacked dialog). Use new_database=True\nto force a fresh analysis. Use autonomous=True to suppress all IDA dialogs.\n\nIf switch=True (default), automatically routes subsequent tool calls to the new instance.", "inputSchema": {"type": "object", "properties": {"file_path": {"type": "string", "description": "Absolute path to the binary file to open in a new IDA instance"}, "switch": {"type": "boolean", "description": "Automatically switch to the new instance once it starts"}, "autonomous": {"type": "boolean", "description": "Run in autonomous mode (-A flag), suppressing all dialogs"}, "new_database": {"type": "boolean", "description": "Force creating a new database even if one exists"}, "timeout": {"type": "integer", "description": "Seconds to wait for the new instance to register (0 = don't wait)"}}, "required": ["file_path"]}, "outputSchema": {"type": "object", "properties": {"success": {"type": "boolean"}, "host": {"type": "string"}, "port": {"type": "integer"}, "binary": {"type": "string"}, "pid": {"type": "integer"}, "switched": {"type": "boolean"}, "message": {"type": "string"}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}, {"name": "make_signature", "description": "Create unique byte signatures for addresses. Generates the shortest\nunique signature starting at each address by walking instructions and\nwildcarding operands. Useful for finding stable patterns that survive\nrecompilation.", "inputSchema": {"type": "object", "properties": {"addrs": {"anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "string"}], "description": "Address(es) or name(s) to create unique signatures for (e.g. '0x401000', 'main', or ['0x401000', 'sub_402000'])"}, "format": {"type": "string", "description": "Output format: 'ida' (default), 'x64dbg', 'mask', or 'bitmask'"}, "wildcard_operands": {"type": "boolean", "description": "Wildcard instruction operands for relocatable signatures (default: true)"}, "max_length": {"type": "integer", "description": "Maximum signature length in bytes before giving up (default: 1000)"}}, "required": ["addrs"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"query": {"type": "string"}, "addr": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "signature": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "format": {"type": "string"}, "unique": {"type": "boolean"}, "error": {"type": "string"}}, "required": ["query", "addr", "signature", "format"], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "make_signature_for_function", "description": "Create unique byte signatures for function entry points. Resolves each\nname/address to a function, then generates the shortest unique signature\nstarting at the function start.", "inputSchema": {"type": "object", "properties": {"addrs": {"anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "string"}], "description": "Function address(es) or name(s) to create signatures for (e.g. 'main', '0x401000', or ['main', 'sub_402000'])"}, "format": {"type": "string", "description": "Output format: 'ida' (default), 'x64dbg', 'mask', or 'bitmask'"}, "wildcard_operands": {"type": "boolean", "description": "Wildcard instruction operands for relocatable signatures (default: true)"}, "max_length": {"type": "integer", "description": "Maximum signature length in bytes before giving up (default: 1000)"}}, "required": ["addrs"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"query": {"type": "string"}, "addr": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "signature": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "format": {"type": "string"}, "error": {"type": "string"}}, "required": ["query", "addr", "name", "signature", "format"], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "make_signature_for_range", "description": "Create a byte signature for a specific address range (e.g. a selected\nregion). Unlike make_signature, this does NOT guarantee uniqueness \u2014 it\nsimply encodes the bytes in the range with optional operand wildcarding.", "inputSchema": {"type": "object", "properties": {"start": {"type": "string", "description": "Start address or name (e.g. '0x401000')"}, "end": {"type": "string", "description": "End address or name (exclusive, e.g. '0x401020')"}, "format": {"type": "string", "description": "Output format: 'ida' (default), 'x64dbg', 'mask', or 'bitmask'"}, "wildcard_operands": {"type": "boolean", "description": "Wildcard instruction operands for relocatable signatures (default: true)"}}, "required": ["start", "end"]}, "outputSchema": {"type": "object", "properties": {"query": {"type": "string"}, "addr": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "signature": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "format": {"type": "string"}, "unique": {"type": "boolean"}, "error": {"type": "string"}}, "required": ["query", "addr", "signature", "format"], "additionalProperties": false}}, {"name": "find_xref_signatures", "description": "Find signatures for code locations that reference an address. For each\ninput address, finds all code cross-references TO it, generates a unique\nsignature at each xref site, and returns the shortest ones. Ideal for\ncreating signatures for data addresses, vtable entries, or string\nreferences that can't be signatured directly.", "inputSchema": {"type": "object", "properties": {"addrs": {"anyOf": [{"type": "array", "items": {"type": "string"}}, {"type": "string"}], "description": "Address(es) or name(s) to find XREF signatures for (e.g. a data address referenced by code)"}, "format": {"type": "string", "description": "Output format: 'ida' (default), 'x64dbg', 'mask', or 'bitmask'"}, "top": {"type": "integer", "description": "Number of shortest signatures to return per address (default: 5)"}, "max_length": {"type": "integer", "description": "Maximum signature length in bytes (default: 250)"}}, "required": ["addrs"]}, "outputSchema": {"type": "object", "properties": {"result": {"type": "array", "items": {"type": "object", "properties": {"query": {"type": "string"}, "addr": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "signatures": {"anyOf": [{"type": "array", "items": {"type": "object"}}, {"type": "null"}]}, "total_xrefs": {"type": "integer"}, "error": {"type": "string"}}, "required": ["query", "addr", "signatures"], "additionalProperties": false}}}, "required": ["result"]}}, {"name": "idalib_open", "description": "Open a binary and bind it to the active idalib context policy.", "inputSchema": {"type": "object", "properties": {"input_path": {"type": "string", "description": "Path to the binary file to analyze"}, "run_auto_analysis": {"type": "boolean", "description": "Run automatic analysis on the binary"}, "session_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Custom session ID (auto-generated if not provided)"}}, "required": ["input_path"]}, "outputSchema": {"type": "object", "properties": {"context_id": {"type": "string"}, "transport_context_id": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "isolated_contexts": {"type": "boolean"}, "success": {"type": "boolean"}, "session": {"type": "object", "properties": {"session_id": {"type": "string"}, "input_path": {"type": "string"}, "filename": {"type": "string"}, "created_at": {"type": "string"}, "last_accessed": {"type": "string"}, "is_analyzing": {"type": "boolean"}, "metadata": {"type": "object", "additionalProperties": {}}}, "required": ["session_id", "input_path", "filename", "created_at", "last_accessed", "is_analyzing", "metadata"], "additionalProperties": false}, "message": {"type": "string"}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}, {"name": "idalib_close", "description": "Close an IDA session and remove all context bindings targeting it.", "inputSchema": {"type": "object", "properties": {"session_id": {"type": "string", "description": "Session ID to close"}}, "required": ["session_id"]}, "outputSchema": {"type": "object", "properties": {"success": {"type": "boolean"}, "message": {"type": "string"}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}, {"name": "idalib_switch", "description": "Bind the active idalib context to a session and activate it.", "inputSchema": {"type": "object", "properties": {"session_id": {"type": "string", "description": "Session ID to bind to active context"}}, "required": ["session_id"]}, "outputSchema": {"type": "object", "properties": {"context_id": {"type": "string"}, "transport_context_id": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "isolated_contexts": {"type": "boolean"}, "success": {"type": "boolean"}, "session": {"type": "object", "properties": {"session_id": {"type": "string"}, "input_path": {"type": "string"}, "filename": {"type": "string"}, "created_at": {"type": "string"}, "last_accessed": {"type": "string"}, "is_analyzing": {"type": "boolean"}, "metadata": {"type": "object", "additionalProperties": {}}}, "required": ["session_id", "input_path", "filename", "created_at", "last_accessed", "is_analyzing", "metadata"], "additionalProperties": false}, "message": {"type": "string"}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}, {"name": "idalib_unbind", "description": "Unbind the active idalib context from any session.", "inputSchema": {"type": "object", "properties": {}, "required": []}, "outputSchema": {"type": "object", "properties": {"context_id": {"type": "string"}, "transport_context_id": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "isolated_contexts": {"type": "boolean"}, "success": {"type": "boolean"}, "message": {"type": "string"}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}, {"name": "idalib_list", "description": "List sessions with context-binding and active-database metadata.", "inputSchema": {"type": "object", "properties": {}, "required": []}, "outputSchema": {"type": "object", "properties": {"context_id": {"type": "string"}, "transport_context_id": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "isolated_contexts": {"type": "boolean"}, "sessions": {"type": "array", "items": {"type": "object", "properties": {"session_id": {"type": "string"}, "input_path": {"type": "string"}, "filename": {"type": "string"}, "created_at": {"type": "string"}, "last_accessed": {"type": "string"}, "is_analyzing": {"type": "boolean"}, "metadata": {"type": "object", "additionalProperties": {}}, "is_active": {"type": "boolean"}, "is_current_context": {"type": "boolean"}, "bound_contexts": {"type": "integer"}}, "required": ["session_id", "input_path", "filename", "created_at", "last_accessed", "is_analyzing", "metadata"], "additionalProperties": false}}, "count": {"type": "integer"}, "current_context_session_id": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}, {"name": "idalib_current", "description": "Return the session bound to the active idalib context policy.", "inputSchema": {"type": "object", "properties": {}, "required": []}, "outputSchema": {"type": "object", "properties": {"context_id": {"type": "string"}, "transport_context_id": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "isolated_contexts": {"type": "boolean"}, "session_id": {"type": "string"}, "input_path": {"type": "string"}, "filename": {"type": "string"}, "created_at": {"type": "string"}, "last_accessed": {"type": "string"}, "is_analyzing": {"type": "boolean"}, "metadata": {"type": "object", "additionalProperties": {}}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}, {"name": "idalib_save", "description": "Save the active (or requested) IDA session database to disk.", "inputSchema": {"type": "object", "properties": {"path": {"type": "string", "description": "Optional destination path (default: current IDB path)"}, "session_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Optional session to activate before saving"}}, "required": []}, "outputSchema": {"type": "object", "properties": {"context_id": {"type": "string"}, "transport_context_id": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "isolated_contexts": {"type": "boolean"}, "ok": {"type": "boolean"}, "path": {"type": "string"}, "error": {"anyOf": [{"type": "string"}, {"type": "null"}]}}, "required": [], "additionalProperties": false}}, {"name": "idalib_health", "description": "Health/ready probe for idalib context + core server status.", "inputSchema": {"type": "object", "properties": {"session_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Optional session to bind/activate before probing health"}}, "required": []}, "outputSchema": {"type": "object", "properties": {"context_id": {"type": "string"}, "transport_context_id": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "isolated_contexts": {"type": "boolean"}, "ready": {"type": "boolean"}, "session": {"anyOf": [{"type": "object", "properties": {"session_id": {"type": "string"}, "input_path": {"type": "string"}, "filename": {"type": "string"}, "created_at": {"type": "string"}, "last_accessed": {"type": "string"}, "is_analyzing": {"type": "boolean"}, "metadata": {"type": "object", "additionalProperties": {}}}, "required": ["session_id", "input_path", "filename", "created_at", "last_accessed", "is_analyzing", "metadata"], "additionalProperties": false}, {"type": "null"}]}, "health": {"anyOf": [{"type": "object", "properties": {"status": {"type": "string"}, "uptime_sec": {"type": "number"}, "idb_path": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "module": {"type": "string"}, "input_path": {"type": "string"}, "imagebase": {"type": "string"}, "auto_analysis_ready": {"anyOf": [{"type": "boolean"}, {"type": "null"}]}, "hexrays_ready": {"type": "boolean"}, "strings_cache_ready": {"type": "boolean"}, "strings_cache_size": {"type": "integer"}}, "required": ["status", "uptime_sec", "idb_path", "module", "input_path", "imagebase", "auto_analysis_ready", "hexrays_ready", "strings_cache_ready", "strings_cache_size"], "additionalProperties": false}, {"type": "null"}]}, "error": {"anyOf": [{"type": "string"}, {"type": "null"}]}}, "required": [], "additionalProperties": false}}, {"name": "idalib_warmup", "description": "Warm up idalib context and core subsystems.", "inputSchema": {"type": "object", "properties": {"session_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Optional session to bind/activate before warmup"}, "wait_auto_analysis": {"type": "boolean", "description": "Wait for auto analysis queue"}, "build_caches": {"type": "boolean", "description": "Build core caches"}, "init_hexrays": {"type": "boolean", "description": "Initialize Hex-Rays plugin"}}, "required": []}, "outputSchema": {"type": "object", "properties": {"context_id": {"type": "string"}, "transport_context_id": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "isolated_contexts": {"type": "boolean"}, "ready": {"type": "boolean"}, "session": {"anyOf": [{"type": "object", "properties": {"session_id": {"type": "string"}, "input_path": {"type": "string"}, "filename": {"type": "string"}, "created_at": {"type": "string"}, "last_accessed": {"type": "string"}, "is_analyzing": {"type": "boolean"}, "metadata": {"type": "object", "additionalProperties": {}}}, "required": ["session_id", "input_path", "filename", "created_at", "last_accessed", "is_analyzing", "metadata"], "additionalProperties": false}, {"type": "null"}]}, "warmup": {"anyOf": [{"type": "object", "properties": {"ok": {"type": "boolean"}, "steps": {"type": "array", "items": {"type": "object", "properties": {"step": {"type": "string"}, "ok": {"type": "boolean"}, "ms": {"type": "number"}, "error": {"type": "string"}}, "required": [], "additionalProperties": false}}, "health": {"type": "object", "properties": {"status": {"type": "string"}, "uptime_sec": {"type": "number"}, "idb_path": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "module": {"type": "string"}, "input_path": {"type": "string"}, "imagebase": {"type": "string"}, "auto_analysis_ready": {"anyOf": [{"type": "boolean"}, {"type": "null"}]}, "hexrays_ready": {"type": "boolean"}, "strings_cache_ready": {"type": "boolean"}, "strings_cache_size": {"type": "integer"}}, "required": ["status", "uptime_sec", "idb_path", "module", "input_path", "imagebase", "auto_analysis_ready", "hexrays_ready", "strings_cache_ready", "strings_cache_size"], "additionalProperties": false}}, "required": ["ok", "steps", "health"], "additionalProperties": false}, {"type": "null"}]}, "error": {"anyOf": [{"type": "string"}, {"type": "null"}]}}, "required": [], "additionalProperties": false}}]}, "id": 1}