jadx-rpc defines 20 tools with consistent naming (verb_noun pattern: jadx_open, jadx_close, jadx_search) and complete input schemas. All tools have descriptions (10-50 chars, below the 50-200 char optimum). Parameters are typed and described. However, output schemas are not documented, LLMs cannot predict response structure for planning. Error handling is minimal; no recovery guidance. Tool descriptions lack WHEN/WHY context. No tool annotations (readOnlyHint, destructiveHint). Composition is sound: tools chain well (e.g., jadx_classes → jadx_decompile_class), but descriptions don't hint at this.
methods this one calls
methods that call this one
list classes from the index
drop the decompiled sources, keep the index
decompiled source of one class
components, exported flags and permissions
decompile every class, minutes on a real app
every open session
decoded AndroidManifest.xml
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination) for planning downstream calls. jadx_classes, jadx_search, jadx_members, jadx_resources return lists but no schema shows count, pagination, or field names.
Descriptions are too brief (10-50 chars, below 50-200 char optimum). Missing WHEN/WHY context. E.g., 'decompile every class, minutes on a real app' (jadx_export) doesn't explain when to call it vs jadx_decompile_class. LLMs cannot disambiguate similar tools.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
methods and fields of a class, with rename targets
open a target and build its index
rebuild with the recorded renames applied
record a rename, applied on the next reload
list recorded renames
read one decoded resource
list decoded resources
regex over every decompiled source file
session state, counts and export progress
string literals in the decompiled sources
search class, method and field names, no export needed
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). jadx_close with purge=true is destructive but unmarked. jadx_status is read-only but unmarked. Agents cannot infer safety/idempotency without explicit hints.
No error handling guidance. Tools raise JadxRpcError but no recovery hints. E.g., if jadx_open fails with 'file not found', LLM has no suggestion to try a different path or check file permissions.
Parameter 'target' (session id or input path) is overloaded. LLMs must reason whether to pass a UUID or a file path. Separate parameters (session_id, input_path) with clear descriptions would eliminate ambiguity.