Skip to main content
Glama

Robot Actions — Remote Device Control

ios_launch_app

Launch/activate an app on an iOS device by bundle ID. With no arguments it ACTIVATES — resuming the app in place and keeping its state — using the automation session when one is up and the direct device transport otherwise. Pass arguments to force a COLD relaunch with that argv instead (launch arguments are ignored on an already-running process, so the app is killed first). Arguments land in the process's argv, which is where NSUserDefaults reads its argument domain from, e.g. ["-AppleLanguages", "(fr)"] or your own debug flags; the override lives for that launch only.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
udidYesiOS device UDID
bundleIdYesApp bundle ID to launch
argumentsNoOptional launch arguments (argv). Omit for a plain activate; supplying any forces a cold relaunch.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / arguments
      Added value: +{
      +  "description": "Optional launch arguments (argv). Omit for a plain activate; supplying any forces a cold relaunch.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  2. First observed

TDQS

A4.6/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 burden. It discloses that activation preserves state, cold relaunch kills the app first, and that arguments are passed to argv where NSUserDefaults reads from. It also notes that the override lives only for that launch. This is rich behavioral context beyond the schema, though it could mention side effects like terminating the current instance or any permission requirements.

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 paragraph that is detailed but not overly verbose. It front-loads the core action and the key branching behavior (with/without arguments) before diving into implementation details. Every sentence adds value: the transport choice, the kill-before-relaunch rationale, and the NSUserDefaults connection. Slightly long for a tool description, but justified given the complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 parameters, no output schema, and no annotations, the description covers all necessary information: the two modes, how arguments affect behavior, where they land, and the scope of the override. The agent can correctly invoke the tool in either mode without needing external context. It even explains the transport mechanism (automation session vs. direct device), which is useful for understanding connectivity.

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?

Schema description coverage is 100%, so each parameter (udid, bundleId, arguments) is documented. The description adds semantics for 'arguments': it explains the meaning of omitting vs. providing it, and how they map to argv and NSUserDefaults. This goes beyond the schema's simple 'Optional launch arguments (argv)' by detailing the behavioral impact.

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 clearly states the verb ('Launch/activate') and resource ('an app on an iOS device by bundle ID'), and distinguishes two modes: activation (no arguments) and cold relaunch (with arguments). This differentiates it from siblings like 'ios_launch_app_in_language' and 'device_launch_app' by specifying the iOS-specific behavior and the role of arguments.

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

Usage Guidelines5/5

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

The description explicitly explains when to use activation vs. cold relaunch: 'With no arguments it ACTIVATES... Pass arguments to force a COLD relaunch'. It also notes that launch arguments are ignored on an already-running process, so passing arguments triggers a kill first. This gives clear decision criteria for the agent, though it doesn't name sibling alternatives like 'ios_launch_app_in_language', but the behavior distinction is sufficient.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources