Skip to main content
Glama

app_data_archive

Back up or restore an Android app's CE/DE private data as a tar archive with a SHA256 manifest; restore validates paths, saves pre-restore data, and reapplies UID/SELinux.

Instructions

Backup/restore one app's CE or DE private data as tar+SHA256 manifest. Stops app. Restore validates member paths/manifest, keeps pre-restore data backup, restores UID/SELinux; replaces data, leaves app stopped. Keystore/TEE/external storage excluded.

Input Schema

NameRequiredDescriptionDefault
actionYes
packageYes
storageNoce
user_idNo
local_pathYes

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv2.0.0

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden and does substantial work: it discloses that the app is stopped, that restore replaces the data and leaves the app stopped, that member paths and the manifest are validated, that a pre-restore backup is retained, and that UID/SELinux context is restored. It omits privilege requirements (root/shell), error/failure behavior, and whether a failed validation aborts before mutation, which matter for a destructive operation.

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 purpose and output format are front-loaded in the first sentence, and every subsequent clause carries operational information with no filler. It is written in dense telegraphic fragments ('Stops app.', 'replaces data, leaves app stopped') that save tokens but slightly reduce readability.

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 mutating, side-effect-heavy tool with no annotations, the description covers the important behavioral surface: app stoppage, data replacement, pre-restore backup, and validation. An output schema exists so return values need no explanation, but the absence of any privilege/root requirement or user_id semantics leaves a gap given 0% schema coverage.

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 for all five parameters. It implies the 'action' values (backup/restore), explains 'storage' as CE vs DE, and bounds 'package' to one app, but never enumerates the accepted action strings, gives no format for local_path beyond 'tar+SHA256 manifest', and never mentions user_id at all.

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 gives a specific verb pair (backup/restore), a precise resource (one app's CE or DE private data), and an output format (tar + SHA256 manifest), so an agent can tell this apart from read-only siblings like inspect_app_data. It stops short of naming a sibling or stating an explicit contrast, so it is clear but not fully differentiating.

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?

'Backup/restore one app's ... data' establishes the use case, and 'Keystore/TEE/external storage excluded' states a when-not boundary for data coverage. It does not route the agent to an alternative when the target data falls outside that boundary (e.g., use file_transfer_root or inspect_app_data instead), so the alternatives half of the guidance is missing.

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