Skip to main content
Glama
droidasc-mcp

droidasc-mcp

by cnlnn

asc_inspect_artifact

Read-only

Inspect Android artifacts to inventory container capabilities, JVM classes, and module summaries before selecting a DEX analysis workflow, and compare JVM class identities when needed.

Instructions

Inspect container capabilities before selecting a DEX analysis workflow.

JVM classes and nested APK splits are inventory-only. First-level JAR class names are included. compare_to compares JVM identities; DEX declarations use session diff. AAB selects base, an exact module, an explicit list or * for all modules. Nested APKs are not reconstructed. include_summary describes the input artifact, including when compare_to is set. Manifest diagnostics are separate from inventory status; AAB protobuf XML is not decoded.

Input Schema

NameRequiredDescriptionDefault
limitNoEntry page size, server-capped
moduleNoAAB exact module, 1-100 distinct names, or * for all; omitted selects base
offsetNoZero-based offset in sorted capability entries
compare_toNoOptional newer artifact for JVM class inventory comparison
class_queryNoCase-insensitive literal substring of JVM class names
class_prefixNoJVM class prefix in dotted or Dalvik form
artifact_pathYesAPK/JAR/AAR/AAB/APKS/XAPK/ZIP path within allowed roots
include_summaryNoInclude compact manifest header, entry count and native ABI inventory
max_uncompressed_bytesNoNested JAR and optional manifest byte budget; input limit applies

Output Schema

