Skip to main content
Glama
drewster99

xcode-mcp-server (drewster99)

by drewster99

Server Quality Checklist

67%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v0.1.0

  • Disambiguation4/5

    Most tools target distinct operations (build, clean, test, screenshot), though the three run variants (unmonitored, until terminated, with user interaction) and multiple get_build* tools could cause minor confusion if descriptions are not read carefully. Overall, boundaries are clear.

    Naming Consistency5/5

    All tools follow a consistent snake_case verb_noun pattern (e.g., build_project, get_build_errors, list_booted_simulators). Even multi-word verbs like debug_list_notification_history remain readable. No mixed conventions or ambiguous abbreviations.

    Tool Count3/5

    With 29 tools, the server is on the heavy side. While Xcode development is complex, some tools like version, debug_list_notification_history, and get_directory_listing feel peripheral. The count is justified but pushes the upper bound of reasonable scope.

    Completeness4/5

    Core workflows are well-covered: build, test, run, clean, destination management, screenshot capture, and error inspection. Minor gaps exist (e.g., no project archiving or code editing), but the surface is sufficient for most development tasks.

  • Average 4.4/5 across 29 of 29 tools scored. Lowest: 3.7/5.

    See the Tool Scores section below for per-tool breakdowns.

    • No community issues in the last 6 months
    • 44 commits in the last 12 weeks
    • No stable releases found
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI is passing
  • This repository is licensed under MIT License.

  • This repository includes a README.md file.

  • No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.

    Tip: use the "Try in Browser" feature on the server page to seed initial usage.

  • Add a glama.json file to provide metadata about your server.

  • If you are the author, simply .

    If the server belongs to an organization, first add glama.json to the root of your repository:

    {
      "$schema": "https://glama.ai/mcp/schemas/server.json",
      "maintainers": [
        "your-github-username"
      ]
    }

    Then . Browse examples.

  • Add related servers to improve discoverability.

How to sync the server with GitHub?

Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.

To manually sync the server, click the "Sync Server" button in the MCP server admin interface.

How is the quality score calculated?

The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).

Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.

Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).

Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.

