0.0 / 30
What changed in the harness
Selection accuracy 96→98, token cost up 9%, 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
02Legibility
23.9 / 30
03Economics
19.1 / 20
04Discoverability
10.1 / 20
Highest-impact fix
Estimated gain +30 pointsAdd 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 |
Returns the UDID of the simulator that is currently booted, suitable for use as the `udid` argument in other tools. Use it to target commands at the active simulator when no UDID is otherwise known. |
open_simulator |
name_restates_behavior no_return_description |
Launches the iOS Simulator application so its window is visible on the host Mac, and returns once the app has been opened. Use it before interacting with the simulated screen via the UI tools. |
ui_describe_all |
no_return_description |
Returns accessibility information for every element currently on screen in the iOS Simulator, including labels, identifiers, types, and coordinates, useful for discovering the full UI hierarchy before interacting with it. |
ui_tap |
no_return_description |
Performs a tap at the given (x, y) point on the simulator screen and returns once the tap has been dispatched. Use coordinates obtained from the UI describe/find tools to tap on a specific element. |
ui_type |
params_unexplained no_return_description |
Types the given printable ASCII text (up to 500 characters) into the currently focused input field in the iOS Simulator and returns once the text has been entered. Use it to fill text fields after tapping or focusing them. |
ui_swipe |
no_return_description |
Performs a swipe gesture from (x_start, y_start) to (x_end, y_end) on the simulator screen and returns once the gesture completes. Use it for scrolling or dragging, optionally controlling the duration or the size of each step. |
ui_view |
no_return_description |
Returns the image content of a compressed screenshot of the current simulator view, for visually inspecting the current UI state. |
screenshot |
name_restates_behavior no_return_description |
Captures the current screen of the iOS Simulator and saves the image to the specified `output_path` in the requested format (png, tiff, bmp, gif, or jpeg), returning once the file has been written. |
record_video |
name_restates_behavior no_return_description |
Starts recording a video of the iOS Simulator screen, saving it to `output_path` (or a generated name in the configured output directory) using the specified codec and display, returning once recording has started. Combine with stop_recording to end the capture. |
stop_recording |
name_restates_behavior no_return_description |
Ends the currently running simulator video recording and finalizes the output file, returning once the recording process has been stopped. Use it after starting a capture with record_video. |
install_app |
name_restates_behavior no_return_description |
Installs the given app bundle (.app directory or .ipa file) onto the iOS Simulator so it can be launched later via launch_app, returning once installation completes. |
launch_app |
no_return_description |
Launches the app identified by `bundle_id` on the iOS Simulator, optionally terminating a running instance first and passing environment variables to the process, returning once the app has been launched. |
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 share the 'describe accessibility' concept; a task like 'describe the accessibility elements on the screen' is ambiguous about scope (whole screen vs. a specific coordinate), so an agent could select the wrong granularity without clear user intent. |
ui_describe_point |
ui_find_element |
medium | Both return accessibility elements; a task phrased as 'find/return the accessibility element' without clarifying whether criteria or coordinates are being given is genuinely ambiguous between the coordinate-based and search-based tools. |
install_app |
launch_app |
low | A vague task like 'get the app on the simulator' or 'set up the app to run' overlaps install vs. launch, though the explicit verbs 'install' and 'run/open' typically disambiguate, making real confusion unlikely. |
Compare the field