NameRequiredDescriptionDefault
codeNo
itemsNo
limitNo
totalNo
moduleNo
offsetNo
statusYes
backendNo
messageNo
modulesNo
sourcesNo
summaryNo
apk_pathNo
coverageNo
has_moreNo
input_idNo
truncatedNo
apk_sha256No
session_idNo
dex_entriesNo
limitationsNo
next_offsetNo
dex_analysisNo
artifact_kindNo
artifact_pathNo
artifact_sha256No
backend_versionNo
jvm_class_countNo
selected_moduleNo
nested_apk_countNo
selected_modulesNo
jvm_decompilationNo
split_reconstructionNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed18 schema fields changedv0.2.5
    • changedInput schema / properties / module / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / module / description
      Previous value: -"Exact AAB module; omitted selects base, other formats omit"New value: +"AAB exact module, 1-100 distinct names, or * for all; omitted selects base"
    • addedOutput schema / $defs / ArtifactSummary / properties / manifests
      Added value: +{
      +  "items": {
      +    "$ref": "#/$defs/ManifestHeader"
      +  },
      +  "title": "Manifests",
      +  "type": "array"
      +}
    • changedOutput schema / $defs / ArtifactSummary / properties / native_scope / enum
      Previous value: -[
      -  "archive",
      -  "selected_module"
      -]New value: +[
      +  "archive",
      +  "selected_module",
      +  "selected_modules"
      +]
    • changedOutput schema / $defs / ArtifactSummary / required
      Previous value: -[
      -  "entry_count",
      -  "native_scope",
      -  "native_library_count",
      -  "native_abis",
      -  "native_abi_count",
      -  "native_abis_truncated",
      -  "manifest"
      -]New value: +[
      +  "entry_count",
      +  "native_scope",
      +  "native_library_count",
      +  "native_abis",
      +  "native_abi_count",
      +  "native_abis_truncated"
      +]
    • addedOutput schema / $defs / Entry / properties / module
      Added value: +{
      +  "title": "Module",
      +  "type": "string"
      +}
    • addedOutput schema / $defs / ManifestHeader / properties / module
      Added value: +{
      +  "title": "Module",
      +  "type": "string"
      +}
    • addedOutput schema / $defs / Source / properties / container_sha256
      Added value: +{
      +  "title": "Container Sha256",
      +  "type": "string"
      +}
    • addedOutput schema / $defs / Source / properties / container_size_bytes
      Added value: +{
      +  "title": "Container Size Bytes",
      +  "type": "integer"
      +}
    • addedOutput schema / $defs / Source / properties / logical_header_offset
      Added value: +{
      +  "title": "Logical Header Offset",
      +  "type": "integer"
      +}
    • addedOutput schema / $defs / Source / properties / logical_size_bytes
      Added value: +{
      +  "title": "Logical Size Bytes",
      +  "type": "integer"
      +}
    • addedOutput schema / $defs / Source / properties / module
      Added value: +{
      +  "title": "Module",
      +  "type": "string"
      +}
    • addedOutput schema / $defs / Source / properties / normalization
      Added value: +{
      +  "title": "Normalization",
      +  "type": "string"
      +}
    • addedOutput schema / $defs / Source / properties / original_dex_version
      Added value: +{
      +  "title": "Original Dex Version",
      +  "type": "string"
      +}
    • addedOutput schema / $defs / Source / properties / snapshot_entry
      Added value: +{
      +  "title": "Snapshot Entry",
      +  "type": "string"
      +}
    • addedOutput schema / $defs / Source / properties / stored_size_bytes
      Added value: +{
      +  "title": "Stored Size Bytes",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / module
      Added value: +{
      +  "title": "Module",
      +  "type": "string"
      +}
    • addedOutput schema / properties / selected_modules
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "title": "Selected Modules",
      +  "type": "array"
      +}
  2. Changed11 schema fields changedv0.2.4
    • addedInput schema / properties / include_summary
      Added value: +{
      +  "default": false,
      +  "description": "Include compact manifest header, entry count and native ABI inventory",
      +  "title": "Include Summary",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / max_uncompressed_bytes / description
      Previous value: -"Nested classes.jar byte budget; server input limit also applies"New value: +"Nested JAR and optional manifest byte budget; input limit applies"
    • addedOutput schema / $defs / ArtifactSummary
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "entry_count": {
      +      "title": "Entry Count",
      +      "type": "integer"
      +    },
      +    "manifest": {
      +      "$ref": "#/$defs/ManifestHeader"
      +    },
      +    "native_abi_count": {
      +      "title": "Native Abi Count",
      +      "type": "integer"
      +    },
      +    "native_abis": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "title": "Native Abis",
      +      "type": "array"
      +    },
      +    "native_abis_truncated": {
      +      "title": "Native Abis Truncated",
      +      "type": "boolean"
      +    },
      +    "native_library_count": {
      +      "title": "Native Library Count",
      +      "type": "integer"
      +    },
      +    "native_scope": {
      +      "enum": [
      +        "archive",
      +        "selected_module"
      +      ],
      +      "title": "Native Scope",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "entry_count",
      +    "native_scope",
      +    "native_library_count",
      +    "native_abis",
      +    "native_abi_count",
      +    "native_abis_truncated",
      +    "manifest"
      +  ],
      +  "title": "ArtifactSummary",
      +  "type": "object"
      +}
    • removedOutput schema / $defs / Entry / properties / abi / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / $defs / Entry / properties / abi / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • addedOutput schema / $defs / ManifestHeader
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "application_name": {
      +      "title": "Application Name",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "code": {
      +      "title": "Code",
      +      "type": "string"
      +    },
      +    "decoding_warnings": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "title": "Decoding Warnings",
      +      "type": "array"
      +    },
      +    "entry": {
      +      "title": "Entry",
      +      "type": "string"
      +    },
      +    "message": {
      +      "title": "Message",
      +      "type": "string"
      +    },
      +    "min_sdk": {
      +      "title": "Min Sdk",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "package_name": {
      +      "title": "Package Name",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "resource_values_resolved": {
      +      "const": false,
      +      "title": "Resource Values Resolved",
      +      "type": "boolean"
      +    },
      +    "status": {
      +      "enum": [
      +        "ok",
      +        "error",
      +        "not_applicable"
      +      ],
      +      "title": "Status",
      +      "type": "string"
      +    },
      +    "target_sdk": {
      +      "title": "Target Sdk",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "version_code": {
      +      "title": "Version Code",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "version_name": {
      +      "title": "Version Name",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "xml_format": {
      +      "enum": [
      +        "text_xml",
      +        "android_binary_xml"
      +      ],
      +      "title": "Xml Format",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "status",
      +    "entry"
      +  ],
      +  "title": "ManifestHeader",
      +  "type": "object"
      +}
    • removedOutput schema / properties / next_offset / anyOf
      Removed value: -[
      -  {
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / next_offset / type
      Added value: +[
      +  "integer",
      +  "null"
      +]
    • removedOutput schema / properties / selected_module / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / selected_module / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • addedOutput schema / properties / summary
      Added value: +{
      +  "$ref": "#/$defs/ArtifactSummary"
      +}
  3. Addedv0.2.3

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare readOnly/destructive=false, so safety is covered; the description goes further with real limitations: nested APK splits are inventory-only and not reconstructed, first-level JAR class names only, AAB protobuf XML is not decoded, and manifest diagnostics are separate from inventory status. These are non-obvious scope boundaries an agent could not get from the schema, though the phrasing is terse and omits any note on result ordering/paging behavior.

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?

It is short, but it reads as a stack of decontextualized caveat fragments ("First-level JAR class names are included.") with no lead sentence establishing the primary behavior. Facts are present but not front-loaded by importance, so the agent must assemble the mental model itself.

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?

An output schema exists, so return values needn't be spelled out, and the caveats cover many edge cases. However, for a 9-parameter tool the description never states the core output (per-artifact capability inventory) or how inventory and summary outputs relate, leaving a gap in the agent's ability to predict results before calling.

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% and the parameter descriptions are already detailed (module semantics, limit/offset paging, compare_to), so the baseline is 3. The description reinforces module selection and adds that include_summary still describes the input artifact when compare_to is set, but most statements (AAB base/exact/list/*) simply restate the schema.

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

Purpose3/5

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

The opening line states a verb and rough resource ("Inspect container capabilities"), and the artifact_path schema clarifies the container types. But it never plainly says what the tool returns (a capability/entry inventory per artifact) and never distinguishes it from close siblings like asc_apk_info, asc_list_apk_entries, or asc_list_classes, so an agent must infer the split.

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?

"before selecting a DEX analysis workflow" implies a positioning step, and "compare_to compares JVM identities; DEX declarations use session diff" gives one routing rule toward asc_diff_dex_sessions. There is no explicit when-to-use/when-not guidance against the other artifact-inspection siblings, leaving the main selection decision unresolved.

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