Skip to main content
Glama
zinja-coder
by zinja-coder

apktool-mcp-server (Zin のリバース エンジニアリング MCP スイートの一部)

⚡ apktool 上に構築された完全に自動化された MCP サーバーは、Claude などの LLM を使用して Android APK を分析し、脆弱性を発見し、マニフェストを解析し、リバース エンジニアリングを簡単に行うことができます。

GitHub 貢献者 apktool-mcp-serverGitHubのすべてのリリースGitHub リリース (SemVer による最新版)最新リリースPython 3.10以上 ライセンス

AI ツールを使用して生成された画像。


🤖 apktool-mcp-server とは何ですか?

apktool-mcp-server は、 Model Context Protocol (MCP)と直接統合して**、Claude などの LLM によるライブ リバース エンジニアリング サポート**を提供するApk Tool用の MCP サーバーです。

「デコンパイル → コンテキスト認識コードレビュー → AI による推奨」をすべてリアルタイムで実現します。

デモをご覧ください!

https://github.com/user-attachments/assets/d50251b8-6b1c-4341-b18e-ae54eb24a847

  • CTFを解く

https://github.com/user-attachments/assets/c783a604-a636-4e70-9fa8-37e3d219b20b

Related MCP server: ghidraMCP

Zin MCP Suiteの他のプロジェクト

現在のMCPツール

次の MCP ツールが利用可能です。

  • build_apk() — デコードされた APKTool プロジェクトから APK をビルドします。

  • get_manifest() — デコードされた APK プロジェクトから AndroidManifest.xml コンテンツを取得します。

  • get_apktool_yml() — デコードされた APK プロジェクトから apktool.yml 情報を取得します。

  • list_smali_directories() — プロジェクト内のすべての smali ディレクトリを一覧表示します。

  • list_smali_files() — 特定の smali ディレクトリ内の smali ファイルを一覧表示します。オプションでパッケージ プレフィックスでフィルター処理されます。

  • get_smali_file() — クラス名で特定の smali ファイルの内容を取得します。

  • modify_smali_file() — 特定の smali ファイルの内容を変更します。

  • list_resources() — プロジェクト内のリソースを一覧表示します。オプションでリソース タイプ別にフィルター処理します。

  • get_resource_file() — 特定のリソース ファイルの内容を取得します。

  • modify_resource_file() — 特定のリソース ファイルの内容を変更します。

  • search_in_file() — 指定された拡張子を持つファイル内のパターンを検索します。

  • clean_project() — 再構築の準備としてプロジェクト ディレクトリをクリーンアップします。

  • decode_apk() — APKTool を使用して APK ファイルをデコードし、リソースと smali コードを抽出します。


🗒️ サンプルプロンプト

🔍 基本的なコードの理解

  • 「dvac プロジェクトのすべての smali ディレクトリを一覧表示します。」

  • 「dvac プロジェクトのパッケージ プレフィックス com.vulnerable.component の下にあるすべての smali ファイルを表示してください。」

  • 「com.vulnerable.component.MainActivity クラスの smali コードを取得します。」

  • 「MainActivity.smali を以前のバージョンと比較し、違いを表示します。」

  • 「dvac プロジェクトの smali ファイルで startActivity の使用状況を検索します。」

🛡️ 脆弱性検出

  • 「dvac AndroidManifest.xml で宣言された権限を分析し、危険な権限にフラグを設定します。」

  • 「プロジェクト内のすべての .xml および .smali ファイルでハードコードされた URL または IP を検索します。」

  • 「smali ファイル内の PendingIntent.getActivity の使用箇所をすべて検索します。」

  • 「dvac の AndroidManifest.xml でエクスポートされたアクティビティまたはレシーバーを確認します。」

  • 「android.permission.SEND_SMS または READ_CONTACTS にアクセスするすべての smali ファイルを一覧表示します。」

🛠️ リバースエンジニアリングヘルパー

  • 「このAPK:dvac.apkをデコードし、dvacというプロジェクトを作成してください。」

  • 「test-harness という新しい APKTool プロジェクトを作成します。」

  • 「再構築前に dvac プロジェクトをクリーンアップしてください。」

  • 「外部分析のために dvac プロジェクトから DEX ファイルを抽出します。」

  • 「MainActivity.smali を変更して、onCreate() の先頭にログ ラインを挿入します。」

📦 静的解析

  • 「dvac プロジェクトから完全な AndroidManifest.xml を取得します。」

  • 「dvac プロジェクトの apktool.yml の内容を表示します。」

  • 「レイアウトタイプのすべてのリソース ファイルを一覧表示します。」

  • 「すべてのリソース ファイルと smali ファイルで「password」という単語を検索します。」

  • 「使用されている権限を確認し、一般的な過剰権限のリスクと比較してください。」

🤖 AIコードの改変

  • 「MainActivity.smali の onCreate() メソッドを変更してトースト メッセージを追加します。」

  • 「strings.xml 内のすべての http:// リンクを https:// に置き換えます。」

  • 「AndroidManifest.xml 内のすべてのアクティビティに android:exported=false 属性を追加します。」

  • 「LoginManager.smali のメソッドvalidateLoginにパッチを適用して、常にtrueを返すようにします。」

  • 「MainActivity.smali 内のすべてのメソッドにログ ステートメントを追加します。」

