Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
IOS_MODENoWhat can the server do? read-only exposes inspection only; read-write adds UI control; admin adds app management. Tools above the mode are never registered.read-only
IOS_UDIDNoTarget device UDID.
IOS_DRY_RUNNoPreview without touching the device. Write/admin tools validate + log intent, then return.false
IOS_AUDIT_LOGNoAudit trail. Emits a JSON line to stderr per guarded operation.true
IOS_BUNDLE_IDNoOptional default app bundle ID.
IOS_APPIUM_URLNoURL of the Appium server connection.http://127.0.0.1:4723
IOS_ALLOW_MANAGENoCan it install/terminate/reset apps? The admin tools need this and admin mode; otherwise they aren't even advertised.false
IOS_APP_ALLOWLISTNoWhich apps are in scope? When set, launching/managing any other bundle ID is refused. Defaults to all apps.
IOS_PROTECTED_APPSNoWhich apps are read-only forever. Inspectable/launchable but never terminated, reset, or uninstalled.com.apple.Preferences,com.apple.springboard

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_targetsB

Show the configured Appium connection (URL, target UDID, default bundle ID) and, best-effort, the devices/simulators attached to this Mac.

device_infoA

Session capabilities and device info (model, iOS version, screen) reported by WebDriverAgent.

screenshotA

Capture the current screen as a PNG image so you can see what's on the phone before acting.

page_sourceA

Dump the current screen's XCUITest element tree (XML) with labels, types, and bounds — use it to find exact tap coordinates.

current_appB

The app (bundle ID / process) currently in the foreground.

list_appsB

List installed apps (best-effort; depends on the WebDriverAgent build).

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.4/5.0

Scored across 6 tools

Disambiguation4/5

Most tools are clearly distinct (screenshot vs page_source vs current_app vs list_apps). However, list_targets and device_info overlap somewhat: both report device/connection information, which could cause an agent to pick the wrong one when it just wants device details.

Naming Consistency3/5

All names use snake_case, which is consistent, but the naming convention mixes verb_noun (list_targets, list_apps) with noun phrases (device_info, screenshot, page_source, current_app). It is readable but not a predictable verb-first pattern throughout.

Tool Count4/5

Six tools is a reasonable, well-scoped set for an inspection-oriented iOS/Appium bridge, and each tool earns its place. It is slightly thin for full iOS automation, but the count itself is not excessive or trivial.

Completeness2/5

The surface is inspection-only: there are no interaction tools such as tap, type text, swipe, launch/terminate app, or navigation. Since screenshot and page_source are explicitly framed as preparation 'before acting,' the absence of any acting tools is a significant gap that will block agent workflows.

Maintenance

ActivityMaintained
ResponsivenessSyncing