Skip to main content
Glama

Build and run the app on a cloud iPhone

phone_app_run

Cloud iPhone: Build the Xcode project in a folder for the Simulator, install and launch it, and answer with its first screen. Errors as file:line. A build past 40 s answers with a job for phone_job_status. Later calls reuse the project.

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_app_run"
  }
}

Input Schema

NameRequiredDescriptionDefault
envNoApp env: "K=V K2=V2" (kept)
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
pathNoWith git or upload: the project's folder inside it (default: its root); without: the project the last phone_app_run used
cleanNoBuild from scratch
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
xcodeNo27.1, beta or default (kept)
deviceNoName or UDID; default: the one in use
schemeNoDefault: the only scheme, or one named like the project
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
permissionsNogrant (default) answers prompts; ask: iOS's prompts stay
request_keyNoRepeat a lost call with the same key
configurationNoDefault: Debug

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

A3.7/5.0
Behavior4/5

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

Annotations declare the mutation profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the description's job is to add what those cannot. It does: a 40 s cutoff that degrades to an asynchronous job, errors surfaced as file:line, and incremental reuse of the project across calls. What it omits is any statement about cost, credits, or what happens to previously installed app state.

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 whole definition is three short sentences, front-loaded with the core action before the failure/timeout behavior and the reuse note. Dense but readable. 'Later calls reuse the project' is slightly cryptic in isolation, which keeps it from a 5.

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 16-parameter, no-output-schema tool, the description covers the essential contract: what it does, what it answers with (first screen, or errors as file:line), and what it answers with instead when slow (a job for phone_job_status). Prerequisites such as needing an existing project or available credits are not mentioned, a minor gap given the rich 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% across 16 parameters, so the schema already carries the semantics of env, git, ref, token, secret, upload, permissions, and the rest. The description adds only the general 'later calls reuse the project' note, which loosely explains the stability hint behind name and path but does not tie it to those parameters explicitly. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb chain and resource: build the Xcode project in a folder for the Simulator, install, launch, and return the first screen. That is far more precise than the title alone. It does not explicitly distinguish itself from siblings like phone_tests_run or phone_app_control, which keeps it from a 5.

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

Usage Guidelines3/5

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

There is real routing guidance: a build past 40 s returns a job to poll with phone_job_status, and later calls reuse the project incrementally. However, it never states when to choose this over phone_tests_run or when a clean/from-scratch build is warranted, so usage is implied rather than fully specified.

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