📄 ドキュメントとメタデータ

  • 「ワークスペース内のすべてのデコードされた APKTool プロジェクトを一覧表示します。」

  • 「バージョン、元の APK メタデータ、圧縮設定を確認するには、apktool.yml 構成を見せてください。」

  • 「利用可能なすべての Android デバイスを ADB 経由で接続します。(ADB MCP サーバーに移行されます。」)

  • 「apktool.yml からプロジェクト dvac に関するメタデータを取得します。」

  • 「現在サーバーにインストールされているAPKToolのバージョンを確認してください。」


🛠️ はじめに

1. リリースからダウンロード: https://github.com/zinja-coder/apktool-mcp-server/releases

# 0. Download the apktool-mcp-server-<version>.zip
https://github.com/zinja-coder/apktool-mcp-server/releases

# 1. 
unzip apktool-mcp-server-<version>.zip

├apktool-mcp-server/
  ├── apktool_mcp_server.py
  ├── requirements.txt
  ├── README.md
  ├── LICENSE

# 2. Navigate to apktool-mcp-server directory
cd apktool-mcp-server

# 3. This project uses uv - https://github.com/astral-sh/uv instead of pip for dependency management.
    ## a. Install uv (if you dont have it yet)
curl -LsSf https://astral.sh/uv/install.sh | sh
    ## b. OPTIONAL, if for any reasons, you get dependecy errors in apktool-mcp-server, Set up the environment
uv venv
source .venv/bin/activate  # or .venv\Scripts\activate on Windows
    ## c. OPTIONAL Install dependencies
uv pip install httpx fastmcp

# The setup for apktool-mcp-server is done.

2. OllamaとZin MCPクライアントを使用してローカルLLMで実行する - 推奨

⚡ STDIO MCP サーバー用の軽量、高速、シンプルな CLI ベースの MCP クライアント。ギャップを埋め、Ollama を実行しているローカル LLM と MCP サーバー間のブリッジを提供します。

今すぐチェック: https://github.com/zinja-coder/zin-mcp-client

デモ: 近日公開予定...

🤖 3. クロードデスクトップのセットアップ

Claude Desktop が MCP を有効にして実行されていることを確認します。

たとえば、私は Kali Linux に以下を使用しました: https://github.com/aaddrick/claude-desktop-debian

MCP サーバーを構成して LLM ファイルに追加します。

nano ~/.config/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

そしてその中には次の内容が含まれています:

{
    "mcpServers": {
        "apktool-mcp-server": {
            "command": "/<path>/<to>/uv", 
            "args": [
                "--directory",
                "</PATH/TO/>apktool-mcp-server/",
                "run",
                "apktool_mcp_server.py"
            ]
        }
    }
}

交換する:

  • path/to/uv``uv実行ファイルへの実際のパスに置き換えます

  • path/to/apktool-mcp-serverこのリポジトリをクローンした場所への絶対パスです。

次に、組み込みの統合を使用して、コードをナビゲートし、リアルタイムのコード レビュー プロンプトを介して対話します。

バグ、問題、機能の提案、パフォーマンスの問題、一般的な質問、ドキュメントの問題を報告します。

  • それぞれのテンプレートで問題を開いてください。

  • Claude デスクトップ クライアントでテスト済み。他の AI のサポートも近日中にテストされる予定です。

🙏 クレジット

このプロジェクトは、 @iBotPeachesが開発・保守するオープンソースのAndroidリバースエンジニアリングツール「Apktool」用のMCPサーバーです。APKのコアとなるデコードおよびリソース処理ロジックはすべてiBotPeachesに帰属します。私は、AI機能を備えたMCPサーバーをサポートするために、このサーバーを拡張しただけです。

📎 オリジナルのREADME(Apktool)

Apktool のオリジナルの README.md は、参照とクレジットのためにこのリポジトリに含まれています。

また、Debian ベースの Linux 用に Claude デスクトップを開発してくれた@aaddrickにも大いに感謝いたします。

最後に、モデル コンテキスト プロトコルを開発した@anthropicsと@FastMCPチームに感謝します。

そして、このようなプロジェクトを可能にするためにライブラリと依存関係を提供してくれたすべてのオープンソース プロジェクトのメンテナーと貢献者。

📄 ライセンス

apktool-mcp-serverと関連プロジェクトはApache 2.0を継承しています。

⚖️ 法的警告

免責事項

apktool-mcp-serverツールおよび本プロジェクトの関連ツールはすべて、教育、研究、および倫理的なセキュリティ評価のみを目的としています。これらは「現状有姿」で提供され、明示的または黙示的な保証は一切ありません。ユーザーは、これらのツールの使用が適用されるすべての法律、規制、および倫理ガイドラインに準拠していることを保証する責任を単独で負います。

apktool-mcp-server使用することにより、お客様は、ご自身が所有するアプリケーションや明示的に分析を許可されたアプリケーションなど、テストを許可された環境でのみこれらを使用することに同意するものとします。これらのツールを不正なリバースエンジニアリング、知的財産権の侵害、または悪意のある活動のために悪用することは固く禁じられています。

apktool-mcp-serverの開発者は、これらのツールの使用または誤用に起因するいかなる損害、データ損失、法的結果、その他の結果についても責任を負いません。ユーザーは、自らの行動および使用によって生じたあらゆる影響について全責任を負うものとします。

責任を持って使用してください。知的財産を尊重し、倫理的なハッキング慣行に従ってください。


🙌 貢献またはサポート

貢献

貢献を歓迎します

  • 役に立ちましたか?⭐️をお願いします

  • アイデアをお持ちですか?問題を報告したり、PRを送信したりしてください

  • 上に何か構築しましたか?DM またはメンションしてください。README に追加します。


