Skip to main content
Glama
HaizhuAI

android-apk-orchestrator

by HaizhuAI

Android APK Orchestrator

把这七个 Codex 安卓逆向 skill 合成 一个 skill + 一个 MCP 服务器

  1. android-reverse-engineering

  2. ghidra_idareverseengineeringskill

  3. ghidra-rpc-main

  4. protocol-reverse-engineering

  5. reverse-api-engineer-main

  6. reverse-engineering-android-malware-with-jadx

  7. reverse-engineering-tools

APK 进来后,调度器按 DAG 把工作分给七个 specialist agent 并行跑,再汇总 REPORT.md。Codex 父代理只读本 skill,子代理才去加载各自原来的 SKILL.md

架构

User / Codex
    |  $android-apk-orchestrator
    v
MCP android-apk-orchestrator
    |  apk_orchestrate
    +-- wave1 parallel: decompile | native | tools
    +-- wave2 parallel: malware | api | protocol | ghidra_rpc
    v
case/
  original/          原始 APK 副本
  fingerprint.json
  derived/jadx/      反编译
  derived/native/    .so
  derived/api_client.py
  agents/<name>/result.json
  REPORT.md

Related MCP server: Frida Agent MCP

安装

cd D:\HaizhuAI\android-apk-orchestrator
powershell -ExecutionPolicy Bypass -File .\scripts\install.ps1

安装脚本会:

  • uv sync 装 MCP / androguard

  • junction ~/plugins/android-apk-orchestrator

  • junction ~/.codex/skills/android-apk-orchestrator

  • 写入 Codex config.toml 的 MCP 条目

然后新开一条 Codex 线程。

命令

uv run python -m android_apk_orchestrator agents
uv run python -m android_apk_orchestrator fingerprint .\app.apk
uv run python -m android_apk_orchestrator orchestrate .\app.apk -o .\app_case
uv run python -m android_apk_orchestrator orchestrate .\app.apk -o .\app_case --extras .\capture.har --agents decompile,malware,api
uv run python -m android_apk_orchestrator serve

无参数启动即 MCP stdio。

MCP tools

  • apk_list_agents

  • apk_create_case

  • apk_fingerprint

  • apk_orchestrate

  • apk_dispatch

  • apk_status

  • apk_report

Codex 用法

把 APK 丢给 Codex 并说「反编译 / 安卓逆向 / 提取 API」。本 skill 会隐式激活,先跑 apk_orchestrate,再按 references/agent-contracts.md 把七个插件分给子智能体。

测试

uv run pytest -q

Available Tools

7 tools
apk_create_caseC

Hash and preserve an APK/XAPK, then write a case workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
extrasNo
apk_pathYes
case_dirNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does reveal the main side effects: hashing the APK, preserving it, and writing a case workspace, which at least implies a non-destructive operation. However, it doesn't disclose what 'preserve' concretely does (copy, move, archive), whether an existing case_dir is overwritten or appended to, whether directories are created, or what failure modes exist.

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 of about a dozen words with no filler, and the action sequence is front-loaded ('Hash and preserve... then write...'). It earns its place efficiently, though its brevity is partly responsible for the gaps in usage and parameter guidance.

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?

For a tool that creates a case workspace with side effects, the description is a skeleton. It doesn't explain the purpose of extras, the relationship between apk_path and case_dir, what the resulting workspace contains, or behavior when the case already exists. The presence of an output schema reduces the need to describe return values, but the input-side ambiguities remain unresolved.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it only does so partially. It tells the agent that apk_path refers to an APK/XAPK file and hints that 'case workspace' maps to case_dir, but it says nothing about the extras parameter at all. With three parameters and zero schema descriptions, leaving one parameter completely unexplained is a meaningful gap.

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 states specific actions ('Hash and preserve') on a specific resource ('an APK/XAPK') followed by a concrete outcome ('write a case workspace'). This clearly names the tool's function and distinguishes it from siblings like apk_fingerprint, which would only fingerprint, by adding the case-workspace creation step. However, it doesn't explicitly contrast against siblings, and 'preserve' is slightly ambiguous about what preservation entails.

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?

There is no guidance on when to use this tool versus alternatives. Given sibling tools like apk_fingerprint (which likely overlaps on hashing) and apk_dispatch/apk_orchestrate (which may handle case workflows), an agent gets no signal about which tool fits which scenario. The 'preserve' wording implies evidence-collection use, but that is never made explicit, and no exclusions or prerequisites are stated.

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

apk_dispatchB

