Skip to main content
Glama

Ensure App

mobile_ensure_app

Ensure a mobile app is installed on a device; if missing, install from a local package, then optionally launch and verify readiness.

Instructions

Ensure an app is installed, optionally install it from a local package when it is missing, and optionally launch it with foreground/readiness verification. Use mobile_launch_and_ready when a screenshot snapshot is needed in the same call.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
modeNoresume keeps the existing app task; cold force-stops the package before launching and is opt-inresume
deviceYesThe device identifier to use. Use mobile_list_available_devices to find which devices are available to you.
launchNoLaunch after ensuring installation. Defaults to true.
localeNoComma-separated BCP 47 locale tags to launch the app with.
appNameNoApp label in the device's current locale.
appPathNoLocal .apk, .ipa, .app, or .zip to install if the app is not present.
waitForNoReadiness conditions after launch. Foreground defaults to true.
packageNameNoExact Android package name or iOS bundle identifier.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.0.1

TDQS

A4.2/5.0
Behavior4/5

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

The description clearly discloses the compound side effects: it can install an app when missing and launch it, which aligns with readOnlyHint=false and destructiveHint=false. It adds behavior beyond annotations by explaining the conditional install and verification steps, though it does not mention edge cases like overwrite semantics or the cold-mode force-stop, which are covered only 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.

Conciseness5/5

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

Two sentences with zero filler. The first sentence front-loads the core purpose and optional behaviors; the second provides a precise alternative. Every word earns its place.

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 tool with 8 parameters, a nested waitFor object, and no output schema, the description gives a clear high-level flow: ensure install, optionally install, optionally launch with verification, and points to the sibling for screenshot needs. It does not state what the tool returns or how failures are reported, but the schema covers parameter details, so the orientation is largely sufficient.

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 baseline is 3. The description adds only indirect mapping ('local package' implies appPath, 'foreground/readiness verification' implies waitFor) and does not clarify any parameter interactions, such as the requirement for appPath when the app is missing or the semantics of mode. It adds no meaning beyond what the schema already documents.

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-resource pair: 'Ensure an app is installed', with explicit optional behaviors (install from local package if missing, launch with foreground/readiness verification). It also distinguishes itself from the sibling mobile_launch_and_ready by naming the exact condition for choosing that alternative, so an agent can tell the tools apart.

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?

The description gives clear context for when to use this tool: when an app needs to be ensured installed and then optionally launched. It explicitly routes to mobile_launch_and_ready when a screenshot snapshot is needed, but it does not mention other alternatives like mobile_install_app or mobile_launch_app or their exclusion conditions, leaving some inference to the agent.

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