監査を受け、評価バッジを取得

監査と評価バッジの提供をいただいた Mseep.net に感謝します。

リバース エンジニアリングと AI コミュニティのために ❤️ を込めて構築されました。

Available Tools

16 tools
analyze_project_structureB

Analyze the structure of a decoded APK project and provide comprehensive metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_dirYesPath to the APKTool project directory

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, and the description does not disclose whether the tool is read-only, destructive, or what side effects it may have. 'Provide comprehensive metadata' is vague; the output schema exists but 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.

Conciseness4/5

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

Single sentence, concise and front-loaded. Could include more details but is not verbose.

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

Completeness2/5

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

While the tool is simple with one parameter and an output schema exists, the description lacks usage guidelines and behavioral transparency, making it incomplete for an agent to fully understand when and how to use it.

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

Parameters3/5

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

Only one parameter with 100% schema description coverage. The tool description adds no additional meaning beyond 'Path to the APKTool project directory' already in the schema.

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

Purpose5/5

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

The description clearly states the tool analyzes the structure of a decoded APK project and provides comprehensive metadata. The verb 'Analyze' and resource 'structure of a decoded APK project' are specific, and it distinguishes from sibling tools like decode_apk or build_apk.

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

Usage Guidelines2/5

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 get_apktool_yml or list_resources. Prerequisites ('must have a decoded APK') are implied but not stated.

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

build_apkB

Build an APK file from a decoded APKTool project with enhanced validation.

ParametersJSON Schema
NameRequiredDescriptionDefault
debugNoBuild with debugging info
timeoutNoCommand timeout in seconds
force_allNoForce rebuild all files
output_apkNoOptional output APK path
project_dirYesPath to the APKTool project directory

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It mentions 'enhanced validation' but does not explain what that entails (e.g., checks, side effects like overwriting existing APK). Lacks information on permissions, required tools (apktool), or potential errors.

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

Conciseness5/5

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

Single sentence, no wasted words. Front-loaded with the core action and key qualifier ('enhanced validation').

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

Completeness2/5

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 lacks completeness. It does not mention the output location or how validation works. For a build tool with 5 parameters, more context is needed.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 5 parameters. The description adds no additional meaning beyond the schema, meeting the baseline.

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

Purpose5/5

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

The description clearly states the tool builds an APK from a decoded APKTool project, which is distinct from sibling tools like decode_apk (decodes) and clean_project (cleans). The verb 'Build' and resource 'APK file' are specific and unambiguous.

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

Usage Guidelines2/5

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 decode_apk or analyze_project_structure. Lacks prerequisites (e.g., must have a decoded project) or exclusions (e.g., not for building signed APKs).

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

clean_projectA

Clean a project directory to prepare for rebuilding with enhanced backup support.

ParametersJSON Schema
NameRequiredDescriptionDefault
backupNoWhether to create a backup of build directories before cleaning
project_dirYesPath to the APKTool project directory

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral disclosure burden. It mentions 'enhanced backup support' indicating potential destructive action with a safety net, but does not detail what exactly is removed or whether the backup is recoverable. The behavioral traits are partially transparent but could be more explicit.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that encapsulates the tool's purpose and key feature (backup support). Every part is informative with no redundancy. It is appropriately concise for a simple tool.

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?

Given the tool's simplicity (2 parameters, one required) and the presence of an output schema, the description provides sufficient context for the core functionality. It could be improved by mentioning what types of files or directories are cleaned, but overall it is complete enough for an agent to understand the tool's role.

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

Parameters3/5

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

The input schema has 100% coverage for parameter descriptions, so the schema already explains the parameters. The tool description does not add any additional meaning or context beyond what is in the schema. Per guidelines, baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's function: cleaning a project directory to prepare for rebuilding. It specifies the resource (project directory) and the action (clean), and the phrase 'enhanced backup support' adds context. This effectively distinguishes it from sibling tools like build_apk or decode_apk.

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

Usage Guidelines3/5

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

The description implies usage before rebuilding but does not explicitly state when to use this tool versus alternatives like build_apk. No guidance on when not to use or prerequisites. It could clarify that it is intended for cleaning build artifacts before a fresh build.

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

decode_apkC

Decode an APK file using APKTool with comprehensive validation and error handling.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoForce delete destination directory if it exists
no_resNoDo not decode resources
no_srcNoDo not decode sources
timeoutNoCommand timeout in seconds
apk_pathYesPath to the APK file to decode
output_dirNoCustom output directory (optional)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Description claims 'comprehensive validation and error handling' but is vague. With no annotations, the description carries full burden but fails to disclose side effects (e.g., file overwrites), required permissions, or execution characteristics beyond what's in the schema.

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

Conciseness4/5

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

Single sentence, front-loaded with the primary action. Efficient but could be more informative without becoming verbose.

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

Completeness2/5

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

Given 6 parameters and a complex operation (APK decoding), the description lacks details about output location, file creation, or prerequisites. Output schema exists but description should contextualize the tool's effect.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all 6 parameters. Description adds no additional meaning, so baseline 3 is appropriate.

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?

Description uses a specific verb ('decode') and resource ('APK file'), clearly stating the tool's primary function. It lacks mention of output or distinguishing features but is unambiguous.

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

Usage Guidelines2/5

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 siblings. Agent must infer from the name and schema. No alternatives or exclusions mentioned.

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

get_apktool_ymlA

Get apktool.yml information from a decoded APK project with validation.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_dirYesPath to APKTool project directory

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/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. It mentions 'validation' but does not disclose what validation entails, whether the tool is read-only, or what happens if the file is missing or the project is invalid.

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

