Enhanced API Reference¶
Comprehensive guide to all JADX-AI-MCP tools with detailed usage examples.
Table of Contents¶
Class Analysis¶
Tools for inspecting decompiled Java code.
fetch_current_class()¶
Fetches the currently selected class in JADX-GUI.
Parameters: None
Returns:
{
"className": "com.example.MainActivity",
"package": "com.example",
"source": "public class MainActivity...",
"type": "class"
}
Use Case: Quick context for "Explain this class" prompts.
get_all_classes(offset: int = 0, count: int = 0)¶
Lists all classes in the APK.
Parameters:
- offset (int): Starting index
- count (int): Number to return (0 = all)
Example:
# Get first 100 classes
classes = await get_all_classes(offset=0, count=100)
print(f"Total classes: {classes['pagination']['total']}")
Best Practice: Always use pagination for production APKs to avoid timeouts.
get_class_source(class_name: str)¶
Gets full source code for a specific class.
Parameters:
- class_name (str): Fully qualified name
Example:
source = await get_class_source("com.example.crypto.AES")
Note: Returns cached source if already decompiled.
Search Capabilities¶
search_classes_by_keyword(search_term: str, search_in: str = "all", package: str = "", offset: int = 0, count: int = 20)¶
Full-text search across code with advanced scoping.
Parameters:
- search_term (str): Text to find
- search_in (str): Scope ("all", "code", "comments", "strings")
- package (str): Restrict to specific package (e.g., "com.example")
- offset (int): Start index
- count (int): Max results
Example:
# Find hardcoded passwords in comments only
results = await search_classes_by_keyword("password", search_in="comments", count=50)
for res in results['items']:
print(f"Found in {res['className']}: {res['preview']}")
search_method_by_name(method_name: str)¶
Finds methods matching a name pattern.
Parameters:
- method_name (str): Name or partial signature
Example:
# Find encryption methods
methods = await search_method_by_name("encrypt")
Resource Analysis¶
get_android_manifest()¶
Parses AndroidManifest.xml.
Returns: - Package name - Version info - Permissions - Activities/Services/Receivers/Providers - Raw XML
Use Case: Security auditing permissions and exported components.
get_manifest_component(type: str)¶
Get specific components from AndroidManifest.xml.
Parameters:
- type (str): "Activity", "Service", "Receiver", or "Provider"
get_strings(offset: int = 0, count: int = 0)¶
Extracts strings from res/values/strings.xml.
Parameters:
- offset (int): Start index
- count (int): Max strings
Use Case: Finding API keys, URLs, or hidden messages.
Cross-Reference Analysis¶
get_xrefs_to_method(class_name: str, method_name: str, ...)¶
Finds all callers of a method.
Example:
# Who calls login()?
callers = await get_xrefs_to_method(
"com.example.Auth",
"login",
count=100
)
Features: - Includes direct calls - Includes interface implementations - Includes super calls
Refactoring¶
rename_class(class_name: str, new_name: str)¶
Renames class and updates references.
Example:
# Deobfuscate
await rename_class("a.b.c", "CryptoHelper")
Warning: Affects multiple files. Use carefully.
rename_method(class_name: str, method_name: str, new_name: str)¶
Renames method and updates references.
rename_package(old_pkg: str, new_pkg: str)¶
Renames an entire package and updates declarations/imports.
rename_variable(class_name: str, method_name: str, old_var: str, new_var: str)¶
Renames a local variable inside a specific method.
Debugging¶
debug_get_stack_frames()¶
Gets current call stack.
Requirements: - Debugger active - Process suspended
Returns: - List of stack frames (class, method, line)
debug_get_variables()¶
Gets local variables and fields.
Returns: - Locals (name, type, value) - Fields (name, type, value)
Security Note: Values may contain sensitive data (passwords, keys).