Skip to main content
Glama
droidasc-mcp

droidasc-mcp

by cnlnn

asc_diff_dex_sessions

Compare two open DEX sessions to list added, removed, or all changed class, method, and field identities using full descriptors and old/new source hashes.

Instructions

Compare class/member identities with full descriptors and old/new source hashes.

Uses native DEX declarations without Java or an instruction index. Unchanged identities say nothing about changed behavior, access flags, annotations or bodies. Inventory is bounded to 1M identities and 64 MiB of cumulative declaration records.

Input Schema

NameRequiredDescriptionDefault
kindNoDeclaration identity kind to compareall
limitNoChanged declaration page size, server-capped
changeNoChange filter applied before pagingall
offsetNoZero-based offset in sorted changed descriptors
new_session_idYesOpen immutable candidate revision session ID
old_session_idYesOpen immutable baseline session ID

Output Schema

NameRequiredDescriptionDefault
codeNo
itemsNo
limitNo
scopeNo
totalNo
countsNo
moduleNo
offsetNo
statusYes
backendNo
messageNo
sourcesNo
apk_pathNo
coverageNo
has_moreNo
input_idNo
truncatedNo
apk_sha256No
session_idNo
limitationsNo
new_sourcesNo
next_offsetNo
old_sourcesNo
new_input_idNo
old_input_idNo
artifact_pathNo
new_session_idNo
old_session_idNo
artifact_sha256No
backend_versionNo
selected_modulesNo
behavior_comparisonNo
declaration_attributes_comparisonNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed11 schema fields changedv0.2.5
    • 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. Changed6 schema fields changedv0.2.4
    • removedOutput schema / $defs / DiffRow / properties / new_dex_entry / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / $defs / DiffRow / properties / new_dex_entry / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / $defs / DiffRow / properties / old_dex_entry / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / $defs / DiffRow / properties / old_dex_entry / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / next_offset / anyOf
      Removed value: -[
      -  {
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / next_offset / type
      Added value: +[
      +  "integer",
      +  "null"
      +]
  3. Addedv0.2.3

TDQS

A3.6/5.0
Behavior3/5

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

Adds real context beyond the annotations: the no-Java/no-instruction-index basis and the hard caps of 1M identities and 64 MiB of cumulative declaration records. However, annotations declare readOnlyHint=false for what reads like a pure comparison over already-open immutable sessions, and the description never explains any side effect or session-state requirement, leaving that inconsistency unaddressed.

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?

Front-loads the purpose in the first sentence and follows with scope-limiting caveats. Three short sentences with little waste, though the caveats could be tighter and the bound sentence sits apart from the usage warning it belongs with.

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?

Output schema exists, all parameters are described, and annotations cover safety. The description supplies the resource bounds and the semantic limitation of identity-only diffs, so an agent has nearly everything needed; only the readOnlyHint=false discrepancy and the lack of a named alternative are gaps.

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% and each parameter (kind, change, limit, offset, session IDs) is documented inline, so the schema carries the load. The description mentions only the comparison subject and hash fields, adding no semantics for filtering, paging, or sort order beyond what the schema states.

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

Purpose4/5

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

States a specific verb and resource: compare class/member identities, with full descriptors and old/new source hashes across two sessions. This distinguishes it from query/analyze siblings, though it never explicitly contrasts itself with asc_analyze_dex or asc_query_dex_session.

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

Usage Guidelines4/5

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

Gives clear operating context: it uses native DEX declarations without Java or an instruction index, and warns that unchanged identities say nothing about changed bodies, access flags or annotations. That implies when it is insufficient, but no alternative tool is named for the cases it cannot cover.

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