Public leaderboard

Public assessment

ios-simulator-mcp (ios-simulator-mcp)

ios-simulator-mcp · v1.6.0 · scanned

What changed in the harness

Selection accuracy 92→96, token cost up 16%, unconfirmed writes 0%→0%.

Category breakdown

Where the score comes from.

Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.

01Safety

0.0 / 30

0.0 out of 30
02Legibility

23.3 / 30

23.3 out of 30
03Economics

19.0 / 20

19.0 out of 20
04Discoverability

8.3 / 20

8.3 out of 20

Highest-impact fix

Estimated gain +30 points

Add explicit identity and permission preflight tools

Expose machine-readable principal/tenant confirmation and a non-mutating permission check so agents can verify both before destructive actions.

Description evidence

Defects and rewrites.

12 defects found across the exposed tool descriptions. Suggested rewrites make purpose, inputs, boundaries, and returns easier for an agent to understand.

Tool Defect types Suggested rewrite
get_booted_sim_id
name_restates_behavior no_return_description
Queries the currently booted iOS Simulator via simctl and returns its UDID string, or an error if no simulator is booted. Takes no parameters.
open_simulator
name_restates_behavior no_return_description
Launches the Simulator.app application, booting the default or last-used device if none is running. Takes no parameters and returns a confirmation message once the app has opened.
ui_describe_all
no_return_description
Describes accessibility information for the entire screen in the iOS Simulator, returning a JSON list of accessibility elements (labels, types, frames) for the given device. Optional 'udid' selects the target simulator; if omitted, uses the IDB_UDID env var or the sole booted device.
ui_tap
no_return_description
Simulates a tap at the given (x, y) screen coordinates in the iOS Simulator and returns a success/failure status. 'x' and 'y' set the tap location, optional 'duration' sets how long the press is held (seconds), and optional 'udid' selects the target simulator (defaults to IDB_UDID env var or the sole booted device).
ui_type
params_unexplained no_return_description
Sends keyboard input to the focused field in the iOS Simulator and returns a success/failure status. 'text' is the printable ASCII string (max 500 chars) to type; optional 'udid' selects the target simulator (defaults to IDB_UDID env var or the sole booted device).
ui_swipe
no_return_description
Performs a swipe gesture from (x_start, y_start) to (x_end, y_end) on the iOS Simulator screen and returns a success/failure status. Optional 'duration' sets the swipe time in seconds, 'delta' sets the step size of the swipe motion (default 1), and 'udid' selects the target simulator (defaults to IDB_UDID env var or the sole booted device).
ui_view
no_return_description
Captures a compressed screenshot of the current simulator view and returns it as inline image content for visual inspection. Optional 'udid' selects the target simulator (defaults to IDB_UDID env var or the sole booted device).
screenshot
name_restates_behavior no_return_description
Captures a screenshot of the iOS Simulator and saves it to disk, returning the saved file path. 'output_path' sets the destination (relative paths resolve under IOS_SIMULATOR_MCP_DEFAULT_OUTPUT_DIR or ~/Downloads); optional 'type' sets image format (default png), 'display' selects internal/external display, 'mask' controls non-rectangular display masking, and 'udid' selects the target simulator.
record_video
name_restates_behavior no_return_description
Starts recording a video of the iOS Simulator screen using simctl and returns once recording has begun, along with the output file path. Optional 'output_path' sets the destination file (defaults to a generated name under IOS_SIMULATOR_MCP_DEFAULT_OUTPUT_DIR or ~/Downloads), 'codec' selects h264/hevc (default hevc), 'display' and 'mask' control non-rectangular display capture, 'force' allows overwriting an existing file, and 'udid' selects the target simulator.
stop_recording
name_restates_behavior no_return_description
Stops any in-progress simulator video recording by killing the recording process, and returns a success/failure status. Takes no parameters.
install_app
name_restates_behavior no_return_description
Installs the app bundle at 'app_path' (.app directory or .ipa file) onto the target iOS Simulator and returns a success/failure status. Optional 'udid' selects the target simulator (defaults to IDB_UDID env var or the sole booted device).
launch_app
no_return_description
Launches the app identified by 'bundle_id' (e.g., com.apple.mobilesafari) on the iOS Simulator and returns a success/failure status. Optional 'terminate_running' kills any existing instance first, 'env' passes environment variables to the launched process via simctl, and 'udid' selects the target simulator (defaults to IDB_UDID env var or the sole booted device).

Selection evidence

Confusable tool pairs.

3 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.

Tool A Tool B Confidence Why they collide
ui_describe_all ui_describe_point medium Both return accessibility info; a task like 'what's on screen at this location' could lead the agent to pick the whole-screen describe instead of the point-specific one, or vice versa if coordinates aren't clearly emphasized.
ui_describe_point ui_find_element low Both locate/describe elements, but one requires coordinates and the other a search string; a vague 'find this element' task is unlikely to be confused since inputs differ substantially.
install_app launch_app low Sequential but distinct lifecycle steps (install vs run); a task like 'open the app' is unlikely to be mapped to install_app since descriptions clearly differentiate install vs launch.

Compare the field

One score is useful.
The evidence makes it actionable.

Back to the leaderboard