Run selected specialist agents in wave order against an existing case.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentsNo
case_dirYes

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 provided, the description carries the full burden of behavioral disclosure. It mentions that agents run 'in wave order' and that the case must already exist, but it does not disclose side effects, whether the operation is synchronous or asynchronous, whether the case is modified, or any permission or safety considerations.

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 with no filler. Every word contributes to the meaning, and the verb + object structure makes the purpose immediately scannable.

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 is still under-specified for a tool with no annotations, multiple siblings, and no explicit usage conditions. It leaves 'wave order' undefined, does not explain expected agent input values, and gives no guidance on how this relates to apk_orchestrate or apk_list_agents, making it incomplete for confident tool selection and invocation.

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 0%, so the description must compensate. It does add meaning by tying 'selected specialist agents' to the agents parameter and 'existing case' to case_dir, which goes beyond the bare schema titles. However, it does not explain accepted values, formats, or the meaning of the default null for agents, so it only partially compensates.

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 a specific action ('Run'), a resource ('specialist agents'), and a condition ('against an existing case'). It communicates the core purpose well, but it does not explicitly differentiate itself from the sibling apk_orchestrate, so it falls short of a 5.

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 phrase 'against an existing case' implies the tool should be used only after a case exists, which is useful contextual guidance. However, there is no explicit mention of when not to use it, no reference to alternatives like apk_orchestrate or apk_create_case, and no guidance on prerequisites such as first listing available agents.

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

apk_fingerprintA

Fast framework/HTTP/SDK/native fingerprint without a full decompile.

ParametersJSON Schema
NameRequiredDescriptionDefault
apk_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the full disclosure burden. It does add genuine behavioral context — 'fast' and 'without a full decompile' signal a lightweight, presumably non-destructive analysis pass. But it is silent on side effects, whether output is persisted to a case/file, preconditions on the APK, and failure behavior.

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?

A single nine-word sentence that front-loads the operation and scope, then ends with the cost qualifier ('without a full decompile'). Every word carries signal with zero filler or repetition of the tool name.

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?

For a one-required-parameter tool with an output schema present, the core action is adequately covered and return values need not be re-explained. But the description omits how this fits the sibling workflow (e.g., whether a case must exist first), any preconditions on the APK, and what consuming the fingerprint entails. The output schema mitigates the return-format gap, but overall context is thin.

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 0% and the description never mentions apk_path explicitly, so the burden is on the description to compensate. The tool name and fingerprinting context make it inferable that apk_path is the path of the APK to fingerprint, but no format, locality (local vs. remote), or validation semantics are given. Weak compensation for a low-coverage schema.

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 states a specific operation — fingerprinting an APK — with an explicit scope: framework/HTTP/SDK/native characteristics. The qualifier 'without a full decompile' plus the unique 'fingerprint' concept cleanly separates it from the sibling suite (create_case, dispatch, status, report, etc.), none of which overlap. It stops short of 5 because the verb is implicit ('fingerprint' used as a noun-as-verb) and it doesn't state what form the fingerprint output takes.

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?

'Without a full decompile' and 'fast' implicitly position this as the lightweight option when a quick fingerprint suffices, implying that a full decompile path is the alternative. However, no sibling tool is named, and there is no explicit when-to-use/when-not-to-use guidance relative to the case/dispatch/orchestrate workflow.

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

apk_list_agentsA

List the seven specialist agents, source skills, and availability.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does state the action and output content, but it does not explicitly address side effects, whether the operation is read-only, or edge behavior such as whether unavailable agents are omitted or listed as unavailable. The 'List' verb implies safety, but only implicitly.

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 with no filler. Every word conveys needed information: the action, the target entities, and the specific fields returned.

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 zero-parameter, output-schema-bearing listing tool, the description is largely complete: it names the exact content of the response. The only gap is the absence of explicit guidance about when to use this tool in a workflow, which is a minor omission given the low complexity.

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 and the input schema is empty with 100% schema description coverage. There is nothing for the description to add about parameters, so the baseline of 4 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 uses a specific verb and resource: 'List the seven specialist agents' and names the returned content ('source skills, and availability'). This clearly distinguishes it from sibling tools like apk_dispatch or apk_report, which perform different actions.

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 intended use is implied by the verb 'List' and by being the only listing tool among its siblings, but the description does not explicitly state when to use it versus alternatives or how it relates to preceding actions like apk_dispatch. There is no exclusions or conditional guidance.

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

apk_orchestrateC

Run the full 7-agent Android reverse pipeline and write REPORT.md.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentsNo
extrasNo
apk_pathYes
case_dirNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/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 discloses that the tool runs a multi-agent pipeline and writes REPORT.md, which is useful, but it omits side effects, whether it is long-running or asynchronous, whether existing files are overwritten, and what the output schema represents.

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?

A single sentence with no filler or redundant words. The action, scope, and deliverable are front-loaded, making it easy to read and remember.

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?

For a complex orchestration tool with four parameters, zero parameter documentation, and no behavioral notes, the description is too thin. Even though an output schema exists, the agent cannot know the meaning of 'agents'/'extras'/'case_dir' or important operational details needed to invoke the tool correctly.

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

