Skip to main content
Glama

Get Orientation

mobile_get_orientation
Read-only

Retrieve the current screen orientation of a mobile device for automation testing or UI adaptation, using the device identifier from available options.

Instructions

Get the current screen orientation of the device

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
deviceYesThe device identifier to use. Use mobile_list_available_devices to find which devices are available to you.

Implementation Reference

  • src/server.ts:464-475 (registration)
    Registration of the 'mobile_get_orientation' MCP tool. The inline handler requires an active device/robot and delegates to its getOrientation() method, formatting the result as a string.
    tool(
    	"mobile_get_orientation",
    	"Get the current screen orientation of the device",
    	{
    		noParams
    	},
    	async () => {
    		requireRobot();
    		const orientation = await robot!.getOrientation();
    		return `Current device orientation is ${orientation}`;
    	}
    );
  • AndroidRobot implementation of getOrientation(): queries device settings via adb for user_rotation (0=portrait, else landscape).
    public async getOrientation(): Promise<Orientation> {
    	const rotation = this.adb("shell", "settings", "get", "system", "user_rotation").toString().trim();
    	return rotation === "0" ? "portrait" : "landscape";
    }
  • WebDriverAgent implementation of getOrientation() used by iOS devices and simulators: performs HTTP GET to /orientation endpoint within a WDA session and lowercases the result.
    public async getOrientation(): Promise<Orientation> {
    	return this.withinSession(async sessionUrl => {
    		const url = `${sessionUrl}/orientation`;
    		const response = await fetch(url);
    		const json = await response.json();
    		return json.value.toLowerCase() as Orientation;
    	});
    }

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changedv1.0.0
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / device
      Added value: +{
      +  "description": "The device identifier to use. Use mobile_list_available_devices to find which devices are available to you.",
      +  "type": "string"
      +}
    • removedInput schema / properties / noParams
      Removed value: -{
      -  "additionalProperties": false,
      -  "properties": {},
      -  "type": "object"
      -}
    • changedInput schema / required
      Previous value: -[
      -  "noParams"
      -]New value: +[
      +  "device"
      +]
  2. First observed

TDQS

A3.6/5.0
Behavior3/5

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

The readOnlyHint annotation already declares this is a safe read operation. The description adds minimal context beyond the annotation—merely specifying 'current' orientation. This is not misleading, but it does not disclose any additional behavioral traits such as return format or potential platform limitations.

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 a single concise sentence that immediately states the tool's function. Every word contributes to clarity, with no unnecessary filler or repetition.

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?

For a simple getter with one parameter, the description is sufficient. The lack of an output schema is somewhat mitigated by the clarity of 'screen orientation,' though the exact return format is not specified. Given the low complexity, this is not a significant gap.

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?

The only parameter 'device' has a full description in the schema, including a pointer to mobile_list_available_devices. Since schema coverage is 100%, the description does not need to add parameter details. Baseline of 3 applies.

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 'Get the current screen orientation of the device' uses a specific verb (get) and identifies the exact resource (screen orientation), clearly distinguishing it from the sibling tool mobile_set_orientation. It is unambiguous and not a tautology.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention that it is the read counterpart to mobile_set_orientation, nor does it reference sibling tools like mobile_get_screen_size. No explicit or implied usage context is given.

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