Skip to main content
Glama
zlx-cyber

JADX-MCP-SERVER

by zlx-cyber

search_classes_by_keyword

Find classes in decompiled Android code by keyword, limiting results by package and search scope such as class, method, field, code, or comment.

Instructions

Search for classes containing a specific keyword with flexible filtering options.

This tool performs a comprehensive search across decompiled Android code, allowing you to:

  1. Search within specific packages by providing a package name

  2. Target specific search scopes (class names, method names, fields, code content, comments)

  3. Combine multiple search scopes for precise results

Args: search_term: The keyword or string to search for. This is the main search query.

package (optional): 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 (optional): 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)

offset (optional): Starting index for pagination. Default: 0
count (optional): Maximum number of results to return. Default: 20

Returns: dict: Paginated list of classes containing the search term, with metadata about matches

MCP Tool: search_classes_by_keyword Description: Advanced search tool that finds classes matching a keyword with package filtering and scope targeting capabilities. Use this when you need to find specific code patterns, class names, method names, or other identifiers across the decompiled APK.

Input Schema

NameRequiredDescriptionDefault
countNo
offsetNo
packageNo
search_inNocode
search_termYes

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and it does reasonably well: it discloses scope defaults ('code'), package-filter default (all packages), pagination defaults, and the return shape ('paginated list of classes ... with metadata about matches'). It omits cost/latency expectations, which matter for a whole-APK code scan, and never states result ordering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core content is front-loaded and scannable, but the definition is padded: the numbered capability list duplicates the opening sentence, and the separate tool-description paragraph restates the same purpose a third time. Much of the 'Returns' sentence is redundant given that an output schema exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no elaboration, and all five parameters are documented, so an agent has what it needs to call this correctly. The remaining gap is operational context — no mention of performance on large APKs or how results are ordered when paging.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, and the description compensates fully: it defines search_term as the main query, explains package semantics with empty-string behavior and an example, enumerates all valid search_in values with their meanings plus single/multi-scope composition, and states offset/count pagination defaults. This adds real meaning beyond the bare typed properties.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search for classes containing a specific keyword') plus the domain ('decompiled Android code'), which is far more informative than the bare name. It never explicitly distinguishes itself from near-neighbors like search_method_by_name or get_class_source, so sibling differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The trailing paragraph gives a clear when-to-use condition ('find specific code patterns, class names, method names, or other identifiers'), and the search_in scope list tells the agent how to narrow results. It stops short of when-not guidance or naming an alternative tool (e.g. search_method_by_name) for narrower lookups.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.