sl-test
Provides tools for iOS simulator management, app deployment, UI automation, screenshot capture, and runtime log collection for iOS applications.
Supports building and launching applications targeting macOS, with tools for project management and app bundle operations specific to macOS.
Includes built-in error monitoring and diagnostics through Sentry, with options to opt out of data collection.
Integrates with Swift Package Manager to build packages, run tests, execute binaries, manage processes, and clean build artifacts.
Enables programmatic interaction with Xcode projects, including project discovery, building for various targets, scheme management, clean operations, and project scaffolding.
Click on "Deploy 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., "@sl-testbuild my iOS project for the simulator"
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.
A Model Context Protocol (MCP) server that provides Xcode-related tools for integration with AI assistants and other MCP clients.
Table of contents
Related MCP server: XcodeBuildMCP
Overview
This project implements an MCP server that exposes Xcode operations as tools that can be invoked by AI agents via the MCP protocol. It enables programmatic interaction with Xcode projects through a standardised interface, optimised for agent-driven development workflows.
Why?
The XcodeBuild MCP tool exists primarily to streamline and standardise interaction between AI agents and Xcode projects. By providing dedicated tools for common Xcode operations, it removes reliance on manual or potentially incorrect command-line invocations.
This ensures a reliable and efficient development process, allowing agents to seamlessly leverage Xcode's capabilities while reducing the risk of configuration errors.
Critically, this MCP enables AI agents to independently validate code changes by building projects, inspecting errors, and iterating autonomously. In contrast to user-driven tools like Sweetpad, XcodeBuild MCP empowers agents to automate these workflows effectively.
Features
The XcodeBuildMCP server provides the following tool capabilities:
Xcode project management
Discover Projects: Xcode projects and workspaces discovery
Build Operations: Platform-specific build tools for macOS, iOS simulator, and iOS device targets
Project Information: Tools to list schemes and show build settings for Xcode projects and workspaces
Clean Operations: Clean build products using xcodebuild's native clean action
Incremental build support: Lightning fast builds using incremental build support (experimental, opt-in required)
Project Scaffolding: Create new iOS and macOS projects from modern templates with workspace + SPM package architecture, customizable bundle identifiers, deployment targets, and device families
Swift Package Manager
Build Packages: Build Swift packages with configuration and architecture options
Run Tests: Execute Swift package test suites with filtering and parallel execution
Run Executables: Execute package binaries with timeout handling and background execution support
Process Management: List and stop long-running executables started with Swift Package tools
Clean Artifacts: Remove build artifacts and derived data for fresh builds
Simulator management
Simulator Control: List, boot, and open iOS simulators
App Deployment: Install and launch apps on iOS simulators
Log Capture: Capture run-time logs from a simulator
UI Automation: Interact with simulator UI elements (beta)
Screenshot: Capture screenshots from a simulator (beta)
App utilities
Bundle ID Extraction: Extract bundle identifiers from iOS and macOS app bundles
App Launching: Launch built applications on both simulators and macOS
Getting started
Prerequisites
macOS 14.5 or later
Xcode 16.x or later
Node 18.x or later
AXe 1.0.0 or later (optional, required for UI automation)
UI Automation
For UI automation features (tap, swipe, type etc.), you'll need to install AXe:
brew tap cameroncooke/axe
brew install axeFor more information about AXe and other installation methods, see the AXe repository.
Configure your MCP client
Quick install
For a quick install, you can use the following links:
Manual installation
Configure your MCP client (Windsurf, Cursor, Claude Desktop, Claude Code etc.) to use the XcodeBuildMCP server by ammending your client application's MCP configuration.
{
"mcpServers": {
"XcodeBuildMCP": {
"command": "npx",
"args": [
"-y",
"xcodebuildmcp@latest"
]
}
}
}Alternative installation method using mise
Alternatively, you can use XcodeBuildMCP without a specific installation of Node.js by using mise to install it:
# macOS (Homebrew)
brew install mise
# Other installation methods
# See https://mise.jdx.dev/getting-started.htmlThen configure your MCP client to use mise to install XcodeBuildMCP:
{
"mcpServers": {
"XcodeBuildMCP": {
"command": "mise",
"args": [
"x",
"npm:xcodebuildmcp@1.7.0",
"--",
"xcodebuildmcp"
]
}
}
}When using mise avoid using the @latest tag as mise will cache the package and may not update to the latest version automatically, instead prefer an explicit version number.
Please note that XcodeBuildMCP will request xcodebuild to skip macro validation. This is to avoid errors when building projects that use Swift Macros.
Incremental build support
XcodeBuildMCP includes experimental support for incremental builds. This feature is disabled by default and can be enabled by setting the INCREMENTAL_BUILDS_ENABLED environment variable to true:
To enable incremental builds, set the INCREMENTAL_BUILDS_ENABLED environment variable to true:
Example MCP client configuration:
{
"mcpServers": {
"XcodeBuildMCP": {
"command": "npx",
"args": [
"-y",
"xcodebuildmcp@latest"
],
"env": {
"INCREMENTAL_BUILDS_ENABLED": "true"
}
}
}
}Please note that incremental builds support is currently highly experimental and your mileage may vary. Please report any issues you encounter to theissue tracker.
Troubleshooting
If you encounter issues with XcodeBuildMCP, the diagnostic tool can help identify the problem by providing detailed information about your environment and dependencies.
Diagnostic Tool
The diagnostic tool is a standalone utility that checks your system configuration and reports on the status of all dependencies required by XcodeBuildMCP. It's particularly useful when reporting issues.
Using with npx
# Run the diagnostic tool using npx
npx xcodebuildmcp@1.7.0 xcodebuildmcp-diagnosticUsing with mise
# Run the diagnostic tool using mise
mise x npm:xcodebuildmcp@1.7.0 -- xcodebuildmcp-diagnosticThe diagnostic tool will output comprehensive information about:
System and Node.js environment
Xcode installation and configuration
Required dependencies (xcodebuild, AXe, etc.)
Environment variables affecting XcodeBuildMCP
Feature availability status
When reporting issues on GitHub, please include the full output from the diagnostic tool to help with troubleshooting.
MCP Server Logs
It can be helpful to have access to the log messages from the MCP server to identify any issues. The logs are captured by the client application, for example in Cursor:
Cursor:
find ~/Library/Application\ Support/Cursor/logs -name "Cursor MCP.log" -exec zip -r matching_logs.zip {} +If your MCP client doesn't have log files you can run the server directly using the MCP Inspector tool see Debugging for more information on how to do this. Once running the MCP tool prints all log messages to it's error pane, which can be helpful in diagnosing issues.
Privacy
This project uses Sentry for error monitoring and diagnostics. Sentry helps us track issues, crashes, and unexpected errors to improve the reliability and stability of XcodeBuildMCP.
What is sent to Sentry?
Only error-level logs and diagnostic information are sent to Sentry by default.
Error logs may include details such as error messages, stack traces, and (in some cases) file paths or project names. You can review the sources in this repository to see exactly what is logged.
Opting Out of Sentry
If you do not wish to send error logs to Sentry, you can opt out by setting the environment variable
SENTRY_DISABLED=true.
Example MCP client configuration:
{
"mcpServers": {
"XcodeBuildMCP": {
"command": "npx",
"args": [
"-y",
"xcodebuildmcp@latest"
],
"env": {
"SENTRY_DISABLED": "true"
}
}
}
}Selective tool registration
By default all tools are enabled but for some clients it may be useful to only enable specific tools to reduce the amount of context that is sent to the client. This can be achieved by setting specific environment variables in your clients MCP configuration.
Once you have enabled one or more tools or groups of tools all other tools will be disabled. For example, to enable only the simulator related tools, you can set the environment variable to XCODEBUILDMCP_GROUP_IOS_SIMULATOR_WORKFLOW=true this will only expose tools for building, running and debugging on simulators
{
"mcpServers": {
"XcodeBuildMCP": {
"command": "npx",
"args": [
"-y",
"xcodebuildmcp@latest"
],
"env": {
"XCODEBUILDMCP_GROUP_IOS_SIMULATOR_WORKFLOW": "true"
}
}
}
}You can find a list of available tools and detailed instructions on how to enable them in the TOOL_OPTIONS.md file.
Demos
Autonomously fixing build errors in Cursor
Utilising the new UI automation and screen capture features
Building and running iOS app in Claude Desktop
https://github.com/user-attachments/assets/e3c08d75-8be6-4857-b4d0-9350b26ef086
Contributing
Contributions are welcome! Here's how you can help improve XcodeBuildMCP.
See our CONTRIBUTING document for more information on how to configure your local environment and contribute to the project.
Licence
This project is licensed under the MIT License - see the LICENSE file for details.
MCP Server Verification
Glama.ai
MseeP.a
Available Tools
54 toolsboot_simB
Boots an iOS simulator. IMPORTANT: You MUST provide the simulatorUuid parameter. Example: boot_sim({ simulatorUuid: 'YOUR_UUID_HERE' })
| Name | Required | Description | Default |
|---|---|---|---|
| simulatorUuid | Yes | UUID of the simulator to use (obtained from list_simulators) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the required parameter but doesn't disclose behavioral traits like whether booting is idempotent, what happens if the simulator is already running, whether this requires specific permissions, or what the expected outcome is. The description adds minimal behavioral context beyond the basic action.
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 and front-loaded with the core purpose. The two sentences both earn their place - the first states what the tool does, the second provides critical usage guidance with a clear example. Zero 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?
For a single-parameter action tool with no annotations and no output schema, the description provides the minimum viable information: what it does and the required parameter. However, it lacks context about what 'booting' entails operationally, what happens on success/failure, or how this relates to other simulator management tools.
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 fully documents the single parameter. The description emphasizes that the parameter is mandatory and provides an example format, but doesn't add meaningful semantic context beyond what's in the schema description ('UUID of the simulator to use (obtained from list_simulators)').
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 ('Boots') and target resource ('an iOS simulator'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'open_sim' or 'launch_app_sim', but the verb 'Boots' suggests starting/initializing the simulator itself rather than opening an interface or launching an app.
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 some usage guidance by emphasizing the mandatory simulatorUuid parameter and referencing list_simulators as the source for this value. However, it doesn't explicitly state when to use this tool versus alternatives like 'open_sim' or 'launch_app_sim', nor does it mention prerequisites or timing considerations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_ios_dev_projB
Builds an iOS app from a project file for a physical device. IMPORTANT: Requires projectPath and scheme. Example: build_ios_dev_proj({ projectPath: '/path/to/MyProject.xcodeproj', scheme: 'MyScheme' })
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Path to the .xcodeproj file (Required) | |
| scheme | Yes | The scheme to use (Required) | |
| configuration | No | Build configuration (Debug, Release, etc.) | |
| derivedDataPath | No | Path where build products and other derived data will go | |
| extraArgs | No | Additional xcodebuild arguments | |
| preferXcodebuild | No | If true, prefers xcodebuild over the experimental incremental build system, useful for when incremental build system fails. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Builds') and requirements, but does not cover critical aspects like whether this is a destructive operation, permission needs, rate limits, or output behavior. For a build tool with zero annotation coverage, this leaves significant gaps in understanding its 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 front-loaded with the core purpose and key requirements in the first sentence, followed by a concise example. It avoids unnecessary details, though the example could be slightly trimmed. Overall, it is efficient with minimal waste.
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 complexity of a build tool with 6 parameters, no annotations, and no output schema, the description is insufficient. It lacks information on behavioral traits (e.g., side effects, error handling), output format, or integration with sibling tools. For a tool that performs a significant operation, more context is needed to ensure safe and effective use.
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 fully documents all 6 parameters. The description adds minimal value by naming two required parameters (projectPath, scheme) and providing an example, but does not explain parameter interactions or semantics beyond what the schema already states. This meets the baseline for high schema 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 specific action ('Builds an iOS app'), resource ('from a project file'), and target ('for a physical device'), distinguishing it from sibling tools like those for simulators (e.g., build_ios_sim_id_proj) or macOS (e.g., build_mac_proj). It precisely communicates the tool's function without redundancy.
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 by specifying 'for a physical device' and listing required parameters, but does not explicitly state when to use this tool versus alternatives (e.g., build_ios_sim_id_proj for simulators) or mention prerequisites beyond parameters. It provides some context but lacks clear guidance on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_ios_dev_wsA
Builds an iOS app from a workspace for a physical device. IMPORTANT: Requires workspacePath and scheme. Example: build_ios_dev_ws({ workspacePath: '/path/to/MyProject.xcworkspace', scheme: 'MyScheme' })
| Name | Required | Description | Default |
|---|---|---|---|
| workspacePath | Yes | Path to the .xcworkspace file (Required) | |
| scheme | Yes | The scheme to use (Required) | |
| configuration | No | Build configuration (Debug, Release, etc.) | |
| derivedDataPath | No | Path where build products and other derived data will go | |
| extraArgs | No | Additional xcodebuild arguments | |
| preferXcodebuild | No | If true, prefers xcodebuild over the experimental incremental build system, useful for when incremental build system fails. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool performs a build operation (implies mutation/write) and mentions required parameters, but doesn't describe what the build actually does (compiles code, creates .app file), where output goes, whether it's destructive to existing builds, authentication needs, or performance characteristics. For a build tool with zero annotation coverage, this is insufficient behavioral context.
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 perfectly front-loaded with the core purpose in the first sentence, followed by critical requirement information and a concrete example. Every sentence earns its place - the first states what it does, the second states requirements, and the third provides syntactic guidance. No wasted words or redundant 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?
For a build tool with 6 parameters, no annotations, and no output schema, the description is adequate but has clear gaps. It covers the basic purpose and requirements well, but doesn't explain what the build produces, where artifacts go, error conditions, or performance expectations. The lack of output schema means the description should ideally mention what gets returned, but it doesn't.
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 all 6 parameters thoroughly. The description adds minimal value beyond the schema by emphasizing that workspacePath and scheme are required and providing a usage example, but doesn't explain parameter interactions, default behaviors, or semantic meaning beyond what's in the 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?
The description clearly states the specific action ('Builds an iOS app'), target resource ('from a workspace'), and deployment target ('for a physical device'), which distinguishes it from sibling tools like 'build_ios_sim_id_ws' (simulator builds) and 'build_ios_dev_proj' (project-based builds). The verb+resource+target combination is precise 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?
The description explicitly states when to use this tool ('for a physical device') and provides required parameters (workspacePath and scheme), but doesn't explicitly mention when NOT to use it or name specific alternatives. The context implies it's for workspace-based iOS device builds, but lacks explicit exclusion guidance for simulator or project-based alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_ios_sim_id_projB
Builds an iOS app from a project file for a specific simulator by UUID. IMPORTANT: Requires projectPath, scheme, and simulatorId. Example: build_ios_sim_id_proj({ projectPath: '/path/to/MyProject.xcodeproj', scheme: 'MyScheme', simulatorId: 'SIMULATOR_UUID' })
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Path to the .xcodeproj file (Required) | |
| scheme | Yes | The scheme to use (Required) | |
| simulatorId | Yes | UUID of the simulator to use (obtained from listSimulators) (Required) | |
| configuration | No | Build configuration (Debug, Release, etc.) | |
| derivedDataPath | No | Path where build products and other derived data will go | |
| extraArgs | No | Additional xcodebuild arguments | |
| useLatestOS | No | Whether to use the latest OS version for the named simulator | |
| preferXcodebuild | No | If true, prefers xcodebuild over the experimental incremental build system, useful for when incremental build system fails. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('Builds an iOS app') and required parameters, but doesn't describe what the build does (e.g., compiles code, generates artifacts), potential side effects (e.g., modifies files, requires Xcode installation), error conditions, or output format. For a build tool with zero annotation coverage, this is a significant gap in transparency.
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 appropriately sized with two sentences: one stating the purpose and requirements, and one providing an example. It's front-loaded with key information and avoids unnecessary details, though the example could be slightly more concise (e.g., by omitting the function call syntax). Overall, it's efficient with minimal waste.
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 complexity of a build tool with 8 parameters, no annotations, and no output schema, the description is incomplete. It lacks information on what the build process entails, success/failure indicators, output artifacts, dependencies (e.g., Xcode), or error handling. Without annotations or output schema, the description should provide more context to guide effective use.
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 all 8 parameters thoroughly. The description adds minimal value by naming the three required parameters in text and providing an example that shows their usage, but doesn't explain parameter meanings beyond what the schema provides. This meets the baseline of 3 when schema coverage is high.
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 'Builds an iOS app from a project file for a specific simulator by UUID,' which specifies the verb (builds), resource (iOS app), and target (simulator by UUID). However, it doesn't explicitly differentiate from siblings like 'build_ios_sim_name_proj' (which uses simulator name instead of UUID) or 'build_ios_dev_proj' (which builds for a device), leaving some ambiguity in sibling 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?
The description implies usage by stating 'Requires projectPath, scheme, and simulatorId' and providing an example, which suggests when to use it (for building with a specific simulator UUID). However, it doesn't explicitly mention when not to use it or name alternatives like 'build_ios_sim_name_proj' for simulator name-based builds, leaving usage context partially implied rather than fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_ios_sim_id_wsB
Builds an iOS app from a workspace for a specific simulator by UUID. IMPORTANT: Requires workspacePath, scheme, and simulatorId. Example: build_ios_sim_id_ws({ workspacePath: '/path/to/MyProject.xcworkspace', scheme: 'MyScheme', simulatorId: 'SIMULATOR_UUID' })
| Name | Required | Description | Default |
|---|---|---|---|
| workspacePath | Yes | Path to the .xcworkspace file (Required) | |
| scheme | Yes | The scheme to use (Required) | |
| simulatorId | Yes | UUID of the simulator to use (obtained from listSimulators) (Required) | |
| configuration | No | Build configuration (Debug, Release, etc.) | |
| derivedDataPath | No | Path where build products and other derived data will go | |
| extraArgs | No | Additional xcodebuild arguments | |
| useLatestOS | No | Whether to use the latest OS version for the named simulator | |
| preferXcodebuild | No | If true, prefers xcodebuild over the experimental incremental build system, useful for when incremental build system fails. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states what the tool does, not behavioral traits like whether this is a destructive operation, what permissions are needed, expected runtime, error conditions, or output format. It mentions 'IMPORTANT' for required parameters but doesn't disclose operational behavior beyond the basic function.
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 appropriately sized with two sentences: one stating the purpose and one providing an example. The example is helpful but could be considered slightly verbose. Overall, it's front-loaded with the core purpose and wastes no 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?
For a build tool with 8 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what 'build' entails (compilation, linking, etc.), what happens on success/failure, where output goes, or how this differs from similar build tools. The example helps but doesn't compensate for missing behavioral context.
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 all 8 parameters thoroughly. The description adds minimal value by highlighting three required parameters in the example, but doesn't provide additional semantic context beyond what's in the schema. This meets the baseline for high schema 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 specific action ('Builds an iOS app'), resource ('from a workspace'), and target ('for a specific simulator by UUID'), distinguishing it from siblings like build_ios_dev_ws (device builds) or build_ios_sim_name_ws (simulator by name). It provides a complete verb+resource+scope statement.
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 context by specifying required parameters and mentioning simulatorId is 'obtained from listSimulators', but doesn't explicitly state when to use this tool versus alternatives like build_ios_sim_name_ws (simulator by name) or build_ios_dev_ws (device builds). It provides some guidance but lacks explicit comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_ios_sim_name_projB
Builds an iOS app from a project file for a specific simulator by name. IMPORTANT: Requires projectPath, scheme, and simulatorName. Example: build_ios_sim_name_proj({ projectPath: '/path/to/MyProject.xcodeproj', scheme: 'MyScheme', simulatorName: 'iPhone 16' })
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Path to the .xcodeproj file (Required) | |
| scheme | Yes | The scheme to use (Required) | |
| simulatorName | Yes | Name of the simulator to use (e.g., 'iPhone 16') (Required) | |
| configuration | No | Build configuration (Debug, Release, etc.) | |
| derivedDataPath | No | Path where build products and other derived data will go | |
| extraArgs | No | Additional xcodebuild arguments | |
| useLatestOS | No | Whether to use the latest OS version for the named simulator | |
| preferXcodebuild | No | If true, prefers xcodebuild over the experimental incremental build system, useful for when incremental build system fails. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool 'Builds an iOS app' but doesn't clarify whether this is a read-only operation, what happens on failure, whether it modifies the project, or what the output looks like. For a build tool with potential side effects, this lack of behavioral context 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 efficiently structured with the core purpose first, followed by important requirements and a clear example. Both sentences earn their place by providing essential information without redundancy. It could be slightly more concise by integrating the example more seamlessly, but overall it's well-organized.
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 build tool with 8 parameters and no annotations or output schema, the description provides adequate basic information about what the tool does and required parameters. However, it lacks critical context about behavioral characteristics (side effects, failure modes) and doesn't help differentiate it from similar sibling tools, leaving gaps in overall 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%, so the schema already documents all 8 parameters thoroughly. The description adds minimal value by explicitly naming the three required parameters in the example, but doesn't provide additional context about parameter interactions or usage beyond what's in the schema. This meets the baseline for high schema 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 specific action ('Builds an iOS app'), resource ('from a project file'), and target ('for a specific simulator by name'), which distinguishes it from siblings like build_ios_dev_proj (device builds) and build_ios_sim_id_proj (simulator by ID). The verb+resource+target combination is precise 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?
The description provides no guidance on when to use this tool versus alternatives like build_ios_sim_name_ws (workspace-based) or build_run_ios_sim_name_proj (build-and-run). It mentions required parameters but doesn't explain the tool's role in the broader workflow or prerequisites beyond those parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_ios_sim_name_wsB
Builds an iOS app from a workspace for a specific simulator by name. IMPORTANT: Requires workspacePath, scheme, and simulatorName. Example: build_ios_sim_name_ws({ workspacePath: '/path/to/MyProject.xcworkspace', scheme: 'MyScheme', simulatorName: 'iPhone 16' })
| Name | Required | Description | Default |
|---|---|---|---|
| workspacePath | Yes | Path to the .xcworkspace file (Required) | |
| scheme | Yes | The scheme to use (Required) | |
| simulatorName | Yes | Name of the simulator to use (e.g., 'iPhone 16') (Required) | |
| configuration | No | Build configuration (Debug, Release, etc.) | |
| derivedDataPath | No | Path where build products and other derived data will go | |
| extraArgs | No | Additional xcodebuild arguments | |
| useLatestOS | No | Whether to use the latest OS version for the named simulator | |
| preferXcodebuild | No | If true, prefers xcodebuild over the experimental incremental build system, useful for when incremental build system fails. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states what parameters are required. It doesn't disclose behavioral traits like whether this is a read-only or destructive operation, what happens on failure, expected runtime, or output format. The 'IMPORTANT' note about required parameters is helpful but insufficient for behavioral understanding.
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 appropriately sized with two sentences: a clear purpose statement followed by a helpful example. The front-loaded purpose statement earns its place, though the example could be slightly more concise. No wasted words or 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?
For a build tool with 8 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what the tool returns, what happens during execution, error conditions, or how it differs behaviorally from similar build tools. The example helps but doesn't compensate for missing behavioral context.
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 all 8 parameters thoroughly. The description adds minimal value by highlighting the 3 required parameters in the example, but doesn't provide additional semantic context beyond what's in the schema. Baseline 3 is appropriate when 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 clearly states the specific action ('Builds'), resource ('iOS app'), and context ('from a workspace for a specific simulator by name'). It distinguishes from siblings like build_ios_sim_name_proj (which uses project instead of workspace) and build_ios_sim_id_ws (which uses simulator ID instead of name).
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 context (building iOS apps for simulators from workspaces) but doesn't explicitly state when to choose this tool over alternatives like build_ios_sim_name_proj or build_ios_dev_ws. The example helps but doesn't provide comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_mac_projC
Builds a macOS app using xcodebuild from a project file.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Path to the .xcodeproj file (Required) | |
| scheme | Yes | The scheme to use (Required) | |
| configuration | No | Build configuration (Debug, Release, etc.) | |
| derivedDataPath | No | Path where build products and other derived data will go | |
| arch | No | Architecture to build for (arm64 or x86_64). For macOS only. | |
| extraArgs | No | Additional xcodebuild arguments | |
| preferXcodebuild | No | If true, prefers xcodebuild over the experimental incremental build system, useful for when incremental build system fails. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but provides minimal behavioral context. It mentions 'using xcodebuild' which implies a command-line build process, but doesn't disclose critical behaviors like whether this is a blocking/long-running operation, what happens on failure, if it modifies files, or what output to expect. For a build tool with zero annotation coverage, 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, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a tool with comprehensive schema documentation and follows good front-loading by stating the core purpose immediately.
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 build tool with 7 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what the tool returns (e.g., success/failure status, build output path), what side effects occur, or how it differs from similar build tools. The context signals show this is a complex operation that needs more behavioral disclosure than provided.
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 all 7 parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema. This meets the baseline of 3 since the schema does the heavy lifting, but the description doesn't enhance understanding of parameter relationships or usage patterns.
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 ('Builds') and resource ('macOS app using xcodebuild from a project file'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'build_mac_ws' (workspace-based) or 'build_run_mac_proj' (build-and-run), leaving some ambiguity about when to choose this specific tool.
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 like 'build_mac_ws' (workspace-based) or 'build_run_mac_proj' (build-and-run). The description only states what it does, not when it's appropriate or what prerequisites might exist (e.g., needing Xcode installed).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_mac_wsC
Builds a macOS app using xcodebuild from a workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| workspacePath | Yes | Path to the .xcworkspace file (Required) | |
| scheme | Yes | The scheme to use (Required) | |
| configuration | No | Build configuration (Debug, Release, etc.) | |
| derivedDataPath | No | Path where build products and other derived data will go | |
| arch | No | Architecture to build for (arm64 or x86_64). For macOS only. | |
| extraArgs | No | Additional xcodebuild arguments | |
| preferXcodebuild | No | If true, prefers xcodebuild over the experimental incremental build system, useful for when incremental build system fails. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool 'Builds' but doesn't clarify whether this is a read-only operation (likely not, as building implies mutation), what side effects occur (e.g., generates build artifacts), or any performance considerations (e.g., build time). The description lacks critical behavioral context for a build 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, efficient sentence that front-loads the core purpose without unnecessary details. It uses precise terminology ('macOS app', 'xcodebuild', 'workspace') and avoids redundancy, making it highly concise and well-structured.
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 complexity of a build tool with 7 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., build success/failure, output paths), behavioral traits (e.g., side effects, dependencies), or error handling, leaving significant gaps for the agent to navigate.
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 each parameter well-documented in the schema (e.g., 'arch' specifies enum values, 'scheme' is required). The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline score of 3 for high schema coverage without adding 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 clearly states the action ('Builds') and target ('macOS app using xcodebuild from a workspace'), which distinguishes it from sibling tools like 'build_mac_proj' (project-based) and 'build_dev_ws' (likely device-focused). However, it doesn't explicitly differentiate from 'build_run_mac_ws' (which likely builds and runs), making it slightly less specific than ideal.
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 no guidance on when to use this tool versus alternatives like 'build_mac_proj' (for projects), 'build_run_mac_ws' (for build-and-run), or 'swift_package_build' (for Swift packages). It lacks context about prerequisites (e.g., Xcode installation) or typical use cases, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_run_ios_sim_id_projA
Builds and runs an iOS app from a project file on a simulator specified by UUID. IMPORTANT: Requires projectPath, scheme, and simulatorId. Example: build_run_ios_sim_id_proj({ projectPath: '/path/to/project.xcodeproj', scheme: 'MyScheme', simulatorId: 'SIMULATOR_UUID' })
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Path to the .xcodeproj file (Required) | |
| scheme | Yes | The scheme to use (Required) | |
| simulatorId | Yes | UUID of the simulator to use (obtained from listSimulators) (Required) | |
| configuration | No | Build configuration (Debug, Release, etc.) | |
| derivedDataPath | No | Path where build products and other derived data will go | |
| extraArgs | No | Additional xcodebuild arguments | |
| useLatestOS | No | Whether to use the latest OS version for the named simulator | |
| preferXcodebuild | No | If true, prefers xcodebuild over the experimental incremental build system, useful for when incremental build system fails. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It clearly indicates this is a build+run operation (implying mutation/execution) and specifies required parameters. However, it doesn't disclose behavioral traits like whether it waits for completion, returns logs/output, handles errors, or has side effects like installing the app first.
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 appropriately sized with two sentences: first states purpose and requirements, second provides an example. It's front-loaded with essential information. The example could be slightly more concise, but overall it's efficient with zero 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?
For a complex build+run tool with 8 parameters and no annotations/output schema, the description is adequate but incomplete. It covers the core purpose and requirements but lacks information about return values, error handling, execution behavior, and how it differs from similar sibling tools beyond the obvious project vs workspace distinction.
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 all 8 parameters thoroughly. The description only mentions the 3 required parameters in the text, adding minimal value beyond what's in the schema. This meets the baseline of 3 when schema does 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 clearly states the specific action ('Builds and runs an iOS app'), resource ('from a project file'), and target ('on a simulator specified by UUID'). It distinguishes from sibling tools like 'build_ios_sim_id_proj' (which only builds) and 'build_run_ios_sim_id_ws' (which uses a workspace instead of 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 explicitly states when to use this tool ('Requires projectPath, scheme, and simulatorId') and provides an example. However, it doesn't explicitly contrast with alternatives like 'build_run_ios_sim_name_proj' (which uses simulator name instead of UUID) or mention prerequisites like needing a booted simulator.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_run_ios_sim_id_wsA
Builds and runs an iOS app from a workspace on a simulator specified by UUID. IMPORTANT: Requires workspacePath, scheme, and simulatorId. Example: build_run_ios_sim_id_ws({ workspacePath: '/path/to/workspace', scheme: 'MyScheme', simulatorId: 'SIMULATOR_UUID' })
| Name | Required | Description | Default |
|---|---|---|---|
| workspacePath | Yes | Path to the .xcworkspace file (Required) | |
| scheme | Yes | The scheme to use (Required) | |
| simulatorId | Yes | UUID of the simulator to use (obtained from listSimulators) (Required) | |
| configuration | No | Build configuration (Debug, Release, etc.) | |
| derivedDataPath | No | Path where build products and other derived data will go | |
| extraArgs | No | Additional xcodebuild arguments | |
| useLatestOS | No | Whether to use the latest OS version for the named simulator | |
| preferXcodebuild | No | If true, prefers xcodebuild over the experimental incremental build system, useful for when incremental build system fails. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the tool 'builds and runs' without disclosing behavioral traits like whether this is a destructive operation, what permissions are needed, time/performance characteristics, error handling, or what happens to existing builds. The example helps but doesn't cover behavioral aspects.
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 perfectly front-loaded with the core purpose in the first sentence, followed by important requirements and a concrete example. Every sentence earns its place with zero wasted words, making it highly efficient for an AI agent.
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 complex build/run tool with 8 parameters and no annotations or output schema, the description is adequate but has clear gaps. It covers the basic purpose and requirements well, but lacks information about what the tool returns, error conditions, performance characteristics, or dependencies on other tools like 'list_sims' for obtaining simulatorId.
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 all 8 parameters thoroughly. The description adds minimal value by mentioning three required parameters in the text, but doesn't provide additional semantic context beyond what's in the 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?
The description clearly states the tool's purpose with specific verbs ('builds and runs') and resources ('iOS app from a workspace on a simulator specified by UUID'), distinguishing it from siblings like 'build_ios_sim_id_ws' (which only builds) and 'build_run_ios_sim_id_proj' (which uses a project instead of workspace).
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 explicitly states when to use this tool by listing required parameters (workspacePath, scheme, simulatorId) and provides an example, but doesn't explicitly mention when not to use it or name alternatives like 'build_run_ios_sim_id_proj' for project-based builds versus workspace-based.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_run_ios_sim_name_projB
Builds and runs an iOS app from a project file on a simulator specified by name. IMPORTANT: Requires projectPath, scheme, and simulatorName. Example: build_run_ios_sim_name_proj({ projectPath: '/path/to/project.xcodeproj', scheme: 'MyScheme', simulatorName: 'iPhone 16' })
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Path to the .xcodeproj file (Required) | |
| scheme | Yes | The scheme to use (Required) | |
| simulatorName | Yes | Name of the simulator to use (e.g., 'iPhone 16') (Required) | |
| configuration | No | Build configuration (Debug, Release, etc.) | |
| derivedDataPath | No | Path where build products and other derived data will go | |
| extraArgs | No | Additional xcodebuild arguments | |
| useLatestOS | No | Whether to use the latest OS version for the named simulator | |
| preferXcodebuild | No | If true, prefers xcodebuild over the experimental incremental build system, useful for when incremental build system fails. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only mentions required parameters and provides an example. It doesn't disclose important behavioral traits like whether this is a long-running operation, what happens on failure, if it requires Xcode installation, or what output to expect. The description is minimal beyond the basic action.
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 efficiently structured with the core purpose first, followed by important requirements and an example. Both sentences earn their place, though the example could be more concise. It's appropriately sized for an 8-parameter tool with no annotations.
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 build-and-run tool with 8 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what 'builds and runs' entails, what happens on success/failure, expected runtime, or output format. The example helps but doesn't compensate for missing behavioral context.
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 fully documents all 8 parameters. The description adds minimal value by naming the 3 required parameters and providing an example, but doesn't explain parameter relationships or usage beyond what's in the schema. Baseline 3 is appropriate when 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 clearly states the specific action ('Builds and runs an iOS app'), resource ('from a project file'), and target ('on a simulator specified by name'). It distinguishes from siblings like 'build_ios_sim_name_proj' (which only builds) and 'build_run_ios_sim_id_proj' (which uses simulator ID instead of name).
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 no guidance on when to use this tool versus alternatives like 'build_run_ios_sim_id_proj' (simulator ID vs name) or 'build_run_ios_sim_name_ws' (workspace vs project). It only states required parameters without context about when this specific tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_run_ios_sim_name_wsB
Builds and runs an iOS app from a workspace on a simulator specified by name. IMPORTANT: Requires workspacePath, scheme, and simulatorName. Example: build_run_ios_sim_name_ws({ workspacePath: '/path/to/workspace', scheme: 'MyScheme', simulatorName: 'iPhone 16' })
| Name | Required | Description | Default |
|---|---|---|---|
| workspacePath | Yes | Path to the .xcworkspace file (Required) | |
| scheme | Yes | The scheme to use (Required) | |
| simulatorName | Yes | Name of the simulator to use (e.g., 'iPhone 16') (Required) | |
| configuration | No | Build configuration (Debug, Release, etc.) | |
| derivedDataPath | No | Path where build products and other derived data will go | |
| extraArgs | No | Additional xcodebuild arguments | |
| useLatestOS | No | Whether to use the latest OS version for the named simulator | |
| preferXcodebuild | No | If true, prefers xcodebuild over the experimental incremental build system, useful for when incremental build system fails. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While it mentions the tool 'builds and runs' an app (implying a potentially time-consuming operation with side effects), it doesn't describe what happens during execution (e.g., build logs, error handling, whether it waits for completion), performance characteristics, or any system requirements beyond the parameters.
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 appropriately sized with two sentences: one stating the purpose and one providing requirements and an example. It's front-loaded with the core functionality and efficiently uses the example to illustrate usage, though the example could be slightly more concise by omitting the function wrapper.
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 complex tool with 8 parameters, no annotations, and no output schema, the description is moderately complete. It covers the basic purpose and required parameters but lacks information about what the tool returns, error conditions, execution behavior, or how it differs from similar tools in the sibling list, leaving gaps for an AI agent to fully understand the tool's 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?
The description adds minimal parameter semantics beyond the schema, which has 100% coverage. It lists the three required parameters in the IMPORTANT note and provides an example with values, but doesn't explain parameter interactions, constraints, or provide additional context about what the parameters mean in practice beyond what's already in the 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?
The description clearly states the tool's purpose with specific verbs ('Builds and runs') and resources ('iOS app from a workspace on a simulator specified by name'), distinguishing it from siblings like build_run_ios_sim_name_proj (which uses a project instead of workspace) and build_run_ios_sim_id_ws (which uses simulator ID instead of name).
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 implied usage guidance by listing required parameters and giving an example, but it doesn't explicitly state when to use this tool versus alternatives like build_run_ios_sim_name_proj or build_run_ios_sim_id_ws, nor does it mention prerequisites or exclusions beyond the parameter requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_run_mac_projB
Builds and runs a macOS app from a project file in one step.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Path to the .xcodeproj file (Required) | |
| scheme | Yes | The scheme to use (Required) | |
| configuration | No | Build configuration (Debug, Release, etc.) | |
| derivedDataPath | No | Path where build products and other derived data will go | |
| extraArgs | No | Additional xcodebuild arguments | |
| preferXcodebuild | No | If true, prefers xcodebuild over the experimental incremental build system, useful for when incremental build system fails. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool performs both building and running in one step, which implies mutation and execution, but doesn't disclose permissions needed, side effects (e.g., app launch), error handling, or output behavior. This leaves significant gaps for a tool that likely modifies files and runs applications.
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 front-loads the core purpose ('Builds and runs a macOS app from a project file in one step') with zero wasted words. Every element 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 complex tool with 6 parameters, no annotations, and no output schema, the description is incomplete. It lacks information about what happens during execution (e.g., does it launch the app, show logs, handle errors?), expected outputs, or behavioral nuances, making it inadequate for safe and effective use.
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%, providing detailed documentation for all 6 parameters. The description adds no additional parameter semantics beyond what's in the schema, so it meets the baseline of 3 where the 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 clearly states the specific action ('Builds and runs') and resource ('macOS app from a project file') in a single step, distinguishing it from sibling tools like 'build_mac_proj' (which only builds) and 'build_run_mac_ws' (which uses a workspace).
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 context (one-step build and run for macOS apps) but doesn't explicitly state when to use this tool versus alternatives like 'build_mac_proj' for building only or workspace-based tools. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_run_mac_wsC
Builds and runs a macOS app from a workspace in one step.
| Name | Required | Description | Default |
|---|---|---|---|
| workspacePath | Yes | Path to the .xcworkspace file (Required) | |
| scheme | Yes | The scheme to use (Required) | |
| configuration | No | Build configuration (Debug, Release, etc.) | |
| derivedDataPath | No | Path where build products and other derived data will go | |
| extraArgs | No | Additional xcodebuild arguments | |
| preferXcodebuild | No | If true, prefers xcodebuild over the experimental incremental build system, useful for when incremental build system fails. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'builds and runs' but doesn't clarify critical aspects like whether this is a destructive operation (e.g., overwrites previous builds), execution time, error handling, or output format. For a tool that performs build and run operations, this lack of detail 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, efficient sentence: 'Builds and runs a macOS app from a workspace in one step.' It's front-loaded with the core purpose, has zero wasted words, and clearly communicates the tool's intent without 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 the complexity of building and running macOS apps, the lack of annotations, and no output schema, the description is incomplete. It doesn't address behavioral traits (e.g., side effects, performance), usage context relative to siblings, or what to expect upon execution (e.g., success/failure indicators, app launch). For a tool with six parameters and no structured safety hints, this is inadequate.
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 all six parameters thoroughly. The description adds no additional parameter semantics beyond implying the tool uses a workspace (matching 'workspacePath') and involves building/running (matching parameters like 'scheme' and 'configuration'). This meets the baseline of 3 when the 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 clearly states the tool's purpose: 'Builds and runs a macOS app from a workspace in one step.' It specifies the verb ('builds and runs'), resource ('macOS app'), and scope ('from a workspace'), which is specific and actionable. However, it doesn't explicitly differentiate from sibling tools like 'build_mac_ws' or 'build_run_mac_proj', which is a minor gap.
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 no guidance on when to use this tool versus alternatives. With many sibling tools for building and running iOS/macOS apps (e.g., 'build_mac_ws', 'build_run_mac_proj', 'build_run_ios_sim_id_ws'), there's no indication of when this specific tool is preferred, such as for workspace-based macOS builds that include running the app, or prerequisites like having Xcode installed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clean_projB
Cleans build products for a specific project file using xcodebuild. IMPORTANT: Requires projectPath. Scheme/Configuration are optional. Example: clean_proj({ projectPath: '/path/to/MyProject.xcodeproj', scheme: 'MyScheme' })
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Path to the .xcodeproj file (Required) | |
| scheme | No | Optional: The scheme to clean | |
| configuration | No | Optional: Build configuration to clean (Debug, Release, etc.) | |
| derivedDataPath | No | Optional: Path where derived data might be located | |
| extraArgs | No | Additional xcodebuild arguments |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the required parameter and optional ones, but doesn't describe what 'clean' actually does (e.g., deletes derived data, removes build artifacts), potential side effects, permission requirements, or error behavior. The example helps but doesn't fully compensate for the lack of behavioral context.
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 appropriately sized with two sentences: one stating the purpose and requirements, and one providing an example. It's front-loaded with the core functionality. The example is helpful but could be considered slightly verbose, though not excessive.
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 moderate complexity (5 parameters, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose and parameter requirements but lacks details about what cleaning entails, potential impacts, or return values. For a mutation tool with no annotations, more behavioral context would be expected.
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 all 5 parameters thoroughly. The description adds minimal value beyond the schema by emphasizing that projectPath is required and scheme/configuration are optional, but doesn't provide additional semantic context about parameter usage or interactions.
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 ('Cleans build products') and resource ('for a specific project file using xcodebuild'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'clean_ws' or 'swift_package_clean', which would be needed for a score of 5.
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 implied usage guidance by stating 'Requires projectPath' and noting that Scheme/Configuration are optional, but it doesn't explicitly say when to use this tool versus alternatives like 'clean_ws' or 'swift_package_clean'. No when-not-to-use scenarios or clear alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clean_wsA
Cleans build products for a specific workspace using xcodebuild. IMPORTANT: Requires workspacePath. Scheme/Configuration are optional. Example: clean_ws({ workspacePath: '/path/to/MyProject.xcworkspace', scheme: 'MyScheme' })
| Name | Required | Description | Default |
|---|---|---|---|
| workspacePath | Yes | Path to the .xcworkspace file (Required) | |
| scheme | No | Optional: The scheme to clean | |
| configuration | No | Optional: Build configuration to clean (Debug, Release, etc.) | |
| derivedDataPath | No | Optional: Path where derived data might be located | |
| extraArgs | No | Additional xcodebuild arguments |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It correctly identifies this as a destructive operation ('Cleans') and specifies the underlying tool (xcodebuild), but doesn't mention important behavioral aspects like whether this operation is reversible, what specific files get removed, or potential side effects. The description adds some value but leaves significant gaps.
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 efficiently structured with three sentences: purpose statement, parameter guidance, and concrete example. Every sentence earns its place by providing essential information without redundancy. The example is particularly helpful for illustrating usage.
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 tool with no annotations and no output schema, the description provides adequate basic information but lacks completeness. It doesn't describe what 'cleaning' entails specifically, what gets returned (if anything), error conditions, or dependencies. The example helps but doesn't fully compensate for the missing behavioral context.
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?
With 100% schema description coverage, the baseline is 3. The description adds minimal value beyond the schema by emphasizing workspacePath as required and scheme/configuration as optional, but doesn't provide additional semantic context about parameter interactions or usage patterns beyond what's already documented in the 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?
The description clearly states the specific action ('Cleans build products') and target resource ('for a specific workspace using xcodebuild'), distinguishing it from sibling tools like clean_proj (which likely cleans projects) and swift_package_clean (which cleans Swift packages). The verb+resource combination is precise 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?
The description provides clear context about when to use this tool (for cleaning Xcode workspace build products) and explicitly states parameter requirements ('Requires workspacePath. Scheme/Configuration are optional'). However, it doesn't explicitly contrast when to use this versus alternatives like clean_proj or swift_package_clean, which prevents a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_projsC
Scans a directory (defaults to workspace root) to find Xcode project (.xcodeproj) and workspace (.xcworkspace) files.
| Name | Required | Description | Default |
|---|---|---|---|
| workspaceRoot | Yes | The absolute path of the workspace root to scan within. | |
| scanPath | No | Optional: Path relative to workspace root to scan. Defaults to workspace root. | |
| maxDepth | No | Optional: Maximum directory depth to scan. Defaults to 5. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It describes a read-only scanning operation but doesn't disclose important behavioral traits: whether it's recursive by default (implied by maxDepth parameter), performance characteristics, error handling, output format, or any side effects. The description is minimal and leaves critical behavior unspecified.
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 front-loads the core functionality. It wastes no words while covering the essential action (scan), target (directory), and outputs (specific file types). 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?
Given no annotations and no output schema, the description is insufficiently complete. It doesn't explain what the tool returns (list of paths? structured data?), error conditions, or how it interacts with the many sibling build tools. For a discovery tool in a complex iOS/macOS development environment, more context about the output and integration would be valuable.
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 all three parameters thoroughly. The description mentions directory scanning with default workspace root, which aligns with the schema but adds no additional semantic context beyond what's in the parameter descriptions. This meets the baseline for high schema 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's purpose: scanning a directory to find Xcode project and workspace files. It specifies the resource (directory) and verb (scan/find) with concrete file types (.xcodeproj, .xcworkspace). However, it doesn't explicitly differentiate from sibling tools, which are mostly build/run/management tools rather than discovery tools.
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 no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, typical use cases, or relationships to the many sibling build/management tools. The agent must infer usage from the tool name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ios_bundle_idA
Extracts the bundle identifier from an iOS app bundle (.app). IMPORTANT: You MUST provide the appPath parameter. Example: get_ios_bundle_id({ appPath: '/path/to/your/app.app' }) Note: In some environments, this tool may be prefixed as mcp0_get_ios_bundle_id.
| Name | Required | Description | Default |
|---|---|---|---|
| appPath | Yes | Path to the iOS .app bundle to extract bundle ID from (full path to the .app directory) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It clarifies the tool extracts (read-only) data, mentions the mandatory 'appPath' parameter, and notes potential environment-specific prefixing, adding useful context. However, it doesn't detail error conditions, output format, or file access permissions.
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 appropriately sized with three sentences: purpose, mandatory parameter note with example, and environment note. It's front-loaded with the core function, though the example could be more concise. No wasted sentences.
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 annotations and no output schema, the description is moderately complete for a simple extraction tool. It covers purpose and parameter usage but lacks details on return values, error handling, or dependencies. More behavioral context 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%, so the schema fully documents the single parameter. The description adds minimal value by emphasizing the parameter's necessity and providing an example, but doesn't explain semantics beyond what the schema states. With 0 parameters, baseline is 4, but here it's 4 due to the example adding slight clarity.
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 specific action ('Extracts') and target resource ('bundle identifier from an iOS app bundle (.app)'), distinguishing it from sibling tools like 'get_mac_bundle_id' which targets macOS. The purpose is precise 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?
The description implies usage when an iOS bundle ID is needed from a .app file, but lacks explicit guidance on when to use this versus alternatives (e.g., 'get_mac_bundle_id' for macOS). It provides a mandatory parameter note but no broader context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ios_dev_app_path_projA
Gets the app bundle path for an iOS physical device application using a project file. IMPORTANT: Requires projectPath and scheme. Example: get_ios_dev_app_path_proj({ projectPath: '/path/to/project.xcodeproj', scheme: 'MyScheme' })
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Path to the .xcodeproj file (Required) | |
| scheme | Yes | The scheme to use (Required) | |
| configuration | No | Build configuration (Debug, Release, etc.) |
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 mentions the IMPORTANT requirement for projectPath and scheme, which is useful behavioral context. However, it doesn't disclose other behavioral traits like what happens if the path doesn't exist, whether it validates inputs, or what the return format looks like.
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 efficiently structured with two sentences: a clear purpose statement followed by a practical example. Every element serves a purpose with zero waste, making it easy to parse and understand quickly.
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 with no annotations and no output schema, the description provides adequate basic context about purpose and required parameters. However, it doesn't explain what the tool returns (the app bundle path format) or potential error conditions, leaving gaps in understanding the complete tool 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%, so the schema already documents all three parameters thoroughly. The description adds minimal value beyond the schema by emphasizing that projectPath and scheme are required, but doesn't provide additional semantic context about parameter usage or relationships.
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 with a specific verb ('Gets'), resource ('app bundle path'), and context ('for an iOS physical device application using a project file'). It distinguishes from sibling tools like 'get_ios_dev_app_path_ws' by specifying the project-based approach.
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 clear context for when to use this tool (for iOS physical device apps with a project file) and mentions required parameters. However, it doesn't explicitly state when not to use it or name alternatives like 'get_ios_dev_app_path_ws' for workspace-based approaches.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ios_dev_app_path_wsA
Gets the app bundle path for an iOS physical device application using a workspace. IMPORTANT: Requires workspacePath and scheme. Example: get_ios_dev_app_path_ws({ workspacePath: '/path/to/workspace', scheme: 'MyScheme' })
| Name | Required | Description | Default |
|---|---|---|---|
| workspacePath | Yes | Path to the .xcworkspace file (Required) | |
| scheme | Yes | The scheme to use (Required) | |
| configuration | No | Build configuration (Debug, Release, etc.) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions 'IMPORTANT: Requires workspacePath and scheme' and gives an example, but lacks details on behavioral traits like error handling, output format, dependencies, or side effects. For a tool with no annotations, 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 appropriately sized with two sentences: one stating the purpose and one providing important usage notes with an example. It is front-loaded with the core functionality, though the example could be slightly more concise.
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 annotations and no output schema, the description is incomplete. It lacks information on what the tool returns (e.g., the path format), error conditions, or any behavioral context needed for effective use. For a tool in this context, more detail is required.
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 fully documents all parameters. The description adds minimal value by emphasizing the required parameters in the example, but does not provide additional meaning beyond what the schema already states. 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's purpose with a specific verb ('Gets') and resource ('app bundle path for an iOS physical device application'), and distinguishes it from siblings by specifying 'using a workspace' (vs. 'proj' in sibling get_ios_dev_app_path_proj). It precisely identifies what the tool does.
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 clear context for when to use this tool (for iOS physical device apps with a workspace) and implicitly distinguishes it from project-based alternatives (e.g., get_ios_dev_app_path_proj). However, it does not explicitly state when not to use it or name alternatives, keeping it at a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mac_app_path_projA
Gets the app bundle path for a macOS application using a project file. IMPORTANT: Requires projectPath and scheme. Example: get_mac_app_path_proj({ projectPath: '/path/to/project.xcodeproj', scheme: 'MyScheme' })
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Path to the .xcodeproj file (Required) | |
| scheme | Yes | The scheme to use (Required) | |
| configuration | No | Build configuration (Debug, Release, etc.) | |
| arch | No | Architecture to build for (arm64 or x86_64). For macOS only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the tool's purpose and requirements. It lacks behavioral details such as whether it performs a build, reads cached data, requires specific permissions, or handles errors, which are critical for a tool that likely interacts with Xcode projects.
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 front-loaded with the core purpose, followed by important requirements and a clear example. Both sentences are essential—the first defines the tool, and the second provides practical usage—with 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?
Given the complexity of interacting with Xcode projects, no annotations, and no output schema, the description is insufficient. It does not explain what the returned 'app bundle path' entails, potential side effects, error conditions, or how it differs from similar tools, leaving significant gaps for an AI 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?
Schema description coverage is 100%, so the schema fully documents all parameters. The description adds minimal value by emphasizing that projectPath and scheme are required, but does not provide additional context like parameter interactions or default behaviors beyond what the schema already states.
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 specific action ('Gets the app bundle path'), target resource ('for a macOS application'), and method ('using a project file'), distinguishing it from sibling tools like get_mac_app_path_ws (which uses a workspace) and get_ios_dev_app_path_proj (which targets iOS).
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 explicitly states when to use this tool ('using a project file') and provides an example, but does not mention when not to use it or name specific alternatives like get_mac_app_path_ws, leaving some guidance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mac_app_path_wsB
Gets the app bundle path for a macOS application using a workspace. IMPORTANT: Requires workspacePath and scheme. Example: get_mac_app_path_ws({ workspacePath: '/path/to/workspace', scheme: 'MyScheme' })
| Name | Required | Description | Default |
|---|---|---|---|
| workspacePath | Yes | Path to the .xcworkspace file (Required) | |
| scheme | Yes | The scheme to use (Required) | |
| configuration | No | Build configuration (Debug, Release, etc.) | |
| arch | No | Architecture to build for (arm64 or x86_64). For macOS only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. While it states the tool 'Gets' (implying read-only) and mentions requirements, it doesn't disclose important behavioral traits like what happens if the workspace/scheme doesn't exist, whether this performs a build operation, what the return format is, or any error conditions. The example helps but doesn't cover behavioral aspects.
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 appropriately sized with two sentences: one stating purpose and context, one stating requirements with an example. The example is helpful but could be more concise. The structure is front-loaded with the core purpose first.
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 with 4 parameters, 100% schema coverage, but no annotations and no output schema, the description is adequate but has gaps. It covers the basic purpose and requirements but lacks information about return values, error conditions, and behavioral details that would be important for proper tool 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?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema - it mentions workspacePath and scheme as required but doesn't provide additional semantic context about these parameters. The example shows usage but doesn't explain parameter meanings beyond what's in 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 ('Gets') and resource ('app bundle path for a macOS application'), and specifies the context ('using a workspace'). It distinguishes from sibling tools like 'get_mac_app_path_proj' by mentioning workspace. However, it doesn't explicitly differentiate from other path-getting tools like 'get_device_app_path_ws' or 'get_sim_app_path_id_ws'.
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 clear context for when to use this tool ('using a workspace') and explicitly states prerequisites ('Requires workspacePath and scheme'). It doesn't mention when NOT to use it or name specific alternatives, but the workspace context and requirement statement provide good guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mac_bundle_idA
Extracts the bundle identifier from a macOS app bundle (.app). IMPORTANT: You MUST provide the appPath parameter. Example: get_mac_bundle_id({ appPath: '/path/to/your/app.app' }) Note: In some environments, this tool may be prefixed as mcp0_get_macos_bundle_id.
| Name | Required | Description | Default |
|---|---|---|---|
| appPath | Yes | Path to the macOS .app bundle to extract bundle ID from (full path to the .app directory) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the extraction action and includes an important operational note about the mandatory parameter, but doesn't describe what happens if the path is invalid, whether the tool modifies files, or what format the extracted identifier returns. It provides basic context but misses details about error conditions and 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?
The description is efficiently structured with the core purpose first, followed by important requirement, example, and environmental note. Every sentence serves a clear purpose, though the environmental prefix note could be considered slightly extraneous. Overall, it's well-organized with minimal waste.
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 single-parameter tool with no annotations and no output schema, the description provides adequate basic information about what the tool does and how to invoke it. However, it doesn't describe the return value format or potential error conditions, which would be helpful given the lack of output schema. It's minimally complete but could be more comprehensive.
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 the schema already documents the single 'appPath' parameter completely. The description reinforces this with the mandatory requirement and provides a concrete example, adding practical context beyond the schema's technical description. With only one parameter, this exceeds the baseline expectation.
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 specific action ('Extracts the bundle identifier') and target resource ('from a macOS app bundle (.app)'), distinguishing it from sibling tools like 'get_app_bundle_id' which lacks the macOS specificity. It provides a precise verb+resource combination that leaves no ambiguity about the tool's function.
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 includes explicit guidance on when to use this tool (for macOS .app bundles) and provides a mandatory parameter requirement ('You MUST provide the appPath parameter'), but it doesn't explicitly state when NOT to use it or name specific alternatives among the many sibling tools. The context is clear but lacks explicit exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sim_app_path_id_projA
Gets the app bundle path for a simulator by UUID using a project file. IMPORTANT: Requires projectPath, scheme, platform, and simulatorId. Example: get_sim_app_path_id_proj({ projectPath: '/path/to/project.xcodeproj', scheme: 'MyScheme', platform: 'iOS Simulator', simulatorId: 'SIMULATOR_UUID' })
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Path to the .xcodeproj file (Required) | |
| scheme | Yes | The scheme to use (Required) | |
| platform | Yes | The target simulator platform (Required) | |
| simulatorId | Yes | UUID of the simulator to use (obtained from listSimulators) (Required) | |
| configuration | No | Build configuration (Debug, Release, etc.) | |
| useLatestOS | No | Whether to use the latest OS version for the named simulator |
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 discloses that the tool requires specific parameters and provides an example, but lacks details on error handling, performance, or what happens if parameters are invalid. It doesn't contradict annotations (none exist), but could offer more behavioral context.
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 front-loaded with the core purpose, followed by important requirements and an example. It's efficient with two sentences, though the example is detailed but necessary for clarity. No wasted words, but could be slightly more streamlined.
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 annotations and no output schema, the description is moderately complete for a tool with 6 parameters. It covers the purpose and required inputs but lacks details on return values, error cases, or dependencies (e.g., how simulatorId relates to 'list_sims'). Adequate but with gaps in full context.
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 all parameters thoroughly. The description adds minimal value by listing required parameters in the text and providing an example, but doesn't explain parameter interactions or semantics beyond what the schema provides. Baseline 3 is appropriate given high schema 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 verb ('Gets') and resource ('app bundle path for a simulator by UUID using a project file'), making the purpose specific and actionable. It distinguishes from sibling tools like 'get_sim_app_path_name_proj' by specifying UUID-based lookup rather than name-based.
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 clear context by stating it requires specific parameters (projectPath, scheme, platform, simulatorId) and includes an example, which helps guide usage. However, it doesn't explicitly state when to use this tool versus alternatives like 'get_sim_app_path_id_ws' or 'get_sim_app_path_name_proj', missing explicit sibling differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sim_app_path_id_wsA
Gets the app bundle path for a simulator by UUID using a workspace. IMPORTANT: Requires workspacePath, scheme, platform, and simulatorId. Example: get_sim_app_path_id_ws({ workspacePath: '/path/to/workspace', scheme: 'MyScheme', platform: 'iOS Simulator', simulatorId: 'SIMULATOR_UUID' })
| Name | Required | Description | Default |
|---|---|---|---|
| workspacePath | Yes | Path to the .xcworkspace file (Required) | |
| scheme | Yes | The scheme to use (Required) | |
| platform | Yes | The target simulator platform (Required) | |
| simulatorId | Yes | UUID of the simulator to use (obtained from listSimulators) (Required) | |
| configuration | No | Build configuration (Debug, Release, etc.) | |
| useLatestOS | No | Whether to use the latest OS version for the named simulator |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it states what the tool does and provides an example, it doesn't disclose important behavioral aspects like whether this is a read-only operation, what permissions are needed, what happens if parameters are invalid, or what the return format looks like. For a tool with 6 parameters and 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 appropriately sized with two sentences: first states the purpose, second provides requirements and example. The example is helpful but could be considered slightly verbose. Overall, it's front-loaded with the core purpose and wastes no 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?
For a tool with 6 parameters, no annotations, and no output schema, the description provides adequate but incomplete coverage. It clearly states what the tool does and provides an example, but lacks information about return values, error conditions, and behavioral constraints. The example helps but doesn't fully compensate for the missing structural information.
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 fully documents all 6 parameters. The description adds minimal value beyond the schema - it mentions the four required parameters by name but doesn't provide additional semantic context about how they interact or why they're needed. Baseline 3 is appropriate when the 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 clearly states the specific action ('Gets the app bundle path'), target resource ('for a simulator by UUID'), and method ('using a workspace'). It distinguishes from sibling tools like get_sim_app_path_name_ws (which uses simulator name instead of UUID) and get_sim_app_path_id_proj (which uses project instead of workspace).
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 explicitly states when to use this tool ('Requires workspacePath, scheme, platform, and simulatorId') and provides a complete example. It doesn't explicitly state when NOT to use it or name specific alternatives, but the parameter requirements and example provide clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sim_app_path_name_projB
Gets the app bundle path for a simulator by name using a project file. IMPORTANT: Requires projectPath, scheme, platform, and simulatorName. Example: get_sim_app_path_name_proj({ projectPath: '/path/to/project.xcodeproj', scheme: 'MyScheme', platform: 'iOS Simulator', simulatorName: 'iPhone 16' })
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Path to the .xcodeproj file (Required) | |
| scheme | Yes | The scheme to use (Required) | |
| platform | Yes | The target simulator platform (Required) | |
| simulatorName | Yes | Name of the simulator to use (e.g., 'iPhone 16') (Required) | |
| configuration | No | Build configuration (Debug, Release, etc.) | |
| useLatestOS | No | Whether to use the latest OS version for the named simulator |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the tool's function and required parameters but lacks details on what happens during execution (e.g., whether it builds the project, validates inputs, or returns errors), the output format (e.g., string path or structured data), or any side effects. The example helps but doesn't cover behavioral traits comprehensively.
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 appropriately sized with two sentences: one stating the purpose and one with usage guidance and an example. It's front-loaded with the core functionality and efficiently includes critical information. The example is helpful but could be slightly more concise by integrating it into the flow.
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 complexity (6 parameters, no output schema, no annotations), the description is adequate but has gaps. It covers the purpose and required parameters well, but without annotations or output schema, it should ideally explain more about the return value (e.g., what the 'app bundle path' looks like) and potential errors. The example partially compensates, but completeness is moderate.
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 all parameters thoroughly. The description adds minimal value beyond the schema by emphasizing the four required parameters in the IMPORTANT note and providing an example with sample values. However, it doesn't explain parameter interactions or semantics beyond what's in the 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?
The description clearly states the tool's purpose: 'Gets the app bundle path for a simulator by name using a project file.' It specifies the verb ('gets'), resource ('app bundle path'), and key constraints ('by name', 'using a project file'). However, it doesn't explicitly differentiate from sibling tools like get_sim_app_path_id_proj or get_sim_app_path_name_ws, which appear to be similar tools using different identifiers or workspace 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?
The description provides some usage context by stating 'IMPORTANT: Requires projectPath, scheme, platform, and simulatorName' and includes an example, which helps understand when to use it. However, it doesn't explicitly state when to choose this tool over alternatives (like get_sim_app_path_id_proj for simulator ID instead of name) or mention any prerequisites beyond the required parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sim_app_path_name_wsB
Gets the app bundle path for a simulator by name using a workspace. IMPORTANT: Requires workspacePath, scheme, platform, and simulatorName. Example: get_sim_app_path_name_ws({ workspacePath: '/path/to/workspace', scheme: 'MyScheme', platform: 'iOS Simulator', simulatorName: 'iPhone 16' })
| Name | Required | Description | Default |
|---|---|---|---|
| workspacePath | Yes | Path to the .xcworkspace file (Required) | |
| scheme | Yes | The scheme to use (Required) | |
| platform | Yes | The target simulator platform (Required) | |
| simulatorName | Yes | Name of the simulator to use (e.g., 'iPhone 16') (Required) | |
| configuration | No | Build configuration (Debug, Release, etc.) | |
| useLatestOS | No | Whether to use the latest OS version for the named simulator |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool 'Gets' (implying read-only) and lists required parameters, but doesn't disclose behavioral traits like error conditions, return format, whether it's idempotent, or performance characteristics. The example helps but doesn't compensate for missing behavioral context.
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 appropriately sized with two sentences: one stating the purpose and one with requirements and an example. It's front-loaded with the core purpose. The example is helpful but slightly verbose; every sentence earns its place, though minor trimming could improve 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?
Given 6 parameters, no annotations, and no output schema, the description is moderately complete. It covers the purpose and required parameters but lacks details on return values, error handling, and behavioral nuances. For a tool with this complexity and no structured output, more context would be beneficial to achieve higher 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%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema by listing required parameters in the 'IMPORTANT' note and providing an example, but doesn't explain parameter interactions or semantics not in the schema. Baseline 3 is appropriate when 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 clearly states the tool's purpose: 'Gets the app bundle path for a simulator by name using a workspace.' It specifies the verb ('Gets'), resource ('app bundle path'), and key constraints ('by name', 'using a workspace'). However, it doesn't explicitly differentiate from sibling tools like 'get_sim_app_path_name_proj' or 'get_sim_app_path_id_ws', which would require a 5.
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 implied usage context through the 'IMPORTANT' note listing required parameters, suggesting when to use this tool (when you have a workspace and simulator name). However, it lacks explicit guidance on when to choose this over alternatives like 'get_sim_app_path_name_proj' (project-based) or 'get_sim_app_path_id_ws' (ID-based), and doesn't mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
install_app_simA
Installs an app in an iOS simulator. IMPORTANT: You MUST provide both the simulatorUuid and appPath parameters. Example: install_app_sim({ simulatorUuid: 'YOUR_UUID_HERE', appPath: '/path/to/your/app.app' })
| Name | Required | Description | Default |
|---|---|---|---|
| simulatorUuid | Yes | UUID of the simulator to use (obtained from list_simulators) | |
| appPath | Yes | Path to the .app bundle to install (full path to the .app directory) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly indicates this is a write/mutation operation ('Installs'), but doesn't describe what happens if installation fails, whether it overwrites existing apps, or what permissions are required. The IMPORTANT warning about required parameters is helpful but doesn't fully cover 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 perfectly front-loaded with the core purpose first, followed by critical usage information and a concrete example. Every sentence serves a clear purpose with zero wasted words, making it highly efficient for an AI agent.
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 2-parameter tool with 100% schema coverage but no annotations or output schema, the description provides adequate context. It covers the core purpose, parameter requirements, and includes a helpful example. However, as a mutation tool with no annotations, it could benefit from more behavioral context about failure modes or side effects.
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 fully documents both parameters. The description adds minimal value beyond the schema by emphasizing both parameters are required and providing a concrete example, but doesn't explain parameter semantics beyond what's already in the 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?
The description clearly states the specific action ('Installs an app') and target resource ('in an iOS simulator'), distinguishing it from sibling tools like 'install_app_device' which targets physical devices. The purpose is unambiguous and differentiated from alternatives.
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 clear context about when to use this tool (for iOS simulators) and references 'list_simulators' as a prerequisite for obtaining the simulatorUuid. However, it doesn't explicitly state when NOT to use it (e.g., vs. install_app_device for physical devices) or name specific alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
launch_app_logs_simC
Launches an app in an iOS simulator and captures its logs.
| Name | Required | Description | Default |
|---|---|---|---|
| simulatorUuid | Yes | UUID of the simulator to use (obtained from list_simulators) | |
| bundleId | Yes | Bundle identifier of the app to launch (e.g., 'com.example.MyApp') | |
| args | No | Additional arguments to pass to the app |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool performs two actions (launch and log capture) but doesn't describe what happens if the app fails to launch, how logs are captured/returned, whether this blocks until app exits, or what permissions/requirements exist. For a tool with potential side effects, 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, efficient sentence that states the core functionality without unnecessary words. It's appropriately sized for a tool with clear parameters and no complex edge cases needing explanation. 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?
For a tool that launches apps and captures logs with no annotations and no output schema, the description is incomplete. It doesn't explain what format logs are returned in, whether this is a blocking operation, what happens on failure, or how to access captured logs. The combination of mutation behavior and lack of output documentation creates significant gaps.
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 all three parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema descriptions. This meets the baseline expectation when schema does the heavy lifting, but doesn't provide extra context about parameter interactions.
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 with specific verbs ('launches' and 'captures') and resources ('app in an iOS simulator' and 'logs'). It distinguishes from simpler launch tools like 'launch_app_sim' by adding the log capture functionality. However, it doesn't explicitly differentiate from 'launch_app_sim_name_ws' which might have similar capabilities.
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 no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over 'launch_app_sim' (which likely doesn't capture logs) or 'launch_app_sim_name_ws' (which uses workspace instead of UUID). There's no mention of prerequisites like needing a booted simulator or installed app.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
launch_app_simA
Launches an app in an iOS simulator. IMPORTANT: You MUST provide both the simulatorUuid and bundleId parameters.
Note: You must install the app in the simulator before launching. The typical workflow is: build → install → launch. Example: launch_app_sim({ simulatorUuid: 'YOUR_UUID_HERE', bundleId: 'com.example.MyApp' })
| Name | Required | Description | Default |
|---|---|---|---|
| simulatorUuid | Yes | UUID of the simulator to use (obtained from list_simulators) | |
| bundleId | Yes | Bundle identifier of the app to launch (e.g., 'com.example.MyApp') | |
| args | No | Additional arguments to pass to the app |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively communicates that this is a launch operation (implying execution/mutation), specifies a critical prerequisite (app must be installed), and provides a typical workflow. However, it doesn't mention potential side effects like app state changes or error conditions, leaving some behavioral aspects uncovered.
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 well-structured and appropriately sized: it starts with the core purpose, highlights critical requirements, adds workflow context, and provides an example. Every sentence serves a clear purpose, though the example could be slightly more concise. There's no redundant 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?
For a mutation tool with no annotations and no output schema, the description does a good job covering essential context: purpose, prerequisites, workflow, and parameter emphasis. It adequately compensates for the lack of structured behavioral annotations, though it doesn't describe return values or error behaviors, which would be helpful given the absence of an 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 description coverage is 100%, so the schema already documents all three parameters thoroughly. The description emphasizes that both simulatorUuid and bundleId are mandatory ('MUST provide both'), which reinforces the schema's required fields, but adds minimal additional semantic context beyond what the schema provides. This meets the baseline for high schema 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 specific action ('Launches an app') and target resource ('in an iOS simulator'), distinguishing it from sibling tools like launch_app_device (for physical devices) or launch_mac_app (for macOS). It precisely defines the tool's scope without 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?
The description provides explicit guidance on when to use this tool: it specifies prerequisites ('You must install the app in the simulator before launching'), outlines the typical workflow ('build → install → launch'), and implicitly distinguishes it from alternatives by focusing on iOS simulators (unlike launch_app_device for devices).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
launch_mac_appB
Launches a macOS application. IMPORTANT: You MUST provide the appPath parameter. Example: launch_mac_app({ appPath: '/path/to/your/app.app' }) Note: In some environments, this tool may be prefixed as mcp0_launch_macos_app.
| Name | Required | Description | Default |
|---|---|---|---|
| appPath | Yes | Path to the macOS .app bundle to launch (full path to the .app directory) | |
| args | No | Additional arguments to pass to the app |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions that 'appPath' is required and gives an example, but doesn't disclose important behavioral traits like whether this requires specific permissions, what happens if the app fails to launch, whether it runs in the background or foreground, or any system dependencies. The note about environment prefixes adds some context but not behavioral insight.
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 appropriately sized with three sentences: a clear purpose statement, an important requirement with example, and an environmental note. It's front-loaded with the core functionality. The environmental note could be considered slightly extraneous but provides useful implementation 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 that this is a mutation tool (launching applications) with no annotations and no output schema, the description is minimally adequate. It covers the basic purpose and parameter requirement but lacks information about what happens after launch, error conditions, or system requirements. The 100% schema coverage helps, but for a tool that interacts with the operating system, more behavioral context would be beneficial.
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 fully documents both parameters. The description adds value by emphasizing that 'appPath' is required and providing an example format, but doesn't add significant meaning beyond what the schema provides (e.g., explaining what constitutes a valid .app bundle path or how 'args' are processed).
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 ('Launches') and target ('a macOS application'), providing a specific verb+resource combination. However, it doesn't distinguish this tool from sibling tools like 'launch_app_device' or 'launch_app_sim', which appear to launch applications on different platforms or environments.
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 some usage guidance by emphasizing that 'appPath' is required and giving an example, but it doesn't explicitly state when to use this tool versus alternatives like 'launch_app_device' or 'launch_app_sim'. The context is implied (macOS-specific launching) but not contrasted with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_schems_projB
Lists available schemes in the project file. IMPORTANT: Requires projectPath. Example: list_schems_proj({ projectPath: '/path/to/MyProject.xcodeproj' })
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Path to the .xcodeproj file (Required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the requirement for 'projectPath' but doesn't disclose other behavioral traits such as whether this is a read-only operation, what the output format looks like (e.g., list of strings, JSON structure), error conditions, or performance considerations. The description is minimal and misses key details needed for safe and effective use.
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 appropriately sized with two sentences: one stating the purpose and requirement, and one providing an example. It's front-loaded with the core information and avoids unnecessary details, though the example could be slightly more concise by omitting the tool name repetition.
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 incomplete. It doesn't explain what 'schemes' are in this context (e.g., build configurations in Xcode), the return format, or potential errors. For a tool with no structured output documentation, more descriptive context is needed to guide the agent effectively.
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 'projectPath' fully documented in the schema as 'Path to the .xcodeproj file (Required)'. The description adds minimal value by reiterating the requirement and providing an example, but doesn't offer additional semantics like format constraints or examples beyond the schema. This meets the baseline for high schema 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 verb ('Lists') and resource ('available schemes in the project file'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from its sibling 'list_schems_ws', which likely lists schemes in a workspace file, leaving some ambiguity about when to choose one over the other.
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 by specifying 'Requires projectPath' and providing an example, which gives context for when to use it. However, it lacks explicit guidance on when to use this tool versus alternatives like 'list_schems_ws' or other project-related tools, leaving the agent to infer based on the parameter name 'projectPath'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_schems_wsB
Lists available schemes in the workspace. IMPORTANT: Requires workspacePath. Example: list_schems_ws({ workspacePath: '/path/to/MyProject.xcworkspace' })
| Name | Required | Description | Default |
|---|---|---|---|
| workspacePath | Yes | Path to the .xcworkspace file (Required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool requires a workspacePath parameter, which is useful behavioral context. However, it doesn't describe what 'schemes' are in this context, whether this is a read-only operation, what format the output takes, or any error conditions. For a tool with no annotations, this leaves significant behavioral gaps.
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 appropriately concise with two sentences: one stating the purpose and one providing important usage information with an example. It's front-loaded with the core functionality. The example is helpful but could be slightly more efficient. Overall, it's well-structured with minimal waste.
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 moderate complexity (listing schemes), no annotations, no output schema, and 100% schema coverage for a single parameter, the description is somewhat complete but has gaps. It covers the basic purpose and parameter requirement but doesn't explain what 'schemes' are, what the output looks like, or how this differs from the sibling 'list_schems_proj'. For a tool with no annotations or output schema, more context would be helpful.
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, with the single parameter 'workspacePath' well-documented as 'Path to the .xcworkspace file (Required)'. The description adds minimal value beyond this by reiterating that workspacePath is required and providing an example format, but doesn't explain what constitutes a valid workspace path or the expected format beyond the example. With high schema coverage, the baseline is 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's purpose: 'Lists available schemes in the workspace.' It specifies the verb ('Lists') and resource ('available schemes in the workspace'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from its sibling 'list_schems_proj', which appears to list schemes in a project rather than workspace, so it doesn't reach the highest score.
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 some usage guidance by stating 'IMPORTANT: Requires workspacePath' and giving an example, which implies when to use it (when you have a workspace path). However, it doesn't explicitly mention when NOT to use it or provide alternatives (like using 'list_schems_proj' for projects instead of workspaces), so the guidance is implied rather than comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_simsB
Lists available iOS simulators with their UUIDs.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the output includes UUIDs but doesn't specify format (e.g., list, JSON), pagination, or error handling. For a read operation with no annotations, this leaves gaps in understanding how the tool behaves beyond basic listing.
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 front-loads the core purpose without unnecessary details. Every word contributes to understanding the tool's function, making it appropriately sized and well-structured for quick comprehension.
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 low complexity (one parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic action and output but lacks details on usage context, parameter meaning, and behavioral traits, leaving room for improvement in guiding the agent effectively.
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 has 0% description coverage, but the description doesn't explain the single parameter 'enabled'. It implies filtering by availability but doesn't clarify what 'enabled' means (e.g., active simulators vs. installed ones). Since schema coverage is low, the description adds minimal value beyond the schema, meeting the baseline for partial compensation.
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 with a specific verb ('Lists') and resource ('available iOS simulators with their UUIDs'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'open_sim' or 'boot_sim', which might have overlapping functionality.
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 no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, such as needing simulators to be installed or running, or compare it to sibling tools like 'discover_projs' that might list related resources, leaving the agent without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_simC
Opens the iOS Simulator app.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('Opens') but doesn't explain what 'Opens' entails (e.g., launching the app, activating a window, requiring prior setup), potential side effects, or error conditions. This leaves significant gaps in understanding the tool's behavior.
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, straightforward sentence with no wasted words, making it easy to parse and front-loaded with the core action. Every word earns its place by directly stating the tool's 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 complexity of interacting with an iOS Simulator (implied by many sibling tools) and the lack of annotations, output schema, or parameter details, the description is incomplete. It doesn't address what 'Opens' means in this context, potential dependencies, or how it fits into broader workflows, leaving the agent under-informed.
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 has 0% description coverage for its single parameter 'enabled', and the tool description provides no information about parameters. Since there's only one parameter, the baseline is 4, but the description fails to compensate for the lack of schema details, offering no insight into what 'enabled' means or how it affects the opening process.
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 ('Opens') and the target resource ('the iOS Simulator app'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'boot_sim' or 'launch_app_sim', which might have overlapping functionality in starting simulator-related processes.
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 no guidance on when to use this tool versus alternatives. With many sibling tools related to iOS simulators (e.g., 'boot_sim', 'launch_app_sim'), there's no indication of prerequisites, timing, or distinctions, leaving the agent to guess based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reset_network_conditionC
Resets network conditions to default in the simulator.
| Name | Required | Description | Default |
|---|---|---|---|
| simulatorUuid | Yes | UUID of the simulator to use (obtained from list_simulators) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Resets') but doesn't clarify if this is a destructive operation, what 'default' means specifically, whether it requires specific permissions, or what the outcome looks like (e.g., success confirmation). For a mutation tool with zero annotation coverage, this is a significant gap in transparency.
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 front-loads the core action and target without unnecessary words. It's appropriately sized for a simple tool, with zero waste or redundancy, making it easy for an agent to parse quickly.
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 mutation nature (resetting implies change) and lack of annotations or output schema, the description is incomplete. It doesn't address behavioral aspects like safety, permissions, or result format, leaving gaps for the agent. While concise, it fails to provide enough context for reliable use in a simulator management environment.
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, with the single parameter 'simulatorUuid' documented as 'UUID of the simulator to use (obtained from list_simulators)'. The description doesn't add any meaning beyond this, as it doesn't mention parameters at all. Given the high schema coverage, the baseline score of 3 is appropriate, as the schema adequately handles parameter documentation.
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 ('Resets') and target ('network conditions to default in the simulator'), making the purpose understandable. It doesn't explicitly differentiate from sibling tools like 'set_network_condition', but the verb 'resets' implies a distinct operation from 'set', so it's not vague. It avoids tautology by specifying what gets reset beyond just the name.
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 like 'set_network_condition' or other simulator management tools. The description implies usage for resetting network conditions, but lacks explicit context, prerequisites (e.g., after using 'set_network_condition'), or exclusions. This leaves the agent without clear direction on appropriate scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reset_simulator_locationC
Resets the simulator's location to default.
| Name | Required | Description | Default |
|---|---|---|---|
| simulatorUuid | Yes | UUID of the simulator to use (obtained from list_simulators) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the action without behavioral details. It doesn't disclose if this is destructive, requires specific permissions, has side effects, or what happens on success/failure. This is inadequate for a mutation tool with zero annotation 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?
The description is a single, direct sentence with no wasted words, making it highly concise and front-loaded. It efficiently communicates the core purpose without unnecessary elaboration.
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 mutation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits, error handling, or what 'default' entails, leaving significant gaps for an AI agent to understand and invoke it correctly.
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%, with the parameter 'simulatorUuid' well-documented in the schema. The description adds no additional parameter semantics beyond implying the tool acts on a simulator, so it meets the baseline of 3 where the 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 clearly states the action ('Resets') and target ('simulator's location') with specificity, distinguishing it from sibling tools like 'set_simulator_location'. However, it doesn't specify what 'default' means (e.g., factory reset, home location), leaving some 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 explicit guidance on when to use this tool versus alternatives like 'set_simulator_location' or other simulator-related tools. The description implies usage for resetting location but lacks context on prerequisites or scenarios where it's appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scaffold_ios_projectB
Scaffold a new iOS project from templates. Creates a modern Xcode project with workspace structure, SPM package for features, and proper iOS configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| projectName | Yes | Name of the new project | |
| outputPath | Yes | Path where the project should be created | |
| bundleIdentifier | No | Bundle identifier (e.g., com.example.myapp). If not provided, will use com.example.projectname | |
| displayName | No | App display name (shown on home screen/dock). If not provided, will use projectName | |
| marketingVersion | No | Marketing version (e.g., 1.0, 2.1.3). If not provided, will use 1.0 | |
| currentProjectVersion | No | Build number (e.g., 1, 42, 100). If not provided, will use 1 | |
| customizeNames | No | Whether to customize project names and identifiers. Default is true. | |
| deploymentTarget | No | iOS deployment target (e.g., 18.4, 17.0). If not provided, will use 18.4 | |
| targetedDeviceFamily | No | Target device family. If not provided, will use iPhone+iPad | |
| supportedOrientations | No | Supported orientations for iPhone. If not provided, will use all orientations | |
| supportedOrientationsIpad | No | Supported orientations for iPad. If not provided, will use all orientations |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states 'creates' which implies a write/mutation operation, but doesn't disclose important behavioral traits like whether this overwrites existing files, what permissions are needed, whether it's idempotent, or what happens on failure. The description mentions the outcome but not the process or potential 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 appropriately sized (two sentences) and front-loaded with the core purpose. Every sentence earns its place by specifying what gets created and the key components. It could be slightly more structured by separating creation details from configuration details, but it's efficient overall.
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 creation tool with 11 parameters, no annotations, and no output schema, the description is moderately complete. It explains what gets created but lacks information about return values, error conditions, or behavioral constraints. Given the complexity and absence of structured metadata, it should provide more context about the creation process and outcomes.
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 all 11 parameters thoroughly with descriptions and defaults. The description doesn't add any parameter-specific information beyond what's in the schema. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description.
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 specific action ('scaffold a new iOS project from templates') and resource ('iOS project'), distinguishing it from sibling tools like 'scaffold_macos_project' which targets macOS instead of iOS. It provides concrete details about what gets created (Xcode project with workspace structure, SPM package, iOS configuration).
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 context (creating a new iOS project from templates) but doesn't explicitly state when to use this tool versus alternatives like 'scaffold_macos_project' or the various build/run tools. It mentions 'modern Xcode project' which suggests it's for new projects, but lacks explicit guidance on prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scaffold_macos_projectB
Scaffold a new macOS project from templates. Creates a modern Xcode project with workspace structure, SPM package for features, and proper macOS configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| projectName | Yes | Name of the new project | |
| outputPath | Yes | Path where the project should be created | |
| bundleIdentifier | No | Bundle identifier (e.g., com.example.myapp). If not provided, will use com.example.projectname | |
| displayName | No | App display name (shown on home screen/dock). If not provided, will use projectName | |
| marketingVersion | No | Marketing version (e.g., 1.0, 2.1.3). If not provided, will use 1.0 | |
| currentProjectVersion | No | Build number (e.g., 1, 42, 100). If not provided, will use 1 | |
| customizeNames | No | Whether to customize project names and identifiers. Default is true. | |
| deploymentTarget | No | macOS deployment target (e.g., 15.4, 14.0). If not provided, will use 15.4 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it states that the tool creates files ('Creates a modern Xcode project'), it doesn't mention important behavioral aspects like whether it overwrites existing files, requires specific permissions, has side effects, or what happens on failure. For a file creation tool with zero annotation coverage, 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 perfectly concise - two sentences that efficiently convey the core purpose and key features. Every word earns its place with no redundancy or unnecessary elaboration. It's front-loaded with the main action and follows with specific 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?
For a file creation tool with no annotations and no output schema, the description provides basic purpose but lacks important context. It doesn't explain what gets returned (success/failure indicators, project path), error conditions, or behavioral constraints. The 100% schema coverage helps, but the description alone is incomplete for safe tool 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?
Schema description coverage is 100%, so the schema already documents all 8 parameters thoroughly with descriptions and defaults. The description adds no parameter-specific information beyond what's in the schema. The baseline score of 3 reflects adequate parameter documentation entirely from 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 specific action ('scaffold a new macOS project from templates') and the resource ('macOS project'), distinguishing it from sibling tools like 'scaffold_ios_project' and various build/run tools. It provides concrete details about what gets created (modern Xcode project with workspace structure, SPM package, macOS configuration).
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 no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, when not to use it, or compare it to similar tools like 'scaffold_ios_project' or project discovery tools. The agent must infer usage from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screenshotB
Captures screenshot for visual verification. For UI coordinates, use describe_ui instead (don't determine coordinates from screenshots).
| Name | Required | Description | Default |
|---|---|---|---|
| simulatorUuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the tool captures screenshots for visual verification, implying a read-only operation that produces an image. However, it lacks details on permissions, output format (e.g., image type, size), side effects, or error conditions. For a tool with no annotations, this is a significant gap in transparency.
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 highly concise and well-structured: two sentences that efficiently convey the purpose and a key usage guideline. Every word serves a clear purpose, with no wasted text, making it easy to parse and understand quickly.
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 complexity (involving screenshot capture with a required parameter), lack of annotations, no output schema, and low schema description coverage, the description is incomplete. It misses critical details like parameter explanation, output format, and behavioral constraints, making it inadequate for full agent understanding without external context.
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 1 parameter (simulatorUuid) with 0% description coverage, meaning the schema provides no semantic context. The description does not mention this parameter at all, failing to explain what simulatorUuid is, why it's required, or how it relates to screenshot capture. This leaves the parameter's meaning undocumented.
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: 'Captures screenshot for visual verification.' It specifies the action (captures) and resource (screenshot) with a clear goal (visual verification). However, it doesn't explicitly differentiate from all sibling tools beyond the one mentioned alternative (describe_ui), leaving some ambiguity about its uniqueness in the broader context of the toolset.
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 explicit guidance on when to use this tool vs. alternatives: 'For UI coordinates, use describe_ui instead (don't determine coordinates from screenshots).' This clearly defines a specific exclusion case and names the alternative tool, helping the agent avoid misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_network_conditionC
Simulates different network conditions (e.g., wifi, 3g, edge, high-latency, dsl, 100%loss, 3g-lossy, very-lossy) in the simulator.
| Name | Required | Description | Default |
|---|---|---|---|
| simulatorUuid | Yes | UUID of the simulator to use (obtained from list_simulators) | |
| profile | Yes | The network profile to simulate. Must be one of: wifi, 3g, edge, high-latency, dsl, 100%loss, 3g-lossy, very-lossy. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states what the tool does but doesn't describe important behavioral aspects: whether this is a persistent setting, if it affects all simulator traffic, what permissions are needed, whether it's reversible (hinting at reset_network_condition but not explicit), or what happens on failure. For a configuration tool with mutation implications, this is inadequate.
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 gets straight to the point. It front-loads the core purpose and provides helpful examples. However, it could be slightly more structured by separating the purpose from the profile examples for better readability.
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 modifies simulator state with no annotations and no output schema, the description is insufficient. It doesn't explain the tool's effect duration, error conditions, relationship to reset_network_condition, or what happens to existing network conditions. Given the complexity of network simulation and lack of structured behavioral hints, more context is needed for safe and effective use.
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%, with both parameters well-documented in the schema. The description adds minimal value beyond the schema by listing example profiles in parentheses, but doesn't explain profile semantics (e.g., what '100%loss' means operationally) or provide context about simulatorUuid beyond what's in the schema. Baseline 3 is appropriate given the 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 clearly states the tool's purpose: 'Simulates different network conditions in the simulator.' It specifies the verb ('simulates') and resource ('network conditions'), and provides concrete examples of profiles. However, it doesn't explicitly differentiate from sibling 'reset_network_condition', which is a related but distinct 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 provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a simulator UUID from list_simulators), when this should be applied (before/after app launch), or how it relates to sibling tools like reset_network_condition. The agent must infer usage from parameter descriptions alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_sim_appearanceB
Sets the appearance mode (dark/light) of an iOS simulator.
| Name | Required | Description | Default |
|---|---|---|---|
| simulatorUuid | Yes | UUID of the simulator to use (obtained from list_simulators) | |
| mode | Yes | The appearance mode to set (either "dark" or "light") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. It states the action is a 'set' operation, implying mutation, but doesn't disclose side effects (e.g., if it requires simulator to be running, permissions needed, or error handling). It lacks details on what happens if the simulator isn't available or if the change is persistent.
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 front-loads the core purpose without unnecessary words. Every part ('Sets', 'appearance mode', 'iOS simulator', 'dark/light') contributes directly to understanding the tool's function, making it highly concise and well-structured.
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 2 parameters with full schema coverage and no output schema, the description is minimally adequate. It covers the basic purpose but lacks context on behavioral aspects (e.g., dependencies, effects) and usage guidelines. For a mutation tool with no annotations, more detail would improve completeness, but it's not entirely 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?
Schema description coverage is 100%, with clear descriptions for both parameters (mode with enum values, simulatorUuid with source). The description adds no additional parameter semantics beyond what the schema provides, such as format details or examples. Baseline 3 is appropriate since the 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 clearly states the action ('Sets') and the target ('appearance mode of an iOS simulator'), with specific modes mentioned ('dark/light'). It distinguishes from siblings like 'boot_sim' or 'list_sims' by focusing on appearance configuration rather than lifecycle or listing. However, it doesn't explicitly differentiate from potential appearance-related tools (none in the list), so it's not a perfect 5.
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 no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a booted simulator), exclusions, or related tools for checking appearance. The context is implied through the action, but no explicit usage instructions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_simulator_locationC
Sets a custom GPS location for the simulator.
| Name | Required | Description | Default |
|---|---|---|---|
| simulatorUuid | Yes | UUID of the simulator to use (obtained from list_simulators) | |
| latitude | Yes | The latitude for the custom location. | |
| longitude | Yes | The longitude for the custom location. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. While 'Sets' implies a write operation, it doesn't specify whether this change is persistent across simulator sessions, requires specific simulator states, or has any confirmation/error handling. The description lacks critical behavioral context for a mutation 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, focused sentence that efficiently communicates the core functionality without unnecessary words. It's appropriately sized for a straightforward tool and front-loads the essential 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?
For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after setting the location, whether there's confirmation, error conditions, or how this interacts with other simulator operations. The context signals indicate this tool modifies system state, yet the description provides minimal operational context.
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?
With 100% schema description coverage, the input schema already documents all three parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema, maintaining the baseline score for high schema coverage situations.
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 ('Sets') and target ('custom GPS location for the simulator'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from its sibling 'reset_simulator_location', which appears to be a related tool for reverting to default location settings.
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 no guidance on when to use this tool versus alternatives like 'reset_simulator_location' or other location-related operations. There's no mention of prerequisites, side effects, or typical use cases, leaving the agent with insufficient context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_build_set_projB
Shows build settings from a project file using xcodebuild. IMPORTANT: Requires projectPath and scheme. Example: show_build_set_proj({ projectPath: '/path/to/MyProject.xcodeproj', scheme: 'MyScheme' })
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Path to the .xcodeproj file (Required) | |
| scheme | Yes | The scheme to use (Required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that the tool 'shows' build settings, implying a read-only operation, but doesn't clarify if it's safe, what output format to expect, or any potential side effects. The description adds minimal behavioral context beyond the basic action.
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 appropriately sized with two sentences: one stating the purpose and requirements, and one providing an example. It's front-loaded with the core functionality. The example is helpful but could be slightly more concise by avoiding repetition of the tool name.
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 moderate complexity (2 required parameters, no output schema, no annotations), the description is minimally adequate. It covers the purpose and parameters but lacks details on output format, error handling, or integration with sibling tools. Without annotations or output schema, more behavioral context 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%, so the schema already documents both parameters (projectPath and scheme) with descriptions. The description adds value by emphasizing these as required and providing an example, but it doesn't add significant meaning beyond what the schema provides, such as format details or usage nuances.
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: 'Shows build settings from a project file using xcodebuild.' It specifies the verb ('shows'), resource ('build settings'), and method ('using xcodebuild'). However, it doesn't explicitly differentiate from its sibling 'show_build_set_ws', which likely shows build settings from a workspace instead of a project file.
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 context by mentioning the required parameters (projectPath and scheme) and providing an example, but it doesn't explicitly state when to use this tool versus alternatives like 'show_build_set_ws' or other build-related tools. The 'IMPORTANT' note about requirements serves as basic guidance but lacks comparative context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_build_set_wsA
Shows build settings from a workspace using xcodebuild. IMPORTANT: Requires workspacePath and scheme. Example: show_build_set_ws({ workspacePath: '/path/to/MyProject.xcworkspace', scheme: 'MyScheme' })
| Name | Required | Description | Default |
|---|---|---|---|
| workspacePath | Yes | Path to the .xcworkspace file (Required) | |
| scheme | Yes | The scheme to use (Required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions the required parameters and includes an example, it doesn't describe what the tool actually returns (build settings format), whether it's read-only or has side effects, or any error conditions. For a tool with no annotation coverage, this leaves significant behavioral gaps.
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 perfectly front-loaded with the core purpose in the first sentence, followed by important requirements and a concrete example. Every sentence serves a clear purpose with zero waste, making it highly efficient and easy to parse.
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 moderate complexity (2 required parameters, no output schema, no annotations), the description is adequate but incomplete. It covers the basic purpose and usage but lacks information about return values, error handling, and behavioral characteristics that would be essential for an agent to use this tool effectively.
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%, so the schema already documents both parameters thoroughly. The description adds minimal value beyond the schema by mentioning that both parameters are required and providing an example with concrete values, but doesn't add significant semantic context beyond what the schema 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?
The description clearly states the action ('Shows build settings') and resource ('from a workspace using xcodebuild'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from its sibling 'show_build_set_proj' (which likely shows build settings from a project rather than workspace), so it misses full sibling 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?
The description provides clear context about when to use this tool ('Requires workspacePath and scheme') and includes an example that demonstrates proper usage. However, it doesn't explicitly state when NOT to use it or mention alternatives like 'show_build_set_proj' for project-based build settings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_sim_log_capA
Starts capturing logs from a specified simulator. Returns a session ID. By default, captures only structured logs.
| Name | Required | Description | Default |
|---|---|---|---|
| simulatorUuid | Yes | UUID of the simulator to capture logs from (obtained from list_simulators). | |
| bundleId | Yes | Bundle identifier of the app to capture logs for. | |
| captureConsole | No | Whether to capture console output (requires app relaunch). |
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 discloses key behavioral traits: it returns a session ID (important for tracking), and it defaults to capturing only structured logs (with an option to capture console output). However, it lacks details on permissions, rate limits, or what happens if the simulator is not running.
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 front-loaded with the core action and result, followed by a default behavior note. It uses only two sentences with zero wasted words, making it highly efficient and easy to parse.
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 annotations and no output schema, the description is moderately complete. It covers the tool's purpose, return value (session ID), and default behavior, but lacks details on error handling, session management, or how the logs are accessed after capture, which could be important for a tool with mutation implications.
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 all parameters thoroughly. The description adds minimal value beyond the schema by implying the tool's purpose involves these parameters, but it does not provide additional context or usage examples for them.
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 specific action ('Starts capturing logs'), the target resource ('from a specified simulator'), and the scope ('By default, captures only structured logs'). It distinguishes itself from sibling tools like 'stop_sim_log_cap' by indicating it initiates the process rather than terminates it.
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 context by mentioning 'structured logs' and referencing 'list_simulators' in the schema, but it does not explicitly state when to use this tool versus alternatives like 'launch_app_logs_sim' or other logging-related tools. No exclusions or prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_sim_log_capA
Stops an active simulator log capture session and returns the captured logs.
| Name | Required | Description | Default |
|---|---|---|---|
| logSessionId | Yes | The session ID returned by start_sim_log_cap. |
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 discloses that the tool stops a session and returns logs, which implies it's a read operation that ends an active process. However, it doesn't mention potential side effects (e.g., if logs are cleared after stopping), authentication needs, or rate limits, leaving behavioral gaps for a tool that interacts with simulators.
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 that efficiently conveys the core action and outcome without unnecessary words. It's front-loaded with the main purpose and includes the return value, making every part of the sentence earn 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?
Given the tool's moderate complexity (stopping a session and returning logs), no annotations, and no output schema, the description is fairly complete. It covers the purpose and basic behavior, but could improve by detailing the log format or any prerequisites beyond the session ID. It's adequate for an agent to understand the tool's role.
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 'logSessionId' fully documented in the schema as 'The session ID returned by start_sim_log_cap.' The description doesn't add any extra parameter details beyond this, so it meets the baseline of 3 where the 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 clearly states the tool's purpose with a specific verb ('stops') and resource ('an active simulator log capture session'), and it distinguishes from sibling tools by referencing 'start_sim_log_cap' as the complementary operation. It explicitly mentions returning captured logs, which adds valuable context beyond just stopping.
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 context by referencing 'start_sim_log_cap' as the prerequisite, indicating this tool should be used after starting a session. However, it doesn't explicitly state when not to use it or name alternatives among the many sibling tools, such as 'stop_device_log_cap' for device logs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
swift_package_buildC
Builds a Swift Package with swift build
| Name | Required | Description | Default |
|---|---|---|---|
| packagePath | Yes | Path to the Swift package root (Required) | |
| targetName | No | Optional target to build | |
| configuration | No | Build configuration: 'debug' (default) or 'release' | |
| architectures | No | Architectures to build for (e.g. arm64, x86_64) | |
| parseAsLibrary | No | Add -parse-as-library flag for @main support (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Builds a Swift Package' implies a potentially time-consuming, resource-intensive operation that may produce artifacts, but the description doesn't mention execution time, output location, error behavior, or what happens when the build fails. For a build tool with zero annotation coverage, this is insufficient behavioral context.
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 states exactly what the tool does without any wasted words. It's appropriately sized for a straightforward build operation and gets directly to the point.
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 build tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool produces (executables, libraries, build logs), where outputs go, how to handle build failures, or what success looks like. Given the complexity of build operations and the lack of structured behavioral information, the description should provide more context about the tool's behavior and results.
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 fully documents all 5 parameters. The description adds no parameter information beyond what's in the schema. According to scoring rules, when schema_description_coverage is high (>80%), the baseline is 3 even with no param info in the description.
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 ('Builds') and resource ('a Swift Package with swift build'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'swift_package_run' or 'swift_package_test', but the verb 'Builds' provides reasonable distinction from other Swift package 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?
The description provides no guidance on when to use this tool versus alternatives. With many sibling tools available (including other build tools like 'build_ios_dev_proj' and Swift package operations like 'swift_package_run'), there's no indication of when this specific Swift package build tool is appropriate versus other build or execution options.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
swift_package_cleanC
Cleans Swift Package build artifacts and derived data
| Name | Required | Description | Default |
|---|---|---|---|
| packagePath | Yes | Path to the Swift package root (Required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While 'Cleans' implies a destructive operation, the description doesn't specify whether this operation is reversible, what exactly gets deleted, whether it requires specific permissions, or what the expected outcome looks like. For a tool that appears to delete build artifacts, this is insufficient behavioral context.
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 gets straight to the point with zero wasted words. It's appropriately sized for a simple tool with one parameter and clearly states the tool's purpose without unnecessary elaboration.
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 performs cleanup operations (potentially destructive) with no annotations and no output schema, the description is inadequate. It doesn't explain what 'build artifacts and derived data' specifically includes, whether the operation is safe to run, what confirmation (if any) is provided, or what happens on success/failure. Given the context of sibling tools that perform similar operations on different targets, more differentiation would be helpful.
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 single parameter 'packagePath' clearly documented as 'Path to the Swift package root (Required)'. The description doesn't add any additional parameter information beyond what the schema provides, which is acceptable given the complete schema documentation.
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 ('Cleans') and target ('Swift Package build artifacts and derived data'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'clean_proj' or 'clean_ws', which appear to clean different types of projects/workspaces rather than Swift packages specifically.
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 no guidance about when to use this tool versus alternatives. There are multiple cleaning tools (clean_proj, clean_ws) and Swift package tools (swift_package_build, swift_package_test, etc.), but the description doesn't indicate when this specific Swift package cleaning tool is appropriate versus other cleaning or Swift package operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
swift_package_listB
Lists currently running Swift Package processes
| 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 carries the full burden. It states it's a listing operation, implying read-only behavior, but doesn't disclose details like output format, pagination, error conditions, or whether it requires specific permissions. For a tool with zero annotation coverage, 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, efficient sentence with no wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly.
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 no parameters and no output schema, the description is minimally adequate but lacks behavioral context. Without annotations, it should ideally explain what 'lists' entails (e.g., format, scope), but it doesn't, leaving gaps 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 tool has 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description doesn't add parameter details, but that's appropriate here, warranting a baseline score of 4 for adequate 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 verb ('Lists') and resource ('currently running Swift Package processes'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'swift_package_build' or 'swift_package_run', which would require a 5.
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. The description doesn't mention prerequisites, timing, or how it relates to other Swift Package tools in the sibling list, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
swift_package_runB
Runs an executable target from a Swift Package with swift run
| Name | Required | Description | Default |
|---|---|---|---|
| packagePath | Yes | Path to the Swift package root (Required) | |
| executableName | No | Name of executable to run (defaults to package name) | |
| arguments | No | Arguments to pass to the executable | |
| configuration | No | Build configuration: 'debug' (default) or 'release' | |
| timeout | No | Timeout in seconds (default: 30, max: 300) | |
| background | No | Run in background and return immediately (default: false) | |
| parseAsLibrary | No | Add -parse-as-library flag for @main support (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. It implies execution but doesn't disclose critical traits: whether it runs synchronously or asynchronously (hinted by 'background' parameter but not explained), potential side effects (e.g., process creation, resource usage), error handling, or output format (stdout/stderr capture). For a tool with 7 parameters and no annotation coverage, this is inadequate.
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 directly states the tool's purpose without redundancy. It uses precise terminology ('executable target', 'Swift Package', 'swift run') and avoids unnecessary elaboration, making it easy to parse and front-loaded with essential 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 complexity (7 parameters, execution-focused) and lack of annotations/output schema, the description is minimally adequate but incomplete. It covers the basic action but misses behavioral context (e.g., how output is returned, error scenarios) and usage guidance. Without annotations, it should provide more detail on execution behavior to fully inform 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?
Schema description coverage is 100%, providing clear documentation for all 7 parameters (e.g., 'arguments' as command-line args, 'background' for async execution). The description adds no parameter-specific information beyond the schema, such as examples or usage tips. According to guidelines, high schema coverage sets a baseline of 3, and the description doesn't enhance this further.
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 ('Runs') and target ('executable target from a Swift Package'), using the specific command 'swift run'. It distinguishes from sibling tools like swift_package_build or swift_package_test by focusing on execution rather than building, cleaning, or testing. However, it doesn't explicitly differentiate from other run-related tools (e.g., launch_app_sim), which prevents a perfect score.
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 no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid Swift package), compare to sibling tools like swift_package_build (for building without running) or launch_app_sim (for running on simulators), or specify use cases (e.g., testing executables locally). This leaves the agent without context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
swift_package_stopA
Stops a running Swift Package executable started with swift_package_run
| Name | Required | Description | Default |
|---|---|---|---|
| pid | Yes | Process ID (PID) of the running executable |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. While it indicates this is a destructive operation (stopping a process), it doesn't disclose important behavioral traits such as whether this requires specific permissions, what happens if the PID is invalid, whether the stop is graceful or forceful, or any error conditions. The description is minimal and lacks operational context.
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 communicates the core purpose without any wasted words. It's appropriately sized for a simple tool and front-loads the essential 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?
For a destructive operation tool with no annotations and no output schema, the description is minimally adequate. It identifies the tool's purpose and relationship to swift_package_run, but lacks details about behavioral implications, error handling, or what constitutes successful execution. Given the complexity (stopping processes) and absence of structured safety information, it should provide more operational context.
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%, with the single parameter 'pid' clearly documented in the schema as 'Process ID (PID) of the running executable'. The description doesn't add any meaningful parameter semantics beyond what the schema already provides, so it meets the baseline of 3 for high schema 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 specific action ('Stops') and resource ('a running Swift Package executable'), and explicitly distinguishes it from its sibling tool 'swift_package_run' by mentioning that it stops executables started with that tool. This provides precise differentiation from other tools in the list.
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 clear context for when to use this tool ('to stop a running Swift Package executable started with swift_package_run'), which implicitly suggests an alternative (using swift_package_run to start it). However, it doesn't explicitly state when NOT to use it or mention other potential alternatives among siblings like 'stop_app_device' or 'stop_mac_app'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
swift_package_testC
Runs tests for a Swift Package with swift test
| Name | Required | Description | Default |
|---|---|---|---|
| packagePath | Yes | Path to the Swift package root (Required) | |
| testProduct | No | Optional specific test product to run | |
| filter | No | Filter tests by name (regex pattern) | |
| configuration | No | Build configuration: 'debug' (default) or 'release' | |
| parallel | No | Run tests in parallel (default: true) | |
| showCodecov | No | Show code coverage (default: false) | |
| parseAsLibrary | No | Add -parse-as-library flag for @main support (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'swift test' but doesn't disclose behavioral traits like execution time, side effects (e.g., modifies build artifacts), error handling, or output format. For a test-running tool with zero annotation coverage, 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, efficient sentence with zero waste. It's appropriately sized and front-loaded, directly stating the tool's purpose without unnecessary elaboration.
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 complexity (running tests with 7 parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., test results, exit codes) or critical behavioral aspects, leaving gaps for an AI agent to understand its full context.
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 fully documents all 7 parameters. The description adds no parameter semantics beyond what's in the schema, maintaining the baseline of 3 since the 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 'Runs tests for a Swift Package with swift test' clearly states the action (runs tests) and target (Swift Package), but it's vague about scope and doesn't distinguish from sibling tools like swift_package_build or swift_package_run. It lacks specificity about what kind of tests or what 'swift test' entails.
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. With many sibling tools for building, running, and managing Swift packages (e.g., swift_package_build, swift_package_run), the description offers no context for selection, prerequisites, or exclusions.
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.
1 tool update
v1.0.0- Changed
swift_package_list1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
54 tool updates
- First observed
boot_sim - First observed
build_ios_dev_proj - First observed
build_ios_dev_ws - First observed
build_ios_sim_id_proj - First observed
build_ios_sim_id_ws - First observed
build_ios_sim_name_proj - First observed
build_ios_sim_name_ws - First observed
build_mac_proj - First observed
build_mac_ws - First observed
build_run_ios_sim_id_proj - First observed
build_run_ios_sim_id_ws - First observed
build_run_ios_sim_name_proj - First observed
build_run_ios_sim_name_ws - First observed
build_run_mac_proj - First observed
build_run_mac_ws - First observed
clean_proj - First observed
clean_ws - First observed
discover_projs - First observed
get_ios_bundle_id - First observed
get_ios_dev_app_path_proj - First observed
get_ios_dev_app_path_ws - First observed
get_mac_app_path_proj - First observed
get_mac_app_path_ws - First observed
get_mac_bundle_id - First observed
get_sim_app_path_id_proj - First observed
get_sim_app_path_id_ws - First observed
get_sim_app_path_name_proj - First observed
get_sim_app_path_name_ws - First observed
install_app_sim - First observed
launch_app_logs_sim - First observed
launch_app_sim - First observed
launch_mac_app - First observed
list_schems_proj - First observed
list_schems_ws - First observed
list_sims - First observed
open_sim - First observed
reset_network_condition - First observed
reset_simulator_location - First observed
scaffold_ios_project - First observed
scaffold_macos_project - First observed
screenshot - First observed
set_network_condition - First observed
set_sim_appearance - First observed
set_simulator_location - First observed
show_build_set_proj - First observed
show_build_set_ws - First observed
start_sim_log_cap - First observed
stop_sim_log_cap - First observed
swift_package_build - First observed
swift_package_clean - First observed
swift_package_list - First observed
swift_package_run - First observed
swift_package_stop - First observed
swift_package_test
TDQS
Scored across 54 tools
The tools have overlapping purposes due to excessive specialization, such as multiple build tools for iOS simulators with minor variations (by UUID vs. name, project vs. workspace). While descriptions clarify parameters, the sheer number of similar tools creates ambiguity and increases the risk of misselection, as agents must navigate many near-identical options.
Tool names follow a consistent snake_case pattern with clear verb_noun structures, such as 'build_ios_dev_proj' or 'get_sim_app_path_id_ws'. However, minor inconsistencies exist, like 'boot_sim' using a shorter form compared to others, and some tools like 'scaffold_ios_project' deviate slightly in word order, but overall the naming is predictable and readable.
With 54 tools, the count is excessive for the domain of iOS/macOS development and testing. This bloats the tool surface, making it cumbersome for agents to navigate and increasing cognitive load. A more streamlined set with fewer, more generalized tools would be more appropriate and user-friendly.
The tool set comprehensively covers the iOS/macOS development lifecycle, including project scaffolding, building, cleaning, running, simulator management, logging, and Swift package operations. There are no obvious gaps; agents can perform end-to-end workflows from creation to testing and deployment without dead ends.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.
Related MCP Servers
- AlicenseBqualityFmaintenanceA Model Context Protocol server that enables AI assistants to build and test Xcode projects directly through a standardized interface, with capabilities for running tests, monitoring progress, and accessing logs in real-time.18157 npm53MIT
- AlicenseBqualityAmaintenanceA Model Context Protocol (MCP) server and CLI that provides tools for agent use when working on iOS and macOS projects.8356,901 npm6,370MIT
- AlicenseNot gradedqualityDmaintenanceMCP server and CLI for iOS development — build, test, automate, and diagnose from any AI agent or terminal.1MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server that provides VSCode context and filesystem operations for AI assistants.9-