MCP server for unified Android reverse engineering. Provides tools for APK analysis, DEX decompilation, HBC parsing, YARA scanning, taint analysis, and audit operations with JSON output.
DROIDSAW MCP server has 6 tools with inconsistent quality. Tool names lack action verbs (strings, load, corpus_ingest, apk_yara, triage, audit), only 'load' and 'triage' hint at actions. Descriptions are present but brief (avg 80 chars, below 194-char baseline). Input schemas are visible with types and descriptions, but parameter descriptions are sparse and lack constraints (e.g., 'layer' accepts 'apk|dex|hbc' but no enum; 'action' accepts 'accept|reject|defer' but no enum). Output schemas are not documented. Error handling and recovery guidance are absent. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications. Composition is reasonable (each tool has one job), but parameter naming could be clearer (e.g., 'rules_src' vs 'rules_file' in apk_yara is ambiguous).
Run YARA rules against loaded APK or inline YARA rules
Run full audit pipeline on loaded APK/DEX/HBC with taint analysis and decompilation
Ingest a directory of APK/DEX/HBC files into the analysis corpus
Load an APK, DEX, or HBC file for analysis
Search for strings in loaded APK/DEX/HBC with optional layer filtering
Triage and manage findings in the analysis database
Tool names lack action verbs. 'strings', 'apk_yara', 'corpus_ingest' do not start with clear verbs (search_, run_, ingest_). LLMs cannot infer intent from names alone.
Enum constraints not declared in schemas. 'layer' parameter accepts 'apk|dex|hbc' and 'action' accepts 'accept|reject|defer', but these are free-form strings without enum type. LLMs may hallucinate invalid values.
Output schemas not documented. No description of what each tool returns (fields, types, structure). LLMs cannot plan downstream calls or extract required data.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint) despite clear risk classifications. Agents cannot determine which tools are safe to retry or have side effects.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | <=2025-11-25 | v2 |
Parameter descriptions lack format/constraint details. 'timeout_secs' has no min/max; 'entropy_threshold' has no range; 'path' parameters lack validation rules (allowlist mentioned but not documented).