Skip to main content
Glama
conorluddy

XC-MCP: XCode CLI wrapper

by conorluddy

List XCTest Bundles

idb-xctest-list
Read-onlyIdempotent

Inspect which xctest bundles are installed on a simulator, or list the tests inside a specific bundle. Provides clear output to confirm installs before running tests via idb.

Instructions

idb-xctest-list

List xctest bundles installed on a target, or the tests inside one.

Overview

This is NOT a replacement for xcodebuild-test. It does not build anything: it inspects test bundles that are already installed on the simulator (put there by idb install of a .xctest bundle, typically produced by xcodebuild build-for-testing).

Use it to discover what is installed before running tests through idb, or to confirm an install succeeded. If you just want to run a project's tests, use xcodebuild-test.

Parameters

Optional

  • udid (string): Target identifier - auto-detects if omitted

  • testBundleId (string): List the tests inside this bundle instead of listing bundles

Returns

bundles (or tests when testBundleId is given) plus a count. An empty list is normal and means no test bundle is installed — it is not an error.

Examples

What test bundles are installed?

await idbXctestListTool({});

What tests are in one bundle?

await idbXctestListTool({ testBundleId: 'com.example.MyAppUITests.xctrunner' });
  • xcodebuild-test: Build and run a project's tests — the usual choice

  • idb-install: Install a .xctest bundle so it appears here

  • idb-list-apps: List regular apps rather than test bundles

Notes

  • Output parsing is deliberately tolerant: idb has emitted both JSON and plain lines across versions, so both are handled and unrecognised lines are preserved as raw text.

  • An empty result on a simulator with no installed test bundle is expected.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
udidNo
testBundleIdNoList the tests inside this bundle instead of listing installed bundles

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv4.1.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, and the description adds useful context beyond them: it does not build anything, operates on already-installed bundles, parses both JSON and plain lines, preserves unrecognized raw text, and treats an empty list as normal. This equips the agent with behavior annotations cannot convey.

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

Conciseness4/5

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

The description is well-organized with Overview, Parameters, Returns, Examples, Related Tools, and Notes, with the core purpose front-loaded. It is longer than minimal but each section serves a purpose; minor redundancy exists in the empty-result expectation appearing in both Returns and Notes.

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

Completeness5/5

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

Even without an output schema, the description explains the return shape (bundles or tests plus a count), normal empty results, prerequisites, and behavioral resilience across idb versions. With examples and sibling routing, an agent has everything needed to decide when to invoke it and what to expect.

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

Parameters4/5

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

With only 50% schema description coverage, the description compensates by explaining both parameters: udid auto-detects if omitted and testBundleId switches the tool to listing tests inside a bundle. The example using a realistic bundle ID adds concrete usage semantics beyond the schema.

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?

States a specific verb and resource: 'List xctest bundles installed on a target, or the tests inside one.' It explicitly distinguishes itself from xcodebuild-test with 'This is NOT a replacement' and from idb-list-apps in Related Tools. An agent can immediately understand the tool's scope and boundaries.

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

Usage Guidelines5/5

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

Provides explicit when-to-use guidance: discover installed bundles before running tests or confirm an install succeeded. It names the alternative xcodebuild-test for building/running tests and lists related tools like idb-install and idb-list-apps. No ambiguity about when this tool should be selected.

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