r2-copilot
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@r2-copilotAnalyze the binary at /tmp/vuln and show functions"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
English is Same
r2-copilot
r2-copilot は、強力なリバースエンジニアリングフレームワークである radare2 のための Multi-Agent Collaboration Protocol (MCP) サーバーです。
このリポジトリはサードパーティーツールになります。オフィシャルのmcpツールは以下になります。
r2mcp - the official radare2 mcp
r2ai - the official r2ai
インストール
※ r2pmに追加してもらえました!r2pm -Uci r2-copilotでインストール可能です。
Related MCP server: ReVa
セルフビルドする場合
リポジトリのクローン
cd r2-copilot依存関係のインストール プロジェクトでは
uvを使用して依存関係を管理しています。
uv syncradare2のインストール
r2pipe が正しく動作するためには、radare2 がシステムにインストールされている必要があります。
mkdir -p ~/.local/src/
cd ~/.local/src/
git clone https://github.com/radareorg/radare2 --depth 1
radare2/sys/install.shwindowsの場合、ビルド済みバイナリをダウンロードしてきてPATHを通す方が早いです。
see. https://github.com/radareorg/radare2
使用方法
サーバーを起動するには、次のコマンドを実行します。
./start.shこれにより、標準入出力(stdio)を介して通信する MCP サーバーが起動します。 サーバーは、クライアントからのリクエストを待ち受け、radare2 のコマンドを実行し、結果を返します。
gemini-cliで利用するには、 ~/.gemini/settings.json を以下の通りに追記してください。
{
/*
...
*/
"mcpServers": {
/*
...
*/
"r2-copilot": {
"command": "r2pm",
"args": ["-r", "r2mcp"]
/* セルフビルドの場合で、uv使ってない人はこれ
"command": "/path/to/r2-copilot/start.sh"
/*
/* uvを使ってる場合はこっちの方がパフォーマンス出ると思います
"command": "uv",
"args": [
"run",
"--directory",
"/path/to/r2-copilot",
"r2copilot"
]
*/
}
}解析ワークフロー
一般的なバイナリ解析は、以下のステップで進めることが推奨されます。 なお、gemini-cli等を利用する場合は具体的なコマンドを暗記する必要はなく、自然減での入力が推奨されます。
セッションの開始
まず、解析対象のファイルに対してradare2セッションを開始します。これにより、以降の操作で参照するセッションIDが発行されます。
コマンド:
create_session(file_path='<ファイルへの絶対パス>')
例:
/home/kali/ctf/iris/sqlate/vuln を解析する場合
print(default_api.create_session(file_path='/home/kali/ctf/iris/sqlate/vuln'))
Note: このコマンドの応答に含まれる session_id は、後続の全てのコマンドで必要になります。
初期静的解析(情報収集)
セッションが開始されたら、バイナリの基本的な情報を収集します。これらのコマンドは並行して実行可能です。
バイナリの基本情報を取得:
get_binary_info(session_id='<session_id>')(アーキテクチャ、ビット数、ファイル形式などを確認します)セキュリティ機構の確認:
check_security(session_id='<session_id>')(NX, PIE, Canaryなどの緩和機能が有効かを確認します)文字列のリストアップ:
get_strings(session_id='<session_id>')(バイナリに埋め込まれた文字列を抽出し、プログラムの機能や目的を推測する手がかりを探します)インポート関数のリストアップ:
get_imports(session_id='<session_id>')(外部ライブラリからどの関数を呼び出しているかを確認します。systemやstrcpyのような危険な関数の有無は重要な指標です)
詳細解析
次に、radare2の強力な自動解析機能を実行します。これにより、関数、基本ブロック、コードの相互参照などが特定されます。
コマンド:
analyze_all(session_id='<session_id>')
Note: この処理は、バイナリのサイズによっては時間がかかる場合があります。
関数の調査
自動解析が完了したら、特定された関数をリストアップし、プログラムの全体像を把握します。
関数一覧の表示:
list_functions(session_id='<session_id>')特定の関数の逆アセンブル:
disassemble_function(session_id='<session_id>', address='<関数名 or アドレス>')(例えば、プログラムの起点であるmain関数を調べるには address='sym.main' を指定します)
高度な操作(生コマンドの実行)
より複雑な調査や、特定のツールが期待通りに動作しない場合、execute_command を使用してradare2の任意のコマンドを直接実行できます。
コマンド:
execute_command(session_id='<session_id>', command='<radare2コマンド>')
# "login" という文字列を名前に含む関数を検索する
print(default_api.execute_command(command='afl | grep login', session_id='...'))API リファレンス
サーバーは、以下のツールを公開しており、それぞれが特定の radare2 の機能に対応しています。
セッション管理
create_session: 新しい radare2 セッションを開始します。list_sessions: アクティブなセッションを一覧表示します。close_session: セッションを閉じます。switch_session: 現在のセッションを切り替えます。
解析
analyze_all: バイナリ全体を解析します (aa)。analyze_function: 特定のアドレスの関数を解析します (af)。list_functions: 解析された関数を一覧表示します (afl)。get_function_info: 関数の詳細情報を取得します (afi)。get_xrefs_to: 特定のアドレスへのクロスリファレンスを取得します (axt)。get_xrefs_from: 特定のアドレスからのクロスリファレンスを取得します (axf)。
バイナリ情報
get_binary_info: バイナリに関する包括的な情報を取得します (iI)。get_sections: セクションを一覧表示します (iS)。get_symbols: シンボルを一覧表示します (is)。get_strings: 文字列を一覧表示します (iz,izz)。get_imports: インポートされた関数を一覧表示します (ii)。get_entrypoint: エントリポイントを取得します (ie)。check_security: セキュリティ機能(NX, PIE など)を確認します。
ディスアセンブリ
disassemble: 命令をディスアセンブルします (pd)。disassemble_function: 関数全体をディスアセンブルします (pdf)。print_hex: 16進ダンプを表示します (px)。print_string: アドレスにある文字列を表示します (psz)。
ナビゲーション
seek: 特定のアドレスに移動します (s)。seek_relative: 相対的に移動します。get_current_address: 現在のアドレスを取得します。set_block_size: ブロックサイズを設定します (b)。
検索
search_bytes: バイトパターンを検索します (/x)。search_string: 文字列を検索します (/)。search_rop_gadgets: ROP ガジェットを検索します (/R)。
書き込み
write_hex: 16進数値を書き込みます (wx)。write_assembly: アセンブリ命令を書き込みます (wa)。write_nop: NOP 命令を書き込みます。
デバッガ
continue_execution: プログラムの実行を継続します (dc)。step_into: ステップイン実行します (ds)。step_over: ステップオーバー実行します (dso)。set_breakpoint: ブレークポイントを設定します (db)。list_breakpoints: ブレークポイントを一覧表示します。get_registers: レジスタの値を取得します (dr)。set_register: レジスタの値を設定します。
フラグ
list_flags: フラグ(ラベル)を一覧表示します (f)。create_flag: フラグを作成します。
設定
get_config: 設定値を取得します (e)。set_config: 設定値を設定します。execute_command:生の radare2 コマンドを実行します。
Available Tools
43 toolsanalyze_allB
Perform complete analysis of the binary (aa). Analyzes functions, basic blocks, and cross-references.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full behavioral burden. It never states that this is a long-running/mutating operation, that it writes results or symbols into the session, whether it can be safely repeated, how long it takes on large binaries, or whether a specific session must already exist. Only the scope of analysis is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the scope front-loaded and no filler, though the parenthetical '(aa)' is unexplained and adds confusion rather than information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. However, for a heavyweight whole-binary analysis with no annotations and an undocumented session parameter, the description omits runtime, side effects and session prerequisites, leaving meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the sole parameter session_id is undocumented. The description says nothing about the parameter, such as whether it defaults to the current session or which session is analyzed, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: a complete analysis of the binary, covering functions, basic blocks and cross-references. This distinguishes it from the sibling analyze_function, which analyzes a single function, though the broader relationship to analysis siblings is only partially made explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'complete' and the enumeration of analyzed entities imply usage as the comprehensive, up-front pass, and the contrast with analyze_function is inferable. But there is no explicit when-to-use/when-not statement, no note on prerequisites (e.g. requiring an active session via create_session), and no cost or duration guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_functionC
Analyze function at current or specified address (af).
Args: address: Address or symbol (e.g., "0x401000", "sym.main") session_id: Session to use
| Name | Required | Description | Default |
|---|---|---|---|
| address | No | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not disclose what analysis is performed, whether state is modified, what permissions or session state are required, or any rate/side-effect behavior; it only names the target and session parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the purpose and then lists the two arguments tersely. It is appropriately short and has no filler, though the terse Args format is minimal rather than fully structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description covers the two parameters at a basic level. However, for a zero-annotation tool with 40+ siblings, it lacks essential behavioral detail and guidance on how this analysis differs from alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for both parameters. It usefully defines address as an address or symbol with examples ("0x401000", "sym.main") and says session_id selects the session, but it omits default/null behavior and other address formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ("Analyze function") and states the address scope ("current or specified address"), so an agent can identify the operation. It does not differentiate from nearby siblings such as disassemble_function, get_function_info, or analyze_all, leaving the exact kind of analysis vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives no explicit when-to-use guidance, no conditions for choosing this over disassemble_function, get_function_info, or analyze_all, and no prerequisites. The only usage clue is the parenthetical alias "(af)" and the address default.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_securityC
Check binary security features (NX, PIE, Canary, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it says nothing about whether this is read-only, which session/context it operates on, or how the session_id default resolves. For a tool with zero annotation coverage this is a meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. The trailing 'etc.' leaves the enumerated feature set slightly open-ended, but the size is appropriate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and the tool is simple (one optional param). However, the missing note about read-only behavior and session scoping leaves the definition merely adequate for a security-inspection tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single session_id parameter is undocumented in the schema. The description adds nothing about it either, so the agent must infer that it selects a session (a common idiom across siblings). This is only marginally compensated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Check) and resource (binary security features) and even enumerates concrete examples (NX, PIE, Canary). An agent can distinguish it from sibling read tools like get_binary_info, though the description never explicitly contrasts them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites, and no alternatives among siblings such as get_binary_info or get_binary_info. It implies usage by topic only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_sessionC
Close a Radare2 session.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state whether closing a session is destructive or reversible, whether it terminates the Radare2 process, whether unsaved state is lost, or what permissions are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler, so it is structurally efficient. However, its extreme brevity leaves required behavioral and parameter context unstated, keeping it from being fully appropriate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a lifecycle mutation tool with no annotations and a single required parameter, the description omits side effects, reversibility, and session-state impact. An output schema exists so return values need not be explained, but the behavioral gaps remain significant.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the required session_id parameter has no description. The description's only reference is the word 'session', which adds no format, constraints, or selection semantics beyond the parameter name already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Close') and resource ('Radare2 session'), which clearly differentiates it from sibling lifecycle tools like create_session, list_sessions, and switch_session. It provides no additional scope or nuance, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Offers no guidance on when to use this tool versus alternatives such as switch_session or list_sessions, nor any prerequisites or conditions for closing a session. The intended usage is only implicitly inferable from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
continue_executionC
Continue program execution (dc).
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, and it discloses almost nothing: it does not say the program runs until a breakpoint/termination, whether the call blocks, or what state is required. Only the word 'continue' implies resumption.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short, front-loaded sentence with no filler; only the cryptic '(dc)' abbreviation is dead weight for an agent that has no command-line context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists so return values need not be explained, but for a debugger control operation with zero annotations and zero parameter documentation, the description omits required context such as session state, blocking behavior, and stop conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single session_id parameter is undocumented in the schema. The description does not compensate at all, offering no explanation of what session is targeted, though the optional parameter name is largely self-describing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('continue program execution'), which an agent can readily distinguish from step_over/step_into siblings that advance only one instruction. However, it never explicitly states the boundary against those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus step_into/step_over, nor any mention of prerequisites such as being in a stopped session or having breakpoints set. Usage must be inferred entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_flagC
Create a flag/label at address (f name @ addr).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| size | No | ||
| address | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says 'Create' but does not disclose whether this overwrites an existing flag, what happens on duplicate names, whether the operation is session-scoped, or what side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It includes the operation, target, and a compact syntax example, making it appropriately sized for a short tool definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. However, with no annotations and 0% schema parameter coverage, the description should explain the optional size and session_id parameters and any behavioral constraints. It leaves significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, with four parameters. The description names only 'name' and 'addr' through the CLI syntax, and adds no meaning for the optional 'size' or 'session_id' parameters. It does not compensate for the undocumented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: creating a flag/label at an address. This distinguishes it from the sibling list_flags and other tools, though it does not explicitly contrast the two. It is more than adequate but not maximally differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives the CLI shorthand (f name @ addr) but no guidance on when to use this tool versus list_flags or other flag-related operations. It does not mention prerequisites, session requirements, or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_sessionC
Create a new Radare2 session.
Args: file_path: Path to binary file to analyze pid: Process ID to attach to write_mode: Enable write mode debug_mode: Enable debugger mode session_name: Optional session name (auto-generated if not provided)
Returns: Session information
| Name | Required | Description | Default |
|---|---|---|---|
| pid | No | ||
| file_path | No | ||
| debug_mode | No | ||
| write_mode | No | ||
| session_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| pid | No | |
| bits | No | |
| endian | No | |
| file_path | No | |
| session_id | Yes | |
| write_mode | No | |
| is_debugger | No | |
| architecture | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It never says whether file_path or pid must be supplied, whether they are mutually exclusive, what happens on conflict, whether sessions are resource-limited, or that write_mode/debug_mode change the session's safety profile substantially. Only the bare flag names are echoed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence followed by an efficient Args list and a one-line Returns. No padding, though the Returns note is redundant given an output schema exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. But for a session-creation tool with zero annotations, five parameters, and no required fields, the description omits the critical constraint of how file_path and pid relate, leaving an agent to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does list all five parameters. However most entries merely restate the name ('Enable write mode', 'Enable debugger mode'), adding little real semantics; only session_name's auto-generation note adds information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a new Radare2 session') that is immediately distinct from read/list siblings. It does not, however, differentiate itself from close_session or switch_session beyond the verb, and gives no indication of what a session enables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives. The file_path vs pid pair is clearly an either/or choice that determines what the session attaches to, yet the description never states this or says whether one is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disassembleB
Disassemble N instructions (pd).
Args: count: Number of instructions to disassemble address: Starting address or symbol session_id: Session to use
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| address | No | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not state that this is a non-destructive read operation, whether it requires an active/selected session, or any constraints on address/count. 'session_id: Session to use' implies session dependence but does not explain it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and a compact arg list; no wasted sentences. The formatting is slightly mechanical but efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. But for a disassembler with no annotations, the description omits behavioral context (read-only nature, session requirements, error conditions), leaving meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it lists all three parameters. 'address: Starting address or symbol' adds real meaning beyond the anyOf string schema, and count/session_id are explained, though tersely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Disassemble') and resource ('N instructions') with a command alias '(pd)'. However, it does not distinguish itself from the sibling 'disassemble_function', leaving ambiguity about when to use one over the other.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. With a sibling named 'disassemble_function' that presumably disassembles a whole function, the agent gets no help choosing between them or understanding prerequisites (e.g., whether an active session is required).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disassemble_functionC
Disassemble entire function (pdf).
| Name | Required | Description | Default |
|---|---|---|---|
| address | No | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It conveys only that the entire function is disassembled, but says nothing about output format, required session state, effects, or rate limits. The '(pdf)' token is undefined and adds no reliable behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, short, front-loaded phrase. It is economical, though the cryptic '(pdf)' suffix wastes a few words that could have been used for a clarifying clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, an output schema present (so return format is covered), but 0% parameter documentation and no usage context, the description is incomplete for an agent to call this correctly. It does not explain the required session context or address semantics, nor when to prefer it over 'disassemble' or 'analyze_function'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two parameters ('address', 'session_id'), both with null defaults and no descriptions. The tool description offers no explanation of what 'address' should be (entry address? any address inside the function?) or how 'session_id' is used, so it fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource: 'Disassemble' + 'function'. The parenthetical '(pdf)' is cryptic and unexplained, likely a typo or plugin-specific term, which slightly muddies an otherwise clear purpose. It is distinguishable from siblings like 'disassemble' (possibly raw address disassembly) and 'analyze_function' (higher-level analysis).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus sibling tools such as 'disassemble' or 'analyze_function'. The agent is left to infer the distinction from names alone, which is risky given the overlapping address-based disassembly tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_commandB
Execute raw Radare2 command. Use this for commands not yet wrapped by specific tools.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | ||
| session_id | No | ||
| json_output | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it says nothing about the safety profile of executing arbitrary commands, whether it mutates the binary/state, session handling, error behavior, or return format. For a raw-command escape hatch this is a substantial gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and then the use case. Efficient, though the brevity reflects under-specification rather than tight editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and 0% parameter coverage, the description should do much more for a tool that executes arbitrary commands. It omits session semantics, safety/impact warnings, and output behavior, leaving significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters (command, session_id, json_output) have 0% schema description coverage, and the description only implicitly covers 'command' while saying nothing about session_id or json_output. It does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (execute) and resource (raw Radare2 command), and clearly signals it is the escape hatch for 'commands not yet wrapped by specific tools.' This distinguishes it from the long list of purpose-built siblings, though it doesn't name any specific alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this for commands not yet wrapped by specific tools' gives clear when-to-use context, implying the wrapped tools should be preferred. It lacks explicit when-not guidance or named alternatives, but the fallback framing is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_binary_infoC
Get comprehensive binary information (iI).
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing about scope, cost, or what 'comprehensive' entails. An output schema exists, which softens the need to describe return values, but the absence of any read-only/safety context or breadth hints leaves a gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no waste, which is good structural hygiene. However, brevity here reflects under-specification rather than effective conciseness, and the parenthetical '(iI)' is opaque filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values are partially covered, but the definition still lacks usage context, sibling differentiation, and behavioral hints. For an inspection tool sitting among dozens of overlapping metadata tools, this is inadequate to route an agent confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single session_id parameter, and the description adds no clarification of its meaning or default behavior. The name is somewhat self-explanatory, but the description does nothing to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource ('Get comprehensive binary information'), so the general intent is understandable. However, 'comprehensive' is vague and it does not distinguish this overview tool from siblings like get_sections, get_imports, get_entrypoint, or get_symbols, which also return binary metadata. The '(iI)' token is a CLI alias that adds no meaning for an agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to use this tool versus the many granular siblings, nor any prerequisites or exclusions. An agent must guess whether to call this overview or fetch specific sections/imports individually.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_configD
Get configuration value(s) (e).
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | ||
| session_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, yet it discloses almost nothing: not whether key=null returns all values, not the behavior when session_id is omitted, not whether this is read-only or what the return shape is. "Get" weakly implies a read, which is the only behavioral signal present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short, but shortness here reflects under-specification rather than conciseness. The cryptic "(e)" token wastes one of the few words available and should have been replaced with substantive guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, no annotations, and zero schema description coverage means the description is the only information channel, and it supplies essentially none. For a config-access tool with two optional parameters, an agent cannot determine semantics such as null-key behavior or session scoping.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both key and session_id, and the description adds nothing about either — no format, no default behavior, no key naming conventions. With zero compensation for an undocumented parameter set, this is a clear gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Get configuration value(s) (e)" largely restates the tool name get_config and offers no scope, resource context, or distinguishing detail. The trailing "(e)" is unexplained noise. An agent cannot tell from this text what configuration domain it reads (session config? binary config?) or how it differs from siblings like get_binary_info or list_functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool, no preconditions (e.g. a session must exist), and no reference to the obvious counterpart set_config or to session-scoped alternatives. The agent is left to infer everything from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_current_addressD
Get current address.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and discloses nothing: not what 'current' means (current instruction pointer? current session's address?), not whether session_id defaults to the active session, and not whether the result is state-dependent on a paused debugger. This is a bare label, not a behavioral description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short, front-loaded sentence with no padding, which is structurally fine. However, the brevity here reflects under-specification rather than efficiency, so it cannot score higher.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-format explanation is not required, but the description still leaves the core ambiguity unresolved: what entity 'current address' refers to and how session scoping works. For a state-query tool with no annotations and an undocumented parameter, this is not complete enough for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single session_id parameter has 0% schema description coverage, and the description says nothing about it — not that it is optional, not that omitting it targets the active session, not its type or format. The description fails to compensate for the schema gap entirely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is a near-verbatim restatement of the tool name ('get_current_address' → 'Get current address'), adding no scope, verb nuance, or resource detail. It does not distinguish this tool from the many other getters in the sibling list (get_registers, get_binary_info, get_entrypoint).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites, and no alternative named. An agent has no way to know whether this is a debugger-state query (program counter) or something else, nor when to prefer it over reading registers or disassembly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_entrypointC
Get binary entrypoint (ie).
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing beyond the bare operation. It does not state that a session must be loaded, whether the value is cached, or how it behaves when no session exists. An output schema exists, so return formatting is partially excused.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence is appropriately front-loaded, but it is under-specified rather than truly concise: '(ie)' adds no information and the sentence omits essentials for a 1-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only getter with a defined output schema, the description borders on sufficient, but with no annotations and an undocumented session_id it leaves the agent guessing about session requirements and the relationship to sibling metadata tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single session_id parameter is undocumented in both schema and description. The description does not explain what session_id selects or what happens when it is omitted (it is optional with a null default).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Get binary entrypoint'. An agent can tell it retrieves the entrypoint address of the loaded binary. It does not, however, distinguish itself from neighbors like get_binary_info, which likely also exposes the entrypoint, and the '(ie)' abbreviation is cryptic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to call this versus get_binary_info, get_sections, or other metadata tools. No mention of prerequisites such as an active session, despite session_id being present in the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_function_infoC
Get detailed information about a function (afi).
| Name | Required | Description | Default |
|---|---|---|---|
| address | No | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing. It implies a read-only retrieval but says nothing about whether a session must be active, whether the address must be valid/resolvable, or what "detailed information" actually contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence, front-loaded with the verb and resource, so there is no padding. The unexplained "(afi)" suffix is the only wasted token.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and two entirely undocumented parameters, the definition does too little: no session prerequisite, no address format, no indication of what fields the detailed output includes. The presence of an output schema covers the return shape, but the invocation context remains thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description mentions neither of the two parameters. It gives no hint about the address format (hex literal vs. symbol) or how session_id interacts with the default active session, leaving the agent to infer everything from bare parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb+resource ("Get detailed information about a function"), so an agent knows the general operation. However, it offers no differentiation from overlapping siblings such as analyze_function, disassemble_function, or list_functions, and the trailing "(afi)" token is unexplained noise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives. An agent cannot tell whether this is preferred over analyze_function or disassemble_function for inspecting a function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_importsC
Get imported functions (ii).
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure, and it says nothing about scope (all modules vs. one), pagination, session requirements, or ordering. The only added nuance beyond the name is that the target resource is imported rather than exported functions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence and therefore not bloated, but the '(ii)' fragment reads as unexplained noise rather than useful information. Brevity here comes from under-specification, not disciplined editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but with no annotations, no parameter documentation, and no usage context, the definition is too thin for a session-scoped inspection tool. An agent has no basis for choosing it over adjacent function-listing or symbol tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single session_id parameter has 0% schema description coverage and is never mentioned in the description, so an agent gets no explanation of what session it refers to or why it is optional/nullable. Since the schema is silent, the description needed to compensate and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource ('Get imported functions'), and 'imports' is a distinct concept from the sibling list_functions or get_entrypoint, so an agent can roughly tell what it returns. However, it offers no differentiation from siblings and the '(ii)' shorthand is cryptic, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus list_functions, get_symbols, or get_function_info, and no preconditions given (e.g. whether a session must be created first). The agent is left to infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_registersC
Get register values (dr).
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only implies a safe read. It does not say whether all registers or a subset are returned, what happens when session_id is omitted, or anything about the underlying operation's side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no wasted words, which is good. However, the unexplained '(dr)' fragment is dead weight that confuses rather than informs, making this under-specified rather than truly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. But with no annotations and no parameter explanation, an agent still lacks enough to call this confidently relative to the many register/binary-info siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single session_id parameter is documented only by its name. The description adds no semantics about what the session scope means or what the null default implies, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
'Get register values' states a clear verb and resource, so an agent understands the basic action. There is no differentiation from siblings like set_register, get_current_address, or get_binary_info, and the cryptic '(dr)' suffix is never explained, adding noise rather than clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of the obvious counterpart set_register or any alternative. The agent is left to infer that this is the read side of the register pair entirely on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sectionsD
Get binary sections (iS).
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It discloses nothing about behavior: whether it's read-only, what it returns, whether a session is required, or any side effects. An output schema exists but the description provides zero behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely short, which is concise, but the brevity is under-specification rather than efficiency. The '(iS)' fragment is ambiguous noise. No front-loading of useful context because there is none.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter and no annotations, the description is completely inadequate. An agent cannot determine when to call it, what it returns, or how to invoke it correctly beyond guessing from the name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description says nothing about the single session_id parameter, not even whether it is required or what happens if omitted. With one undocumented parameter, the description must compensate and fails to.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get binary sections (iS).' is essentially a restatement of the tool name with a cryptic abbreviation. It does state a verb and resource, but the parenthetical '(iS)' is unexplained and the purpose is tautological relative to the name get_sections. No sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like get_binary_info, get_imports, or get_symbols. No context for prerequisites (session required?) or when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stringsC
Get strings from binary (iz/izz).
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | ||
| data_section_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it discloses almost nothing: no permission/scope requirements, no indication of result size or truncation risk on large binaries, and no explanation that data_section_only defaults to true. The '(iz/izz)' hint implies the data-section vs. whole-binary distinction but leaves the agent to know radare2 semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence that is front-loaded with the verb and resource; nothing is padded. It is efficient, though arguably under-specified rather than deliberately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but for a two-parameter tool with zero schema coverage and no annotations the description omits parameter behavior, usage context, and scope. It is not sufficient for correct invocation without external radare2 knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so both parameters (session_id, data_section_only) are undocumented. The description never mentions the data-section-only toggle, which is exactly what distinguishes iz from izz, and says nothing about session_id; the parenthetical command reference is only an indirect hint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource (get strings) plus the underlying radare2 commands (iz/izz), so the operation is unambiguous. However, it gives no differentiation from sibling retrieval tools like search_string, print_string, or get_symbols, so an agent cannot tell from the text alone why it should pick this one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as search_string for targeted lookups. The agent is left to infer that this bulk-extracts strings while search_string matches a pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_symbolsC
Get binary symbols (is).
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | ||
| exports_only | No | ||
| imports_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, yet it says nothing about permissions, session requirements, filtering behavior, or result limits. Only the word "Get" hints at a read-style retrieval, which is weak disclosure for a zero-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and front-loaded, but this is under-specification rather than conciseness — a single fragment with no useful detail, and the "(is)" token is opaque to an unknown reader.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. But three undocumented parameters, no annotations, and no usage context leave the definition materially incomplete for an agent trying to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description mentions no parameters at all. The three parameters (session_id, exports_only, imports_only) are entirely undocumented, and the parenthetical "(is)" gives no meaningful hint about the export/import filtering.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It gives a verb ("Get") and a resource ("binary symbols"), so the basic action is identifiable. However, it does not distinguish itself from nearby siblings like get_imports, get_strings, or list_functions, and the cryptic parenthetical "(is)" adds no clarity about scope or content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives such as get_imports, get_strings, or list_functions. Only the name implies it is a symbol-listing read, leaving the agent to guess at appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_xrefs_fromC
Get cross references from an address (axf).
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral-disclosure responsibility. 'Get' weakly implies a read-only operation, but it does not state side effects, session requirements, permissions, or safety characteristics, and the existing output schema is not referenced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single front-loaded sentence with no unnecessary verbosity. The unexplained '(axf)' is minor clutter, but the overall structure is appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter read tool with a sibling get_xrefs_to and no annotations, the description omits critical context: when to prefer it, how session_id affects behavior, and what the return values represent. The output schema helps, but the description itself is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It vaguely maps to the required 'address' parameter but gives no format or syntax details, and it entirely omits the optional 'session_id' parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb 'Get' plus resource 'cross references' and source 'from an address' clearly state the operation. The 'from' wording implicitly distinguishes it from get_xrefs_to, but sibling differentiation is not explicit and '(axf)' is unexplained.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus get_xrefs_to or any other alternative. There are also no prerequisites or exclusions, leaving usage only implied by the phrase 'from an address'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_xrefs_toC
Get cross references to an address (axt).
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Get' weakly implies a read-only retrieval, but there is no disclosure of side effects, permissions, session requirements, or operational constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no padding or redundancy. It is appropriately sized for a tool name and schema that are already short.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even though an output schema exists, the description is too thin given no annotations and 0% schema description coverage. It does not explain the role of session_id, the address format, or when to choose this over get_xrefs_from.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for both parameters. It mentions the address input but gives no format or meaning for it, and completely omits the session_id parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: getting cross references to an address. The preposition 'to' implicitly distinguishes it from the sibling get_xrefs_from, though it does not explicitly name that alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no exclusions, and no mention of the related get_xrefs_from tool. An agent can infer basic usage from the name, but nothing in the text routes between alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_breakpointsC
List all breakpoints.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It does not mention that this is a read-only operation, whether it requires an active session, or what the output looks like, though the presence of an output schema slightly reduces the need to explain returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, front-loaded and free of unnecessary words. However, its brevity leaves critical information unstated, which is a completeness issue rather than a conciseness one.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one optional parameter with no description, no annotations, and numerous sibling tools, the description is too sparse. It omits how session_id affects results and how this differs from set_breakpoint, leaving the agent without enough context to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not explain the single parameter session_id: whether omitting it lists breakpoints across all sessions or only the current session. With 0% schema description coverage, the description should compensate but fails to do so.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb 'List' and resource 'breakpoints', so the purpose is understandable. However, it does not distinguish itself from sibling 'set_breakpoint' or explain scope (e.g., per session, all sessions), which would help an agent differentiate it from related breakpoint tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like set_breakpoint, or how the optional session_id affects the listing. The description provides no context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_flagsD
List flags/labels (f).
| Name | Required | Description | Default |
|---|---|---|---|
| space | No | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. The verb 'list' weakly implies a read-only enumeration, but nothing is said about whether results are scoped to the current session, whether 'space' changes the result set, or how many items are returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, but it is terse to the point of under-specification rather than economical. The parenthetical '(f)' is unexplained filler that does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. Still, with zero annotation coverage and two undocumented parameters, the description leaves the agent without enough context to call the tool correctly in a large sibling set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two parameters ('space' and 'session_id'), and the description mentions neither. An agent cannot tell what 'space' means or whether 'session_id' selects the session to query, so the description fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List flags/labels'), so the action is identifiable. However, it gives no scope or differentiation from the sibling 'create_flag', and the trailing '(f)' is an unexplained shorthand that adds no clarifying meaning.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no prerequisites, and no mention of what the listed flags represent or how they are scoped. The agent is left to infer everything from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_functionsC
List all analyzed functions (afl).
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, but it only says it lists analyzed functions. It does not disclose whether the operation is read-only, how session context is handled, whether pagination applies, or any side effects. The '(afl)' hint is too terse to count as meaningful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It immediately states the action and scope, making it easy to read and act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists (so return values need not be explained), the description is missing key context: no usage guidelines, no parameter meaning for session_id, and no behavioral profile despite absent annotations. For a tool with an optional session parameter, this leaves more unsaid than an agent needs to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%: the single optional session_id parameter has no description in the schema. The tool description never mentions session_id or explains whether omitting it uses the current session, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: 'List' plus 'functions', and narrows scope to 'analyzed' functions, distinguishing it from siblings like get_function_info (which retrieves details on a specific function) and analyze_function/analyze_all (which perform analysis). The '(afl)' alias is a small bonus that confirms the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives such as get_function_info, analyze_function, or analyze_all. It does not state prerequisites (e.g., needing an active session) or exclusions, leaving the agent to infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sessionsB
List all active Radare2 sessions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says nothing about pagination, return ordering, whether session handles are included in results, or whether this is a safe read-only operation. An output schema exists, which covers return values, but the other behavioral traits are undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence of eight words, front-loaded with the verb and zero filler. Nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param read tool with a rich output schema and many siblings, the description is only minimally complete. The output schema covers return values, but the description omits guidance on ordering, active-vs-all semantics, and relationship to the other session tools in the sibling list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so this dimension is at the baseline by rule. The description adds no parameter detail, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (active Radare2 sessions), and the scope word 'active' narrows semantics. It doesn't explicitly distinguish itself from sibling session tools like create_session or switch_session, but the read/list intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance or mention of alternatives such as create_session, switch_session, or close_session. The 'active' qualifier implies a filter, but the agent gets no direction on when this listing is the right call versus other session operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
print_hexC
Print hexdump (px).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | ||
| address | No | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden and discloses essentially nothing: not whether it reads at the current cursor/address, how many bytes are dumped by default, or what happens when address is null. Beyond naming the operation, no behavioral context is provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded fragment with no wasted words, but the brevity crosses into under-specification for a tool with three undocumented parameters. Efficient in form, deficient in content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but with zero annotations and 0% parameter coverage the definition leaves the two most important unknowns, default dump size and the address semantics, entirely unaddressed. For a memory-inspection tool in a large RE toolset, this is too thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters (size, address, session_id), and the description mentions none of them. The agent gets no hint that size is a byte count defaulting to 64, where address points, or why a session_id matters, so the description fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a recognizable verb+resource ('Print hexdump') and even the common alias '(px)', so the basic operation is identifiable. However it gives no scope or differentiation from close siblings like write_hex, print_string, or disassemble, leaving the agent to guess how this differs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, or alternative guidance. The agent cannot tell from the description whether to reach for print_hex, disassemble, or print_string for a given inspection task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
print_stringC
Print string at address (psz).
| Name | Required | Description | Default |
|---|---|---|---|
| length | No | ||
| address | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It implies a read/display operation but says nothing about output format, what happens if the address is invalid, how 'length' truncates, or whether session_id defaults to the active session.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence that is front-loaded and waste-free. It is efficient, though its brevity borders on under-specification rather than tightness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with 0% schema coverage and no annotations, the description is too thin. The existence of an output schema excuses it from documenting return values, but it should still explain the length and session_id parameters and the read-only nature of the operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so all three parameters (length, address, session_id) are undocumented in structured fields. The description only hints at the meaning of 'address' via the '(psz)' notation and gives no semantics for 'length' or 'session_id', failing to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a recognizable verb+resource ('Print string at address'), and the parenthetical 'psz' hints at a null-terminated string pointer. However, it never distinguishes itself from siblings like print_hex or get_strings, leaving an agent to guess which readout tool applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no statement of prerequisites, and no mention of alternatives such as print_hex for raw bytes or get_strings for enumerating strings. Usage is only loosely implied by the phrase 'at address'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_bytesC
Search for byte pattern (/x). Pattern should be hex string like "909090" or "\x90\x90"
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes | ||
| to_addr | No | ||
| from_addr | No | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden. It discloses the pattern format but not whether the search is scoped to the current session, whether it requires an active session, pagination/limit behavior, or what happens with no match. For a read operation with zero annotation coverage and a complex 4-param schema, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short and front-loaded, with the format hint placed second. No wasted words, though the format examples could be tightened with a note on what is accepted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained. However, with 3 undocumented parameters, no annotations, and no usage context, the description is far too thin for a 4-parameter search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate but only documents the required 'pattern' parameter's format. The optional to_addr, from_addr, and session_id parameters get no explanation; an agent cannot infer whether addresses are inclusive, absolute, or session-scoped.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Search for byte pattern'. This distinguishes it from search_string and search_rop_gadgets among siblings. Lacks sibling naming, but the resource is specific enough to differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no exclusions, no mention of alternatives like search_string for ASCII patterns. The description implies context (binary search via /x) but offers no explicit selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_rop_gadgetsC
Search for ROP gadgets (/R). Example: ["pop eax", "ret"]
| Name | Required | Description | Default |
|---|---|---|---|
| max_length | No | ||
| session_id | No | ||
| instructions | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure, and it says nothing about whether the search is read-only, how results are ordered, or whether gadgets span multiple instructions. It also ignores session_id behavior entirely, leaving the agent unaware of the session-scoping model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short and front-loaded, with the core purpose in the first phrase. The brevity borders on under-specification, and the stray '( /R)' token adds noise without earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but for a 3-parameter tool with 0% schema coverage and no annotations, the description leaves critical gaps: the meaning of max_length, the role of session_id, and the expected shape/interpretation of the instructions list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for three parameters, so the description must compensate and does not. The unlabeled example hints at the instructions array format but never names it, and max_length (default 5) and session_id are completely undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource combination (search for ROP gadgets) that is distinguishable from generic search siblings at a glance. However, the parenthetical '( /R)' is unexplained and the example is unlabeled, so the agent must guess whether it illustrates the instructions format or expected output. It does not explicitly differentiate itself from search_bytes or search_string.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus search_bytes or search_string, which occupy similar semantic territory. There is no mention of prerequisites (e.g., whether an active session or loaded binary is required), even though a session_id parameter exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_stringD
Search for string (/).
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| to_addr | No | ||
| from_addr | No | ||
| session_id | No | ||
| case_sensitive | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and discloses nothing: not whether the search is read-only, which address space it covers, whether it requires an active session, or how many results are returned. The parameters hint at an address-range search, but the description never confirms it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Brevity here reflects under-specification rather than efficiency, and the opaque '(/ )' fragment consumes space without conveying meaning. There is nothing front-loaded beyond a bare tool name restatement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter tool with no annotations, zero schema descriptions, and an output schema, this definition is far too thin. An agent lacks the information needed to call it correctly or choose it over search_bytes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Five parameters with 0% schema description coverage means the description must supply the missing meaning for text, to_addr, from_addr, session_id, and case_sensitive. It explains none of them — not even the required 'text' or the fact that case_sensitive defaults to true.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The phrase 'Search for string' names a recognizable verb+resource, so the basic intent is legible. However, the trailing '(/)' is cryptic and unexplained, and nothing distinguishes this from siblings like search_bytes or get_strings. No scope (memory vs. loaded binary vs. current session) is stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all — no mention of search_bytes or get_strings as alternatives, no preconditions, no indication of what gets searched. An agent must guess from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seekC
Seek to address or symbol (s). Returns new position.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not state whether seeking requires an active session, how the session_id default (null) is resolved, whether seeking is a pure read/state change, or what 'new position' concretely means. These are significant gaps for a session-mutating navigation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two very short sentences, front-loaded with the action and target. No padding, though the terseness edges toward under-specification rather than disciplined brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and the description at least says a new position is returned. However, with no annotations, 0% parameter coverage, and a session-scoped sibling set, the description leaves too much for the agent to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and both parameters are undocumented in the schema. The description mentions 'address or symbol (s)' which hints at the address parameter's accepted forms, but it omits the session_id parameter entirely and gives no format syntax for either.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb (seek) and a target (address or symbol), which is clearer than the bare name but remains ambiguous in a reverse-engineering context. It does not explicitly say it moves the cursor/execution position, nor does it distinguish itself from its sibling seek_relative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus seek_relative or get_current_address. The agent must infer that seek is the absolute-position variant and seek_relative is the relative one, with no textual support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seek_relativeC
Seek relative to current position.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It does not disclose whether seeking changes the current address for subsequent commands, whether it fails/clamps at boundaries, or what happens without a session_id. The one-sentence description leaves the entire behavioral profile unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with no waste, but its brevity borders on under-specification given the 0% schema coverage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, for a state-mutating navigation tool with no annotations and 0% parameter coverage, the description omits critical details: offset units, negative offsets, session scoping, and bounds behavior. It is inadequate for an agent to call it reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two parameters. The description does not explain the 'offset' unit (bytes? instructions?) or sign semantics (can it be negative to seek backwards?), and says nothing about session_id's role or default. It adds no meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (seek) and the modifier (relative to current position), distinguishing it from the sibling 'seek' which is presumably absolute. However, the target domain (a debug session / binary buffer) is not stated, leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'relative to current position' implies usage but does not state when to use this versus the plain 'seek' sibling, nor does it mention session binding despite a session_id parameter. Usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_block_sizeC
Set block size (b).
| Name | Required | Description | Default |
|---|---|---|---|
| size | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, yet it discloses nothing beyond the name: no statement of what the block size affects, whether it is session-scoped (the session_id param hints at this but is not explained), whether prior values persist, or whether the change is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, which is structurally fine, but its brevity reflects under-specification rather than tight editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but for a parameterized mutation tool with zero annotation coverage and 0% schema description coverage, the description leaves the agent without enough information to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate for the two undocumented parameters. It only offers '(b)', a cryptic unit hint for size, and says nothing at all about session_id or the default session behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a verb (Set) and a resource (block size), so the basic action is identifiable, but 'block size' is never defined and '(b)' is unexplained shorthand. Nothing distinguishes this from siblings like set_config or set_register beyond the parameter name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No indication of when this should be used, when it should not, or how it relates to alternatives such as set_config. The agent must infer from the name alone that this tunes a display/analysis block size.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_breakpointD
Set breakpoint (db).
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses nothing: not whether the breakpoint persists across sessions, what permissions or session state it requires, whether it overwrites an existing breakpoint at the same address, or what feedback the agent gets. 'Set breakpoint (db)' is behaviorally empty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, but brevity here reflects under-specification rather than conciseness; there is no front-loaded detail because there is no detail at all. Two words plus a cryptic abbreviation cannot earn their place as a tool definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a state-mutating debugger tool with two undocumented parameters, no annotations, and a cryptic '(db)' qualifier, the definition is completely inadequate. The presence of an output schema excuses explaining return values, but nothing about inputs, prerequisites, or effects is covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters. The description does not explain whether 'address' is a virtual address, symbol name, or offset, nor what 'session_id' defaults to or which session is targeted when it is null. It adds zero meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The text essentially restates the tool name: 'set_breakpoint' becomes 'Set breakpoint', with only the cryptic parenthetical '(db)' added. It gives no indication of where the breakpoint is set, on what target, or what distinguishes it from siblings like set_block_size or list_breakpoints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as execute_command, continue_execution, or the other set_* tools. The '(db)' qualifier is too opaque to function as usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_configC
Set configuration value (e key=value).
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| value | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing about persistence, scope, side effects, or whether settings are per-session. For a mutation tool with zero annotation coverage this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no waste, reasonably front-loaded. The cryptic 'e key=value' fragment reduces clarity slightly but does not bloat it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but a mutation tool with no annotations, 0% schema coverage, and an unexplained session_id is under-specified. The description does not give the agent enough to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only loosely implies a key/value pair format ('key=value'). The third parameter session_id is never explained, and value types are undefined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (set) and resource (configuration value), and the parenthetical '(e key=value)' hints at the command form. It is distinguishable from the read counterpart get_config, though the differentiation is left implicit rather than named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus get_config or the other set_* siblings. The agent must infer that this is the write counterpart of get_config without any explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_registerC
Set register value (dr reg=value).
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| register | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It conveys that this is a write operation to a register but omits critical behavioral context: whether it affects program execution, requires a paused session, is reversible, or what errors occur for invalid registers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short and front-loads the action. While terse, every word carries some signal, though the cryptic '(dr reg=value)' abbreviation may be opaque to an unfamiliar agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that mutates debugger state with no annotations, a 3-parameter schema at 0% coverage, and no output schema details shown, the description is severely under-specified. It lacks any guidance on session context, validation, or side effects needed to invoke it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for all three parameters. The parenthetical '(dr reg=value)' loosely maps to the register and value parameters but adds no real semantic detail, and the session_id parameter is completely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Set register value.' An agent can tell it apart from sibling get_registers by opposition, but the description does not explicitly name alternatives or scope (e.g., during a debug session), so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, prerequisites, or alternatives are provided. The parenthetical '(dr reg=value)' hints at syntax but does not explain context, such as whether the debuggee must be paused or which registers are valid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
step_intoD
Step into (single step) (ds).
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure but provides almost none. It does not state that stepping executes instructions (a side effect), requires an active debugging session, or what happens when no session exists. The phrase 'single step' is the only behavioral hint, but it is insufficient for a mutation-like operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only five words and is under-specified rather than concise. While it is front-loaded, it wastes the opportunity to convey essential information. Like the 'Process' calibration example, extreme brevity without substance should be penalized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a debugging step tool with a parameter and sibling alternatives, the description is critically incomplete. It omits session requirements, function-call behavior, and differentiation from step_over. Although an output schema exists (so return values need not be explained), the definition leaves the agent without enough context to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter (session_id) with 0% description coverage, and the tool description does not mention it at all. Since schema coverage is below 50%, the description should compensate by explaining the session_id's role, but it is entirely silent. The parameter's purpose and optional nature are left undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says 'Step into (single step) (ds),' which identifies a stepping action but does not specify what is stepped into (e.g., a function call) or distinguish it from the sibling step_over. The parenthetical '(ds)' is cryptic and adds no clarity. The agent can infer a debugger step operation from the tool name alone, but the description provides only a vague purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use step_into versus alternatives like step_over or continue_execution. No prerequisites (e.g., an active session) or context for invocation are given. The description merely names the operation without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
step_overD
Step over (dso).
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure, yet it says nothing about side effects, required session state, or what happens to execution flow. The abbreviation 'dso' adds no actionable behavioral context. This is a complete gap for a debugger control command.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a two-word fragment followed by a cryptic abbreviation. It is not a sentence, is not front-loaded with useful information, and fails to earn its place because it conveys no meaningful content. Brevity here reflects under-specification, not conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of sibling tools like step_into and continue_execution, the description is completely inadequate for an agent to select this tool correctly. It omits any usage context, parameter guidance, or behavioral details. The existence of an output schema does not offset these missing selection cues.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter (session_id) with 0% schema description coverage, and the description does not mention or explain it at all. The description fails to compensate for the missing schema documentation. An agent gets no guidance on what the parameter means or when to supply it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description restates the tool name ('Step over') and adds only an unclear abbreviation ('dso'). It does not specify what stepping over does or distinguish it from the sibling step_into. This is effectively a tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to use step_over versus step_into, continue_execution, or any other sibling. No prerequisites, no context, and no exclusions are provided. The agent is left to infer entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
switch_sessionC
Switch to a different session.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state that this mutates global state (the active session), what happens to the previously active session, whether other session state is preserved, or whether the session_id must reference an existing/open session.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no wasted words and the action front-loaded. But the brevity reflects under-specification rather than efficient communication, so it lands at minimum-viable rather than strong.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the tool is low-complexity with one required param. Still, the description omits usage context and parameter meaning, leaving an agent to guess at the session lifecycle semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds nothing about session_id (its source, format, or validity). With only one parameter and no compensating detail, an agent cannot tell whether the ID comes from create_session, list_sessions, or elsewhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('switch') and resource ('session'), which is distinct from siblings like create_session, close_session, and list_sessions. However, it offers no differentiation statement or explanation of what 'switching' actually means operationally (active debugging context).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus create_session, list_sessions, or close_session, and no prerequisites stated (e.g., whether the target session must already be open, or whether it requires an existing session context). The agent must infer everything from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_assemblyC
Write assembly instruction (wa). Example: "jmp 0x401000"
| Name | Required | Description | Default |
|---|---|---|---|
| address | No | ||
| assembly | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not say whether the write is patched into the binary, held in memory, whether it overwrites existing bytes, whether it requires an active session, or what happens to the instruction pointer. For a mutation tool with zero annotation coverage, this is a serious gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short and front-loaded: purpose then a concrete example. It is efficient, though terse enough that the example ends up carrying more explanatory weight than it can support.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. But with no annotations, 0% schema coverage, and 3 parameters, the definition leaves the mutation semantics, parameter roles, and session/address prerequisites entirely undefined. It is insufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only explains the 'assembly' parameter (mirroring the property title) and says nothing about 'address' (defaults to null, presumably the current address) or 'session_id' (defaults to null). The optional parameters remain ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb ('write') and resource ('assembly instruction (wa)'), and gives a concrete example, so the basic operation is clear. However, it does not distinguish itself from near-siblings such as write_hex, write_nop, set_register, or execute_command, and 'wa' is an unexplained abbreviation for an agent unfamiliar with the domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no stated relationship to alternatives like write_hex/write_nop, and no preconditions (e.g., that a session must exist and an address must be current). The example illustrates syntax but not context of use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_hexC
Write hex values (wx). Data should be hex string like "909090"
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| address | No | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It doesn't disclose whether the write requires an active session, mutates instruction memory, whether an address is required or defaults to current position, or what happens if the write crosses section boundaries. The only hint is the mnemonic 'wx'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short and front-loaded. The two sentences are efficient, though the parenthetical '(wx)' and the example could be integrated more cleanly. No wasted words, but somewhat terse for the complexity of the operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with three parameters, no annotations, and no explanation of session/address behavior, this is incomplete. The output schema exists, so return values needn't be explained, but the write's effect on memory and required context are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for three parameters. The description explains what 'data' should look like (a hex string like '909090'), which is helpful, but says nothing about 'address' (does it default to current position? is it virtual or physical?) or 'session_id' (which session is used if omitted?).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (write) and resource (hex values), and clarifies this is the 'wx' command. An agent can distinguish it from sibling write_assembly and write_nop, though it doesn't explicitly contrast them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus write_assembly, write_nop, or execute_command. The description gives no context about the scenario (debugging session? patching a binary?) in which hex writing is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_nopD
Write NOP instructions.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| address | No | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, yet it discloses nothing: not that this mutates binary contents, whether it requires a session_id or address, whether it patches memory or file, or whether changes are reversible. For a write operation with zero annotation coverage this is a serious gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is short and front-loaded, but this is under-specification rather than conciseness; it omits everything an agent needs to invoke the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but the description is still wholly inadequate for a mutation tool with three undocumented parameters, no annotations, and no stated target or prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters (count, address, session_id), and the description adds no meaning for any of them — not the semantics of count, the address format, or the role of session_id. The schema alone leaves the agent guessing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Write NOP instructions' is essentially a restatement of the tool name write_nop, offering a verb and resource but no scope, target, or context (binary, session, address range). An agent cannot distinguish its purpose from write_hex or write_assembly beyond the literal payload.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus write_hex or write_assembly, no prerequisites (e.g., an active session or valid address), and no exclusions. Nothing tells the agent what situational need this tool satisfies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
43 tool updates
v0.1.0- First observed
analyze_all - First observed
analyze_function - First observed
check_security - First observed
close_session - First observed
continue_execution - First observed
create_flag - First observed
create_session - First observed
disassemble - First observed
disassemble_function - First observed
execute_command - First observed
get_binary_info - First observed
get_config - First observed
get_current_address - First observed
get_entrypoint - First observed
get_function_info - First observed
get_imports - First observed
get_registers - First observed
get_sections - First observed
get_strings - First observed
get_symbols - First observed
get_xrefs_from - First observed
get_xrefs_to - First observed
list_breakpoints - First observed
list_flags - First observed
list_functions - First observed
list_sessions - First observed
print_hex - First observed
print_string - First observed
search_bytes - First observed
search_rop_gadgets - First observed
search_string - First observed
seek - First observed
seek_relative - First observed
set_block_size - First observed
set_breakpoint - First observed
set_config - First observed
set_register - First observed
step_into - First observed
step_over - First observed
switch_session - First observed
write_assembly - First observed
write_hex - First observed
write_nop
TDQS
Scored across 43 tools
Most tools target clearly distinct resources and actions, e.g. get_xrefs_to vs get_xrefs_from, search_bytes vs search_string vs search_rop_gadgets, and write_hex vs write_assembly vs write_nop. The generic execute_command overlaps with many specialized tools, and disassemble vs disassemble_function could be confused, but descriptions clarify scope.
All tool names use predictable snake_case, with a consistent verb_noun or verb_object pattern throughout (e.g. create_session, list_functions, set_register, search_bytes). Minor verb variety reflects domain actions rather than naming inconsistency.
At 43 tools, the surface is well above the typical 3-15 range and risks overwhelming an agent with many niche radare2 wrappers. Since execute_command already provides a raw fallback, some specific wrappers could likely be consolidated or omitted.
Core workflows are covered across sessions, analysis, disassembly, search, writes, and execution, but lifecycle gaps remain: no delete_breakpoint or disable_breakpoint, no delete_flag, and no call-stack/frame inspection. execute_command can work around these gaps, but the native tool surface is not fully complete.
Maintenance
Related MCP Connectors
MCP server exposing the Backtest360 engine API as tools for AI agents.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Related MCP Servers
- AlicenseAqualityBmaintenanceA multi-backend MCP server that exposes binary analysis capabilities from IDA Pro and Ghidra, allowing LLMs to directly drive reverse-engineering tools via natural language.11158Apache 2.0
- AlicenseNot gradedqualityAmaintenanceA Ghidra MCP server that enables AI language models to interact with Ghidra for reverse engineering tasks, providing small, context-efficient tools to reduce hallucination and handle large binaries.84 PyPI834Apache 2.0
- AlicenseNot gradedqualityAmaintenanceAn enterprise-grade MCP server for AI-powered reverse engineering. Enables AI agents to perform comprehensive binary analysis through natural language commands.29 PyPI203MIT
- FlicenseNot gradedqualityDmaintenanceA PyGhidra-based MCP server that exposes Ghidra's reverse engineering capabilities to AI agents, enabling binary analysis via tools like overview, search, view, list, edit, script execution, and version control.1-