Parameters1/5

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

Schema description coverage is 0%, and the description explains none of the four parameters: apk_path, agents, extras, and case_dir. The agent is left without any meaning for the optional parameters or how they affect orchestration.

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 clear verb and resource: 'Run the full 7-agent Android reverse pipeline and write REPORT.md.' The reference to 'full 7-agent' distinguishes this aggregate orchestration from the more granular sibling tools, though it does not explicitly name alternatives.

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 gives no explicit guidance about when to use this tool versus apk_dispatch, apk_report, or other siblings. There are no conditions, prerequisites, or exclusions; only the phrase 'full 7-agent pipeline' implies the intended scope.

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

apk_reportC

Return the synthesized report path and agent index if present.

ParametersJSON Schema
NameRequiredDescriptionDefault
case_dirYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/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 of behavioral disclosure. It indicates a read-like 'Return' behavior, but it does not explain whether any report is generated on the fly, whether case_dir must exist, or what 'if present' means operationally.

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 with no filler or repetition, and it front-loads the main action. It is concise and structurally easy to parse, though it could be more informative without sacrificing brevity.

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?

The tool has only one required parameter and an output schema, so the description does not need to explain return structure. However, it omits when this tool should be invoked relative to siblings, what case_dir must contain, and whether the report is already synthesized or synthesized by this call.

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

Parameters1/5

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

Schema description coverage is 0% and the description never mentions case_dir. The agent must infer the parameter's meaning entirely from its name, with no help from the tool description. This is a significant gap for a required parameter.

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 states a specific action ('Return') and a clear resource (the synthesized report path), with an additional optional element (agent index). It is reasonably clear, but it does not explicitly differentiate from sibling tools like apk_status or apk_list_agents.

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 gives no guidance on when to use this tool versus alternatives. It does not mention prerequisites, such as a completed case or prior orchestration, nor does it reference any sibling tool or condition for selection.

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

apk_statusC

Read case status.json written by the orchestrator.

ParametersJSON Schema
NameRequiredDescriptionDefault
case_dirYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description explicitly labels the operation as a read, disclosing its read-only nature. It adds context about the file's origin ('written by the orchestrator'), but does not describe error behavior or what happens if the file is missing.

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 with no wasted words. It is front-loaded with the action and resource, though it could contain slightly more useful context without becoming 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?

The tool is simple with one parameter and an output schema, so the description need not detail return values. However, it omits any explanation of case_dir semantics or how the path relates to the orchestrator's output, leaving some ambiguity.

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

Parameters1/5

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

The schema provides no description for case_dir (0% coverage), and the tool description does not mention the parameter at all. The agent is left to infer the parameter's meaning solely from its name.

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 uses a specific verb 'Read' and a clear resource 'case status.json written by the orchestrator.' This distinguishes it from sibling tools like apk_orchestrate or apk_report, though it doesn't explicitly name alternatives.

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 gives no guidance on when to use this tool versus siblings, nor any exclusions or prerequisites. The only implicit context is that the file is produced by the orchestrator.

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

TDQS

B3.4/5.0
Disambiguation5/5

Each tool targets a distinct stage or concern in the APK orchestration pipeline: agent discovery, case creation, fingerprinting, dispatch, full orchestration, status, and report retrieval. Even status and report are clearly separated: status reads the machine-readable state, while report returns the synthesized output path.

Naming Consistency4/5

All tools share the consistent 'apk_' prefix and mostly follow a verb-like action pattern such as list, create, dispatch, orchestrate. Minor deviations are apk_status and apk_report, which read more like noun endpoints than actions, but the overall convention remains predictable and readable.

Tool Count5/5

Seven tools is well-scoped for an APK orchestration server. Each tool maps to a meaningful workflow step without redundancy or unnecessary surface area, and the count supports both targeted operations and a full pipeline run.

Completeness4/5

The tool set covers the full orchestration lifecycle: discovery, case creation, targeted analysis, dispatch, full pipeline execution, status polling, and report access. Minor gaps exist around managing existing cases or retrieving individual agent artifacts, but agents can complete the core workflow without dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides a one-stop automated solution for Android APK security analysis by integrating tools like JEB, JADX, APKTOOL, FlowDroid, and MobSF into unified MCP standard API interfaces.
    11
  • F
    license
    A
    quality
    F
    maintenance
    An AI-driven Android dynamic analysis tool that enables AI models to perform automated reverse engineering by controlling Frida. It provides capabilities to inject scripts, manage application processes, and analyze real-time execution data through the Model Context Protocol.
    10
    67

Latest Blog Posts

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/HaizhuAI/android-apk-orchestrator'

If you have feedback or need assistance with the MCP directory API, please join our Discord server