Skip to main content
Glama
conorluddy

XC-MCP: XCode CLI wrapper

by conorluddy

Get Simulator List Details

simctl-get-details
Read-onlyIdempotent

Retrieve detailed simulator and runtime info from cached lists. Filter by device type, runtime, or availability to avoid token overload.

Instructions

simctl-get-details

🔍 Get detailed simulator information from cached list results - Progressive disclosure for devices.

Retrieves on-demand access to full simulator and runtime lists that were cached during simctl-list execution. Implements progressive disclosure pattern: initial simctl-list responses return concise summaries to prevent token overflow, while this tool allows drilling down into full device lists, filtered by device type or runtime when needed.

Advantages

• Access full device lists without cluttering initial responses • Filter to specific device types (iPhone, iPad, etc.) • Filter to specific runtime versions • Get only available (booted) devices or all devices • Paginate results to manage token consumption

Parameters

Required

  • cacheId (string): Cache ID from simctl-list response

Optional

  • detailType (string): Type of details to retrieve

    • "full-list": Complete device and runtime information

    • "devices-only": Just device information

    • "runtimes-only": Just available runtimes

    • "available-only": Only booted devices

  • deviceType (string): Filter by device type (iPhone, iPad, etc.)

  • runtime (string): Filter by iOS runtime version

  • maxDevices (number): Maximum number of devices to return (default: 20)

Returns

  • Tool execution results with detailed simulator information

  • Complete device lists with full state and capabilities

  • Available devices and compatible runtimes

  • simctl-list: List available simulators and runtimes

  • xcodebuild-get-details: Get build or test details

Notes

  • Tool is auto-registered with MCP server

  • Requires valid cache ID from recent simctl-list

  • Cache IDs expire after 1 hour

  • Use for discovering available devices and runtimes

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cacheIdYes
runtimeNo
detailTypeYes
deviceTypeNo
maxDevicesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv1.1.0
    • removedInput schema / additionalProperties
      Removed value: -false
    • removedInput schema / properties / cacheId / description
      Removed value: -"Cache ID from previous simctl-list call"
    • removedInput schema / properties / detailType / description
      Removed value: -"Type of details to retrieve"
    • removedInput schema / properties / deviceType / description
      Removed value: -"Filter by device type (iPhone, iPad, etc.)"
    • removedInput schema / properties / maxDevices / description
      Removed value: -"Maximum number of devices to return"
    • removedInput schema / properties / runtime / description
      Removed value: -"Filter by runtime version"
  2. First observedv1.0.0

TDQS

A4/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint, idempotentHint), the description gives valuable behavioral context: cache IDs expire after 1 hour, the tool depends on a recent simctl-list response, pagination limits token usage, and it operates on cached data. This helps the agent understand side effects, dependencies, and token constraints without performing a real call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is organized with headers and bullets, but it is unnecessarily long. Sections like 'Advantages', 'Returns', and 'Notes' add marketing and vague statements ('Tool execution results with detailed simulator information') without adding clear value, so it is not as concise as it could be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the cache dependency, filter capabilities, pagination, and delivery from an existing report, which is quite complete. Yet the required/optional mismatch means the agent cannot confidently invoke the tool, and the 'Returns' section is too vague to understand the exact output format. That leaves an important gap for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description attempts to document parameters, including detailType enum values and maxDevices default, which is good since schema description coverage is 0%. However, it incorrectly labels detailType as optional while the JSON schema marks both cacheId and detailType as required. This directly misleads the agent into omitting a required field, a serious invocation–about-failing error. The extra detail does not compensate for this damage.

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

Purpose5/5

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

The description clearly identifies the tool's purpose: 'Retrieves on-demand access to full simulator and runtime lists that were cached during simctl-list execution.' It also places it in a progressive disclosure pattern, distinguishing it from the high-level simctl-list tool, and explicitly mentions filters and pagination. An agent can immediately understand what the tool does and how it differs from similar tools.

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

Usage Guidelines4/5

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

The description explains when to use it: after simctl-list has cached data, when a valid cache ID is available, and when the scenario calls for detailed simulator/runtime information or specific filters. It mentions related tools (simctl-list, xcodebuild-get-details) and the cache dependency. However, it does not explicitly state when not to use it (e.g., when the cache is missing or stale), so it is a bit incomplete on exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.