Skip to main content
Glama

Robot Actions — Remote Device Control

ios_press_button

Press a hardware or keyboard button on an iOS device. Hardware: home, volumeUp, volumeDown. Keyboard submit: return, go, done, search. Editing: backspace (delete-left), delete (delete-right alias — iOS soft keyboard treats both the same in most contexts). Whitespace: tab. (On an Apple TV, press remote keys with ios_tv_button and change volume with ios_tv_volume — the hardware/keyboard buttons here are unavailable there.) Requires an active iOS automation session. Note: for reliable backspace, ensure the soft keyboard is actually raised (visible) before pressing — a tap that visually focuses a field may not yet have raised the keyboard, in which case key events are dropped.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
udidYesiOS device UDID
inputNoInput path. 'auto' (default) drives the gesture through the automation session. 'hid' drives it through the direct input path instead, which needs no automation session — it reports 'no HID available' on iOS 17.x or with no tunnel.
buttonYesButton name: home, volumeUp, volumeDown, return, go, done, search, backspace, delete, tab

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / button / description
      Previous value: -"Button name: home, volumeUp, volumeDown, return, go, done, search, backspace, delete, tab. Siri Remote (Apple TV): up, down, left, right, select, back, tv, play_pause, volume_up, volume_down, mute"New value: +"Button name: home, volumeUp, volumeDown, return, go, done, search, backspace, delete, tab"
  2. Changed1 schema field changed
    • changedInput schema / properties / button / description
      Previous value: -"Button name: home, volumeUp, volumeDown, return, go, done, search, backspace, delete, tab"New value: +"Button name: home, volumeUp, volumeDown, return, go, done, search, backspace, delete, tab. Siri Remote (Apple TV): up, down, left, right, select, back, tv, play_pause, volume_up, volume_down, mute"
  3. Changed1 schema field changed
    • addedInput schema / properties / input
      Added value: +{
      +  "description": "Input path. 'auto' (default) drives the gesture through the automation session. 'hid' drives it through the direct input path instead, which needs no automation session — it reports 'no HID available' on iOS 17.x or with no tunnel.",
      +  "enum": [
      +    "auto",
      +    "hid"
      +  ],
      +  "type": "string"
      +}
  4. First observed

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description correctly carries the behavioral burden and adds useful detail: key events are dropped if the soft keyboard is not visibly raised, backspace/delete are aliases in most contexts, and Apple TV does not support these buttons. However, the unconditional statement 'Requires an active iOS automation session' contradicts the schema's 'input' parameter, which says 'hid' drives the direct input path and needs no automation session. This overgeneralization prevents a higher score.

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 front-loaded with the core purpose, then quickly enumerates button categories, and finishes with a precise Apple TV routing note and a practical reliability caveat. Every sentence provides useful information and there is no filler.

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?

The schema covers all parameters and the description covers button semantics, platform exclusions, required session context, and a known failure mode. The only meaningful gap is the contradictory session requirement: an agent reading only the prose could believe automation session is always required, even though the 'hid' input path works without one.

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 coverage is 100%, so the baseline is 3. The description adds genuine meaning beyond the schema by grouping button values into semantic categories and explaining the subtle backspace/delete alias and soft-keyboard timing behavior. It does not fully reconcile the session requirement with the 'hid' input path, so it stops short of a 5.

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 opens with a specific verb and resource: 'Press a hardware or keyboard button on an iOS device.' It clearly lists the button families (hardware, keyboard submit, editing, whitespace) and explicitly distinguishes Apple TV remote interactions by naming ios_tv_button and ios_tv_volume as the correct alternatives. An agent can reliably identify what this tool does and what it does not do.

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 provides clear context for when to use the tool, including a concrete exclusion for Apple TV and explicit routing to sibling tools. It also states the active iOS automation session prerequisite. It does not explicitly compare against nearby siblings like ios_key_hid or ios_send_keys, but the core usage boundary is well defined.

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