Skip to main content
Glama

Robot Actions — Remote Device Control

ios_launch_app_in_language

Launch an iOS app forced into a specific language / locale, without changing the device's system settings. Useful for QA testing app localization (e.g. open the app in Spanish without flipping the whole device to Spanish). Override is per-launch — relaunching the app outside this tool reverts to system language. Works whether or not an automation session is already open: it reuses an open automation session when there is one and launches the app directly when there is not, and says which path it used. The target app must use NSLocalizedString / Bundle.main.localizedStringForKey at runtime (modern apps do; some legacy apps cache locale on first cold launch — kill via ios_kill_app and re-call this tool to force re-read).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
udidYesiOS device UDID
localeNoOptional BCP-47 / POSIX locale (defaults to <language>_<UPPER(language)>), e.g. "fr_FR", "es_US"
bundleIdYesApp bundle ID, e.g. com.apple.Preferences
languageYesISO 639-1 language code, e.g. "fr", "es", "en", "ja"

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations at all, the description carries full behavioral burden, and it delivers: per-launch override, reverting on relaunch outside the tool, session reuse behavior, and the legacy locale-caching caveat. It even warns about a known failure mode and the workaround, which is a strong transparency signal.

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?

The description is long but every sentence earns its place: purpose, use case, per-launch semantics, session behavior, and a legacy-app caveat with remediation. It is front-loaded with the primary action and avoids filler.

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?

Given no annotations and no output schema, the description still provides enough to select and invoke the tool correctly: prerequisites, behavior, failure modes, and a retry path. There is no missing critical information for an agent to use this tool effectively.

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%, so the baseline of 3 applies. The description adds useful behavioral context around language forcing and locale-related caching, but it does not materially extend the parameter semantics beyond what the schema already documents for udid, bundleId, language, and locale.

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 names a specific verb and resource: 'Launch an iOS app forced into a specific language / locale' without touching system settings. It clearly distinguishes itself from generic app-launch and system-language tools, and the example (Spanish localization QA) anchors its purpose.

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 states when to use this tool — QA testing app localization without changing device-wide settings — and gives concrete fallback guidance for legacy apps: kill the app via ios_kill_app and re-call. It also clarifies it works with or without an existing automation session, leaving little ambiguity about invocation context.

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