Skip to main content
Glama

Robot Actions — Remote Device Control

ios_rotate

Two-finger rotation (twist) about (x,y) on an iOS device — the gesture maps, photo editors and canvas apps listen for. Positive degrees turns clockwise on screen, negative anticlockwise. The fingers follow the ARC of a circle rather than a straight line, which is what a rotation recogniser needs. Coordinates are screen points. IN HID MODE (iOS 18+) the rotation is centred exactly on (x,y) and any angle up to 360° works. OTHERWISE it falls back to the native rotate gesture, which turns the ACTIVE APP about its own centre: (x,y) is ignored there. Any angle works on both paths. Fine for a full-screen map or canvas; check ios_hid_status first if you need the rotation centred on a specific control. Requires an active iOS automation session.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
xYesRotation centre X (screen points)
yYesRotation centre Y (screen points)
normNoIf true, x/y (and path points) are 0..1 FRACTIONS of the screen — pass `pixelInScreenshot ÷ screenshotSize` directly (scale-free, matches the frontend, avoids point-guessing). Default false = iOS screen points.
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.
degreesYesTurn in degrees; positive is clockwise on screen
durationMsNoGesture duration in ms (default: 400)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields 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"
      +}
    • addedInput schema / properties / norm
      Added value: +{
      +  "description": "If true, x/y (and path points) are 0..1 FRACTIONS of the screen — pass `pixelInScreenshot ÷ screenshotSize` directly (scale-free, matches the frontend, avoids point-guessing). Default false = iOS screen points.",
      +  "type": "boolean"
      +}
  2. Added

TDQS

A4.8/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure, and it does so thoroughly. It states positive degrees turn clockwise, negative anticlockwise, fingers follow an arc (not a straight line), coordinates are screen points, and explains the two execution paths (HID vs native) with their respective behaviors and limitations. It also notes the requirement for an active iOS automation session. All relevant behavioral traits are disclosed without ambiguity.

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 lengthy but well-structured and front-loaded with the core purpose. It organizes the behavioral differences (HID vs native) clearly, and every sentence contributes useful information. While not brief, the density is justified by the tool's complexity; the structure aids comprehension. A slightly more compact phrasing would be possible, but the current format is efficient for the information conveyed.

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 the tool's complexity (two modes, fallback behavior, coordinate semantics, norm scaling, and session requirement), the description is remarkably complete. It covers all critical aspects: what the gesture does, the coordinate system, the HID vs native distinction, the norm parameter, the input path options, and the prerequisite of an active session. No output schema exists, but for a gesture tool, the return is likely a status or void, and the description adequately prepares the agent to invoke it correctly. Nothing essential is missing.

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?

The input schema has 100% description coverage, so the baseline is 3. The description adds meaningful context beyond the schema: it explains the norm parameter as scale-free fractions matching the frontend, and clarifies the 'auto' vs 'hid' input paths and their implications (HID needs no automation session but reports 'no HID available' on iOS 17.x). This adds value beyond the schema's terse descriptions, justifying a score above baseline.

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 tool performs a two-finger rotation (twist) gesture on an iOS device at a specified (x,y) coordinate, and explicitly mentions the use cases (maps, photo editors, canvas apps). It distinguishes itself from sibling gesture tools like ios_pinch and ios_two_finger_swipe by specifying rotation and the coordinate-centering behavior. The verb is specific ('rotate') and the resource is clearly identified (iOS device).

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 provides explicit when-to-use guidance: it explains the HID mode (iOS 18+) centers on (x,y) and allows any angle, while the native fallback ignores (x,y) and rotates the active app about its own center. It advises checking ios_hid_status first when centering on a specific control is needed, effectively routing the agent to an alternative tool. This is clear, actionable guidance that covers when and when-not to use the tool.

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