MCP server for reverse engineering: 71 semantic operations for static triage, unpacking, decompilation (Ghidra/IDA), dynamic instrumentation (frida, TTD), emulation (Unicorn), symbolic execution (angr), and evidence handling — for any MCP-compatible agent host.
Two tools with complete input schemas and descriptions, but both suffer from weak naming (job_output, job_kill lack action clarity), minimal parameter descriptions, and no documented output schemas. Descriptions are adequate (60-80 chars) but lack context on when to use each tool or what data structures are returned. No error handling guidance. Parameters are typed but lack constraints (e.g., max_output minimum is 256 but no maximum). Tool composition is reasonable (separate concerns) but naming does not follow verb_noun convention clearly.
Cancel a running background job.
Read a background job's status and output. Pass wait: true to block until it settles (bounded to 300 seconds).
Tool names lack clear action verbs. 'job_output' and 'job_kill' do not follow verb_noun convention (get_job_output, cancel_job would be clearer). LLMs struggle to infer intent from ambiguous names.
No output schema documented. LLMs cannot plan downstream operations or extract structured data. job_output returns either inline text or a file path, this branching logic must be explicit in the schema.
Parameter descriptions are minimal. 'max_output' has a constraint (minimum 256) but no maximum, no guidance on when to use it, and no explanation of the file-writing side effect. 'reason' parameter in job_kill has no description at all.
No error handling guidance. What happens if job_id does not exist? If wait=true times out after 300s? If the job crashes? LLMs need recovery hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Tool descriptions lack context on when to use each. job_output says 'Read a background job's status and output' but does not explain the difference between polling (wait=false) vs blocking (wait=true), or when each is appropriate.