Bridges CFF Explorer's built-in Lua scripting CLI with the Model Context Protocol (MCP), allowing Claude (or any MCP client) to perform PE file analysis and patching entirely through natural language — powered by CFF Explorer running headlessly in the background.
Three tools with minimal descriptions (all under 100 chars) and incomplete parameter documentation. All tools accept only a single file_path parameter with basic description. No output schemas documented. No error handling guidance. No parameter validation constraints (enums, ranges, formats). Tools are read-only but lack explicit idempotentHint annotations. Naming follows verb_noun pattern (analyze_, list_) which is good, but descriptions lack context on when to use each tool vs. alternatives, what they return, or prerequisites.
Extract full PE header information including DOS header, File header, Optional header and section table
Walk the PE Export Directory and list all exported symbols
Walk the PE Import Directory and list all DLLs and imported functions
No output schemas documented. LLMs cannot predict what fields analyze_pe_headers, list_imports, or list_exports return, forcing them to guess at downstream field names and risk extraction errors.
Parameter descriptions are minimal (e.g., 'Path to the PE file to analyze'). No guidance on file format requirements, size limits, path format (absolute vs. relative), or what happens if file doesn't exist or is not a valid PE.
No error handling guidance in tool descriptions. Lua script templates include error checks (e.g., 'if pehandle == null') but tool descriptions do not explain what errors are possible, when to retry, or how to recover.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Tool descriptions lack context on when to use each tool. All three operate on PE files but descriptions do not explain the distinction: analyze_pe_headers returns structural metadata, list_imports returns DLL dependencies, list_exports returns exported symbols. LLMs cannot disambiguate without this guidance.
No tool annotations (idempotentHint, readOnlyHint). All three tools are read-only and idempotent, but this is not declared in the tool definition, forcing LLMs to infer safety properties.