JADX-MCP-SERVER
The JADX-MCP-SERVER bridges LLMs and the JADX decompiler for automated Android APK reverse engineering, vulnerability analysis, and deobfuscation. Here's what you can do:
Code Reading & Navigation
Fetch the currently selected class/text from JADX-GUI
List all classes (with pagination) and get full Java source for any class
Fetch a specific method's source, list all methods/fields in a class
Get smali (bytecode) representation of any class
Get the package tree to understand APK structure and identify libraries
Search & Discovery
Search classes by keyword with package and scope filtering (class names, method names, fields, code, comments)
Search for a method across all classes by name
Find cross-references (xrefs) to any class, method, or field (with pagination)
Manifest & Resources
Retrieve the full
AndroidManifest.xmland specific components (activities, services, receivers, providers), with optional exported-only filteringFetch
strings.xmlcontent and list/retrieve any resource file by name
Application Structure
Get the main activity and main application class names from the manifest
Retrieve main application classes' source code
Renaming / Deobfuscation
Rename classes, methods, fields, packages, and variables within methods
Debugger Integration
Get current stack frames, all threads, and variable states from the JADX debugger
Cache Management
View decompilation cache statistics (hits, misses, hit rate, memory usage)
Clear the cache to free memory or reset when switching APKs
Static Analysis
Leverage all of the above via LLM prompts to detect vulnerabilities, hardcoded secrets, insecure APIs, and perform automated reverse engineering workflows.
Provides reverse engineering capabilities for Android APK files, allowing analysis of decompiled code, detection of vulnerabilities, and inspection of app components
Integrates with GitHub for distribution, releases, and contribution management for both the JADX-AI-MCP plugin and server components
Offers support for analyzing ReactNative applications through hermes code examination capabilities
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@JADX-MCP-SERVERanalyze the AndroidManifest.xml for suspicious permissions in the currently loaded APK"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
JADX-MCP-SERVER (Part of Zin's Reverse Engineering MCP Suite)
β‘ Fully automated MCP server built to communicate with JADX-AI-MCP Plugin to analyze Android APKs using LLMs like Claude β uncover vulnerabilities, parse manifests, and reverse engineer effortlessly.
β Contributors
Thanks to these wonderful people for their contributions β
ReadTheDocs:
We are now live at Read The Docs:
Download now: https://github.com/zinja-coder/jadx-ai-mcp/releases
π€ What is JADX-MCP-SERVER?
JADX MCP Server is a standalone Python server that interacts with a modified version of jadx-gui (see: jadx-ai-mcp) via MCP (Model Context Protocol). It lets LLMs communicate with the decompiled Android app context live.
Related MCP server: Binary Ninja MCP Server
π€ What is JADX-AI-MCP?
JADX-AI-MCP is a plugin for the JADX decompiler that integrates directly with Model Context Protocol (MCP) to provide live reverse engineering support with LLMs like Claude.
Think: "Decompile β Context-Aware Code Review β AI Recommendations" β all in real time.
High Level Sequence Diagram
sequenceDiagram
LLM CLIENT->>JADX MCP SERVER: INVOKE MCP TOOL
JADX MCP SERVER->>JADX AI MCP PLUGIN: INVOKE HTTP REQUEST
JADX AI MCP PLUGIN->>REQUEST HANDLERS: INVOKE HTTP REQUEST HANDLER
REQUEST HANDLERS->>JADX GUI: PERFORM ACTION/GATHER DATA
JADX GUI->>REQUEST HANDLERS: ACTION PERFORMED/DATA GATHERED
REQUEST HANDLERS->>JADX AI MCP PLUGIN: CRAFT HTTP RESPONSE
JADX AI MCP PLUGIN->>JADX MCP SERVER:HTTP RESPONSE
JADX MCP SERVER->>LLM CLIENT: MCP TOOL RESULTWatch the demos!
Perform quick analysis
https://github.com/user-attachments/assets/b65c3041-fde3-4803-8d99-45ca77dbe30a
Quickly find vulnerabilities
https://github.com/user-attachments/assets/c184afae-3713-4bc0-a1d0-546c1f4eb57f
Multiple AI Agents Support
https://github.com/user-attachments/assets/6342ea0f-fa8f-44e6-9b3a-4ceb8919a5b0
Analyze The APK Resources
https://github.com/user-attachments/assets/f42d8072-0e3e-4f03-93ea-121af4e66eb1
Your AI Assistant during debugging of APK using JADX
https://github.com/user-attachments/assets/2b0bd9b1-95c1-4f32-9b0c-38b864dd6aec
It is combination of two tools:
JADX MCP SERVER
Zin MCP Suite
Current MCP Tools
The following MCP tools are available:
fetch_current_class()β Get the class name and full source of selected classget_selected_text()β Get currently selected textget_all_classes()β List all classes in the projectget_class_source()β Get full source of a given classget_method_by_name()β Fetch a methodβs sourcesearch_method_by_name()β Search method across classessearch_classes_by_keyword()β Search for classes whose source code contains a specific keyword (supports pagination)get_methods_of_class()β List methods in a classget_fields_of_class()β List fields in a classget_smali_of_class()β Fetch smali of classget_main_activity_class()β Fetch main activity from jadx mentioned in AndroidManifest.xml file.get_main_application_classes_code()β Fetch all the main application classes' code based on the package name defined in the AndroidManifest.xml.get_main_application_classes_names()β Fetch all the main application classes' names based on the package name defined in the AndroidManifest.xml.get_android_manifest()β Retrieve and return the AndroidManifest.xml content.get_manifest_component- Retrieve specific manifest component instead of whole manifest fileget_strings(): Fetches the strings.xml fileget_all_resource_file_names(): Retrieve all resource files names that exists in applicationget_resource_file(): Retrieve resource file contentrename_variable(): Renames the variable within a methoddebug_get_stack_frames(): Get the stack frames from jadx debuggerdebug_get_threads(): Get the insights of threads from jadx debuggerdebug_get_variables(): Get the variables from jadx debuggerxrefs_to_class(): Find all references to a class (returns method-level and class-level references, supports pagination)xrefs_to_method(): Find all references to a method (includes override-related methods, supports pagination)xrefs_to_field(): Find all references to a field (returns methods that access the field, supports pagination)
Note: Tested on Claude Desktop. Support for other LLMs might be tested in future.
ποΈ Sample Prompts
π Basic Code Understanding
"Explain what this class does in one paragraph."
"Summarize the responsibilities of this method."
"Is there any obfuscation in this class?"
"List all Android permissions this class might require."π‘οΈ Vulnerability Detection
"Are there any insecure API usages in this method?"
"Check this class for hardcoded secrets or credentials."
"Does this method sanitize user input before using it?"
"What security vulnerabilities might be introduced by this code?"π οΈ Reverse Engineering Helpers
"Deobfuscate and rename the classes and methods to something readable."
"Can you infer the original purpose of this smali method?"
"What libraries or SDKs does this class appear to be part of?"π¦ Static Analysis
"List all network-related API calls in this class."
"Identify file I/O operations and their potential risks."
"Does this method leak device info or PII?"π€ AI Code Modification
"Refactor this method to improve readability."
"Add comments to this code explaining each step."
"Rewrite this Java method in Python for analysis."π Documentation & Metadata
"Generate Javadoc-style comments for all methods."
"What package or app component does this class likely belong to?"
"Can you identify the Android component type (Activity, Service, etc.)?"π Debugger Assistant
"Fetch stack frames, varirables and threads from debugger and provide summary"
"Based the stack frames from debugger, explain the execution flow of the application"
"Based on the state of variables, is there security threat?"π οΈ Getting Started
Demo: Perform Code Review to Find Vulnerabilities locally
https://github.com/user-attachments/assets/4cd26715-b5e6-4b4b-95e4-054de6789f42
Advanced CLI Options β Understanding the Flags
There are two separate connections and each has its own host/port:
βββββββββββββββ --host / --port ββββββββββββββββββββ --jadx-host / --jadx-port ββββββββββββββββββββ
β LLM Client β ββββββββββββββββββββΊ β jadx-mcp-server β βββββββββββββββββββββββββββΊ β JADX-GUI Plugin β
β (Claude, β Where the MCP server β β Where the MCP server looks β (jadx-ai-mcp) β
β Codex..) β LISTENS for clients β β for the JADX plugin β β
βββββββββββββββ ββββββββββββββββββββ ββββββββββββββββββββFlag | Default | Controls |
| off | Use HTTP transport instead of stdio |
|
| Where the MCP server listens (bind address for LLM clients) |
|
| Which port the MCP server listens on |
|
| Where to find the JADX plugin (the target JADX-GUI machine) |
|
| Which port the JADX plugin is on |
Usage Examples
Scenario 1 β Everything on the same machine (most common):
# Default: MCP server on localhost:8651, connects to JADX plugin on localhost:8650
uv run jadx_mcp_server.py --httpScenario 2 β Docker container or WSL (MCP server accessible from host network):
# MCP server listens on ALL interfaces so the host can reach it
# JADX plugin is still on the same machine
uv run jadx_mcp_server.py --http --host 0.0.0.0Scenario 3 β JADX-GUI running on a different machine (e.g., remote VM):
# MCP server runs locally, but connects to JADX plugin on a remote machine
uv run jadx_mcp_server.py --http --jadx-host 192.168.1.100Scenario 4 β Full remote setup (everything on different machines):
# MCP server listens on all interfaces on port 9999
# JADX plugin is on a different machine at 192.168.1.100:8652
uv run jadx_mcp_server.py --http --host 0.0.0.0 --port 9999 --jadx-host 192.168.1.100 --jadx-port 8652β οΈ Security Warning β Remote Binding
When using --host 0.0.0.0 (or any non-localhost address), the MCP server binds to all network interfaces over plain HTTP with no authentication. This means:
Anyone on the network can connect and invoke all MCP tools
There is no TLS encryption β traffic can be intercepted
An attacker can use the server to read decompiled code, rename classes/methods, and access debug info
Mitigations:
Only bind to
0.0.0.0on trusted, isolated networks (e.g., Docker bridge, local VM)Use a firewall to restrict access to the MCP port
Consider an SSH tunnel instead:
ssh -L 8651:127.0.0.1:8651 remote-host
Similarly, --jadx-host with a non-localhost address means the MCP server will make unauthenticated HTTP requests to that host. Ensure the target is trusted.
π£οΈ Future Roadmap
Add Support for apktool
Add support for hermes code (ReactNative Application)
Add docker support
Add more useful MCP Tools
Make LLM be able to modify code on JADX
Add prompts templates, give llm access to Android APK Files as Resources
Build MCP Client to support Local LLMEND-GOAL : Make all android reverse engineering and APK modification tools Connect with single MCP server to make reverse engineering apk files as easy as possible purely from vibes.
NOTE For Contributors
The files related to JADX-AI-MCP can be found here
The files related to jadx-mcp-server can be found in this repository only.
π Credits
This project is a plugin for JADX, an amazing open-source Android decompiler created and maintained by @skylot. All core decompilation logic belongs to them. I have only extended it to support my MCP server with AI capabilities.
The original README.md from jadx is included here in this repository for reference and credit.
This MCP server is made possible by the extensibility of JADX-GUI and the amazing Android reverse engineering community.
Also huge thanks to @aaddrick for developing Claude desktop for Debian based linux.
And in last thanks to @anthropics for developing the Model Context Protocol and @FastMCP team
And all open source maintainers and contributors that makes libraries and dependencies which allows project like this possible.
Audited and Received Assessment Badge
Thank you Mseep.net for auditing and providing Assessment Badge.
Dependencies
This project uses following awesome libraries.
Plugin - Java
Javalin - https://javalin.io/ - Apache 2.0 License
SLF4J - https://slf4j.org/ - MIT License
org.w3c.dom - https://mvnrepository.com/artifact/org.w3c.dom - W3C Software and Document License
MCP Server - Python
FastMCP - https://github.com/jlowin/fastmcp - Apache 2.0 License
httpx - https://www.python-httpx.org - BSD-3-Clause (βBSD licensedβ)
π License
This plugin inherits the Apache 2.0 License from the original JADX repository.
βοΈ Legal Warning
Disclaimer
The tools jadx-ai-mcp and jadx_mcp_server are intended strictly for educational, research, and ethical security assessment purposes. They are provided "as-is" without any warranties, expressed or implied. Users are solely responsible for ensuring that their use of these tools complies with all applicable laws, regulations, and ethical guidelines.
By using jadx-ai-mcp or jadx_mcp_server, you agree to use them only in environments you are authorized to test, such as applications you own or have explicit permission to analyze. Any misuse of these tools for unauthorized reverse engineering, infringement of intellectual property rights, or malicious activity is strictly prohibited.
The developers of jadx-ai-mcp and jadx_mcp_server shall not be held liable for any damage, data loss, legal consequences, or other consequences resulting from the use or misuse of these tools. Users assume full responsibility for their actions and any impact caused by their usage.
Use responsibly. Respect intellectual property. Follow ethical hacking practices.
π Contribute or Support
Found it useful? Give it a βοΈ
Got ideas? Open an issue or submit a PR
Built something on top? DM me or mention me β Iβll add it to the README!
Built with β€οΈ for the reverse engineering and AI communities.
Available Tools
32 toolsclear_cacheA
Clear the decompilation source cache and reset counters. Use when switching APKs or to free memory.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds details about resetting counters, but does not mention potential side effects like invalidating cached data or whether the operation is reversible. No annotations exist to offset this.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load the action and purpose, with no redundant words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and an existing output schema (not described), the description adequately covers purpose and usage. Slightly more detail on behavior could be added, but it's sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, so baseline 4 applies. Description does not need to add parameter info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Clear' and resource 'decompilation source cache', and uniquely identifies the tool among siblings (no similar clear/reset tools).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use when switching APKs or to free memory', providing clear context. No alternatives listed, but no siblings serve the same purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
debug_get_stack_framesB
Get current stack frames (call stack).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavioral traits. However, it only states the action without detailing side effects, permissions, or performance implications. A short phrase like 'Get current stack frames' is insufficient for full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loading the core purpose. It wastes no words, but could be slightly expanded with context without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no params) and presence of an output schema, the description minimally covers what the tool does. However, it lacks context on how the output is structured or typical use cases, leaving it somewhat incomplete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters (0 properties), and schema coverage is 100% (since there are none). The description adds no parameter-specific information beyond the schema, meeting the baseline of 3 for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('current stack frames'), clearly indicating the tool retrieves the call stack. It distinguishes from siblings like 'debug_get_threads' and 'debug_get_variables' that handle different debugging data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention typical debugging scenarios or relationships with sibling tools, leaving the agent without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
debug_get_threadsA
Get all threads in the debugged process.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description is minimal. It does not disclose behavioral traits such as whether the process must be paused, error conditions, or performance implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence conveying the essential information with no wasted words. Appropriate for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no annotations, output schema exists), the description adequately describes the functionality. It could mention that it returns a list of threads, but the output schema likely covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, so baseline is 4. The description adds no parameter information, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Get), resource (all threads), and context (in the debugged process). It is distinct from sibling tools like debug_get_stack_frames and debug_get_variables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description does not specify prerequisites or conditions, leaving the agent to infer usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
debug_get_variablesA
Get current variables when process is suspended.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the key behavioral constraint (process must be suspended) but does not mention side effects, permissions, or output format. With an output schema present, the return structure is covered, but behavioral details are minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. Every part is essential and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple parameterless tool with an output schema, the description provides the essential purpose and condition. It is adequate but could be slightly more detailed about usage context, though the presence of an output schema covers return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters (schema coverage 100%), so the description adds no parameter info. Per guidelines, with 0 parameters, the baseline is 4, and the description does not need to go beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and resource 'current variables' with a clear condition 'when process is suspended'. It clearly distinguishes from sibling tools like debug_get_stack_frames or debug_get_threads.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states when to use it (when process is suspended), providing clear context. However, it does not explicitly mention when not to use it or suggest alternatives, though siblings like rename_variable imply a potential next step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_current_classA
Fetch the currently selected class and its code from the JADX-GUI plugin.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only says 'fetch' which implies a read operation, but it does not disclose behavior when no class is selected, whether there are side effects, or any permissions needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. It conveys the essential information efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and an output schema exists (providing return structure), the description adequately explains the purpose. However, it could clarify what 'code' includes (e.g., decompiled source) and that it depends on GUI state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, so the description adds value by explaining what is fetched (the currently selected class and its code). Schema coverage is 100%, so baseline is 3; the description moves it to 4 by providing clear context for the parameterless operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Fetch', the resource 'currently selected class and its code', and the source 'JADX-GUI plugin'. It is specific and distinguishes from sibling tools like get_all_classes or get_class_source by implying a GUI context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as get_class_source, get_selected_text, or other class-related tools. The description does not mention prerequisites or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_all_classesC
Returns a list of all classes in the project with pagination support.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | ||
| count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits, but it only mentions pagination without explaining the behavior of offset and count. It does not state whether the tool is read-only, has side effects, or respects any project state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and front-loaded, but omits critical details that would earn its place. It is efficient but sacrifices completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description need not explain return values. However, it lacks context about pagination behavior and parameter constraints, making it incomplete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should explain the parameters. It only says 'pagination support', leaving the meaning of 'offset' and 'count' ambiguous. The defaults are not mentioned in the description, relying on the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns all classes with pagination support, distinguishing it from more specific class lookup tools like get_class_source or search_classes_by_keyword. However, it could better specify the scope of 'all classes' and differentiate from potential sibling tools like fetch_current_class.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., search_classes_by_keyword) is provided. There is no mention of use cases, prerequisites, or when pagination is necessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_all_resource_file_namesC
Retrieve all resource files names.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | ||
| count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description provides minimal behavioral information. It does not mention that the tool is read-only, the format of returned names, pagination behavior, or any requirements. With no annotations, the description carries the full burden but fails to disclose important traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, using a single sentence with no filler. However, it is under-specified; conciseness should not sacrifice completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the presence of an output schema, the description is insufficient. It does not clarify that the tool returns all names (possibly paginated), nor does it mention the role of offset and count. The absence of annotations increases the need for a more complete description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no meaning to the parameters 'offset' and 'count', which have 0% schema coverage. These parameters control pagination, but the description does not explain their purpose or effect.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'retrieve' and the resource 'all resource files names', indicating the tool returns a list of file names. However, it does not differentiate from the sibling tool 'get_resource_file' which likely retrieves a single file's content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'get_resource_file' or others in the sibling list. The description lacks any context on prerequisites or scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_android_manifestA
Retrieve and return the AndroidManifest.xml content.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided; the description only mentions retrieval without details on behavior (e.g., caching, format, size limits). The burden is high, and the description lacks sufficient disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the key information, and contains no redundant words. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, the description is mostly adequate, but it lacks details about the output format (e.g., XML string vs parsed object) and does not leverage the existing output schema context to simplify further.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, and schema coverage is 100% (empty properties). The description adds minimal extra value ('AndroidManifest.xml content'), but baseline is 4 due to zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Retrieve and return') and the specific resource ('AndroidManifest.xml content'), distinguishing it from sibling tools that deal with classes, methods, or resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for obtaining the manifest but provides no explicit guidance on when to use this tool versus alternatives like 'get_resource_file' or 'get_main_activity_class'. No exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cache_statsA
Get decompilation cache statistics: hits, misses, hit_rate, cached_classes, compressed_mb, compression_ratio.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It explicitly states that the tool retrieves statistics (a read operation) and lists the outputs, indicating no destructive side effects. This is sufficient for a simple read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the action and lists the key statistics. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, output schema exists), the description provides all necessary context: what it does and what it returns. No additional details are required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema coverage is 100% (empty object). The description does not need to add parameter details. The baseline for 0 parameters is 4, and the description meets it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'get' with the resource 'decompilation cache statistics' and enumerates the exact fields returned (hits, misses, hit_rate, etc.). It clearly distinguishes from siblings like 'clear_cache' which performs a different operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for retrieving cache statistics but provides no explicit guidance on when to use it over alternatives or any prerequisites. However, given its simplicity and no parameters, the lack of explicit guidance is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_class_sourceB
Fetch the Java source of a specific class.
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden but only states 'Fetch', implying no side effects. It does not disclose error conditions or requirements like class being decompiled, but the simplicity mitigates the need for extensive disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the verb and resource, containing zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema, the description does not need to explain return values, but it omits context such as when the class source might be unavailable or error conditions, leaving some gaps for a tool with many siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter 'class_name' is self-explanatory from its name, but the description adds no additional meaning like format (e.g., fully qualified) or constraints, and the schema has 0% description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Fetch' and the resource 'Java source of a specific class', distinguishing it from sibling tools like get_smali_of_class which fetch smali code.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives, nor are any conditions or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fields_of_classB
List all field names in a class.
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states only the basic function, without disclosing whether it is read-only (implied by name), whether it returns all fields (including inherited?), or any permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no wasted words. It is adequately concise for a simple tool, though it could benefit from additional structure if parameters were more complex.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema, return values need not be detailed. However, the description omits any mention of edge cases (e.g., class not found) or behavior (e.g., string ordering). It is minimally viable for a one-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description should explain the parameter class_name (e.g., fully qualified format, case sensitivity, existence requirements). It does not, leaving the agent to infer meaning from the parameter name alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List all field names in a class.' clearly specifies the action (list) and the resource (field names in a class). It directly distinguishes itself from sibling tools like get_methods_of_class, which lists methods.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as get_xrefs_to_field or get_methods_of_class. The description does not mention any preconditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_main_activity_classA
Fetch the main activity class from AndroidManifest.xml.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the source (AndroidManifest.xml) but adds no details about side effects, permissions, or performance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no superfluous words. Direct and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no parameters and an output schema, the description is complete enough. It covers what the tool does and its data source.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist; schema coverage is 100%. The description adds context that the tool fetches from a specific XML file, which is meaningful beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Fetch') and the resource ('main activity class from AndroidManifest.xml'). It distinguishes from siblings like 'get_android_manifest' which retrieves the entire manifest.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The purpose is implied but not explained in context of sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_main_application_classes_codeB
Fetch main application classes' code with pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | ||
| count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description implies a read-only fetch operation, which is adequate but lacks details on behavior like rate limits, error conditions, or handling of default parameters. It mentions pagination but does not elaborate on outcomes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that directly states the tool's function with no wasted words, achieving high efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description doesn't need to detail return values. However, it lacks context on ordering, default behavior for zero count, and how pagination is applied. It is minimally complete but could be more helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It mentions 'pagination' but does not explain the semantics of offset and count, their defaults (0), or how zero values affect results. This is insufficient for effective parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Fetch main application classes' code with pagination,' specifying the verb 'Fetch' and the resource 'main application classes' code,' which distinguishes it from sibling tools like get_main_application_classes_names and get_class_source.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidance on when to use this tool versus alternatives, such as get_class_source or get_main_application_classes_names. No context on prerequisites or scenarios is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_main_application_classes_namesA
Fetch main application classes' names from Manifest package.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It only states the basic purpose and does not mention side effects, permissions, or error conditions, leaving significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that immediately conveys the tool's purpose without any extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the zero parameters and presence of an output schema (which explains return values), the description is mostly complete. It lacks definition of 'main application classes' but that is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and 100% coverage, so the description does not need to elaborate on parameter semantics. The baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Fetch', the resource 'main application classes' names', and the source 'from Manifest package'. It effectively distinguishes from siblings like 'get_main_application_classes_code' (code vs names) and 'get_main_activity_class' (single vs multiple).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives is provided, though the purpose is clear enough to infer appropriate use cases. Exclusions or when-not-to-use are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_manifest_componentA
Retrieve specified component data from AndroidManifest.xml, support filter exported components. Support standard Android components: activity, provider, service, receiver.
| Name | Required | Description | Default |
|---|---|---|---|
| component_type | Yes | ||
| only_exported | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. Describes 'retrieve' as read operation but gives no detail on behavior (e.g., error handling, whether data is parsed, performance). Does not disclose what happens on invalid component_type or manifest missing. Minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, first states core action and filter, second adds supported types. No extraneous text. Front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 30+ sibling tools and no annotations, description covers basics but misses crucial context: prerequisites (e.g., manifest already loaded), return behavior on missing components, and any side effects. Output schema exists but description standalone lacks completeness for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, so description adds value by listing examples for component_type (activity, provider, etc.) and explaining only_exported as a filter. Clarifies that component_type refers to standard Android components, improving schema understanding. Could specify whether component_type is restricted to those four.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'retrieve' and resource 'component data from AndroidManifest.xml'. It distinguishes itself from siblings like 'get_android_manifest' by specifying it targets a single component type with optional export filtering. Lists supported component types (activity, provider, service, receiver) for exactness.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage: use when you need a specific component's data with optional exported filter. However, no explicit when-to-use or when-not-to-use compared to alternatives like 'get_android_manifest'. No prerequisites mentioned. Lacks guidance on choosing between this and other get_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_method_by_nameC
Fetch the source code of a method from a specific class.
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | ||
| method_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries full burden. It only states 'fetch source code', implying a read operation, but fails to disclose error behavior (e.g., if method not found), side effects, or performance implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no unnecessary words. However, it is slightly under-informative; extra context could be added without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 2 parameters and many siblings, the description is too sparse. It does not mention output format (though output schema exists), error cases, or how it differs from similar tools like 'get_class_source'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the parameters beyond their names. While 'class_name' and 'method_name' are self-explanatory, the description adds no meaning or constraints (e.g., format, existence).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves source code of a method from a specific class, specifying verb 'fetch', resource 'source code', and context 'from a specific class'. It differentiates from siblings like 'get_methods_of_class' (lists methods) and 'search_method_by_name' (searches across classes).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidelines on when to use this tool versus alternatives (e.g., 'get_class_source' for entire class, 'search_method_by_name' for searching). No prerequisites or context for usage are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_methods_of_classB
List all method names in a class.
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states a read operation ('list') without disclosing any behavioral traits such as side effects, permissions, or edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words, efficiently conveying the core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 1-param tool with an output schema, the description provides the essential function. However, it lacks mention of error cases (e.g., invalid class name) or return format details, relying on the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description should compensate but only vaguely references the class_name parameter via 'in a class'. No details on format or constraints are added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and resource 'method names' with scope 'in a class'. It effectively distinguishes from siblings like get_fields_of_class or get_method_by_name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when needing all method names of a class, but provides no explicit guidance on when not to use or mentions of alternatives among the many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_package_treeA
Get all packages in the APK sorted by class count. Shows total_classes, total_packages, and per-package name, class_count, is_likely_library. Use this first to understand the APK structure before searching.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully details the output (total_classes, total_packages, per-package data) and sorting, but does not explicitly state it is a read-only operation, which is implied but could be more transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first defines the output and sorting, the second provides usage guidance. No redundancy or unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description sufficiently explains what the tool returns. It also covers the purpose and usage, making it complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters; baseline is 4 according to rules. The description adds no parameter info but none is needed since there are no params.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets all packages sorted by class count and lists the output fields. It distinguishes itself from sibling tools by advising to use it first for understanding APK structure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this first to understand the APK structure before searching', giving clear when-to-use guidance and implying an alternative (searching) for further analysis.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_resource_fileC
Retrieve resource file content.
| Name | Required | Description | Default |
|---|---|---|---|
| resource_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description does not disclose any behavioral traits such as output format, size limits, or error handling. The existence of an output schema is not leveraged in the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at one sentence, making it easy to parse. It is front-loaded with the core action, but may be overly minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description fails to provide context about what constitutes a resource file, potential edge cases, or how the output is structured, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the meaning or format of the 'resource_name' parameter, leaving the agent without guidance on how to supply it correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (retrieve) and object (resource file content). It is specific and directly relates to the tool's name, but does not explicitly differentiate from sibling tools like 'get_all_resource_file_names'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when the content of a resource file is needed, but provides no explicit guidance on when to use this tool versus similar tools or any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_selected_textA
Returns the currently selected text in the decompiled code view.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry behavioral disclosure. It correctly indicates a read operation ('returns') but does not explain behavior when no text is selected or whether it can fail. For a zero-parameter tool, this is acceptable but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence. No extraneous words; every word serves a purpose. It is appropriately concise for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with no parameters and an output schema present. The description covers the core purpose, but could be more complete by addressing what happens on no selection or different contexts. Still, it is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so the input schema is vacuously 100% covered. The description does not need to add parameter info. Baseline is 4 for zero-parameter tools with no missing param details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns selected text from the decompiled code view, using a specific verb-resource pair. It distinguishes from all 27 siblings, none of which retrieve selected text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when selected text is needed but gives no explicit guidance on when to use versus alternatives or edge cases like no selection. It is adequate but leaves the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_smali_of_classC
Fetch the smali representation of a class.
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It fails to disclose important behavioral traits like whether the operation is read-only (likely yes), what happens if the class doesn't exist, or performance implications. The description adds minimal value beyond the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but arguably too brief. While it avoids verbosity, it omits crucial details that could be included in a slightly longer description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description could omit return details, but it still fails to explain what 'smali representation' means or how it relates to other representations. An agent unfamiliar with Android internals would lack context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate. It only mentions 'class_name' implicitly via the tool's purpose, but does not explain what format the class name should be in (e.g., fully qualified dot notation) or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'fetch' and the resource 'smali representation of a class'. However, it does not differentiate from sibling tools like get_class_source or get_fields_of_class that might also retrieve class details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as get_class_source or get_fields_of_class, nor are any prerequisites or limitations mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stringsC
Retrieve contents of strings.xml files.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | ||
| count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits. It only says 'Retrieve contents,' which implies a read operation, but gives no details about pagination, permissions, or return format. The presence of offset and count suggests pagination, but this is not disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but incomplete. It sacrifices necessary detail for brevity, making it minimally helpful rather than efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While an output schema exists and may document return values, the description lacks essential details about parameters (offset and count). For a simple tool with two parameters, the description is insufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain parameters, but it does not mention offset or count at all. The agent has no insight into what these parameters do, despite defaults being provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Retrieve contents of strings.xml files,' identifying the verb and resource. However, it does not differentiate from siblings like get_resource_file, which could retrieve the same file, so it lacks distinctiveness.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like get_resource_file or get_all_resource_file_names. There is no mention of when to set offset or count parameters, leaving the agent to infer usage without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_xrefs_to_classB
Find all references to a class.
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | ||
| offset | No | ||
| count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It only states 'find all references' without explaining pagination (offset, count), whether it is read-only, or what the output format is. Since an output schema exists but is not described, the agent may not understand the return structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no extraneous information. It is front-loaded and efficient, fulfilling the requirement of being concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's three parameters and the presence of sibling tools, the description is insufficient. It lacks usage guidelines, parameter semantics, and behavioral details, leaving gaps that the structured fields do not fill.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description does not elaborate on any parameters. 'class_name' is inferred from the tool name, but 'offset' and 'count' are unexplained, leaving the agent unaware of their roles in pagination.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Find all references to a class' uses a specific verb and resource, clearly stating the tool's function. It distinguishes itself from sibling tools like 'get_xrefs_to_field' and 'get_xrefs_to_method' by specifying the target as a class.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'get_methods_of_class' or 'get_fields_of_class'. The description does not mention prerequisites, context, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_xrefs_to_fieldC
Find all references to a field.
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | ||
| field_name | Yes | ||
| offset | No | ||
| count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for behavioral disclosure, but it only states the basic function. It omits traits like pagination (offset/count parameters), read-only nature, or output format. Minimal disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (5 words), but it sacrifices necessary details. It is not inappropriately long, but fails to convey essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters, an output schema, and sibling tools requiring differentiation, the description is insufficient. It lacks mention of pagination, required fields, and result format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning to any parameter. It does not explain that class_name and field_name are required or what offset and count control.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Find all references to a field' clearly states the verb (find) and resource (references to a field), distinguishing it from sibling tools like get_xrefs_to_class and get_xrefs_to_method.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. The single sentence lacks any usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_xrefs_to_methodC
Find all references to a method.
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | ||
| method_name | Yes | ||
| offset | No | ||
| count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. It only states 'Find all references,' without mentioning pagination (offset, count), required parameters, or side effects. This is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and front-loaded with the action. However, it is too brief and lacks structure for a tool with 4 parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters and no param descriptions, the description is incomplete. It doesn't hint at parameter usage or return value structure, though an output schema exists but is not described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, and the description does not explain any parameters (e.g., what class_name or method_name mean, or how offset/count affect results). Minimal value added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds all references to a method, which is a specific verb and resource. However, it does not differentiate from sibling tools like get_xrefs_to_class or get_xrefs_to_field, leaving ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as get_xrefs_to_class. No context on prerequisites or exclusions is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_classC
Renames a specific class.
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | ||
| new_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden for behavioral disclosure. It fails to mention effects on other references, reversibility, permissions, or UI updates. The minimal text does not compensate for missing annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but not wasteful. However, it is too terse to be fully informative; a slightly longer description adding usage context would be more valuable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 2 parameters and no annotations, the description is incomplete. It does not specify return behavior, whether it updates references, or any prerequisites. The presence of an output schema does not excuse the lack of context in the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% with no parameter descriptions. The description adds no meaning beyond parameter names; it does not clarify expected formats (e.g., full path vs simple name for class_name) or constraints on new_name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (renames) and resource (class), distinguishing it from sibling rename tools for field, method, package, and variable. However, it could be more specific by indicating the context, such as 'in the current decompilation session'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool over alternatives like rename_field or rename_method. There is no mention of prerequisites, side effects, or conditions that would help the agent decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_fieldC
Renames a specific field.
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | ||
| field_name | Yes | ||
| new_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only says 'Renames...' without stating that it modifies state, requires permissions, or has side effects. This is insufficient for understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise at one sentence, but this conciseness comes at the cost of missing critical details. It is efficient but not informative enough for a 3-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and param descriptions, the description should provide context about the tool's operation and return value. It does not mention that it modifies state, nor does it reference the output schema (which exists). The description is incomplete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the input schema provides no descriptions for parameters. The description adds no meaning beyond parameter names, leaving the agent to guess the roles of class_name, field_name, and new_name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Renames a specific field' clearly states the action and resource. It distinguishes from sibling tools like rename_class, rename_method, and rename_variable, which rename different entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description does not mention prerequisites, conditions, or when not to use rename_field.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_methodD
Renames a specific method.
| Name | Required | Description | Default |
|---|---|---|---|
| method_name | Yes | ||
| new_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose any behavioral traits (e.g., whether renaming affects references, reversibility, or side effects). Completely inadequate for a mutation operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise, but it sacrifices all substantive content. Being short is not beneficial if it fails to inform.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema and multiple sibling tools, the description provides no context about return values, error conditions, or how this tool fits into the broader toolset. Extremely incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning to the parameters. The names 'method_name' and 'new_name' are self-explanatory, but no format, constraints, or examples are given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it renames a method, but it is a tautology of the tool name and does not differentiate from sibling rename tools (e.g., rename_class, rename_field). No context on what 'method' refers to.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like rename_field or rename_class. Lacks any mention of prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_packageB
Renames a package and all its classes.
| Name | Required | Description | Default |
|---|---|---|---|
| old_package_name | Yes | ||
| new_package_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states renaming occurs but does not disclose side effects (e.g., impact on imports, permission needs, rollback possibility). Minimal behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no filler words. Efficiently communicates the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no parameter descriptions, the description is too brief. It lacks context about return values (despite output schema existing), prerequisites (e.g., package must exist), and potential risks (e.g., breaking dependencies).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has two parameters with 0% description coverage. Description does not add any meaning beyond parameter names, such as expected formats, constraints, or differences between old and new package names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool renames a package and all its classes, which is a specific verb-resource pair. It distinguishes from sibling tools like rename_class, rename_field, etc., which target different entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The name implies its context, but there is no explanation of prerequisites or when not to use it (e.g., if package has dependent classes).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_variableC
Renames a specific variable in a method.
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | ||
| method_name | Yes | ||
| variable_name | Yes | ||
| new_name | Yes | ||
| reg | No | ||
| ssa | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It only says 'renames' which implies mutation, but does not disclose side effects, persistence, scope, or whether changes are reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (one sentence), but it omits important details. It is concise but under-specified, lacking critical information for correct use.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (6 parameters, no schema or annotation details), the description is incomplete. It does not explain optional parameters, return values (though output schema exists), or any constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain any parameters. Required parameters are self-explanatory from names, but optional parameters like 'reg' and 'ssa' are unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Renames a specific variable in a method', specifying both the action (rename) and the resource (variable in a method). This distinguishes it from sibling tools like rename_field or rename_method.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like rename_method or rename_field. There is no mention of context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_classes_by_keywordA
Search for classes containing a specific keyword with flexible filtering options.
This tool performs a comprehensive search across decompiled Android code, allowing you to:
Search within specific packages by providing a package name
Target specific search scopes (class names, method names, fields, code content, comments)
Combine multiple search scopes for precise results
| Name | Required | Description | Default |
|---|---|---|---|
| search_term | Yes | The keyword or string to search for. This is the main search query. | |
| package | No | Package name to limit the search scope. - If empty string (default), searches across all packages in the APK - If provided, only searches within classes belonging to the specified package - Example: "com.example.app" to search only in that package | |
| search_in | No | Comma-separated list of search scopes to target. Valid values: - "class": Search in class names only - "method": Search in method names only - "field": Search in field names only - "code": Search in code content (method bodies, statements, etc.) - "comment": Search in comments You can specify one or multiple scopes: - Single scope: "class" (only class names) - Multiple scopes: "class,method" (class names OR method names) - Combined: "class,method,code" (searches in all three scopes) Default: "code" (searches in code content) | code |
| offset | No | Starting index for pagination. Default: 0 | |
| count | No | Maximum number of results to return. Default: 20 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. Describes search behavior and filtering but does not explicitly state that the tool is read-only or non-destructive. Assumed safe but not confirmed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a well-structured paragraph with clear numbered points, concise but covers essential aspects. No fluff, but could be slightly more compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (keyword search, package filtering, multiple scopes, pagination) and presence of output schema, the description fully covers what the tool does and its parameters. No gaps identified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover all parameters (100% coverage). Description adds value by explaining how parameters combine (e.g., 'combine multiple search scopes for precise results'), providing context beyond schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states 'Search for classes containing a specific keyword', clearly specifying the action and resource. It distinguishes from siblings like search_method_by_name and get_all_classes by focusing on keyword-based class search across decompiled code.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description lists capabilities but does not explicitly state when to use this tool versus alternatives. Usage is implied but no clear 'when not to use' or comparison with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_method_by_nameC
Search for a method name across all classes.
| Name | Required | Description | Default |
|---|---|---|---|
| method_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits (e.g., read-only, performance implications, or scope of search). The agent has no information beyond the action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, efficiently conveying the core purpose. However, it could be more structured (e.g., bullet points) to aid scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (searching across all classes) and the existence of an output schema, the description should hint at what is returned (e.g., method signatures with class names). Its brevity leaves significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter 'method_name' has no description in the schema (0% coverage). The description adds no meaning beyond the parameter name, leaving the agent to guess format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (search) and resource (method name across all classes), making it easy to understand the tool's purpose. However, it does not specify the matching behavior (e.g., exact, substring, regex), slightly reducing clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus related siblings like 'get_method_by_name' or 'get_methods_of_class'. The user must infer from the name, which is insufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct action and resource, with clear separation between listing, searching, renaming, debugging, and cache management. No two tools appear to do the same thing.
Naming follows a consistent verb_noun pattern within subdomains (get_, rename_, search_, debug_, clear_, fetch_). The debug_get_ prefix is slightly inconsistent but still readable.
With 32 tools, the server exceeds the typical well-scoped range. While many tools are useful, the number feels excessive and could be streamlined into fewer, more general tools.
The tool surface covers the full lifecycle of APK analysis: class retrieval, field/method access, cross-references, renaming, manifest parsing, resource handling, debugging, and cache management. No obvious gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yoβ¦
MCP server for static security analysis of Android source code
A Model Context Protocol server for Wix AI tools
Enable secure connectivity between Sentry issues and debugging data, and LLM clients, using a Model Context Protocol (MCP) server.
Related MCP Servers
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables AI assistants to interact with IDA Pro for reverse engineering and binary analysis tasks.12100MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables Large Language Models to interact with Binary Ninja for reverse engineering tasks like viewing assembly code, decompiled code, renaming functions, and adding comments.3MIT
- AlicenseAqualityCmaintenanceAn MCP server that integrates with Apktool to provide live reverse engineering support for Android applications using Claude and other LLMs through the Model Context Protocol.16642Apache 2.0
- AlicenseNot gradedqualityDmaintenanceAn Model Context Protocol server that enables LLMs to autonomously reverse engineer applications by exposing Ghidra's decompilation and analysis tools. It allows AI agents to list code structures, rename methods, and analyze binaries directly through MCP-compatible clients.Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/zinja-coder/jadx-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server