XcodeMCP
XcodeMCP server provides programmatic control over Xcode operations through JavaScript for Automation (JXA). It enables:
Project Management: Open projects/workspaces, get workspace information, list projects, manage schemes
Build Operations: Build projects, clean artifacts, parse errors (integrates with XCLogParser)
Testing & Execution: Run tests with optional arguments, execute projects
Debugging: Start and control debugging sessions
Navigation: Open specific files with optional line number targeting
Environment: Perform health checks, validate configuration
Process Control: Stop operations or pause execution
The server exposes these capabilities through various API endpoints that can be used for automation workflows.
Runs on macOS to interface with Xcode, allowing for interaction with Xcode projects, workspaces, schemes, and simulators within the macOS environment.
Provides tools for Xcode build automation and log parsing, enabling opening projects, triggering builds directly in Xcode, cleaning build artifacts, running tests, debugging, switching between schemes, and extracting build errors and warnings.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@XcodeMCPbuild the MyApp scheme and show me any errors"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Using with Apple's Official Xcode MCP: Apple now provides an official Xcode MCP server. XcodeMCP can run alongside it in sidekick mode (
--sidekick-only), providing complementary tools like project management and XCResult analysis. In a future version, XcodeMCP will transition to sidekick-only mode by default. See configuration below.
XcodeMCP
Model Context Protocol (MCP) server that controls Xcode directly through JavaScript for Automation (JXA). Available as both an MCP server and a standalone CLI.
What it does
Controls Xcode directly through JavaScript for Automation (not xcodebuild CLI)
Opens projects, builds, runs, tests, and debugs from within Xcode
Parses build logs with precise error locations using XCLogParser
Provides comprehensive environment validation and health checks
Supports graceful degradation when optional dependencies are missing
NEW: Includes a full-featured CLI with 100% MCP server feature parity
Related MCP server: xcsift-mcp
Requirements
macOS with Xcode installed
Node.js 18+
XCLogParser (recommended):
brew install xclogparser
Usage
XcodeMCP can be used in two ways:
MCP Server: Integrate with Claude Desktop, VS Code, or other MCP clients
CLI Tool: Run commands directly from the terminal with
xcodecontrol
Quick Install
XCLogParser is recommended but optional:
brew install xclogparserInstall from npm
Run directly with npx:
npx -y xcodemcp@latestOr install globally:
npm install -g xcodemcpMCP Configuration
Add to your MCP configuration:
{
"mcpServers": {
"xcodemcp": {
"command": "npx",
"args": ["-y", "xcodemcp@latest"],
"env": {
}
}
}
}Claude Code CLI Setup
To add XcodeMCP to Claude Code using the command line:
claude mcp add-json XcodeMCP '{
"command": "npx",
"args": ["-y", "xcodemcp@latest"],
"env": {
}
}'Without the clean build folder tool
To add XcodeMCP to Claude Code using the command line:
claude mcp add-json XcodeMCP '{
"command": "npx",
"args": ["-y", "xcodemcp@latest", "--no-clean"],
"env": {
}
}'Using Preferred Values for Single Project Workflows
For projects where you're working with a single xcodeproj and scheme, you can configure preferred values to make tool parameters optional:
claude mcp add-json XcodeMCP '{
"command": "npx",
"args": ["-y", "xcodemcp@latest"],
"env": {
"XCODE_MCP_PREFERRED_SCHEME": "MyApp",
"XCODE_MCP_PREFERRED_XCODEPROJ": "MyApp.xcodeproj"
}
}'With preferred values configured:
Tool parameters become optional instead of required
Tool descriptions show default values (e.g., "defaults to MyApp.xcodeproj")
You can still override defaults by providing explicit parameters
Reduces repetition when working with a single project
Troubleshooting
If /mcp in Claude Code indicates the MCP failed, try running it from the project folder manually to see what the output is: npx -y xcodemcp@latest
Sidekick Mode
When using XcodeMCP alongside Apple's official Xcode MCP server, enable sidekick mode to only include complementary tools:
Project management: Open/close projects, manage schemes, workspace info
XCResult analysis: Browse test results, extract screenshots, inspect UI hierarchies
This excludes build/run/test/debug tools that Apple's MCP handles natively.
Claude Code CLI Setup (Both Servers)
First, enable Xcode Tools in Xcode > Settings > Intelligence > Model Context Protocol.
Then add both Apple's Xcode MCP and XcodeMCP in sidekick mode:
# Add Apple's official Xcode MCP
claude mcp add --transport stdio xcode -- xcrun mcpbridge
# Add XcodeMCP in sidekick mode (project management + XCResult analysis)
claude mcp add-json xcodemcp '{"command": "npx", "args": ["-y", "xcodemcp@latest", "--sidekick-only"]}'JSON Configuration (Both Servers)
{
"mcpServers": {
"xcode": {
"command": "xcrun",
"args": ["mcpbridge"]
},
"xcodemcp": {
"command": "npx",
"args": ["-y", "xcodemcp@latest", "--sidekick-only"]
}
}
}Future direction: In a future version, XcodeMCP will transition to sidekick-only mode by default, focusing exclusively on tools that complement Apple's official Xcode MCP rather than duplicating functionality.
Development Setup
For local development:
git clone https://github.com/lapfelix/XcodeMCP.git
cd XcodeMCP
npm install
# Run in development mode (TypeScript)
npm run dev:ts
# Or build and run compiled version
npm run build
npm startCLI Usage
XcodeMCP includes a powerful CLI that provides 100% feature parity with the MCP server, allowing you to run any tool as a one-shot command:
Installation
Install globally to use the CLI:
npm install -g xcodemcpBasic Usage
# Show help and available tools
xcodecontrol --help
# Run a tool with flags
xcodecontrol build --xcodeproj /path/to/Project.xcodeproj --scheme MyScheme
# Get help for a specific tool
xcodecontrol build --help
# Use JSON input instead of flags
xcodecontrol build --json-input '{"xcodeproj": "/path/to/Project.xcodeproj", "scheme": "MyScheme"}'
# Output results in JSON format
xcodecontrol --json health-checkPath Resolution
The CLI supports both absolute and relative paths for convenience:
# Absolute paths (traditional)
xcodecontrol build --xcodeproj /Users/dev/MyApp/MyApp.xcodeproj --scheme MyApp
# Relative paths (NEW in v2.0.0)
xcodecontrol build --xcodeproj MyApp.xcodeproj --scheme MyApp
xcodecontrol build --xcodeproj ../OtherProject/OtherProject.xcodeproj --scheme OtherApp
# Works with file paths too
xcodecontrol open-file --filePath src/ViewController.swift --lineNumber 42Relative paths are resolved from your current working directory, making the CLI much more convenient to use when working within project directories.
Verbosity Control
Control logging output with verbosity flags:
# Verbose mode (shows INFO and DEBUG logs)
xcodecontrol -v build --xcodeproj /path/to/Project.xcodeproj --scheme MyScheme
# Quiet mode (only errors)
xcodecontrol -q test --xcodeproj /path/to/Project.xcodeproj
# Default mode (warnings and errors only)
xcodecontrol run --xcodeproj /path/to/Project.xcodeproj --scheme MySchemeQuick Examples
# Check system health
xcodecontrol health-check
# Build a project
xcodecontrol build --xcodeproj /Users/dev/MyApp/MyApp.xcodeproj --scheme MyApp
# Run the app
xcodecontrol run --xcodeproj /Users/dev/MyApp/MyApp.xcodeproj --scheme MyApp
# Run tests
xcodecontrol test --xcodeproj /Users/dev/MyApp/MyApp.xcodeproj
# Clean build directory
xcodecontrol clean --xcodeproj /Users/dev/MyApp/MyApp.xcodeproj
# Browse XCResult files
xcodecontrol xcresult-browse --xcresult-path /path/to/result.xcresult
# Get UI hierarchy from test failure
xcodecontrol xcresult-get-ui-hierarchy --xcresult-path /path/to/result.xcresult --test-id "MyTest/testMethod()" --timestamp 30.5Tool Name Mapping
CLI commands use kebab-case instead of underscores:
xcode_build→buildxcode_test→testxcode_build_and_run→build-and-runxcode_health_check→health-checkxcresult_browse→xcresult-browsefind_xcresults→find-xcresults
Available Tools
Project Management:
xcode_open_project- Open projects and workspacesxcode_get_workspace_info- Get workspace status and detailsxcode_get_projects- List projects in workspacexcode_open_file- Open files with optional line number
Build Operations:
xcode_build- Build with detailed error parsingxcode_clean- Clean build artifactsxcode_test- Run tests with optional argumentsxcode_build_and_run- Build and run the active schemexcode_debug- Start debugging sessionxcode_stop- Stop current operation
Configuration:
xcode_get_schemes- List available schemesxcode_set_active_scheme- Switch active schemexcode_get_run_destinations- List simulators and devices
XCResult Analysis:
xcresult_browse- Browse test results and analyze failuresxcresult_browser_get_console- Get console output for specific testsxcresult_summary- Quick overview of test resultsxcresult_get_screenshot- Extract screenshots from test failuresxcresult_get_ui_hierarchy- Get UI hierarchy as AI-readable JSON with timestamp selectionxcresult_get_ui_element- Get detailed properties of specific UI elements by indexxcresult_list_attachments- List all attachments for a testxcresult_export_attachment- Export specific attachments from test results
Diagnostics:
xcode_health_check- Environment validation and troubleshooting
XCResult Analysis Features
XcodeMCP provides comprehensive tools for analyzing Xcode test results (.xcresult files), making it easy to debug test failures and extract valuable information:
Test Result Analysis
Browse Results: Navigate through test hierarchies, view pass/fail status, and examine detailed test information
Console Logs: Extract console output and test activities with precise timestamps for debugging
Quick Summaries: Get overview statistics including pass rates, failure counts, and duration
Visual Debugging
Screenshot Extraction: Extract PNG screenshots from test failures using ffmpeg frame extraction from video attachments
Timestamp Precision: Specify exact timestamps to capture UI state at specific moments during test execution
UI Hierarchy Analysis
AI-Readable Format: Extract UI hierarchies as compressed JSON with single-letter properties (
t=type,l=label,f=frame,c=children,j=index)Timestamp Selection: Automatically find the closest UI hierarchy capture to any specified timestamp
Element Deep-Dive: Use index references to get full details of any UI element, including accessibility properties and frame information
Size Optimization: 75%+ size reduction compared to full hierarchy data while maintaining all essential information
Attachment Management
Complete Inventory: List all attachments (screenshots, videos, debug descriptions, UI hierarchies) for any test
Selective Export: Export specific attachments by index or type
Smart Detection: Automatically identify and categorize different attachment types
Usage Examples
# Browse test results
xcresult_browse "/path/to/TestResults.xcresult"
# Get console output to find failure timestamps
xcresult_browser_get_console "/path/to/TestResults.xcresult" "MyTest/testMethod()"
# Get UI hierarchy at specific timestamp (AI-readable slim version)
xcresult_get_ui_hierarchy "/path/to/TestResults.xcresult" "MyTest/testMethod()" 45.25
# Get full UI hierarchy (with size warning)
xcresult_get_ui_hierarchy "/path/to/TestResults.xcresult" "MyTest/testMethod()" 45.25 true
# Get detailed properties of a specific UI element
xcresult_get_ui_element "/path/to/ui_hierarchy_full.json" 15
# Extract screenshot at failure point
xcresult_get_screenshot "/path/to/TestResults.xcresult" "MyTest/testMethod()" 30.71Configuration
Logging Configuration
XcodeMCP supports configurable logging to help with debugging and monitoring:
Environment Variables
LOG_LEVEL: Controls logging verbosity (default:INFO)SILENT: No logging outputERROR: Only error messagesWARN: Warnings and errorsINFO: General operational information (recommended)DEBUG: Detailed diagnostic information
XCODEMCP_LOG_FILE: Optional file path for loggingLogs are written to the specified file in addition to stderr
Parent directories are created automatically
Example:
/tmp/xcodemcp.logor~/Library/Logs/xcodemcp.log
XCODEMCP_CONSOLE_LOGGING: Enable/disable console output (default:true)Set to
falseto disable stderr logging (useful when using file logging only)
Examples
Debug logging with file output:
{
"mcpServers": {
"xcodemcp": {
"command": "npx",
"args": ["-y", "xcodemcp@latest"],
"env": {
"LOG_LEVEL": "DEBUG",
"XCODEMCP_LOG_FILE": "~/Library/Logs/xcodemcp.log"
}
}
}
}Silent mode (no logging):
{
"mcpServers": {
"xcodemcp": {
"command": "npx",
"args": ["-y", "xcodemcp@latest"],
"env": {
"LOG_LEVEL": "SILENT"
}
}
}
}File-only logging:
{
"mcpServers": {
"xcodemcp": {
"command": "npx",
"args": ["-y", "xcodemcp@latest"],
"env": {
"LOG_LEVEL": "INFO",
"XCODEMCP_LOG_FILE": "/tmp/xcodemcp.log",
"XCODEMCP_CONSOLE_LOGGING": "false"
}
}
}
}All logs are properly formatted with timestamps and log levels, and stderr output maintains compatibility with the MCP protocol.
Troubleshooting
XCLogParser Not Found
If you see a warning that XCLogParser is not found even though it's installed:
Verify installation:
which xclogparser xclogparser versionCommon issues and solutions:
PATH issue: If
which xclogparserreturns nothing, add the installation directory to your PATH:# For Homebrew on Intel Macs export PATH="/usr/local/bin:$PATH" # For Homebrew on Apple Silicon Macs export PATH="/opt/homebrew/bin:$PATH"Wrong command: Older documentation may reference
xclogparser --version, but the correct command isxclogparser version(without dashes)Permission issue: Ensure xclogparser is executable:
chmod +x $(which xclogparser)
Environment validation: Run the health check to get detailed diagnostics:
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "xcode_health_check", "arguments": {}}}' | npx xcodemcp
Note: XcodeMCP can operate without XCLogParser, but build error parsing will be limited.
Example Output
Build with errors:
❌ BUILD FAILED (2 errors)
ERRORS:
• /path/HandsDownApp.swift:7:18: Expected 'func' keyword in instance method declaration
• /path/MenuBarManager.swift:98:13: Invalid redeclaration of 'toggleItem'Health check:
✅ All systems operational
✅ OS: macOS environment detected
✅ XCODE: Xcode found at /Applications/Xcode.app (version 16.4)
✅ XCLOGPARSER: XCLogParser found (XCLogParser 0.2.41)
✅ OSASCRIPT: JavaScript for Automation (JXA) is available
✅ PERMISSIONS: Xcode automation permissions are workingAvailable Tools
26 toolsfind_xcresultsB
Find all XCResult files for a specific project with timestamps and file information
| Name | Required | Description | Default |
|---|---|---|---|
| xcodeproj | Yes | Absolute path to the .xcodeproj file (or .xcworkspace if available) - e.g., /path/to/project.xcodeproj |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden of behavioral disclosure. It only states that the tool finds files with timestamps and file information but does not mention any side effects, search scope (recursive?), or whether it requires specific permissions. This is minimal transparency for a file-finding tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately conveys the tool's purpose and output content. It is perfectly concise with no unnecessary words, and the structure is front-loaded and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must compensate by detailing what is returned. It mentions 'timestamps and file information' but lacks specifics such as data types, order, or whether paths are relative/absolute. Critical context like search scope (e.g., entire filesystem or project directory) is omitted, leaving the agent guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters, with the single parameter 'xcodeproj' described inline. The description does not add meaning beyond the schema for the parameter; it only mentions output features. Baseline 3 is appropriate since schema coverage is high and no parameter semantics are missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'find' and resource 'XCResult files for a specific project', which distinguishes it from sibling tools that perform operations on the content of such files (e.g., xcresult_browse, xcresult_list_attachments). The specificity of 'with timestamps and file information' adds clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For example, it does not suggest that this should be used before other xcresult tools to locate files, nor does it mention when not to use it (e.g., if browsing contents is needed).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xcode_buildA
Build a specific Xcode project or workspace with the specified scheme. If destination is not provided, uses the currently active destination. ⏱️ Can take minutes to hours - do not timeout.
| Name | Required | Description | Default |
|---|---|---|---|
| xcodeproj | Yes | Absolute path to the .xcodeproj file to build (or .xcworkspace if available) - e.g., /path/to/project.xcodeproj | |
| scheme | Yes | Name of the scheme to build | |
| destination | No | Build destination (optional - uses active destination if not provided) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It warns about long execution time ('Can take minutes to hours - do not timeout') and mentions destination behavior. However, it does not disclose side effects (e.g., build artifacts) or output format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each carrying weight: first states purpose, second gives key usage note and warning. No fluff, front-loaded, efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is present, and the description does not explain what the tool returns (e.g., success, logs). It does include a critical timing warning and default behavior, which partially compensates. For a build tool, more detail on output would strengthen completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with clear descriptions for each parameter. The tool description adds no new meaning beyond the schema; it merely restates the purpose. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Build' and the resource 'a specific Xcode project or workspace with the specified scheme'. It effectively distinguishes from sibling tools like xcode_build_and_run, xcode_test, and xcode_clean by focusing solely on the build action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a usage hint about destination defaulting to active destination but does not explicitly state when to use this tool versus alternatives like xcode_build_and_run or xcode_test. The context is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xcode_build_and_runA
Build and run a specific project with the specified scheme. ⏱️ Can run indefinitely - do not timeout.
| Name | Required | Description | Default |
|---|---|---|---|
| xcodeproj | Yes | Absolute path to the .xcodeproj file (or .xcworkspace if available) - e.g., /path/to/project.xcodeproj | |
| scheme | Yes | Name of the scheme to run | |
| command_line_arguments | No | Additional command line arguments |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds key trait 'Can run indefinitely - do not timeout' beyond schema, but lacks details on auth, destructive effects, or other behaviors. No annotations to rely on.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with purpose. Emoji adds visual cue. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Missing output schema and annotations. Description does not explain return values, error conditions, or prerequisites beyond runtime warning. Incomplete for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with adequate descriptions. Description does not add extra semantic meaning beyond what schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it builds and runs a project with a specified scheme, using specific verbs and resource. Differs from siblings like xcode_build (build only) and xcode_debug.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage when needing to build and run, but no explicit guidance on when to use alternatives or prerequisites. Missing exclusions like 'use xcode_build if only build needed'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xcode_cleanC
Clean the build directory for a specific project
| Name | Required | Description | Default |
|---|---|---|---|
| xcodeproj | Yes | Absolute path to the .xcodeproj file (or .xcworkspace if available) - e.g., /path/to/project.xcodeproj |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description does not disclose behavioral traits beyond the action name. It lacks information about destructive nature (e.g., removing build artifacts), required permissions, or whether it affects Xcode state. No annotations mitigate this.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded, no unnecessary words. Every word is relevant and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive operation like cleaning, the description should mention side effects (e.g., 'This removes build artifacts and can speed up subsequent builds'). Without output schema or further context, the description feels incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides a clear description for the single parameter (xcodeproj) with 100% coverage. The tool description adds no additional meaning, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action (clean) and target (build directory for a specific project). It distinguishes from sibling tools like xcode_build or xcode_test, but could be more specific about what 'clean' entails (e.g., removing derived data or intermediate files).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool over siblings. For example, it doesn't mention that cleaning is often needed before a fresh build or to resolve build issues, nor does it compare with xcode_build or xcode_stop.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xcode_close_projectA
Close the currently active Xcode project or workspace (automatically stops any running actions first)
| Name | Required | Description | Default |
|---|---|---|---|
| xcodeproj | Yes | Absolute path to the .xcodeproj file (or .xcworkspace if available) - e.g., /path/to/project.xcodeproj |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry behavioral transparency. It mentions auto-stopping running actions, which is helpful, but does not disclose other traits like handling unsaved changes or return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that is front-loaded with the core action. Every word adds value, and there is no superfluous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema, no annotations), the description is largely sufficient. It could mention expected outcomes or errors, but for a close operation, it is comprehensive enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has 100% description coverage for the single parameter. The tool description does not add new meaning beyond what the schema provides, so it meets the baseline but does not exceed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool closes the active Xcode project/workspace and automatically stops running actions. It uses specific verbs and resource references, distinguishing it from siblings like xcode_open_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when you need to close a project) but does not explicitly state when to use it over alternatives or when not to use it. However, the tool's purpose is inherently clear from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xcode_debugB
Start debugging session for a specific project. ⏱️ Can run indefinitely - do not timeout.
| Name | Required | Description | Default |
|---|---|---|---|
| xcodeproj | Yes | Absolute path to the .xcodeproj file (or .xcworkspace if available) - e.g., /path/to/project.xcodeproj | |
| scheme | No | Scheme name (optional) | |
| skip_building | No | Whether to skip building |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description warns that debugging can run indefinitely and not to timeout, which is a critical behavioral note. However, it omits other behavioral details such as that it launches the app, waits for breakpoints, or requires stopping via xcode_stop.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two sentences. First explains purpose, second adds a critical warning. No wasted words, front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a debugging tool that launches a session, the description lacks details about the debugging process, output, how to interact, and the relationship with other tools like xcode_stop. Incomplete for the complexity of debugging.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema already covers all parameters with descriptions. The description adds no additional meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly specifies 'Start debugging session' for a project, which distinguishes it from build, test, and other sibling tools. However, it could elaborate that this launches the app with a debugger attached.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like xcode_build_and_run or xcode_test. The only usage note is about indefinite runtime, but no context for appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xcode_get_projectsB
Get list of projects in a specific workspace
| Name | Required | Description | Default |
|---|---|---|---|
| xcodeproj | Yes | Absolute path to the .xcodeproj file (or .xcworkspace if available) - e.g., /path/to/project.xcodeproj |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It does not disclose side effects, prerequisites, or error conditions (e.g., what happens if workspace path invalid). Only states basic read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words. Efficiently conveys the core action. Could be slightly more structured but appropriate for simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Minimal description for a simple tool. Does not explain return format or scope of 'projects' (e.g., targets vs. build configurations). Adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage for the single parameter, so baseline 3 applies. Description adds no extra parameter insight beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Get list of projects' and resource 'specific workspace'. It distinguishes from sibling tools like xcode_get_workspace_info or xcode_get_schemes, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool, when not to, or alternatives. The description is purely functional without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xcode_get_run_destinationsB
Get list of available run destinations for a specific project
| Name | Required | Description | Default |
|---|---|---|---|
| xcodeproj | Yes | Absolute path to the .xcodeproj file (or .xcworkspace if available) - e.g., /path/to/project.xcodeproj |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It only restates the tool's purpose without explaining whether it is read-only, what the output format is, or any side effects. For a read operation, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no redundancy. It efficiently communicates the core functionality without extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has one parameter and no output schema. The description does not explain what the returned list contains (e.g., names, UUIDs, availability). Given the lack of annotations, more contextual information about usage context and output would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter, and the parameter description in the schema is clear and provides an example. The tool description adds no further semantic meaning beyond the schema, so baseline score 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get list of available run destinations', which is a specific verb and resource. It distinguishes this tool from siblings like xcode_build, xcode_test, etc., which are mutating or running operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites (e.g., project must be opened) or relationships with other tools like xcode_get_schemes or xcode_get_projects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xcode_get_schemesB
Get list of available schemes for a specific project
| Name | Required | Description | Default |
|---|---|---|---|
| xcodeproj | Yes | Absolute path to the .xcodeproj file (or .xcworkspace if available) - e.g., /path/to/project.xcodeproj |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It only states the basic function without disclosing whether it's read-only, requires an open project, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single concise sentence that immediately conveys the tool's purpose. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple list tool with one parameter, but lacks information about the output format (e.g., list of strings) since there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already describes the parameter well. The description adds no extra meaning beyond what the schema provides, earning a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Get list) and the resource (available schemes for a specific project). It is specific and distinct from sibling tools which involve building, testing, or other operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like xcode_set_active_scheme or xcode_get_run_destinations. No mention of prerequisites or use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xcode_get_test_targetsB
Get information about test targets in a project, including names and identifiers
| Name | Required | Description | Default |
|---|---|---|---|
| xcodeproj | Yes | Absolute path to the .xcodeproj file (or .xcworkspace if available) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It correctly indicates a read operation ('get information') with no destructive hints, but lacks details on prerequisites (e.g., project must be open) or side effects. Basic transparency is met.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 14 words, front-loaded with the action and resource. No extraneous information; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has one parameter and no output schema. The description explains what is returned (names and identifiers) but does not specify if results are a list or other details. Adequate for a simple read tool, but missing minor completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter, and the description repeats the schema's description verbatim. Per rubric, baseline is 3; no added value beyond schema, so score remains 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves information about test targets, including names and identifiers. It distinguishes from siblings like xcode_test (which runs tests) but does not explicitly contrast with related tools, so a slight deduction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as xcode_get_projects or xcode_test. The description provides no context for selection, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xcode_get_workspace_infoC
Get information about a specific workspace
| Name | Required | Description | Default |
|---|---|---|---|
| xcodeproj | Yes | Absolute path to the .xcodeproj file (or .xcworkspace if available) - e.g., /path/to/project.xcodeproj |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It only states 'Get information', implying a read operation but no behavioral traits like mutation safety, authorization needs, or output format. The lack of detail leaves the agent uncertain about side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, to the point, and front-loads the core action. Every word earns its place with no unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description should at least hint at what 'information' is returned (e.g., project references, schemes). It is too vague for a tool that likely returns a complex object, leaving agents guessing about the return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the parameter 'xcodeproj' clearly documented. The description adds no extra meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves information about a workspace, distinguishing it from sibling tools like xcode_get_projects and xcode_get_schemes. However, it does not specify what kind of information is returned (e.g., projects, schemes, targets), leaving ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It fails to mention prerequisites (e.g., workspace must be open) or compare with related tools like xcode_get_projects or xcode_get_schemes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xcode_health_checkB
Perform a comprehensive health check of the XcodeMCP environment and configuration
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It states it's a health check but does not specify what checks are performed, whether it modifies state, requires permissions, or has side effects. The description is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the purpose. Every word adds value; no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description is adequate for a simple health check tool. However, it lacks specifics on the scope of the health check (e.g., what is evaluated), leaving some ambiguity for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so schema description coverage is 100%. The description adds no parameter information since there are none, meeting the baseline of 3 for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a comprehensive health check of the XcodeMCP environment and configuration, using specific verb and resource. It distinguishes from sibling tools which are for building, debugging, projects, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, context, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xcode_open_fileC
Open a file in Xcode
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Absolute path to the file to open | |
| line_number | No | Optional line number to navigate to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It does not disclose any behavioral traits such as what happens if the file doesn't exist, whether it brings Xcode to front, or any side effects. The description is essentially a tautology of the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at 5 words, with no wasted text. However, it may be too minimal, sacrificing clarity for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is simple with 2 parameters and no output schema, the description is inadequate. It fails to mention success/error behavior, prerequisites, or any additional context needed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100% (both parameters described). The description adds no extra meaning beyond schema documentation. Baseline 3 is appropriate as schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Open a file in Xcode' clearly states the action (open) and the resource (file) in the specific context of Xcode. It distinguishes from related tools like xcode_open_project by specifying 'file' versus project. However, it adds little beyond the tool name itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidelines are provided about when to use this tool versus siblings like xcode_open_project or xcode_get_projects. There is no context for prerequisites, behavior, or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xcode_open_projectB
Open an Xcode project or workspace
| Name | Required | Description | Default |
|---|---|---|---|
| xcodeproj | Yes | Absolute path to the .xcodeproj file (or .xcworkspace if available) - e.g., /path/to/project.xcodeproj |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description lacks any detail about side effects, prerequisites (e.g., Xcode must be running), or what 'open' actually does (e.g., loads into IDE, sets as active workspace). With no annotations, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence without wasted words. However, slight expansion for behavioral context would improve it without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the basic action but omits return value information and side effects. For a simple open operation, it is minimally complete but would benefit from stating that the tool has no return or what happens upon success.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides a clear description for the single parameter (path). The tool description adds no additional meaning beyond what the schema states, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Open' and the resource 'Xcode project or workspace', directly matching the tool name. It distinguishes from siblings like xcode_open_file and xcode_close_project by specifying the resource type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., xcode_get_projects, xcode_set_active_scheme). The agent has no context to decide between opening a project vs. getting or building it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xcode_refresh_projectA
Refresh/reload an Xcode project by closing and reopening it to pick up external changes like modified .xctestplan files
| Name | Required | Description | Default |
|---|---|---|---|
| xcodeproj | Yes | Absolute path to the .xcodeproj file (or .xcworkspace if available) to refresh |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It states the tool closes and reopens the project, which is a behavioral trait. It does not mention potential side effects, but for a refresh operation, this is adequate. It discloses the main mechanism.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence. It is front-loaded with the action and purpose, and every word contributes to understanding. No redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description is complete. It explains what it does, why (external changes), and how (close and reopen). The sibling tools list does not include a similar refresh tool, so context is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the 'xcodeproj' parameter well. The description does not add meaning beyond what the schema provides (e.g., no extra details on path format or fallback behavior). Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Refresh/reload' and the resource 'Xcode project', with the specific purpose of picking up external changes like modified .xctestplan files. It distinguishes itself from siblings like xcode_open_project and xcode_close_project by combining close and reopen into a single operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when external changes have been made (e.g., modified .xctestplan files). While it does not explicitly list when not to use or name alternatives, the context is clear enough for an agent to decide. A more explicit exclusion would raise the score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xcode_set_active_schemeB
Set the active scheme for a specific project
| Name | Required | Description | Default |
|---|---|---|---|
| xcodeproj | Yes | Absolute path to the .xcodeproj file (or .xcworkspace if available) - e.g., /path/to/project.xcodeproj | |
| scheme_name | Yes | Name of the scheme to activate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits, but it only says 'Set the active scheme'. It omits critical details such as whether the scheme must already exist, whether the project must be open, or what side effects (if any) occur. There is no output schema to describe return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence that precisely captures the tool's action without unnecessary words. Every word contributes to the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is too minimal. It does not explain prerequisites, error handling, or how the scheme change affects ongoing builds. The agent is left with many unknowns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for both parameters (xcodeproj path and scheme_name). The tool description does not add any additional meaning beyond the schema, so it meets the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Set' and the resource 'active scheme for a specific project', making the purpose unambiguous. Among sibling tools like xcode_get_schemes or xcode_build, this tool uniquely sets the active scheme, so it is well-distinguished.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool (e.g., before build operations) or when not to use it. There are no mentions of prerequisites, alternatives, or exclusions, leaving the agent without context for appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xcode_stopB
Stop the current scheme action for a specific project
| Name | Required | Description | Default |
|---|---|---|---|
| xcodeproj | Yes | Absolute path to the .xcodeproj file (or .xcworkspace if available) - e.g., /path/to/project.xcodeproj |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavioral traits. It only says 'stop the current scheme action' but fails to explain what happens (e.g., termination of build/test/run), side effects, safety, or required state. This is a critical gap for a potentially destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. Every word earns its place, though it is minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that likely requires a running scheme action, the description omits crucial context like what a 'scheme action' is, how to know if one is active, error conditions, or return behavior. No output schema or annotations, so description must compensate but falls short.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already explains xcodeproj with description. The tool description adds no extra parameter context beyond the schema, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'stop' and the resource 'current scheme action for a specific project', which distinguishes it from sibling tools like xcode_build or xcode_test. The verb+resource combination is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. It does not mention prerequisites (e.g., a scheme action must be running), exclusions, or compared to other stop-related tools. The agent has no clue about selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xcode_testA
Run tests for a specific project. Optionally run only specific tests or test classes by temporarily modifying the test plan (automatically restored after completion). ⏱️ Can take minutes to hours - do not timeout.
| Name | Required | Description | Default |
|---|---|---|---|
| xcodeproj | Yes | Absolute path to the .xcodeproj file (or .xcworkspace if available) - e.g., /path/to/project.xcodeproj | |
| destination | Yes | Test destination (required for predictable test environments) - e.g., "iPhone 15 Pro Simulator", "iPad Air Simulator" | |
| command_line_arguments | No | Additional command line arguments | |
| test_plan_path | No | Optional: Absolute path to .xctestplan file to temporarily modify for selective test execution | |
| selected_tests | No | Optional: Array of specific test identifiers to run. Format depends on test framework: XCTest: "TestAppUITests/testExample" (no parentheses), Swift Testing: "TestAppTests/example". Requires test_plan_path. | |
| selected_test_classes | No | Optional: Array of test class names to run (e.g., ["TestAppTests", "TestAppUITests"]). This runs ALL tests in the specified classes. Requires test_plan_path. | |
| test_target_identifier | No | Optional: Target identifier for the test target (required when using test filtering). Can be found in project.pbxproj. | |
| test_target_name | No | Optional: Target name for the test target (alternative to test_target_identifier). Example: "TestAppTests". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It explicitly warns about long runtimes ('Can take minutes to hours - do not timeout') and mentions the automatic restoration of the test plan after temporary modification. These are key behavioral traits. It doesn't cover all possible side effects (e.g., console output, result storage), but the critical aspects are addressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: a clear statement of purpose followed by a behavioral warning. It is front-loaded with the core function. However, the first sentence is a bit run-on, combining multiple ideas. No unnecessary words, but could be slightly refined for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 parameters, no annotations, and no output schema, the description should provide more context. It lacks information about the return value (e.g., test results, exit status), prerequisites (e.g., scheme must be set, simulator availability), and error handling. The long runtime warning is helpful, but overall the description leaves significant gaps for an agent to correctly interpret the tool's full behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (all 8 parameters have descriptions). The tool description adds value beyond the schema by explaining the purpose of the test plan modification (temporary, auto-restored) and clarifying the format for selected_tests depending on the test framework. This provides meaningful context that aids correct parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs tests for a specific project, with optional selective test execution by temporarily modifying the test plan. While it distinguishes from siblings like xcode_build or xcode_debug by focusing on testing, it does not explicitly differentiate from other test-related tools on the same server (e.g., no direct comparison with xcresult-related tools, but those are for result analysis). The verb 'Run tests' is specific and well-defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates usage for running tests and optionally filtering specific tests or classes, providing guidance on when to use these features. However, it lacks explicit 'when not to use' scenarios or comparisons with alternative tools like xcode_build_and_run or xcode_debug. The guidance is implied rather than direct.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xcresult_browseA
Browse XCResult files - list all tests or show details for a specific test. Returns comprehensive test results including pass/fail status, failure details, and browsing instructions. Large console output (>20 lines or >2KB) is automatically saved to a temporary file.
| Name | Required | Description | Default |
|---|---|---|---|
| xcresult_path | Yes | Absolute path to the .xcresult file | |
| test_id | No | Optional test ID or index number to show details for a specific test | |
| include_console | No | Whether to include console output and test activities (only used with test_id) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses auto-saving for large console output and mentions return values (pass/fail, failure details, instructions). No annotations provided, so description carries full burden; could mention read-only nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff, clearly front-loaded with purpose and key behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description explains return values adequately. Addresses edge case of large output. Complete for a browse tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters. Description adds context about test_id usage for details and includes large output handling, beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Browse XCResult files' and distinguishes two modes: list all tests or show details for a specific test. Specific verb and resource with functional differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context for large output handling but no explicit guidance on when to use this vs. siblings like xcresult_summary or xcresult_list_attachments. Implied usage only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xcresult_browser_get_consoleA
Get console output and test activities for a specific test in an XCResult file. Large output (>20 lines or >2KB) is automatically saved to a temporary file.
| Name | Required | Description | Default |
|---|---|---|---|
| xcresult_path | Yes | Absolute path to the .xcresult file | |
| test_id | Yes | Test ID or index number to get console output for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. It discloses large output auto-saving to temp file, a useful behavior. But it does not mention read-only nature, required permissions, or return format. Partial coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, second adds key behavioral note. No redundant words. Excellent conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so description should explain return format. It mentions temp file saving but not what tool returns (file path? text?). Slight gap, but adequate for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are fully described. Description adds no new semantics beyond 'specific test' hint. Baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get console output and test activities for a specific test', specifying verb, resource, and scope. It distinguishes from siblings like xcresult_summary (summary) and xcresult_browse (browse structure).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage (get console output for a test) but lacks explicit guidance on when to use this versus alternatives like xcresult_browse. No exclusions or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xcresult_export_attachmentB
Export a specific attachment by index - can convert App UI hierarchy attachments to JSON
| Name | Required | Description | Default |
|---|---|---|---|
| xcresult_path | Yes | Absolute path to the .xcresult file | |
| test_id | Yes | Test ID or index number that contains the attachment | |
| attachment_index | Yes | Index number of the attachment to export (1-based, from xcresult-list-attachments) | |
| convert_to_json | No | If true and attachment is an App UI hierarchy, convert to JSON format |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description partially covers behavior by noting the conversion capability to JSON. However, it does not disclose whether the operation is read-only, permissions needed, or effects on the source file. The 'export' verb suggests reading but is not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the core purpose and a key feature. It is concise without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is too brief given the tool's complexity (4 parameters, no output schema, no annotations). It omits important context like output format (except for JSON conversion case), error conditions, and relationship to sibling tools like xcresult_list_attachments needed to obtain attachment indices.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description adds no additional parameter meaning beyond what is already in the schema descriptions. According to guidelines, this yields baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports a specific attachment by index and can convert App UI hierarchy to JSON. It differentiates from sibling tools like xcresult_list_attachments (lists) and xcresult_get_screenshot (gets screenshot) by focusing on export of a specific indexed attachment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidance on when to use this tool vs alternatives. No mention of prerequisites (e.g., need to list attachments first) or conditions under which this tool is appropriate versus other xcresult tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xcresult_get_screenshotA
Get screenshot from a failed test at specific timestamp - extracts frame from video attachment using ffmpeg
| Name | Required | Description | Default |
|---|---|---|---|
| xcresult_path | Yes | Absolute path to the .xcresult file | |
| test_id | Yes | Test ID or index number to get screenshot for | |
| timestamp | Yes | Timestamp in seconds when to extract the screenshot. WARNING: Use a timestamp BEFORE the failure (e.g., if failure is at 30.71s, use 30.69s) as failure timestamps often show the home screen after the app has crashed or reset. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description discloses use of ffmpeg and includes a warning in the timestamp parameter about choosing a time before failure to avoid capturing the home screen. However, it omits potential issues like ffmpeg availability or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with key action front-loaded, no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Core purpose and key usage tip provided, but no mention of output format (e.g., base64 image, file path) despite no output schema. Could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage, and the description adds value beyond the schema by explaining the timestamp warning in detail and mentioning ffmpeg usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it gets a screenshot from a failed test at a specific timestamp using ffmpeg, distinguishing it from sibling tools like xcresult_export_attachment (exports raw attachments) and xcresult_get_ui_element (gets UI element info).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage for extracting a screenshot from a test failure video, but no explicit when-to-use, when-not-to-use, or alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xcresult_get_ui_elementA
Get full details of a specific UI element by index from a previously exported UI hierarchy JSON file
| Name | Required | Description | Default |
|---|---|---|---|
| hierarchy_json_path | Yes | Absolute path to the UI hierarchy JSON file (the full version saved by xcresult-get-ui-hierarchy) | |
| element_index | Yes | Index of the element to get details for (the "j" value from the slim hierarchy) | |
| include_children | No | Whether to include children in the response. Defaults to false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It discloses it is a retrieval operation ('get full details') but does not explicitly state it is read-only or discuss side effects. The reference to the slim hierarchy adds context but lacks explicit behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. It is front-loaded with the key action and context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and limited annotations, the description adequately explains the tool's purpose and prerequisites. It could mention return format or error conditions, but for a simple retrieval tool with three parameters, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions. The description adds meaning: hierarchy_json_path is 'the full version saved by xcresult-get-ui-hierarchy', element_index is 'the j value from the slim hierarchy', and include_children has a default. This links to the prerequisite tool and clarifies parameter usage beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', resource 'full details of a specific UI element', and context 'from a previously exported UI hierarchy JSON file'. It distinguishes from sibling tools like xcresult_get_ui_hierarchy (which exports the hierarchy) and xcresult_browse (browse results).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage after exporting a UI hierarchy file, but does not explicitly state when to use this tool vs alternatives. No exclusions or conditions are given, only implied context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xcresult_get_ui_hierarchyB
Get UI hierarchy attachment from test. Returns raw accessibility tree (best for AI), slim AI-readable JSON (default), or full JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| xcresult_path | Yes | Absolute path to the .xcresult file | |
| test_id | Yes | Test ID or index number to get UI hierarchy for | |
| timestamp | No | Optional timestamp in seconds to find the closest UI snapshot. If not provided, uses the first available UI snapshot. | |
| full_hierarchy | No | Set to true to get the full hierarchy (several MB). Default is false for AI-readable slim version. | |
| raw_format | No | Set to true to get the raw accessibility tree text (most AI-friendly). Default is false for JSON format. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It does not mention any behavioral traits beyond output format choices, such as side effects (none expected), permissions needed, or the fact that full hierarchy can be several MB large. The parameter description for full_hierarchy mentions size, but the main description lacks this warning.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the purpose and output variants. It is front-loaded with the action and resource, but could be slightly more structured to separate purpose from output details. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description explains the return format types, it lacks details on the structure of the hierarchy (e.g., tree node properties). Given there is no output schema, more information about the output structure would help an AI agent process the result. The description is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so each parameter is already documented. The main description does not add additional meaning beyond what the schema provides. The baseline score of 3 is appropriate since the schema adequately describes parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get UI hierarchy attachment from test.' It specifies the output variants (raw accessibility tree, slim AI-readable JSON, full JSON), which distinguishes it from sibling tools like xcresult_get_ui_element (single element) or xcresult_get_screenshot (screenshot).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives some guidance on output format usage (e.g., 'best for AI', 'default'), but it does not explicitly state when to use this tool versus alternatives like xcresult_get_ui_element or xcresult_get_screenshot. No exclusions or prerequisites are mentioned, only implicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xcresult_list_attachmentsA
List all attachments for a specific test - shows attachment names, types, and indices for export
| Name | Required | Description | Default |
|---|---|---|---|
| xcresult_path | Yes | Absolute path to the .xcresult file | |
| test_id | Yes | Test ID or index number to list attachments for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It clearly indicates a read-only list operation and specifies the output content (names, types, indices), but does not explicitly state that no changes are made to the xcresult file. However, given the non-destructive nature implied by 'list', this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently states the tool's purpose and output, with no unnecessary words. It is front-loaded with the core action ('List all attachments') and follows with relevant details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description adequately explains what the tool returns (attachment names, types, indices). Given the simplicity of the tool and existence of related siblings (xcresult_export_attachment), the context is sufficient for an agent to understand how to use the output. Minor room for improvement (e.g., hinting it returns a list).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% parameter description coverage, so the schema already explains both parameters. The description adds context about output but not about parameter usage. Baseline 3 is appropriate as the description does not degrade accuracy but adds no parameter-specific value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List all attachments') and clearly identifies the resource ('for a specific test') and output details ('names, types, and indices for export'). It distinguishes from siblings like xcresult_export_attachment and xcresult_get_screenshot, which focus on exporting or retrieving a specific attachment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage before exporting attachments but does not explicitly state when to use this tool versus alternatives like xcresult_export_attachment or xcresult_get_screenshot. No exclusions or alternative suggestions are provided, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xcresult_summaryC
Get a quick summary of test results from an XCResult file
| Name | Required | Description | Default |
|---|---|---|---|
| xcresult_path | Yes | Absolute path to the .xcresult file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It does not disclose return format, side effects (likely read-only), or permissions required. 'Quick summary' is vague—does it return counts, status, logs? The agent cannot predict the behavior beyond the basic purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 12 words—extremely concise. However, conciseness trades off with informativeness for other dimensions. It is front-loaded with the purpose but could incorporate more detail without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 param, no output schema), the description should at least hint at the return value (e.g., 'returns a text summary'). It lacks any indication of output format or content, leaving the agent guessing. Incomplete for reliable usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% parameter description, defining 'Absolute path to the .xcresult file'. The description adds no further meaning beyond what the schema provides. Baseline 3 is appropriate as schema already explains the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get a quick summary') and the resource ('test results from an XCResult file'). It distinguishes from siblings like find_xcresults (which finds files) and xcresult_browse (which likely provides detailed browsing). However, it does not explicitly differentiate from xcresult_get_* tools, somewhat limiting clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. For example, it does not mention that this tool is for a high-level overview, while xcresult_browse is for detailed exploration. The agent has no basis to decide when to invoke this over sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
24 tool updates
v1.7.4- Added
find_xcresults - Added
xcode_build - Added
xcode_build_and_run - Added
xcode_clean - Added
xcode_debug - Added
xcode_get_projects - Added
xcode_get_run_destinations - Added
xcode_get_schemes - Added
xcode_get_test_targets - Added
xcode_get_workspace_info - Added
xcode_health_check - Added
xcode_open_file - Added
xcode_refresh_project - Added
xcode_set_active_scheme - Added
xcode_stop - Added
xcode_test - Added
xcresult_browse - Added
xcresult_browser_get_console - Added
xcresult_export_attachment - Added
xcresult_get_screenshot - Added
xcresult_get_ui_element - Added
xcresult_get_ui_hierarchy - Added
xcresult_list_attachments - Added
xcresult_summary
14 tool updates
- Removed
find_xcresults - Removed
xcode_build - Removed
xcode_build_and_run - Removed
xcode_clean - Removed
xcode_debug - Removed
xcode_get_projects - Removed
xcode_get_run_destinations - Removed
xcode_get_schemes - Removed
xcode_get_workspace_info - Removed
xcode_health_check - Removed
xcode_open_file - Removed
xcode_set_active_scheme - Removed
xcode_stop - Removed
xcode_test
10 tool updates
- Added
find_xcresults - Added
xcode_build_and_run - Added
xcode_debug - Added
xcode_get_projects - Added
xcode_get_run_destinations - Added
xcode_get_workspace_info - Added
xcode_health_check - Added
xcode_open_file - Added
xcode_stop - Added
xcode_test
14 tool updates
- Removed
find_xcresults - Removed
xcode_build_and_run - Removed
xcode_debug - Removed
xcode_get_projects - Removed
xcode_get_run_destinations - Removed
xcode_get_workspace_info - Removed
xcode_health_check - Removed
xcode_open_file - Removed
xcode_stop - Removed
xcode_test - Removed
xcresult_browse - Removed
xcresult_browser_get_console - Removed
xcresult_get_screenshot - Removed
xcresult_summary
6 tool updates
- Removed
xcode_get_test_targets - Removed
xcode_refresh_project - Removed
xcresult_export_attachment - Removed
xcresult_get_ui_element - Removed
xcresult_get_ui_hierarchy - Removed
xcresult_list_attachments
TDQS
Each tool has a clear, distinct purpose. The build, test, debug, and XCResult tools are separated by prefixes (xcode_ vs xcresult_) and specific verbs, making it easy for an agent to select the correct tool.
All tools follow a consistent pattern: either xcode_ or xcresult_ prefix followed by a verb and optionally a noun (e.g., xcode_build, xcresult_summary). No mixing of styles or ambiguous verbs.
With 26 tools, the count is slightly above the typical well-scoped range. While each tool serves a specific purpose, the overall set feels heavy given the domain, though it is justified by the complexity of Xcode integration.
The tool set covers the full lifecycle of Xcode operations: workspace/project management, building, testing, debugging, and comprehensive XCResult analysis (browsing, attachments, screenshots, UI hierarchy). No obvious gaps for the stated purpose.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for Appcircle mobile CI/CD platform.
The MCP server for Azure DevOps, bringing the power of Azure DevOps directly to your agents.
A MCP server built for developers enabling Git based project management with project and personal…
MCP server for generating rough-draft project plans from natural-language prompts.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides tools for programmatically interacting with Xcode projects, enabling users to manage targets, schemes, and files. It supports essential development tasks including building, testing, and cleaning projects through the Xcode command-line tools.41MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI assistants to parse Xcode and Swift build outputs into structured, token-efficient formats like JSON or TOON. It provides tools for executing build commands and extracting detailed diagnostic information such as errors, warnings, and test failures.8MIT
- AlicenseNot gradedqualityDmaintenanceXcode MCP server for building, testing, running, and managing simulators directly from Claude Code.95MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for interacting with Xcode build tools, iOS Simulator, and Apple notarization services.125MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/lapfelix/XcodeMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server