[GH-ISSUE #2460] [Bug] binary_overview fails with IDA provider: list_documents not declared by IDA adapter #822

Closed
opened 2026-10-15 18:28:45 +00:00 by bsakaguchi · 2 comments
Owner

Originally created by @aquaplatinumberlitz on GitHub (Oct 13, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/2460

Environment

  • rea-agents 6.4.0 (also reproduced on 6.3.0)
  • REA_ANALYSIS_PROVIDER=ida, IDA 9.4 headless via idalib-mcp
  • Target: PE x86 executable (onscripter-ru.exe)

What happens

Calling binary_overview returns:

capability_unavailable / unsupported_provider
provider_id: ida, operation: list_documents
reason: operation is not declared by this provider

Cause

binary_overview requires ["list_segments", "list_documents", "list_procedures", "list_strings"]
(application/CapabilityInventory.js, ENHANCED_REQUIREMENTS), but the IDA adapter's
IDA_OPERATIONS (ida/IdaProviderCapabilities.js) does not declare list_documents or list_segments.
So binary_overview cannot succeed with the IDA provider.

Expected

Either the IDA adapter declares the needed operations, or binary_overview degrades with a
clear limitation instead of failing on a provider-level requirement.

Notes

list_procedures, list_strings, xrefs and analyze_function work on the same target with IDA.

Originally created by @aquaplatinumberlitz on GitHub (Oct 13, 2026). Original GitHub issue: https://github.com/morluto/rea/issues/2460 ## Environment - rea-agents 6.4.0 (also reproduced on 6.3.0) - REA_ANALYSIS_PROVIDER=ida, IDA 9.4 headless via idalib-mcp - Target: PE x86 executable (onscripter-ru.exe) ## What happens Calling `binary_overview` returns: ``` capability_unavailable / unsupported_provider provider_id: ida, operation: list_documents reason: operation is not declared by this provider ``` ## Cause `binary_overview` requires `["list_segments", "list_documents", "list_procedures", "list_strings"]` (`application/CapabilityInventory.js`, `ENHANCED_REQUIREMENTS`), but the IDA adapter's `IDA_OPERATIONS` (`ida/IdaProviderCapabilities.js`) does not declare `list_documents` or `list_segments`. So `binary_overview` cannot succeed with the IDA provider. ## Expected Either the IDA adapter declares the needed operations, or `binary_overview` degrades with a clear limitation instead of failing on a provider-level requirement. ## Notes `list_procedures`, `list_strings`, `xrefs` and `analyze_function` work on the same target with IDA.
bsakaguchi 2026-10-15 18:28:45 +00:00
Author
Owner

@Jackzigen commented on GitHub (Oct 13, 2026):

Taking this one — PR #2513 is up.

Root cause is two-layered, slightly deeper than the title suggests:

  1. list_documents was not declared by the IDA adapter at all, so document resolution fell back to current_document (also undeclared) and failed before any analysis ran.
  2. list_segments is a hard requirement for binary_overview, but none of the three upstream IDA MCP profiles expose a segment enumeration tool — so the requirement can never be satisfied honestly.

The PR declares and implements list_documents (an IDA session binds exactly one target; reported like Ghidra's single Program) and marks list_segments as an optional facet: the tool stays available, omits segments/segment_count as unobserved, and the contract documents that omission.

<!-- gh-comment-id:6138810612 --> @Jackzigen commented on GitHub (Oct 13, 2026): Taking this one — PR #2513 is up. Root cause is two-layered, slightly deeper than the title suggests: 1. `list_documents` was not declared by the IDA adapter at all, so document resolution fell back to `current_document` (also undeclared) and failed before any analysis ran. 2. `list_segments` is a hard requirement for `binary_overview`, but none of the three upstream IDA MCP profiles expose a segment enumeration tool — so the requirement can never be satisfied honestly. The PR declares and implements `list_documents` (an IDA session binds exactly one target; reported like Ghidra's single Program) and marks `list_segments` as an optional facet: the tool stays available, omits `segments`/`segment_count` as unobserved, and the contract documents that omission.
Author
Owner

@morluto commented on GitHub (Oct 14, 2026):

Resolved on main by 72e469890 and 23dc8fbf8.

IDA declares list_documents and binary_overview accepts its document-selection capability. Current checks use provider composition rather than a real IDA engine.

Rechecked on main b8510ee00 in the current focused run: 17 test files passed, 485 tests passed and one platform-dependent test skipped. Relevant regression coverage: src/application/CapabilityInventory.test.ts and tests/composition/idaProvider.test.ts.

<!-- gh-comment-id:6175076965 --> @morluto commented on GitHub (Oct 14, 2026): Resolved on main by 72e469890 and 23dc8fbf8. IDA declares list_documents and binary_overview accepts its document-selection capability. Current checks use provider composition rather than a real IDA engine. Rechecked on main b8510ee00 in the current focused run: 17 test files passed, 485 tests passed and one platform-dependent test skipped. Relevant regression coverage: src/application/CapabilityInventory.test.ts and tests/composition/idaProvider.test.ts.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
morluto/rea#822
No description provided.