MCP server for interacting with the iOS simulator
Server has 5 tools with explicit schemas and descriptions. Naming follows verb_noun pattern (get_, open_, ui_*). However, descriptions are minimal (10-80 chars, below the 50-200 char LLM-optimized baseline). Parameter descriptions exist but lack detail on constraints, formats, and error recovery. No output schema documentation. Error handling returns troubleshooting links but lacks actionable recovery guidance. Schema validation is present (UDID regex, text maxLength) but not fully leveraged in descriptions.
Get the ID of the currently booted iOS simulator
Opens the iOS Simulator application
Describes accessibility information for the entire screen in the iOS Simulator
Tap on the screen in the iOS Simulator
Input text into the iOS Simulator
Descriptions are too brief (10-80 chars vs. 50-200 char baseline). LLMs cannot determine when to select tools or understand prerequisites. E.g., 'Opens the iOS Simulator application' lacks context on when to call it vs. get_booted_sim_id.
Parameter descriptions lack constraint details. UDID regex pattern exists in schema but is not explained in the description text. LLMs cannot read JSON Schema patterns, they rely on description text. E.g., 'Udid of target' should say '8-4-4-4-12 hex UUID format'.
No output schema documentation. Tools return text responses but LLMs cannot plan downstream calls or extract structured data. E.g., get_booted_sim_id returns 'Booted Simulator: "name". UUID: "id"' as unstructured text.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Error messages include troubleshooting links but lack actionable recovery guidance. 'Error describing all of the ui' + link does not tell the LLM what to do next (retry? check UDID? call get_booted_sim_id first?).
ui_tap parameter 'y' description says 'The x-coordinate' (copy-paste error). Should say 'The y-coordinate'. Ambiguous descriptions cause LLM misuse.