Conciseness4/5

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

The description is a single, focused sentence that conveys the essential purpose without unnecessary words. It is appropriately concise, though slightly more structure (e.g., listing output format) could improve clarity.

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?

Given the tool's simplicity (one parameter) and the presence of an output schema (not shown but indicated), the description provides sufficient context for a basic understanding. However, it could benefit from a brief note on the validation process.

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

Parameters3/5

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

Schema coverage is 100% with a clear parameter description ('Path to APKTool project directory'). The description adds no additional meaning beyond the schema for the single parameter, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Get'), the specific resource ('apktool.yml information'), and the context ('from a decoded APK project'). It also mentions 'with validation', which distinguishes it from other sibling tools like 'get_manifest' or 'get_resource_file'.

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

Usage Guidelines3/5

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

The description gives clear context (when to use: to get apktool.yml information from a decoded APK project) but does not provide explicit when-not-to-use guidance or mention alternative sibling tools for similar operations.

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

get_manifestB

Get the AndroidManifest.xml content from a decoded APK project with validation.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_dirYesPath to the APKTool project directory

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

No annotations provided, so description bears full burden. Mentions 'validation', implying some processing beyond simple retrieval, but does not detail validation behavior, side effects, or error conditions.

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

Conciseness5/5

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

Single sentence, 11 words, front-loaded with action and target. No wasted words.

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

Completeness3/5

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

Minimal description suffices for a simple read operation with output schema present, but lacks behavioral details and usage context that would help the agent select correctly among many sibling tools.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. Description adds no additional meaning beyond the schema's parameter description.

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?

Description clearly states the tool retrieves AndroidManifest.xml content from a decoded APK project, with additional validation. Differentiates from siblings like get_apktool_yml or get_resource_file by specifying the target file.

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

Usage Guidelines2/5

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, nor prerequisites (e.g., project must be decoded). Siblings exist for similar files but no comparison provided.

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

get_resource_fileB

Get content of a specific resource file with validation and metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_dirYesPath to the APKTool project directory
resource_nameYesName of the resource file
resource_typeYesResource type (e.g., "layout", "drawable")

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description bears full burden. It mentions 'validation and metadata' but does not explain what validation is performed, what metadata is returned, or any side effects. Behavior such as authentication, permissions, or response format (though an output schema exists) 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.

Conciseness5/5

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

The description is a single sentence that front-loads the core purpose ('Get content of a specific resource file') without any wasted words. It efficiently communicates the tool’s function.

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

Completeness3/5

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 and high schema coverage, the description is minimally adequate. However, it lacks details on return value structure, error handling, or any additional behavioral context that would fully equip an agent, especially since no annotations assist.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters. The description adds no extra meaning beyond the schema, such as format or constraints. Baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states the tool retrieves content of a specific resource file with validation and metadata. The verb 'Get' and resource 'resource file' are specific, and mentioning 'validation and metadata' adds distinct context. It is well differentiated from siblings like list_resources or get_smali_file.

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

Usage Guidelines2/5

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 (e.g., list_resources to browse files or modify_resource_file to edit). No exclusions or prerequisites are mentioned.

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

get_smali_fileC

Get content of a specific smali file by class name with validation.

ParametersJSON Schema
NameRequiredDescriptionDefault
class_nameYesFull class name (e.g., com.example.MyClass)
project_dirYesPath to the APKTool project directory

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so description must fully disclose behavior. Only mentions 'with validation' without specifics. No details on side effects, error conditions, or access requirements.

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

Conciseness4/5

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

Very concise single sentence. Front-loaded with purpose. Could benefit from breaking into multiple sentences for structure, but not overly verbose.

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

Completeness3/5

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

Has output schema, so return values are covered. Minimal description is adequate for a simple read operation, but lacks details on validation and expected results.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. Description adds no extra meaning beyond what schema already provides (class_name and project_dir descriptions).

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?

Clearly states it gets content of a smali file by class name with validation. Distinguishes from listing or modifying siblings, but not explicitly.

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

Usage Guidelines2/5

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 list_smali_files or modify_smali_file. Missing context for selection.

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

get_workspace_infoA

Get information about the APKTool MCP server workspace and current projects.

Returns: Dictionary with workspace information and project list

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior2/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. It states that the tool returns a dictionary but does not disclose whether it has any side effects, requires a workspace to be initialized, or is read-only. Given the tool's name implies a read operation, the description lacks explicit confirmation of behavioral traits.

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

Conciseness5/5

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

The description is extremely concise with two sentences. Every word serves a purpose: stating the action and the return type. No fluff or redundancy.

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?

Given zero parameters and the presence of an output schema, the description provides adequate high-level context. However, it lacks details like what 'workspace information' includes or how the 'project list' is structured. The agent might need to rely on the output schema for specifics.

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

Parameters4/5

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

The tool has zero parameters, so baseline 4 is appropriate. The description does not add parameter-specific meaning beyond the schema (which has no properties). It does mention the return type (dictionary), which is output-related but not necessary for the parameter dimension.

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

Purpose5/5

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

The description clearly states the tool's purpose: to get workspace information and project list. It uses a specific verb ('Get information') and resource ('APKTool MCP server workspace and current projects'). This distinguishes it from sibling tools that focus on specific project operations like build_apk, decode_apk, etc.

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

Usage Guidelines3/5

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 its siblings (e.g., analyze_project_structure, get_apktool_yml). It simply states what it does, leaving the agent to infer context from the tool name and sibling names alone.

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