Tool Scores

  • Behavior3/5

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

    Annotations already indicate destructive and idempotent behavior. Description adds timeout context but does not detail what 'clean' destroys (e.g., build artifacts).

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

    Conciseness4/5

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

    Concise with clear structure: purpose sentence, Args list, Returns line. No unnecessary text.

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

    Completeness4/5

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

    For a simple tool with annotations and an output schema, the description covers purpose, parameters, and return type. Could mention output message content, but overall adequate.

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

    Parameters4/5

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

    With 0% schema description coverage, the description explains both parameters: project_path as a path and timeout with default and validation, adding value beyond the schema.

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

    Purpose5/5

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

    Description clearly states the tool cleans an Xcode project/workspace. The verb 'clean' is specific and distinct from sibling tools like build_project, create_project, etc.

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

    Usage Guidelines2/5

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

    No guidance on when to use this tool versus alternatives. For example, it does not explain when cleaning is needed before building or testing.

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

  • Behavior4/5

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

    Annotations declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, which already indicate safe behavior. The description adds context such as conditional return formats (plain text vs JSON), error/warning prioritization, full log file path, and filtering behavior, providing valuable details beyond annotations.

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

    Conciseness3/5

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

    The description is moderately concise with a clear Args/Returns structure, but the Returns section is lengthy and could be trimmed for better conciseness without losing essential information.

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

    Completeness4/5

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

    Given 4 parameters, existing output schema, and annotations, the description covers the return format comprehensively for both cases (no build vs build performed) and explains parameter behaviors like default for max_lines and global setting for include_warnings. Minor missing explanation of 'global setting' prevents a perfect score.

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

    Parameters3/5

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

    With 0% schema description coverage, the description provides brief but adequate semantics for all four parameters: project_path (path to directory), include_warnings (defaults to global setting), regex_filter (optional), max_lines (default 25). However, 'global setting' is not explained, and details are minimal.

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

    Purpose5/5

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

    The description clearly states the verb 'Get' and the resource 'build errors from the last build for the specified Xcode project or workspace.', which is specific and distinct from sibling tools like 'get_build_results' or 'build_project'.

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

    Usage Guidelines3/5

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

    The description implies it should be used after a build to retrieve errors, and mentions behavior when no build exists, but does not explicitly compare to alternatives like 'get_build_results' or provide when-not-to-use guidance.

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

  • Behavior4/5

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

    The description adds context beyond annotations, such as default sorting by time, maximum results limit of 100, and output format. Annotations already cover safety (read-only, non-destructive), so the description enhances 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.

    Conciseness4/5

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

    The description is well-structured with Args and Returns sections, but slightly verbose. It is front-loaded and each sentence adds value, though it could be more concise.

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

    Completeness5/5

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

    Given the tool has an output schema, the description adequately explains the output format and covers all parameters, defaults, limits, and filtering. It is complete for effective use.

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

    Parameters5/5

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

    The description explains all five parameters in detail, including defaults and behavior, fully compensating for the 0% schema coverage. It adds meaning beyond the bare schema.

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

    Purpose4/5

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

    The description clearly states 'List contents of a directory with file metadata,' providing a specific verb and resource. While it distinguishes from siblings like 'get_directory_tree' by implication, it does not explicitly differentiate.

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

    Usage Guidelines2/5

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

    The description does not provide guidance on when to use this tool versus alternatives like 'get_directory_tree' or mention exclusions. It focuses solely on its own behavior.

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

  • Behavior4/5

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

    Beyond annotations (readOnlyHint, idempotentHint), the description discloses the return format including success and error structures. It adds behavioral context such as returning plain text on error and the shape of the success JSON.

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

    Conciseness4/5

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

    The description is relatively concise, ending with an illustrative return format. While useful, the example could be shortened or placed in comments without losing clarity. It is front-loaded with the essential purpose.

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

    Completeness4/5

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

    Given the simple input (one required parameter) and the presence of output schema-like details, the description is fairly complete. It lacks mention of edge cases (e.g., no test runs exist, multiple runs), but the error handling is implied. The annotations also support understanding.

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

    Parameters4/5

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

    The single parameter 'project_path' is described as 'Path to Xcode project/workspace directory', providing meaning beyond the schema's type definition. Since the schema itself has no parameter descriptions, the description compensates fully, though it could be more specific about allowed paths.

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

    Purpose5/5

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

    The description clearly states it retrieves test results from the most recent test run. It uses the verb 'get' and specifies the resource 'test results', distinguishing it from sibling tools like 'run_project_tests' which actually execute tests.

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

    Usage Guidelines2/5

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

    The description does not provide explicit guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., that a test run must have occurred) or contrast with other tools like 'get_build_results'.

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

  • Behavior3/5

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

    Annotations already indicate readOnlyHint=true and destructiveHint=false, so the description's statement of listing tests is consistent but adds no new behavioral insight beyond the return format. It does not contradict annotations.

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

    Conciseness5/5

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

    The description is concise: a single sentence for purpose, followed by clearly formatted arguments and returns. No extraneous text, and the purpose is front-loaded.

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

    Completeness5/5

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

    The tool has one simple parameter and an output schema (not shown but indicated). The description provides the purpose, parameter meaning, and return format, which is sufficient for an agent to use it correctly.

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

    Parameters4/5

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

    Schema description coverage is 0%, but the description explains that project_path is the 'Path to Xcode project/workspace directory', adding meaning beyond the parameter name. This clarifies the expected input effectively.

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

    Purpose5/5

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

    The description clearly states the verb 'List' and the resource 'all available tests in the specified Xcode project or workspace', which is specific and distinguishes it from sibling tools like run_project_tests or get_latest_test_results.

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

    Usage Guidelines2/5

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

    The description does not provide guidance on when to use this tool versus alternatives, such as when to list tests before running them or how it differs from get_latest_test_results. No explicit when-not or alternative tool references are present.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint, destructiveHint, idempotentHint. Description adds value by stating it reads from Xcode's workspace state file without opening the project, and discloses the timing behavior (possible lag after set_run_destination). No contradiction with annotations.

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

    Conciseness4/5

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

    Concise with front-loaded purpose, followed by explanation of behavior, parameters, and return value. Each sentence adds value, no redundancy. Could be slightly tighter but well-structured.

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

    Completeness4/5

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

    Given the tool's simplicity (one parameter, read-only, good annotations), the description covers purpose, behavioral nuance, parameter specification, and return format (including error case). Adequately complete for an agent to use correctly.

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

    Parameters4/5

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

    Schema description coverage is 0% (no parameter description in schema). Description compensates by explaining project_path accepts .xcodeproj or .xcworkspace paths, adding meaning beyond the schema's type-only definition.

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

    Purpose4/5

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

    Clearly states it gets the currently active run destination for a project. Differentiates from siblings by noting it reads from workspace state file without opening project, but does not explicitly contrast with list_run_destinations or set_run_destination.

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

    Usage Guidelines4/5

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

    Provides explicit context on when to use (to get active destination for next build/run). Includes important timing guidance about potential staleness after set_run_destination, but does not explicitly mention when not to use or list alternatives.

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

  • Behavior3/5

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

    Annotations indicate idempotentHint=true and readOnlyHint=false, so the tool is idempotent and modifies state. The description adds that it stops a running operation, but does not disclose behavior if nothing is running or potential side effects. No contradiction with annotations.

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

    Conciseness4/5

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

    The description is concise with a clear Args/Returns structure. It is efficient, though could be slightly tighter. No wasted sentences.

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

    Completeness4/5

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

    For a simple tool with one parameter and an output schema (mentioned but not shown), the description adequately covers behavior and return value. It provides enough context for correct use.

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

    Parameters5/5

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

    The schema has 0% description coverage, but the description adds crucial constraints: the path must end in '.xcodeproj' or '.xcworkspace' and must exist. This provides semantic meaning beyond the schema.

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

    Purpose5/5

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

    The description clearly states the action ('Stop the currently running build or run operation') and the resource ('the specified Xcode project or workspace'). It distinguishes from sibling tools like build_project or run_project_until_terminated by targeting the stop operation.

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

    Usage Guidelines3/5

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

    The description implies when to use the tool (when there is a running build or run operation) but does not explicitly state when not to use it or mention alternatives. Given the many sibling run/build tools, explicit guidance would be helpful.

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

  • Behavior3/5

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

    Annotations already indicate destructiveHint=true, and the description adds that the app can be force-stopped and logs extracted. However, it does not fully explain the destructive nature (e.g., potential data loss or state changes) beyond the force-stop behavior.

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

    Conciseness5/5

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

    The description is concise, well-structured, and front-loaded. It uses bullet points for args and separate lines for use cases, making it easy to scan. Every sentence adds value.

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

    Completeness4/5

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

    The description covers the key behaviors (automated run, timeout, force-stop, log extraction) and return format. It could mention what happens when the app terminates naturally, but it is implicit. Overall, it is sufficiently complete given the annotations and output schema.

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

    Parameters4/5

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

    All 5 parameters are described in the 'Args' section with clear explanations. The regex_filter description is slightly ambiguous but still understandable. Since schema coverage is 0%, the description compensates well.

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

    Purpose5/5

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

    The description clearly states the tool runs an app and waits for termination. It specifies the context (Xcode/Simulator) and use cases (automated tests, CLI tools), effectively distinguishing it from siblings like run_project_with_user_interaction.

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

    Usage Guidelines4/5

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

    The description provides explicit guidance on when to use this tool (automated tasks, apps with exit points) and implies when not to use (no user interaction required). It does not explicitly mention alternatives, but the context is clear enough.

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

  • Behavior4/5

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

    The description discloses behavioral traits such as requiring parent_directory within allowed folders and creating multiple files. Annotations are minimal, so description carries burden. It does not mention potential idempotency or overwrite behavior, but is reasonably transparent.

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

    Conciseness4/5

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

    The description is well-structured with clear sections for args and returns, and front-loaded with purpose. At about 150 words, it is slightly verbose but each sentence adds value.

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

    Completeness5/5

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

    The description adequately covers what the tool does, inputs, outputs (including return fields), and constraints. Given the complexity, it is complete and does not require additional context from siblings or output schema.

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

    Parameters5/5

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

    The input schema has 0% description coverage, but the description provides detailed explanations for each parameter, including constraints, defaults, and usage context (e.g., project_name used for folder/target/scheme, platform case-insensitive). This adds significant value beyond the schema.

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

    Purpose5/5

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

    The description clearly states the tool creates a new Xcode project with a SwiftUI app template, specifying verb, resource, and details like Xcode 16+ format. It is distinct from sibling tools that focus on building, cleaning, or running projects.

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

    Usage Guidelines3/5

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

    The description provides parameter details but does not explicitly state when to use this tool versus alternatives or when not to use it. The context of siblings implies it is for creation, but lacks explicit guidance on exclusions.

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

  • Behavior4/5

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

    Annotations confirm read-only, non-destructive, idempotent behavior. Description adds crucial context: notifications are only from server start and returns specific fields, enhancing beyond annotations.

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

    Conciseness5/5

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

    Two sentences plus a returns line, clear and succinct with no wasteful content. Front-loaded with the main action.

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

    Completeness5/5

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

    Given no parameters, existing output schema, and thorough annotations, the description fully explains the tool's purpose and output, leaving no major gaps.

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

    Parameters4/5

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

    No parameters exist and schema coverage is 100%. Baseline of 4 applies; description does not need to add parameter info.

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

    Purpose5/5

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

    Description specifically states 'List all notifications that have been posted since the server started' with a clear verb and resource, and labels it as a debugging tool. No sibling tool serves the same purpose.

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

    Usage Guidelines3/5

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

    Implied usage as a debugging tool, but no explicit when-to-use or when-not-to-use instructions or alternatives given. However, uniqueness among siblings mitigates confusion.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds value by disclosing the 2-second post-termination delay and stating the return structure, which goes beyond annotations. No contradictions.

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

    Conciseness4/5

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

    Well-structured with Args and Returns sections. Information is front-loaded with the main purpose. No redundant sentences. Could be slightly more concise but overall efficient.

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

    Completeness4/5

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

    Given that an output schema exists, the description appropriately covers parameters and timing. For a read-only tool, it provides enough context for effective usage. The mention of full_log_path is a nice touch.

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

    Parameters4/5

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

    Schema description coverage is 0%, but the description provides clear explanations for all three parameters: project_path (Xcode project/workspace path), regex_filter (optional regex pattern), and max_lines (default 20). This adds substantial meaning beyond the schema.

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

    Purpose5/5

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

    Explicitly states it fetches runtime console output from the most recent run, distinguishing it from sibling tools like get_build_errors which focus on build logs. The verb 'fetches' and resource 'runtime console output' are specific.

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

    Usage Guidelines4/5

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

    Provides a crucial timing constraint: output becomes available 2 seconds after app terminates. This helps the agent know when to call it. While it doesn't explicitly state when not to use, the context of sibling tools implies it's for runtime logs after execution.

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

  • Behavior4/5

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

    Annotations already indicate read-only and idempotent behavior. The description adds useful details about the return format (formatted list with name, UDID, OS version) and a special message when none are booted, enhancing transparency beyond annotations.

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

    Conciseness5/5

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

    The description is extremely concise with two sentences, front-loaded with the core purpose, and every word contributes value without redundancy.

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

    Completeness5/5

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

    Given no parameters and the presence of an output schema (implied), the description fully covers the tool's purpose, input, and output, including the special case of no booted simulators.

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

    Parameters4/5

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

    The input schema has zero parameters, so the baseline is 4. The description does not need to explain parameters, and it correctly avoids any misleading information.

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

    Purpose5/5

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

    The description explicitly states the tool lists all currently booted simulators across multiple OS types (iOS, iPadOS, tvOS, watchOS), distinguishing it clearly from sibling tools that focus on building, running, or debugging.

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

    Usage Guidelines3/5

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

    The description implies usage when needing to check booted simulators, but does not provide explicit guidance on when not to use it or mention alternative tools for listing non-booted or available simulators.

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

  • Behavior4/5

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

    The description adds value beyond annotations by detailing error conditions (XCodeMCPError when window not found or screenshot fails) and the return type (file path). Annotations already indicate readOnly and idempotent, which are consistent.

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

    Conciseness5/5

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

    The description is concise, with a clear main sentence followed by structured Args/Returns/Raises sections. No wasted words.

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

    Completeness5/5

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

    For a simple screenshot tool with one parameter and an output schema, the description covers the action, input, output, and error cases. It is sufficiently complete.

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

    Parameters4/5

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

    With 0% schema description coverage, the description compensates by explaining that project_path is 'Path to an Xcode project/workspace directory'. This adds necessary context beyond the schema's title and type.

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

    Purpose5/5

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

    The description clearly states 'Take a screenshot of the Xcode window for the specified project', which is a specific verb-resource combination. It distinguishes itself from sibling tools like take_app_screenshot or take_simulator_screenshot by targeting the Xcode window.

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

    Usage Guidelines3/5

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

    The description does not provide explicit guidance on when to use this tool versus alternatives like take_app_screenshot, take_simulator_screenshot, or take_window_screenshot. The usage context is implied but not clarified with exclusions or selection criteria.

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

  • Behavior3/5

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

    Annotations already provide readOnlyHint, destructiveHint, and idempotentHint. The description adds the return value (version string), which is useful but not extensive beyond annotations.

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

    Conciseness5/5

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

    Two sentences, no wasted words, clearly front-loaded with the action and return value.

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

    Completeness5/5

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

    Given no parameters, satisfactory annotations, and an output schema, the description is complete and adequately informs the agent.

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

    Parameters4/5

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

    No parameters exist, and schema coverage is 100%, so the description has nothing to add. Baseline of 4 is appropriate.

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

    Purpose5/5

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

    The description clearly states it gets the current version of the Xcode MCP Server, using a specific verb and resource. It is easily distinguishable from sibling tools that perform complex project operations.

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

    Usage Guidelines4/5

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

    While no explicit usage guidelines are given, the tool's purpose is self-evident as a version query, and there is no ambiguity with siblings.

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

  • Behavior4/5

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

    Discloses timeout behavior and output formats, but does not address the destructiveHint=true annotation (e.g., potential test artifacts) beyond the timeout guard.

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

    Conciseness5/5

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

    Well-organized with labeled sections (Args, Returns) and efficient sentences. No wasted words.

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

    Completeness5/5

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

    Provides complete coverage: input parameters, timeout behavior, and output structure (including sample JSON). Output schema presence further reduces gaps.

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

    Parameters5/5

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

    With 0% schema coverage, the description fully compensates by detailing each parameter's purpose, defaults, constraints (e.g., timeout must be positive integer, scheme optional).

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

    Purpose5/5

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

    Clearly states the tool runs tests for Xcode projects/workspaces. Distinguishes from siblings like 'list_project_tests' and 'get_latest_test_results' by focusing on execution, not listing or retrieval.

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

    Usage Guidelines3/5

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

    Provides context on timeout adjustment for large projects but lacks explicit guidance on when to use vs. alternatives like 'get_latest_test_results' or which scheme to choose.

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

  • Behavior3/5

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

    Annotations confirm idempotentHint=true, and description adds effect on subsequent build/run. However, does not disclose error handling for invalid destination_id or project_path.

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

    Conciseness5/5

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

    Three sentences plus docstrings for args/returns; front-loaded purpose, no extra words.

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

    Completeness5/5

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

    Explains dependencies (list_run_destinations), effect on subsequent operations, and return format. Has output schema, so return explanation is adequate.

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

    Parameters5/5

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

    Schema coverage is 0%, but description provides full explanations for both parameters: project_path as path to .xcodeproj/.xcworkspace, destination_id as ID from list_run_destinations with UDID example.

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

    Purpose5/5

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

    Clearly states 'Set the active run destination' with specific verb and resource. Distinguishes from sibling tools like list_run_destinations and get_active_run_destination.

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

    Usage Guidelines4/5

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

    Explicitly instructs to use list_run_destinations first to get destination IDs, then pass the id here. Implies usage context before build/run operations, but no explicit when-not-to-use.

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

  • Behavior5/5

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

    The description aligns with the destructiveHint=true annotation, explaining that builds are potentially destructive. It discloses timeout behavior, default values, and the structure of the return value, including how errors and warnings are prioritized. No contradictions with annotations.

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

    Conciseness5/5

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

    The description is concise and well-structured, with a clear opening sentence, bullet points for arguments, and a detailed return format. Every sentence adds value without redundancy.

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

    Completeness4/5

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

    While the description covers the tool's operation, inputs, and output well, it omits environmental prerequisites (e.g., Xcode must be installed) and does not explicitly state that the tool is safe to run multiple times. However, given the complexity, it is nearly complete.

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

    Parameters5/5

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

    Despite 0% schema coverage, the description comprehensively explains each parameter beyond the schema types. For instance, it states that 'scheme' defaults to the active scheme, 'include_warnings' uses global setting, 'timeout' must be a positive integer with a default of 600 seconds. This adds significant meaning.

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

    Purpose5/5

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

    The description clearly states the tool's purpose: 'Build the specified Xcode project or workspace.' The verb 'build' is specific and directly contrasts with sibling tools like 'clean_project' or 'get_build_errors'. It leaves no ambiguity about the tool's core function.

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

    Usage Guidelines3/5

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

    The description provides context such as the timeout default and adjustment for large projects, but it does not explicitly guide when to use this tool versus alternatives. For example, it doesn't mention that 'get_build_results' might be used after a build to fetch results, nor does it state when 'clean_project' should be used instead. The guidance is present but incomplete.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint, destructiveHint, idempotentHint. Description adds that it returns grouped list with window IDs, aligning with read-only nature. No contradictions.

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

    Conciseness5/5

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

    Three concise sentences, front-loaded with the main action, followed by purpose and return format. No wasted words.

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

    Completeness5/5

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

    With no parameters, annotations covering safety, and an output schema, the description provides complete context about what the tool does and how its output is used.

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

    Parameters4/5

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

    No parameters, so baseline 4. Description does not need to add parameter details; it covers the tool's behavior sufficiently.

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

    Purpose5/5

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

    Clearly states it lists all on-screen macOS application windows with CGWindow IDs, and explains the purpose for screenshots. Distinguishes from sibling tools by referencing specific screenshot tools.

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

    Usage Guidelines4/5

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

    Explicitly mentions using window IDs with take_app_screenshot or take_window_screenshot, providing clear context. Lacks explicit 'when not to use' but the purpose is well-defined.

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

  • Behavior4/5

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

    Annotations indicate destructive and open-world; the description adds meaning by explaining the app continues running until manually stopped, with no monitoring or log extraction. Does not contradict annotations.

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

    Conciseness5/5

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

    Concise and front-loaded: first sentence states the core action. Every sentence adds value, no fluff. Clean structure with Args and Returns sections.

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

    Completeness4/5

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

    Covers behavior, workflow, and use cases. Could mention prerequisites (e.g., project must be buildable) but overall sufficient given output schema exists for return details.

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

    Parameters5/5

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

    With 0% schema coverage, the description fully compensates by describing project_path as path to Xcode project/workspace and scheme as optional with default value, adding clear semantics beyond the schema.

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

    Purpose5/5

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

    The description clearly states the tool launches an app in Xcode and returns immediately, distinguishing it from siblings like run_project_until_terminated and run_project_with_user_interaction by emphasizing no monitoring, no automatic termination.

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

    Usage Guidelines4/5

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

    Explicitly states it's perfect for long-running apps, servers, and extended manual testing. Provides workflow hint to use get_runtime_output later. Could be more explicit about when not to use, but the context is clear.

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

  • Behavior4/5

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

    Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds valuable behavioral context: the output format (tree diagram with box-drawing characters), the special handling of project files, and the default max_depth of 4 to prevent excessive output.

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

    Conciseness4/5

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

    The description is well-structured and front-loaded with the core purpose. It is slightly verbose with repetition about get_directory_listing, but every sentence adds value. Could be trimmed slightly, but overall efficient.

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

    Completeness4/5

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

    Given the simple nature of the tool and good annotations, the description covers the purpose, parameters, special behavior, and return format. It lacks information about error handling (e.g., invalid paths), but for a read-only tool this is acceptable.

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

    Parameters5/5

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

    Schema description coverage is 0%, so the description carries the full burden. It fully explains both parameters: directory_path (including the .xcodeproj/.xcworkspace special case) and max_depth (default 4, with clear explanation of depth levels). No additional schema documentation is needed.

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

    Purpose5/5

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

    The description clearly states 'Get a visual tree of directories (folders only) in the specified path,' which is a specific verb+resource combination. It also distinguishes itself from the sibling tool get_directory_listing by explicitly noting that it does not include files.

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

    Usage Guidelines5/5

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

    The description explicitly tells when to use this tool (to see folder structure) and when to use an alternative: 'Does not include individual files - use get_directory_listing for file details.' It also explains special behavior for .xcodeproj/.xcworkspace paths.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds value by specifying the return format: a formatted list with name, bundle ID, and status flags (frontmost/visible/hidden). This goes beyond annotations and provides useful behavioral context without contradiction.

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

    Conciseness5/5

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

    The description is extremely concise: two sentences covering purpose and return format. Every word adds value, and the structure is front-loaded with the core functionality. No unnecessary information.

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

    Completeness5/5

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

    Given zero parameters and the presence of an output schema (not shown but mentioned), the description fully explains what the tool does and what it returns. The context signals indicate no nested objects, and the description's return format details are adequate for an agent to understand the output.

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

    Parameters5/5

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

    The tool has zero parameters (schema coverage 100%). The description correctly does not attempt to describe parameters, and the return format explanation is sufficient. No additional parameter semantics needed.

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

    Purpose5/5

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

    The description clearly states the tool lists all currently running macOS applications. The verb 'list' and resource 'running macOS applications' are specific. Among siblings, this tool is distinct from others like 'list_booted_simulators' and 'list_mac_app_windows'.

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

    Usage Guidelines4/5

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

    The description implicitly indicates usage when an agent needs to know which macOS apps are running. While it does not explicitly state when not to use it or provide alternatives, the context of sibling tools (e.g., Xcode-specific operations) helps differentiate. Additional guidance would improve clarity but is not strictly necessary.

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

  • Behavior5/5

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

    Annotations indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds detailed behavioral context: algorithm to parse logs, aggregate warnings, exclude recompiled files, and notes on only returning first max_warnings. No contradictions with annotations.

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

    Conciseness4/5

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

    The description is long but well-structured with sections: purpose, problem, strategy, args, returns, note. Every sentence adds value, though could be slightly more concise.

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

    Completeness5/5

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

    Given the tool's complexity and lack of output schema in structured data, the description provides a complete picture: detailed algorithm, input parameters, and a full JSON return format example. It covers all necessary context.

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

    Parameters5/5

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

    Schema coverage is 0%, so description must compensate. It explains both parameters: project_path as path to Xcode project/workspace, and max_warnings with default and purpose. This adds full meaning beyond schema names and types.

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

    Purpose5/5

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

    The description clearly states it gets aggregated build errors and warnings from all builds since the last clean. It distinguishes itself from siblings like get_build_errors by explaining the specific problem of incremental builds only showing recompiled file warnings.

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

    Usage Guidelines4/5

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

    The description provides context on when to use the tool (to see all current warnings after incremental builds) but does not explicitly exclude alternatives or compare with siblings like get_build_errors. It implicitly guides usage through the problem statement.

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

  • Behavior5/5

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

    Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds that it uses mdfind (Spotlight indexing), explains depth meaning, and return format. No contradictions.

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

    Conciseness4/5

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

    The description is front-loaded with the main purpose and structured with sections (general, mdfind, Args, Returns). It is efficient but could be slightly more concise; nevertheless, every sentence adds value.

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

    Completeness5/5

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

    Given 5 parameters (all optional) and an output schema, the description covers all parameters, return value, and algorithmic behavior (depth interpretation). It is complete for usage.

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

    Parameters5/5

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

    Schema description coverage is 0%, but the description includes a detailed 'Args:' section explaining each of the 5 parameters (search_path, include_recents, max_search_depth, regex_filter, max_results) with defaults and behaviors, fully compensating.

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

    Purpose5/5

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

    The description clearly states it searches for .xcodeproj and .xcworkspace files, which is a specific verb+resource. It distinguishes from sibling tools like build_project, clean_project, etc. that perform different actions.

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

    Usage Guidelines4/5

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

    The description explains that if search_path is empty, it searches all allowed folders, and it mentions the use of mdfind. However, it does not explicitly say when not to use this tool or provide alternatives, though sibling tools are all different in purpose.

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

  • Behavior5/5

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

    Beyond the annotations (destructiveHint=true), the description details the force-stop behavior upon button click, automatic termination handling, and the 2-second wait for log extraction. This adds valuable behavioral context without contradicting the annotations.

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

    Conciseness4/5

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

    The description is well-structured with clear paragraphs and bullet points for use cases and parameters. It is slightly lengthy but front-loaded with the main action and retains only essential information.

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

    Completeness5/5

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

    The description covers the entire interactive workflow, termination scenarios, and log retrieval, providing enough detail for the agent to use the tool effectively. The presence of an output schema (mentioned but not shown) reduces the need to describe return values explicitly.

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

    Parameters5/5

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

    Despite 0% schema description coverage, the description thoroughly explains all four parameters: project_path (required path), scheme (optional, defaults to active), regex_filter (optional filter), and max_lines (default 20). This fully compensates for the missing schema descriptions.

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

    Purpose5/5

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

    The description clearly states the tool runs an app and displays an alert dialog for user interaction, distinguishing it from non-interactive run tools like run_project_unmonitored or run_project_until_terminated. The verb 'run' combined with 'interaction' accurately reflects 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.

    Usage Guidelines4/5

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

    The description specifies it is 'Perfect for: Interactive testing, manual QA, debugging UI flows', providing clear context for when to use it. However, it does not explicitly state when not to use it or mention alternatives for non-interactive runs, slightly reducing the score.

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

  • Behavior5/5

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

    Annotations indicate read-only, idempotent operation. Description adds valuable context: case-insensitive matching, 5-window limit, requirement for on-screen windows, and error conditions. No contradiction with annotations.

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

    Conciseness5/5

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

    Concise and well-structured: first sentence states core purpose, followed by limitations and note, then structured Args/Returns/Raises. No extraneous content.

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

    Completeness5/5

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

    For a simple tool with one parameter and no enums, the description covers purpose, limitations, return format, and common errors. The existence of an output schema is noted; the description sufficiently explains output.

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

    Parameters4/5

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

    The only parameter, app_name, is described as 'Full or partial app name to match' with case-insensitive behavior. This adds meaning beyond the schema's type string, but could be more explicit about whether it's a substring or fuzzy match.

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

    Purpose5/5

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

    Clearly states the tool takes screenshots of all windows for an app using a case-insensitive substring match. Distinguishes from sibling tools like take_window_screenshot and take_simulator_screenshot by specifying scope (app vs window vs simulator).

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

    Usage Guidelines4/5

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

    Provides context on when the tool works (only apps with on-screen windows) and behavior (up to 5 windows, multiple apps error). Does not explicitly compare to alternative screenshot tools, but the mention of 'case-insensitive substring match' and limitation of 5 windows offers sufficient guidance.

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

  • Behavior5/5

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

    Beyond annotations (readOnly, idempotent), description details return format (newline-separated, active first) and empty string behavior, adding value.

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

    Conciseness5/5

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

    Concise two-sentence description with clear sections for args and returns, no fluff.

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

    Completeness5/5

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

    All necessary information provided given simplicity, annotations, and output schema; no gaps.

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

    Parameters5/5

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

    Schema has 0% coverage; description fully compensates by specifying path must end in '.xcodeproj' or '.xcworkspace' and must exist.

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

    Purpose5/5

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

    Description clearly states the verb 'Get' and resource 'available build schemes' for a specified Xcode project/workspace, distinguishing it from sibling tools like building or testing.

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

    Usage Guidelines4/5

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

    Clear context provided for when to use (to list schemes for a project), but no explicit exclusion of alternatives or when not to use.

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

  • Behavior5/5

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

    Annotations already declare readOnlyHint and idempotentHint. The description adds valuable behavioral context: filtering based on scheme compatibility, with an example (iOS scheme excludes Mac unless Catalyst). No contradiction with annotations.

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

    Conciseness5/5

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

    The description is efficiently structured: a two-sentence summary, a usage note, then Args and Returns sections. Every sentence adds value, with no redundancy.

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

    Completeness5/5

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

    Given the tool's simplicity and the presence of an output schema, the description covers all necessary aspects: purpose, parameters, output format, and usage context. No gaps remain.

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

    Parameters5/5

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

    Schema description coverage is 0%, but the description fully explains each parameter: project_path includes file extensions, scheme defaults to first scheme if omitted. This compensates entirely for missing schema descriptions.

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

    Purpose5/5

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

    The description explicitly states the tool lists available run destinations for a project scheme, with a specific verb ('List') and resource ('run destinations'). It distinguishes from siblings like set_run_destination by noting the id field is for that purpose.

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

    Usage Guidelines4/5

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

    The description advises to use the id from results with set_run_destination, providing clear guidance on how to chain tools. It does not explicitly state when not to use, but the context is sufficient.

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

  • Behavior5/5

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

    Beyond the idempotentHint and readOnlyHint annotations, the description discloses the return value (file path), error conditions (XCodeMCPError for no booted simulators or failure), and the fallback behavior when UDID is omitted. This adds significant 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.

    Conciseness5/5

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

    The description is extremely concise: a one-line purpose followed by structured Args/Returns/Raises sections. Every sentence is informative and there is no fluff. The structure is front-loaded with the core action.

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

    Completeness5/5

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

    For a simple tool with one parameter and an output schema, the description covers purpose, parameter behavior, return value, and error handling. Annotations provide safety guarantees. It is fully complete without being verbose.

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

    Parameters5/5

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

    The input schema only defines udid as an optional string/null. The description adds meaning by explaining its purpose (device identifier), the fallback to first booted simulator, and how to find UDIDs with list_booted_simulators. With 0% schema coverage, this fully compensates.

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

    Purpose5/5

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

    The description clearly states 'Take a screenshot of a booted iOS simulator', providing a specific verb and resource. It distinguishes from sibling tools like take_app_screenshot or take_window_screenshot which target different contexts.

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

    Usage Guidelines4/5

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

    The description explains that an optional UDID can be provided, and if omitted the first booted simulator is used, with a pointer to list_booted_simulators for discovery. It does not explicitly compare to alternative screenshot tools but the context makes the use case clear.

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

  • Behavior5/5

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

    Annotations already indicate read-only, non-destructive, idempotent. The description adds important behavior: only on-screen windows by name, up to 5 matches, returns paths to files, raises XCodeMCPError on failure. No contradiction with annotations.

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

    Conciseness5/5

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

    The description is well-structured with a clear purpose, note, Args, Returns, and Raises sections. Every sentence adds value, and it is appropriately sized without unnecessary fluff.

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

    Completeness5/5

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

    Given a single parameter, rich annotations, and an existing output schema (not shown but referenced), the description covers all essential aspects: parameter meaning, return value, error conditions, and a behavioral constraint (on-screen requirement). It is complete for the tool's complexity.

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

    Parameters5/5

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

    The input schema provides only a type string with no description. The description fully compensates by explaining it accepts a window ID number or partial window title with case-insensitive substring matching, greatly aiding correct invocation.

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

    Purpose5/5

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

    The description clearly states the tool takes a screenshot of a window by ID or name (case-insensitive substring match). It distinguishes from sibling tools that capture different targets (app, simulator, Xcode) by specifying window-level capture.

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

    Usage Guidelines4/5

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

    Provides guidance on obtaining window IDs via list_mac_app_windows, using partial titles, and notes that only on-screen windows can be found by name. It describes behavior when multiple windows match (up to 5 screenshots) and error cases. However, it does not explicitly state when to prefer this over sibling tools like take_app_screenshot.

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

GitHub Badge

Glama performs regular codebase and documentation scans to:

  • Confirm that the MCP server is working as expected.
  • Confirm that there are no obvious security issues.
  • Evaluate tool definition quality.

Our badge communicates server capabilities, safety, and installation instructions.

Card Badge

drews-xcode-mcp MCP server

Copy to your README.md:

Score Badge

drews-xcode-mcp MCP server

Copy to your README.md:

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/drewster99/drews-xcode-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server