phone_status
Read the iPhone's current status and control readiness without taking control, so you can confirm drivable, lock, setup, and recovery state before issuing device actions.
Instructions
Read the phone's status without taking control. owner names the session currently driving the phone (this session presents IPHONE_USE_OWNER, else mcp-); if it is someone else, do not drive the phone — control calls will be refused with phone_owned. The JSON preserves backend, target_configured, managed_runner, managed_runner_pending, recovery_owner, device_state, screen_state, runner, runner_actionable, locked, drivable, released, hint, next_step, recovery, setup_blocked_on, setup_phase, and setup_message. Gate actions on drivable=true. If target_configured=false and recovery_owner=unconfigured, phone_instances is only installed instances: inspect xcrun devicectl list devices and run iphone-use doctor on the daemon host; ask which phone if ambiguous, then IPU_RUNNER_UDID= iphone-use setup for the confirmed target only when the task authorizes it. Preserve --instance for named instances. lock_readiness says whether the phone locks on its own when idle (passcode_protected, auto_lock_secs, keep_awake, verdict, hint): will_lock_needs_person means a person must unlock it after a pause; tell the owner the hint instead of retrying. For trust, distinguish Trust This Computer pairing from developer-certificate approval under iPhone Settings > General > VPN & Device Management; use setup_message evidence. A separate passcode/automation prompt may appear later. needs_passcode_on_phone records a possible authorization requirement, not a confirmed visible prompt. Relay next_step; never request a passcode, pause screenshots/elements during sensitive input, and check status after the person finishes. Do not loop reconnect. keep_runner_alive (non-null) means idle release keeps the runner up because its next start would need a person. For status/health checks, report the state and stop. Idle release is intentional: reconnect (phone_reconnect, once) only when a current user-requested task needs the phone, recovery_owner=daemon, and no blocker or reconnect is in progress; then poll until drivable=true.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| instance | No | Installed local instance name, such as i13 or default. Omit to use the configured daemon. No fallback on failure. |