health_checkA

Check the health status of the APKTool MCP server and APKTool installation.

Returns: Dictionary containing server status and APKTool availability

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Despite no annotations, the description discloses the return value (a dictionary with server status and APKTool availability), providing useful behavioral context beyond the schema.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose, no wasted words. Extremely concise.

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?

For a simple health check with no parameters and an output schema, the description is complete. It could mention that it is a read-only operation, but not a major gap.

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

Parameters4/5

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

With zero parameters and 100% schema coverage, the description does not need to add parameter info; baseline 4 is appropriate for no parameters.

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

Purpose5/5

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

The description clearly states the tool checks health status of the APKTool MCP server and APKTool installation, which is specific and distinguishes it from sibling tools (e.g., build_apk, decode_apk).

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

Usage Guidelines3/5

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

The description implies the tool is used to verify health, but lacks explicit guidance on when to use it versus alternatives, or any when-not scenarios.

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

list_resourcesC

List resources with pagination support and enhanced metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of items to return (0 means use default)
offsetNoStarting offset for pagination
project_dirYesPath to the APKTool project directory
resource_typeNoOptional resource type to filter by (e.g., "layout", "drawable")

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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 it lists resources with pagination and 'enhanced metadata', but does not disclose any behavioral traits like performance impact, authorization needs, or what 'enhanced metadata' entails. The description is insufficient for safe and effective use.

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

Conciseness4/5

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

The description is a single concise sentence (8 words) and front-loaded with the main action. However, it is so brief that it sacrifices informative value; a bit more detail would improve it without losing conciseness.

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

Completeness3/5

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

Given the tool has 4 parameters, no annotations, and an output schema, the description is minimally viable but leaves gaps. It does not clarify what 'enhanced metadata' means or the scope of 'resources'. The output schema exists, so return values don't need explanation, but the description still lacks context about the tool's domain (APK resources).

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description mentions pagination (aligns with 'count' and 'offset') but does not add meaning beyond the schema's field descriptions. No param-specific explanations are added.

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?

The description clearly states the verb 'List' and resource 'resources', and adds features 'pagination support and enhanced metadata'. It distinguishes from sibling tools like get_resource_file and list_smali_files, though it could be more specific about what constitutes a 'resource' in this context.

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

Usage Guidelines2/5

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 (e.g., get_resource_file for a single resource, or list_smali_files). The description lacks explicit when-to-use or when-not-to-use information.

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

list_smali_directoriesC

List all smali directories in a project with enhanced metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_dirYesPath to the APKTool project directory

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description should disclose behavioral traits. It only mentions 'enhanced metadata' without explaining what that entails (e.g., whether it is read-only, if permissions are needed, or any side effects).

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 description is a single sentence that is concise but lacks substance. It is front-loaded but does not provide enough information to be fully helpful.

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

Completeness2/5

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

Given the simplicity of the tool (one parameter, no annotations) and the existence of an output schema (not shown), the description is too minimal. It fails to explain what 'enhanced metadata' includes or how the output is structured, leaving gaps for an agent.

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

Parameters3/5

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

Schema coverage is 100%, so the input schema already documents the single parameter. The description adds no additional meaning beyond 'project_dir', so it meets the baseline but does not enhance understanding.

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?

The description clearly states the tool lists smali directories in a project, which distinguishes it from the sibling list_smali_files tool. The mention of 'enhanced metadata' adds some specificity, though vague.

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

Usage Guidelines2/5

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 list_smali_files or analyze_project_structure. The description does not provide context on prerequisites or typical scenarios.

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

list_smali_filesA

List smali files with pagination support and enhanced filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of items to return (0 means use default)
offsetNoStarting offset for pagination
smali_dirNoWhich smali directory to use (smali, smali_classes2, etc.)smali
project_dirYesPath to the APKTool project directory
package_prefixNoOptional package prefix to filter by (e.g., "com.example")

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided, so description must cover behavioral traits. It mentions pagination and filtering but omits details like read-only nature, performance implications, or error conditions.

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

Conciseness5/5

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

The description is succinct with no redundant words. It conveys the core purpose in a single sentence.

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?

Given the presence of an output schema and full parameter descriptions, the description is largely complete. However, it lacks an explanation of what 'enhanced filtering' entails, which could affect usage.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. Description adds no further meaning beyond the schema; 'enhanced filtering' is vague and not elaborated.

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

Purpose5/5

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

The description clearly states 'List smali files' with pagination and filtering. It distinguishes from sibling 'list_smali_directories' which lists directories, not files.

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

Usage Guidelines3/5

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

The description does not provide explicit guidance on when to use this tool versus alternatives like 'get_smali_file' or 'list_smali_directories'. Usage is implied but not clarified.

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

modify_resource_fileB

Modify the content of a specific resource file with validation and backup support.

ParametersJSON Schema
NameRequiredDescriptionDefault
new_contentYesNew content for the resource file
project_dirYesPath to the APKTool project directory
create_backupNoWhether to create a backup of the original file
resource_nameYesName of the resource file
resource_typeYesResource type (e.g., "layout", "values")

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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

Mentions validation and backup support, adding context beyond the basic 'modify'. But 'validation' is vague, and backup behavior (e.g., automatic, restore) is not explained. With no annotations, the description partially carries the transparency burden.

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?

Single sentence, concise, but lacks additional useful structure. Could include more details without being verbose.

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

Completeness3/5

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

