Skip to main content
Glama

Run the tests on a cloud iPhone

phone_tests_run

Cloud iPhone: Run the Xcode project's unit and UI tests on the Simulator. Answers with the counts and each failure as file:line, read from Xcode's result bundle; "0 tests ran" is an error, not a pass. A run past 40 s answers with a job for phone_job_status.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "phone_tests_run"
  }
}

Input Schema

NameRequiredDescriptionDefault
gitNoAn https link to a git repository, fetched into the phone's workspace first (only what changed); path is then the project's folder inside it
refNoWith git: the branch, tag or commit; default: the default branch
nameNoWith upload: where it goes, the same name each time keeps builds incremental; default: upload
onlyNoTests to run, like DemoTests/SignInTests/testSignIn; commas for several
pathNoWith git or upload: the project's folder inside it (default: its root); without: the project the last phone_app_run used
tokenNoWith git, instead of secret: a token you already hold for the private repository, used for this fetch only and never kept (github.com, gitlab.com or bitbucket.org). Never ask a person to paste one in the chat: use secret
xcodeNoXcode version (27.1), beta or default, as for phone_app_run
deviceNoName or UDID; default: the one in use
schemeNoDefault: as phone_app_run picks it
secretNoWith git: the account secret holding a token for a private repository on github.com, gitlab.com or bitbucket.org (request_secret asks the person for it)
uploadNoInstead of git: the upload phone_upload_link answered (a folder or archive sent to its link), unpacked into the phone's workspace (only what changed)
session_idNoThe phone; default: the account's running phone
request_keyNoRepeat a lost call with the same key

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / secret / pattern
      Previous value: -"^[A-Z_][A-Z0-9_]{0,63}$"New value: +"^[A-Za-z_][A-Za-z0-9_]{0,127}$"
  2. Changed1 schema field changed
    • addedInput schema / properties / token
      Added value: +{
      +  "description": "With git, instead of secret: a token you already hold for the private repository, used for this fetch only and never kept (github.com, gitlab.com or bitbucket.org). Never ask a person to paste one in the chat: use secret",
      +  "pattern": "^[\\x21-\\x7e]{1,4096}$",
      +  "type": "string"
      +}
  3. Changed2 schema fields changed
    • changedInput schema / properties / upload / description
      Previous value: -"Instead of git: the sha256 of a .tar.gz or .zip put to phone_upload_link's link, unpacked into the phone's workspace (only what changed)"New value: +"Instead of git: the upload phone_upload_link answered (a folder or archive sent to its link), unpacked into the phone's workspace (only what changed)"
    • changedInput schema / properties / upload / pattern
      Previous value: -"^[a-f0-9]{64}$"New value: +"^(up_[a-f0-9]{32}|[a-f0-9]{64})$"
  4. Added

TDQS

A4/5.0
Behavior3/5

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

Adds genuinely useful behavior beyond the annotations: results are read from Xcode's result bundle, failures come back as file:line, and '0 tests ran' must be treated as an error rather than a pass. That is strong context for a non-read-only, non-idempotent tool, but the description never addresses permissions/credential handling, workspace side effects of the git/upload fetch, or retry semantics — areas the annotations alone leave open.

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?

Three compact clauses, front-loaded with the verb and resource, then the return-shape caveat, then the async escape hatch. Not a wasted word, and the most decision-relevant facts come first.

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 13-parameter tool with no output schema, the description usefully covers the return shape and the long-running path. Remaining gaps are prerequisites (a running phone/session, private-repo credentials) and what the git/upload fetch does to the existing workspace, which are only partially inferable from the schema.

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 description coverage is 100%, so every one of the 13 parameters is already documented in-schema, which sets the baseline at 3. The description itself adds no parameter-level meaning beyond alluding to the Xcode project and simulator, so it neither compensates nor detracts.

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?

States a specific verb and resource — run the Xcode project's unit and UI tests — plus the execution target (Simulator on a cloud iPhone). An agent can immediately distinguish this from phone_app_run, which runs an app rather than its test suite.

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?

Gives concrete routing context by naming phone_job_status as the follow-up when a run exceeds 40 s, and the schema-adjacent text distinguishes the git, upload, and reuse-last-project entry paths. It stops short of an explicit 'use this instead of X' statement, but the when-to-use signals are clear.

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