Adequate for a modification tool with output schema (assumed). Describes action and key features, but could explain validation and backup more thoroughly given the tool's complexity.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are described in schema. Description adds no extra meaning beyond schema, such as format or constraints, meeting baseline.

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?

Description clearly states it modifies a specific resource file with validation and backup, distinguishing it from read tool get_resource_file and similar modify_smali_file. However, it does not explicitly differentiate from siblings.

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

Usage Guidelines2/5

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 modify_smali_file or get_resource_file. No when-not or prerequisites mentioned.

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

modify_smali_fileB

Modify smali file content with validation and backup support.

ParametersJSON Schema
NameRequiredDescriptionDefault
class_nameYesFull class name (e.g., com.example.MyClass)
new_contentYesNew content for the smali file
project_dirYesPath to the APKTool project directory
create_backupNoWhether to create a backup of the original file

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It mentions 'validation and backup support' but does not explain what validation entails, whether backups are automatic or optional, or any destructive potential (e.g., overwriting files). The behavioral impact of modification is under-specified.

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

Conciseness4/5

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 tool's purpose. However, it could be more structured by separating core function from additional features (validation, backup) without adding unnecessary verbosity.

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

Completeness2/5

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

Given the tool has 4 parameters, 3 required, and an output schema (not described), the description lacks context about return values, error handling, validation criteria, and how backups are managed. It does not provide enough information for an agent to fully understand the tool's behavior and outcomes.

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

Parameters3/5

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

The input schema has 100% description coverage for all four parameters, so the schema already explains each parameter. The description adds only a general mention of 'validation and backup support', which hints at the 'create_backup' parameter but does not add new semantic value beyond the schema.

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

Purpose5/5

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

The description clearly states the verb 'Modify' and the resource 'smali file content', and it specifically mentions 'validation and backup support', distinguishing it from sibling tools like 'get_smali_file' (read-only) and 'modify_resource_file' (for resources).

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

Usage Guidelines2/5

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, no prerequisites, and no exclusions. It does not mention that this tool is for modifying compiled smali code versus other modification scenarios.

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

search_in_filesC

Search for patterns in files with pagination and enhanced filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of items to return (0 means use default)
offsetNoStarting offset for pagination
max_resultsNoMaximum total results to collect before pagination
project_dirYesPath to the APKTool project directory
case_sensitiveNoWhether search should be case sensitive
search_patternYesText pattern to search for
file_extensionsNoList of file extensions to search in

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description should disclose behaviors like non-destructiveness, file access patterns, or performance implications. It only mentions 'pagination' and 'enhanced filtering' without operational details.

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

Conciseness4/5

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

Single sentence, no fluff, but lacks structure. Could be more informative while remaining concise.

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

Completeness2/5

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

Given 7 parameters and an output schema, the description is too brief. It omits key context like supported pattern types (regex?), search scope (only project_dir?), and default behaviors.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. Description adds no additional meaning beyond the schema; 'enhanced filtering' is too vague to clarify parameter usage.

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?

Description clearly states verb 'Search' and resource 'patterns in files', and adds context about pagination and enhanced filtering. However, it does not differentiate from sibling tools like 'get_smali_file' or 'analyze_project_structure', which have distinct purposes.

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

Usage Guidelines2/5

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, nor any exclusions or prerequisites. The description only states what it does 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 16 tool updatesv1.0.1
    • Addedanalyze_project_structure
    • Changedbuild_apk15 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / debug / description
        Added value: +"Build with debugging info"
      • removedInput schema / properties / debug / title
        Removed value: -"Debug"
      • addedInput schema / properties / force_all / description
        Added value: +"Force rebuild all files"
      • removedInput schema / properties / force_all / title
        Removed value: -"Force All"
      • addedInput schema / properties / output_apk / description
        Added value: +"Optional output APK path"
      • removedInput schema / properties / output_apk / title
        Removed value: -"Output Apk"
      • addedInput schema / properties / project_dir / description
        Added value: +"Path to the APKTool project directory"
      • removedInput schema / properties / project_dir / title
        Removed value: -"Project Dir"
      • addedInput schema / properties / timeout
        Added value: +{
        +  "default": 300,
        +  "description": "Command timeout in seconds",
        +  "type": "integer"
        +}
      • removedInput schema / title
        Removed value: -"build_apkArguments"
      • addedOutput schema / additionalProperties
        Added value: +true
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "additionalProperties": true,
        -    "title": "Result",
        -    "type": "object"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / title
        Removed value: -"build_apkOutput"
    • Changedclean_project10 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / backup / description
        Added value: +"Whether to create a backup of build directories before cleaning"
      • removedInput schema / properties / backup / title
        Removed value: -"Backup"
      • addedInput schema / properties / project_dir / description
        Added value: +"Path to the APKTool project directory"
      • removedInput schema / properties / project_dir / title
        Removed value: -"Project Dir"
      • removedInput schema / title
        Removed value: -"clean_projectArguments"
      • addedOutput schema / additionalProperties
        Added value: +true
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "additionalProperties": true,
        -    "title": "Result",
        -    "type": "object"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / title
        Removed value: -"clean_projectOutput"
    • Changeddecode_apk16 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / apk_path / description
        Added value: +"Path to the APK file to decode"
      • removedInput schema / properties / apk_path / title
        Removed value: -"Apk Path"
      • addedInput schema / properties / force / description
        Added value: +"Force delete destination directory if it exists"
      • removedInput schema / properties / force / title
        Removed value: -"Force"
      • addedInput schema / properties / no_res / description
        Added value: +"Do not decode resources"
      • removedInput schema / properties / no_res / title
        Removed value: -"No Res"
      • addedInput schema / properties / no_src / description
        Added value: +"Do not decode sources"
      • removedInput schema / properties / no_src / title
        Removed value: -"No Src"
      • addedInput schema / properties / output_dir
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Custom output directory (optional)"
        +}
      • addedInput schema / properties / timeout
        Added value: +{
        +  "default": 300,
        +  "description": "Command timeout in seconds",
        +  "type": "integer"
        +}
      • removedInput schema / title
        Removed value: -"decode_apkArguments"
      • addedOutput schema / additionalProperties
        Added value: +true
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "additionalProperties": true,
        -    "title": "Result",
        -    "type": "object"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / title
        Removed value: -"decode_apkOutput"
    • Changedget_apktool_yml8 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / project_dir / description
        Added value: +"Path to APKTool project directory"
      • removedInput schema / properties / project_dir / title
        Removed value: -"Project Dir"
      • removedInput schema / title
        Removed value: -"get_apktool_ymlArguments"
      • addedOutput schema / additionalProperties
        Added value: +true
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "additionalProperties": true,
        -    "title": "Result",
        -    "type": "object"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / title
        Removed value: -"get_apktool_ymlOutput"
    • Changedget_manifest8 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / project_dir / description
        Added value: +"Path to the APKTool project directory"
      • removedInput schema / properties / project_dir / title
        Removed value: -"Project Dir"
      • removedInput schema / title
        Removed value: -"get_manifestArguments"
      • addedOutput schema / additionalProperties
        Added value: +true
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "additionalProperties": true,
        -    "title": "Result",
        -    "type": "object"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / title
        Removed value: -"get_manifestOutput"
    • Changedget_resource_file12 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / project_dir / description
        Added value: +"Path to the APKTool project directory"
      • removedInput schema / properties / project_dir / title
        Removed value: -"Project Dir"
      • addedInput schema / properties / resource_name / description
        Added value: +"Name of the resource file"
      • removedInput schema / properties / resource_name / title
        Removed value: -"Resource Name"
      • addedInput schema / properties / resource_type / description
        Added value: +"Resource type (e.g., \"layout\", \"drawable\")"
      • removedInput schema / properties / resource_type / title
        Removed value: -"Resource Type"
      • removedInput schema / title
        Removed value: -"get_resource_fileArguments"
      • addedOutput schema / additionalProperties
        Added value: +true
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "additionalProperties": true,
        -    "title": "Result",
        -    "type": "object"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / title
        Removed value: -"get_resource_fileOutput"
    • Changedget_smali_file10 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / class_name / description
        Added value: +"Full class name (e.g., com.example.MyClass)"
      • removedInput schema / properties / class_name / title
        Removed value: -"Class Name"
      • addedInput schema / properties / project_dir / description
        Added value: +"Path to the APKTool project directory"
      • removedInput schema / properties / project_dir / title
        Removed value: -"Project Dir"
      • removedInput schema / title
        Removed value: -"get_smali_fileArguments"
      • addedOutput schema / additionalProperties
        Added value: +true
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "additionalProperties": true,
        -    "title": "Result",
        -    "type": "object"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / title
        Removed value: -"get_smali_fileOutput"
    • Addedget_workspace_info
    • Addedhealth_check
    • Changedlist_resources12 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / count
        Added value: +{
        +  "default": 0,
        +  "description": "Number of items to return (0 means use default)",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Starting offset for pagination",
        +  "type": "integer"
        +}
      • addedInput schema / properties / project_dir / description
        Added value: +"Path to the APKTool project directory"
      • removedInput schema / properties / project_dir / title
        Removed value: -"Project Dir"
      • addedInput schema / properties / resource_type / description
        Added value: +"Optional resource type to filter by (e.g., \"layout\", \"drawable\")"
      • removedInput schema / properties / resource_type / title
        Removed value: -"Resource Type"
      • removedInput schema / title
        Removed value: -"list_resourcesArguments"
      • addedOutput schema / additionalProperties
        Added value: +true
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "additionalProperties": true,
        -    "title": "Result",
        -    "type": "object"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / title
        Removed value: -"list_resourcesOutput"
    • Changedlist_smali_directories8 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / project_dir / description
        Added value: +"Path to the APKTool project directory"
      • removedInput schema / properties / project_dir / title
        Removed value: -"Project Dir"
      • removedInput schema / title
        Removed value: -"list_smali_directoriesArguments"
      • addedOutput schema / additionalProperties
        Added value: +true
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "additionalProperties": true,
        -    "title": "Result",
        -    "type": "object"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / title
        Removed value: -"list_smali_directoriesOutput"
    • Changedlist_smali_files14 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / count
        Added value: +{
        +  "default": 0,
        +  "description": "Number of items to return (0 means use default)",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Starting offset for pagination",
        +  "type": "integer"
        +}
      • addedInput schema / properties / package_prefix / description
        Added value: +"Optional package prefix to filter by (e.g., \"com.example\")"
      • removedInput schema / properties / package_prefix / title
        Removed value: -"Package Prefix"
      • addedInput schema / properties / project_dir / description
        Added value: +"Path to the APKTool project directory"
      • removedInput schema / properties / project_dir / title
        Removed value: -"Project Dir"
      • addedInput schema / properties / smali_dir / description
        Added value: +"Which smali directory to use (smali, smali_classes2, etc.)"
      • removedInput schema / properties / smali_dir / title
        Removed value: -"Smali Dir"
      • removedInput schema / title
        Removed value: -"list_smali_filesArguments"
      • addedOutput schema / additionalProperties
        Added value: +true
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "additionalProperties": true,
        -    "title": "Result",
        -    "type": "object"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / title
        Removed value: -"list_smali_filesOutput"
    • Changedmodify_resource_file16 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / create_backup / description
        Added value: +"Whether to create a backup of the original file"
      • removedInput schema / properties / create_backup / title
        Removed value: -"Create Backup"
      • addedInput schema / properties / new_content / description
        Added value: +"New content for the resource file"
      • removedInput schema / properties / new_content / title
        Removed value: -"New Content"
      • addedInput schema / properties / project_dir / description
        Added value: +"Path to the APKTool project directory"
      • removedInput schema / properties / project_dir / title
        Removed value: -"Project Dir"
      • addedInput schema / properties / resource_name / description
        Added value: +"Name of the resource file"
      • removedInput schema / properties / resource_name / title
        Removed value: -"Resource Name"
      • addedInput schema / properties / resource_type / description
        Added value: +"Resource type (e.g., \"layout\", \"values\")"
      • removedInput schema / properties / resource_type / title
        Removed value: -"Resource Type"
      • removedInput schema / title
        Removed value: -"modify_resource_fileArguments"
      • addedOutput schema / additionalProperties
        Added value: +true
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "additionalProperties": true,
        -    "title": "Result",
        -    "type": "object"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / title
        Removed value: -"modify_resource_fileOutput"
    • Changedmodify_smali_file14 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / class_name / description
        Added value: +"Full class name (e.g., com.example.MyClass)"
      • removedInput schema / properties / class_name / title
        Removed value: -"Class Name"
      • addedInput schema / properties / create_backup / description
        Added value: +"Whether to create a backup of the original file"
      • removedInput schema / properties / create_backup / title
        Removed value: -"Create Backup"
      • addedInput schema / properties / new_content / description
        Added value: +"New content for the smali file"
      • removedInput schema / properties / new_content / title
        Removed value: -"New Content"
      • addedInput schema / properties / project_dir / description
        Added value: +"Path to the APKTool project directory"
      • removedInput schema / properties / project_dir / title
        Removed value: -"Project Dir"
      • removedInput schema / title
        Removed value: -"modify_smali_fileArguments"
      • addedOutput schema / additionalProperties
        Added value: +true
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "additionalProperties": true,
        -    "title": "Result",
        -    "type": "object"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / title
        Removed value: -"modify_smali_fileOutput"
    • Changedsearch_in_files17 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / case_sensitive
        Added value: +{
        +  "default": false,
        +  "description": "Whether search should be case sensitive",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / count
        Added value: +{
        +  "default": 0,
        +  "description": "Number of items to return (0 means use default)",
        +  "type": "integer"
        +}
      • addedInput schema / properties / file_extensions / description
        Added value: +"List of file extensions to search in"
      • removedInput schema / properties / file_extensions / title
        Removed value: -"File Extensions"
      • addedInput schema / properties / max_results / description
        Added value: +"Maximum total results to collect before pagination"
      • removedInput schema / properties / max_results / title
        Removed value: -"Max Results"
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Starting offset for pagination",
        +  "type": "integer"
        +}
      • addedInput schema / properties / project_dir / description
        Added value: +"Path to the APKTool project directory"
      • removedInput schema / properties / project_dir / title
        Removed value: -"Project Dir"
      • addedInput schema / properties / search_pattern / description
        Added value: +"Text pattern to search for"
      • removedInput schema / properties / search_pattern / title
        Removed value: -"Search Pattern"
      • removedInput schema / title
        Removed value: -"search_in_filesArguments"
      • addedOutput schema / additionalProperties
        Added value: +true
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "additionalProperties": true,
        -    "title": "Result",
        -    "type": "object"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / title
        Removed value: -"search_in_filesOutput"
  2. 13 tool updatesv1.0.0
    • First observedbuild_apk
    • First observedclean_project
    • First observeddecode_apk
    • First observedget_apktool_yml
    • First observedget_manifest
    • First observedget_resource_file
    • First observedget_smali_file
    • First observedlist_resources
    • First observedlist_smali_directories
    • First observedlist_smali_files
    • First observedmodify_resource_file
    • First observedmodify_smali_file
    • First observedsearch_in_files

TDQS

A3.6/5.0

Scored across 16 tools

Disambiguation5/5

Each tool targets a distinct action or resource type (e.g., decode vs build, smali vs manifest vs resources). There is no ambiguity between tools; even list tools separate directories, files, and resources clearly.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with lowercase and underscores. Verbs like get, list, modify, build are used predictably, making the naming scheme uniform and easy to navigate.

Tool Count5/5

16 tools cover the core APK decoding, building, analysis, and modification workflows without being excessive. The count is well-scoped for the domain and each tool serves a distinct purpose.

Completeness4/5

The set covers primary CRUD operations for resources and smali files, plus decode/build/analyze. A minor gap is the lack of a modify_apktool_yml tool, but overall the surface is comprehensive for typical APKTool tasks.

Maintenance

ActivityInactive
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An 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
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that integrates Ghidra for binary analysis, enabling decompilation, disassembly, and advanced reverse engineering tasks through Claude Code.
    16
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    MCP server that allows LLMs to autonomously reverse engineer applications using Ghidra, exposing tools like decompilation, renaming, and listing methods.
    27
    Apache 2.0