Skip to main content
Glama
saucelabs

Sauce Labs MCP Server

Official
by saucelabs

Sauce Labs MCP Server

A Model Context Protocol (MCP) server that provides comprehensive integration with the Sauce Labs testing platform. This package includes two complementary MCP servers enabling AI assistants to interact with Sauce Labs' device cloud, manage test jobs, analyze builds, and monitor testing infrastructure through natural language conversations.

Servers

This package provides two separate MCP servers optimized for different use cases:

sauce-api-mcp (Core Server) — Full Sauce Labs API integration for account management, device discovery, job analysis, builds, storage, and tunnels.

sauce-api-mcp-rdc (RDC Server) — Real Device Cloud (RDC) focused server. Dynamically generates MCP tools at startup from the official Sauce Labs OpenAPI spec using FastMCP with an OpenAPIProvider, so the tool set is always up-to-date without code changes. Includes a small set of handwritten tools for endpoints that need special handling (binary payloads, session lifecycle, app installation polling).

Both servers can be configured simultaneously in your LLM client for full Sauce Labs coverage.

Related MCP server: Jenkins MCP Server

Features

🚀 Core Capabilities

  • Account Management: View account details, team information, and user permissions

  • Device Cloud Access: Browse 300+ real devices (iOS, Android) and virtual machines

  • Test Job Management: Retrieve recent jobs, analyze test results, and debug failures

  • Build Monitoring: Track build status, view job collections, and analyze test suites

  • Storage Management: Manage uploaded apps and test artifacts

  • Tunnel Monitoring: Check Sauce Connect tunnel status and configuration

🔧 Advanced Features

  • Real-time Device Status: Monitor device availability and usage across data centres

  • Cross-platform Testing: Support for both Virtual Device Cloud (VDC) and Real Device Cloud (RDC)

  • Test Analytics: Detailed job information including logs, videos, and performance metrics

  • Team Collaboration: Multi-team support with proper access controls

  • Dynamic RDC API: sauce-api-mcp-rdc auto-discovers the latest RDC v2 endpoints from the OpenAPI spec at startup; the cached spec is used as a fallback when the network is unavailable

  • Response shaping: Large API list responses are automatically truncated to keep LLM context budget under control ( configurable via SAUCE_MCP_MAX_RESPONSE_ITEMS)

  • File safety: File push/pull operations on devices are restricted to ~/.sauce-mcp/files/ to prevent path traversal

Prerequisites

  • Python 3.10+

  • pip

  • Sauce Labs account with API access

  • Claude Desktop, Gemini CLI, Goose, or another MCP-compatible LLM client

Installation

Install the package from PyPI:

pip install sauce-api-mcp

This installs both servers and registers their command-line entry points:

  • sauce-api-mcp — core server

  • sauce-api-mcp-rdc — RDC OpenAPI server

Verify installation:

which sauce-api-mcp
which sauce-api-mcp-rdc

Configuration for LLM Clients

Claude Desktop (Mac / Linux / Windows)

  1. Locate your Claude Desktop config file:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

    • Linux: ~/.config/Claude/claude_desktop_config.json

  2. Find your Python installation's bin directory:

    python3 -c "import sys; print(sys.prefix + '/bin')"
  3. Add both servers to your config:

    {
      "mcpServers": {
        "sauce-api-mcp-core": {
          "command": "/path/to/bin/sauce-api-mcp",
          "env": {
            "SAUCE_USERNAME": "your-sauce-username",
            "SAUCE_ACCESS_KEY": "your-sauce-access-key"
          }
        },
        "sauce-api-mcp-rdc": {
          "command": "/path/to/bin/sauce-api-mcp-rdc",
          "env": {
            "SAUCE_USERNAME": "your-sauce-username",
            "SAUCE_ACCESS_KEY": "your-sauce-access-key"
          }
        }
      }
    }
  4. Restart Claude Desktop to load the servers.

Gemini CLI

Add to ~/.gemini/settings.json:

{
  "mcpServers": {
    "sauce-api-mcp-core": {
      "command": "/path/to/bin/sauce-api-mcp",
      "env": {
        "SAUCE_USERNAME": "your-sauce-username",
        "SAUCE_ACCESS_KEY": "your-sauce-access-key"
      }
    },
    "sauce-api-mcp-rdc": {
      "command": "/path/to/bin/sauce-api-mcp-rdc",
      "env": {
        "SAUCE_USERNAME": "your-sauce-username",
        "SAUCE_ACCESS_KEY": "your-sauce-access-key"
      }
    }
  }
}

Goose

Add to ~/.config/goose/config.yaml:

sauce-api-mcp-core:
  cmd: /path/to/bin/sauce-api-mcp
  description: Sauce Labs MCP (Core)
  enabled: true
  envs:
    SAUCE_USERNAME: your-sauce-username
    SAUCE_ACCESS_KEY: your-sauce-access-key
  type: stdio

sauce-api-mcp-rdc:
  cmd: /path/to/bin/sauce-api-mcp-rdc
  description: Sauce Labs MCP (RDC)
  enabled: true
  envs:
    SAUCE_USERNAME: your-sauce-username
    SAUCE_ACCESS_KEY: your-sauce-access-key
  type: stdio

Environment Variables (Alternative)

Instead of adding credentials to config files, you can export them as environment variables:

export SAUCE_USERNAME="your-sauce-username"
export SAUCE_ACCESS_KEY="your-sauce-access-key"

Then omit the env block from your config. Both servers will automatically pick them up.

Configuration

Required Environment Variables

Variable

Description

SAUCE_USERNAME

Your Sauce Labs username

SAUCE_ACCESS_KEY

Your Sauce Labs access key (found in Account Settings)

Optional Environment Variables

Variable

Default

Description

SAUCE_REGION

US_WEST

Data centre region: US_WEST, US_EAST, EU_CENTRAL

SAUCE_MCP_MAX_RESPONSE_ITEMS

100

Maximum list items returned before truncation (RDC server)

Getting Your Sauce Labs Credentials

  1. Log into your Sauce Labs account

  2. Navigate to Account → User Settings

  3. Copy your Username and Access Key

Troubleshooting Installation

"Command not found: sauce-api-mcp"

The entry point script isn't in your PATH. Use the full path approach:

python3 -m pip list | grep sauce-api-mcp
python3 -c "import sys; print(sys.prefix + '/bin/sauce-api-mcp')"

"ENOENT: no such file or directory" in MCP client

The MCP client is using a different Python environment. Solutions:

  1. Use the full absolute path (recommended) — update your config with the path printed by python3 -c "import sys; print(sys.prefix + '/bin/sauce-api-mcp')", not just which sauce-api-mcp

  2. Module invocation (fallback):

    "command": "python3",
    "args": ["-m", "sauce_api_mcp.main"]

Example Prompts

  • "Show me my recent test failures"

  • "Find available iPhone 16 devices"

  • "Analyse the performance of my latest build"

  • "Open a session on a Samsung device and install my app"

  • "What tunnels do I have running right now?"

Available Tools

Core Server (sauce-api-mcp)

Account & Organisation

Tool

Description

get_account_info

Retrieve current user account information

lookup_users

Find users in your organisation

get_user

Get detailed user information

lookup_teams

Find teams in your organisation

get_team

Get team details

list_team_members

List all members of a specific team

lookup_service_accounts

List service accounts

get_service_account

Get service account details

get_my_active_team

Get the active team for the authenticated user

Device Management

Tool

Description

get_devices_status

List all devices and their current status

get_specific_device

Get detailed information about a specific device

get_private_devices

List private devices available to your account

Test Jobs

Tool

Description

get_recent_jobs

Retrieve your most recent test jobs

get_job_details

Get comprehensive details about a specific job

get_real_device_jobs

List active jobs on real devices

get_specific_real_device_job

Get details about a specific real device job

get_specific_real_device_job_asset

Download job assets (logs, videos, screenshots)

Builds

Tool

Description

lookup_builds

Search for builds with filters

get_build

Get detailed information about a specific build

get_build_for_job

Get the build associated with a job

lookup_jobs_in_build

List all jobs within a build

Storage

Tool

Description

get_storage_files

List uploaded application files

get_storage_groups

List app storage groups

get_storage_groups_settings

Get settings for a storage group

upload_file_to_storage

Upload an app file to Sauce Storage

update_storage_group_settings

Update app group settings (resigning, instrumentation, etc.)

Tunnels

Tool

Description

get_tunnels_for_user

List active Sauce Connect tunnels

get_tunnel_information

Get details about a specific tunnel

get_current_jobs_for_tunnel

See how many jobs are using a tunnel

get_tunnel_version_downloads

Get download URLs for Sauce Connect versions

Test Assets & Logs

Tool

Description

get_test_assets

Retrieve test artifacts for a VDC job

get_log_json_file

Get structured test execution logs for a VDC job

get_network_har_file

Get HAR network capture data with filtering

filter_har_data

Filter cached HAR data efficiently (avoids re-downloading)

RDC Server (sauce-api-mcp-rdc)

The RDC server auto-generates tools from the Sauce Labs RDC v2 OpenAPI spec. The full tool list varies as the spec evolves, but the categories below are always present.

Session Management

Tool

Description

createSession

Allocate a real device and return an ACTIVE session. Polls until ACTIVE or times out (~55 s)

listSessions

List current device sessions with optional filtering

deleteSession

Close a session and release the device back to the pool

get_session_details

Get full details of a specific session

Device Discovery

Tool

Description

listDevices

Browse the full device catalogue with OS/model filters

list_device_status

Get live availability status of devices

App Management

Tool

Description

installApp

Start an app installation on a device (returns an installation ID)

waitForAppInstallation

Poll installation status — call repeatedly until FINISHED

launchApp

Launch an already-installed app

uninstallApp

Remove an app from a device

list_app_installations

List ongoing or recent app installations

install_app_from_storage

Install an app from Sauce Storage

Device Interaction

Tool

Description

take_screenshot

Capture the current device screen

open_url_or_deeplink

Open a URL or deep link on the device

execute_shell_command

Run an adb shell command (Android)

applyDeviceSettings

Change device settings (orientation, locale, etc.)

File Operations

Tool

Description

push_file_to_device

Upload a local file to the device (restricted to ~/.sauce-mcp/files/)

pull_file_from_device

Download a file from the device

listFiles

List files in a device directory

removeFile

Delete a file from the device

statFile

Get metadata about a file or directory on the device

Network & Proxy

Tool

Description

proxy_http

Forward HTTP requests through the device proxy

startNetworkCapture / stopNetworkCapture

Capture network traffic

setNetworkProfile / setNetworkConditions

Simulate network conditions

listNetworkProfiles

List available network profiles

resetNetworkConditions

Restore normal connectivity

Appium

Tool

Description

startAppiumServer

Start a hosted Appium server co-located with the device

getAppiumServerStatus

Check if Appium is running and get its endpoint URL

listAppiumVersions

List available Appium versions

launchWebDriverAgent

Launch WDA on an iOS device

getWebDriverAgentStatus

Check WDA status

Development Setup

Prerequisites

  • Python 3.10+

  • uv package manager

  • Git

Clone and Setup

git clone https://github.com/saucelabs/sauce-api-mcp.git
cd sauce-api-mcp
uv sync

This creates a virtual environment and installs all dependencies (including test extras) in editable mode.

Project Structure

sauce-api-mcp/
├── src/sauce_api_mcp/
│   ├── main.py              # Core server — hand-written MCP tools
│   ├── rdc_dynamic.py       # RDC server — OpenAPIProvider + hand-written tools
│   ├── models.py            # Pydantic response models
│   └── shared/              # Shared utilities
├── tests/                   # Test suite
├── server.json              # MCP Registry manifest
├── pyproject.toml           # Package config, entry points, PSR release config
└── uv.lock                  # Locked dependencies

Running the Servers Locally

uv run sauce-api-mcp
uv run sauce-api-mcp-rdc

Both will print Error: This server is not meant to be run interactively — this is expected (they communicate over stdio with MCP clients, not the terminal).

To point your MCP client at a local development checkout:

{
  "command": "/path/to/sauce-api-mcp/.venv/bin/sauce-api-mcp"
}

Running Tests

Tests are split into three groups:

# Integration tests (no live credentials required)
uv run pytest -m "not live and not slow"

# Live tests (require SAUCE_USERNAME + SAUCE_ACCESS_KEY)
uv run pytest -m "live and not slow"

# Slow tests (allocate real devices — takes minutes)
uv run pytest -m "slow"

# Full suite
uv run pytest

Adding Dependencies

uv add httpx
uv add --dev pytest-asyncio

CI / Release Workflow

Continuous Integration

Every pull request targeting main runs three sequential jobs via build.yml:

  1. test — integration tests across Python 3.10, 3.11, 3.12 (in parallel)

  2. test-live — live tests on Python 3.12 (after test)

  3. test-slow — slow tests on Python 3.12 (after test-live)

Releases

Releases are triggered manually via the Release workflow (publish.yml) in GitHub Actions:

  1. Go to Actions → Release → Run workflow

  2. Choose the release type: patch, minor, major, or prerelease

  3. For pre-releases, optionally set the token (alpha, beta, rc)

The workflow then:

  • Bumps the version in pyproject.toml and server.json using python-semantic-release

  • Creates a v* git tag and a GitHub Release with auto-generated changelog

  • Publishes stable releases to PyPI and the MCP Registry

  • Publishes pre-releases (alpha/beta/rc) to TestPyPI only

Contributing

We welcome contributions! See CONTRIBUTING.md for guidelines.

Getting Help

Changelog

For a full history of releases and changes, see the GitHub Releases page.

v1.1.0

  • Merged sauce-api-mcp and sauce-labs-mcp (RDC OpenAPI) into single monorepo package

  • Added sauce-api-mcp-rdc entry point for the RDC-focused server

  • Migrated RDC server from deprecated FastMCPOpenAPI to OpenAPIProvider + FastMCP (fastmcp 3.x)

  • Automated release workflow via workflow_dispatch with python-semantic-release; release type chosen by the author ( patch/minor/major/prerelease)

  • CI split into three sequential stages: integration tests (matrix 3.10–3.12) → live tests → slow tests

  • Locked dependencies with uv.lock for reproducible installs

v1.0.3

  • Updated to Apache License 2.0 (previously MIT)

v1.0.2

  • Submitted to official MCP Registry

  • Added Python 3.9 support

v1.0.1

  • Overhauled README with improved install instructions

v1.0.0

  • Initial release with full Sauce Labs API integration


Made with ❤️ for the testing community

License

Apache 2.0 (versions 1.1.0+)

Versions prior to 1.0.3 were released under the MIT License.

Disclaimer of Warranties

THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Limitation of Liability

IN NO EVENT SHALL SAUCE LABS, INC. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ( INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

General Use

The MCP Server is provided as a free and open-source tool to facilitate interaction with publicly available APIs. Users are free to modify and distribute the software under the terms of the Apache License 2.0.

By using this software, you acknowledge that you are doing so at your own risk and that you are responsible for your own compliance with all applicable laws and regulations.

Indemnification

You agree to indemnify and hold harmless Sauce Labs, Inc. ("Sauce Labs"), its officers, directors, employees, and agents from and against any and all claims, liabilities, damages, losses, or expenses, including reasonable attorneys' fees and costs, arising out of or in any way connected with your access to or use of this software.

This includes, but is not limited to:

  • Your Interaction with Third-Party LLM Providers: You acknowledge that this software utilises publicly available APIs for interaction with a Large Language Model (LLM). You are solely responsible for your use of any third-party LLM services, including your adherence to the terms and conditions of the LLM provider and any costs associated with your use, such as token fees. Sauce Labs has no control over, and assumes no responsibility for, the content, privacy policies, or practices of any third-party LLM providers.

  • Content Generated by the LLM: You are solely responsible for the content generated, received, or transmitted through your use of the MCP Server and the underlying LLM. Sauce Labs does not endorse and has no control over the content of communications made by you or any third party through the server.

  • Your Code and Modifications: Any modifications, enhancements, or derivative works you create based on the MCP Server are your own, and you are solely responsible for their performance and any liabilities that may arise from their use.

Available Tools

34 tools
filter_har_dataA
    Filters HAR data with in-memory caching for efficient multiple queries.

    **Key difference from get_network_har_file**: This method caches the full HAR
    data in memory after the first call, making subsequent filtering operations
    instant without re-downloading from Sauce Labs.

    First call for a job_id downloads and caches the full HAR data.
    Subsequent calls filter the cached data instantly.

    :param job_id: The Sauce Labs Job ID
    :param filter_category: Predefined categories ("analytics", "social", "api", etc.)
    :param custom_domains: Domain patterns to include
    :param resource_types: Resource types to include (Script, XHR, Image, etc.)
    :param status_codes: HTTP status codes to include
    :return: Filtered HAR data with cache metadata

    Examples:
    - filter_har_data(job_id, filter_category="analytics") # First call: downloads + caches
    - filter_har_data(job_id, filter_category="social")    # Subsequent: instant filtering
    - filter_har_data(job_id, custom_domains=["facebook"]) # Also instant
    
ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes
filter_categoryNo
custom_domainsNo
resource_typesNo
status_codesNo

TDQS

A4.6/5.0
Behavior4/5

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

No annotations provided; description discloses caching behavior, first vs subsequent calls, and key difference. Lacks details on side effects or memory limits but adequate for a read-like filter.

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 summary, key difference, behavior, parameters, and examples. Slightly verbose in repeating caching behavior, but every section 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?

Covers purpose, usage, parameters, and caching behavior. Lacks return structure details, but examples and parameter descriptions provide enough context for correct invocation.

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%; description adds meaning by listing parameters with brief explanations, predefined categories, and examples, compensating fully 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?

Clearly states it filters HAR data with in-memory caching, distinguishes from sibling get_network_har_file by highlighting caching behavior.

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?

Explicitly describes when to use (for multiple queries) vs when not (first call downloads), and names the alternative tool. Examples reinforce usage.

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

get_account_infoA

Provides the current user's Sauce Labs account information, including username, jobs run, minutes used, and overall account status. Useful for a quick overview of account activity.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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 the returned fields but does not explicitly state it is a read-only operation, require authentication, or mention any side effects. The name implies read-only, but the description could be more explicit.

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 three sentences with no wasted words. Each sentence adds value: first states action and fields, second indicates use case, third implies simplicity. It is appropriately front-loaded.

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 tool has no parameters and an output schema (not shown), so the description does not need to explain return values. It covers the main fields and use case. Minor gaps: no mention of potential errors or prerequisites, but overall sufficient for a simple read tool.

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?

There are no parameters, and the description adds meaning by listing the returned information (username, jobs run, minutes used, account status). Baseline for 0 parameters is 4, and the description fulfills this by providing context beyond the empty 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 provides Sauce Labs account information with specific fields (username, jobs run, minutes used, account status). The verb 'provides' and resource 'account information' are specific and unambiguous.

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

Usage Guidelines3/5

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

The description says 'useful for a quick overview of account activity,' which implies a use case but does not specify when not to use it or contrast with sibling tools like get_user or get_my_active_team. No exclusions or alternatives are provided.

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

get_buildA
    Retrieve the details related to a specific build by passing its unique ID in the request.
    :param build_source: Required. The type of device for which you are getting builds. Valid values are: 'rdc' -
        Real Device Builds, 'vdc' - Emulator or Simulator Builds
    :param build_id: Required. The unique identifier of the build to retrieve. You can look up build IDs in your
        organization using the Lookup Builds endpoint.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
build_sourceYes
build_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only states what the tool does and gives parameter info, but does not reveal side effects, authentication requirements, rate limits, or other 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.

Conciseness4/5

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

The description is reasonably concise: two sentences for purpose, then parameter details. It is front-loaded with the main action. The parameter descriptions are slightly verbose but clear.

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

Completeness3/5

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

An output schema exists, so the description need not cover return values. The tool is simple with two parameters, and the description covers purpose and parameter details. However, it lacks behavioral context (e.g., read-only nature) and does not mention any prerequisites.

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 adds significant meaning by explaining valid values for 'build_source' ('rdc'/'vdc') and how to obtain 'build_id' via lookup_builds. This goes well beyond the schema's field names.

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 retrieves details of a specific build by its unique ID. The verb 'retrieve' and the resource 'build details' are specific. Among siblings like 'lookup_builds' which lists builds, this tool is distinct for fetching single-build details.

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 details the parameters and valid values ('rdc', 'vdc') and points to 'lookup_builds' for finding IDs. However, it does not explicitly state when to use this tool versus alternatives or exclude contexts where it is not appropriate.

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

get_build_for_jobB
    Retrieve the details related to a specific build by passing its unique ID in the request.
    :param build_source: Required. The type of device for which you are getting builds. Valid values are: 'rdc'
        (Real Device Builds), 'vdc' (Emulator or Simulator Builds)
    :param job_id: Required. The unique identifier of the job whose build you are looking up. You can look up job
        IDs in your organization using the Get Jobs endpoint.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
build_sourceYes
job_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It does not mention that the operation is read-only, any required permissions, rate limits, or side effects. The description focuses solely on input parameters.

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, front-loading the purpose and using a clear docstring format. It avoids unnecessary details while covering essential parameter explanations.

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

Completeness3/5

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

The description adequately covers input parameters, but given that an output schema exists, it does not need to explain return values. However, it lacks information about error conditions, prerequisites, or the scope of the retrieved build details.

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 schema has 0% description coverage, so the description fully compensates by explaining build_source with valid values and job_id with a lookup reference. This adds significant meaning beyond the schema's property names.

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 'Retrieve the details related to a specific build' and explains that the build is identified by a job ID. However, it could be more precise about the exact identification mechanism, as it mentions 'its unique ID' but the parameters are build_source and job_id.

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 provides parameter instructions but does not indicate when to use this tool versus alternatives like get_build or lookup_builds. No guidance on when not to use it or context-specific usage.

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

get_current_jobs_for_tunnelC
    Returns the number of currently running jobs for the specified tunnel. The word "tunnel" in this context refers
    to usage of the Sauce Connect tool.
    :param username: Required. The authentication username of the owner of the requested tunnel.
    :param tunnel_id: Required. The unique identifier of the requested tunnel.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes
tunnel_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must disclose behavior. It only describes inputs and a basic output count, but omits side effects, authentication requirements, error handling, or any constraints beyond input requirements.

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 functional but includes docstring formatting that adds verbosity. It could be more concise without losing clarity.

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

Completeness2/5

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

Given an output schema exists, the description does not explain what the return value looks like (e.g., number format, type). It covers inputs adequately but misses output context and error scenarios.

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 coverage is 0%, but the description provides meaningful explanations for both parameters: username is 'the authentication username of the owner' and tunnel_id is 'the unique identifier of the requested tunnel', going beyond the raw 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 it returns the number of currently running jobs for a specified tunnel, and clarifies the term 'tunnel' refers to Sauce Connect. This distinguishes it from siblings like get_tunnel_information, but lacks explicit differentiation.

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 (e.g., get_tunnels_for_user, get_tunnel_information). It does not mention prerequisites or context for invocation.

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

get_devices_statusA
    Returns a list of devices in the data center along with their current states. Each device is represented by a
    descriptor, indicating its model, and includes information on availability, usage status, and whether it is
    designated as a private device. Note that the inUseBy field is exposed only for private devices
    isPrivateDevice: true. Users can view information about who is currently using the device only if they have
    the required permissions. Lack of permissions will result in the inUseBy field being omitted from the response
    for private devices.

    This tool provides a lightweight overview of all devices. For detailed device specifications, use the
    get_specific_device tool with the descriptor value as the device_id parameter.

    Available States:
        AVAILABLE	Device is available and ready to be allocated
        IN_USE	    Device is currently in use
        CLEANING	Device is being cleaned (only available for private devices)
        MAINTENANCE	Device is in maintenance (only available for private devices)
        REBOOTING	Device is rebooting (only available for private devices)
        OFFLINE	    Device is offline (only available for private devices)

    Note: The 'descriptor' field in each device object is the device identifier that should be used as the
    'device_id' parameter in get_specific_device calls.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses behavioral traits: the inUseBy field exposure condition (private devices + permissions), the available states list, and the use of descriptor as an identifier for other tools. This is comprehensive.

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 paragraphs, a state list, and a note. It is informative but slightly lengthy; however, every sentence adds value. Could be slightly more concise but still good.

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 no parameters and an output schema exists, the description adequately covers the output fields, special behaviors, state meanings, and cross-reference to a related tool. It is complete for its simplicity.

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?

There are 0 parameters, and the schema coverage is 100% (empty schema). According to guidelines, the baseline is 4. The description adds no parameter info because none exist, which 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 returns a list of devices with their states, and differentiates itself from get_specific_device by noting that the latter provides detailed specifications. It also implies a lightweight overview 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?

It explicitly tells when to use get_specific_device for detailed specs, but does not mention alternatives like get_private_devices, which is a sibling tool specifically for private devices. The context is clear but lacks exclusions for all related siblings.

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

get_job_detailsA
    Retrieves the execution details of a particular job, by ID.

    This method works for both Virtual Device Cloud (VDC) and Real Device Cloud (RDC) though
    the returned data structure may vary between platforms.

    Use this method first to understand what type of job you're working with:
        - If 'device_name' contains mobile devices → RDC job → use get_specific_real_device_job_asset for assets
        - If 'browser' field shows web browsers → VDC job → use get_test_assets for assets

    :param job_id: The Sauce Labs Job ID (works for both VDC and RDC jobs).
    :return: Detailed job information including status, timing, configuration, and platform-specific data.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Discloses that the data structure may vary between platforms and that the returned fields ('device_name', 'browser') help determine job type. No annotations exist, so description carries full burden; it adequately covers the read-only nature and expected 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?

Well-structured with a summary line and bullet-style guidance, but slightly verbose with docstring formatting. Could be tightened without losing clarity.

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 (supports two platforms with varying data structures) and the presence of an output schema, the description fully covers purpose, parameter, return content, and usage context, including how to proceed with sibling tools.

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 description coverage, the description fully explains the single parameter 'job_id' as 'The Sauce Labs Job ID (works for both VDC and RDC jobs)', adding significant meaning beyond the schema's title.

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 retrieves execution details of a job by ID, works for both VDC and RDC, and distinguishes from siblings by positioning itself as a preliminary tool to determine job type before using more specific tools.

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?

Explicitly says 'Use this method first to understand what type of job you're working with' and provides conditional logic to choose between get_specific_real_device_job_asset and get_test_assets based on returned fields, offering clear alternatives.

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

get_log_json_fileA
    Shows the complete log of a Sauce Labs test, in structured json format.

    IMPORTANT: This method only works with Virtual Device Cloud (VDC) jobs. For Real Device
    Cloud (RDC) jobs, use get_specific_real_device_job_asset with asset_type='appiumLogs'
    or 'deviceLogs' instead.

    If this method fails with "asset not found", the job is likely an RDC job - try
    get_specific_real_device_job_asset instead.

    :param job_id: The Sauce Labs Job ID (VDC jobs only).
    :return: Structured JSON log data with test commands, timing, and screenshots.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

Describes behavior: returns structured JSON log, only for VDC jobs, and explains failure scenario. No annotations exist, so description carries full burden. It could add that operation is read-only but covers key points.

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 clear sections (IMPORTANT, param, return). The 'If this method fails' sentence adds value but slightly increases length. Generally efficient.

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 single parameter and presence of output schema, the description provides sufficient context. It explains return format and key constraints, making the tool fully understandable.

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 has 0% description coverage, but description adds meaning: job_id is Sauce Labs Job ID, constrained to VDC jobs. Adds value beyond the schema definition.

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 shows the complete log of a Sauce Labs test in structured JSON format, specifying it works only with VDC jobs. This distinct purpose differentiates it from siblings like get_specific_real_device_job_asset.

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?

Explicitly states when to use (VDC jobs) and when not (RDC jobs), providing an alternative tool (get_specific_real_device_job_asset) and a troubleshooting hint for failure cases.

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

get_my_active_teamA

Retrieves the Sauce Labs active team for the currently authenticated user.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only states it retrieves data, without disclosing whether it is read-only, auth requirements, or any side effects.

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

Conciseness5/5

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

The description is a single, clear sentence that directly states the action, with no unnecessary 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?

Given the tool has no parameters and an output schema exists, the description fully explains the tool's purpose without requiring additional details.

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?

There are no parameters, and schema coverage is 100%. The description adds no parameter info, but none 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 the verb 'retrieves' and the resource 'active team' scoped to the currently authenticated user, distinguishing it from siblings like 'get_team' which may refer to other teams.

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 for the user's own active team but does not explicitly state when to use it over alternatives like 'get_team' or provide any exclusions.

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

get_network_har_fileA
    Retrieves and filters HAR file data from a Sauce Labs test job.

    The tool can intelligently filter requests to reduce data size and focus analysis.
    Use filter categories for common patterns, or specify custom filters for detailed control.

    :param job_id: The Sauce Labs Job ID (works for VDC jobs with network capture enabled)
    :param filter_category: Predefined filter categories:
        - "analytics" - Google Analytics, Facebook Pixel, Adobe Analytics, Comscore, etc.
        - "api" - Internal API calls (same domain as main site, JSON responses)
        - "fonts" - Font loading requests (woff, woff2, ttf, etc.)
        - "images" - Image resources (jpg, png, webp, svg, etc.)
        - "scripts" - JavaScript files and external scripts
        - "errors" - Failed requests (4xx, 5xx status codes)
        - "slow" - Requests taking longer than 1 second
        - "third-party" - All external domain requests
    :param custom_domains: List of domain patterns to include (e.g., ["google", "facebook", "api.company.com"])
    :param resource_types: List of resource types to include (e.g., ["Script", "XHR", "Image"])
    :param status_codes: List of HTTP status codes to include (e.g., [200, 404, 500])
    :return: Filtered HAR data structure with only matching requests

    Examples:
    - get_network_har_file(job_id, filter_category="analytics")
    - get_network_har_file(job_id, filter_category="api")
    - get_network_har_file(job_id, custom_domains=["retailmenot.com"], resource_types=["XHR"])
    
ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes
filter_categoryNo
custom_domainsNo
resource_typesNo
status_codesNo

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. Notes constraint: 'works for VDC jobs with network capture enabled', but does not disclose rate limits, authentication needs, or error handling behavior. Partially adequate.

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 bullet points and examples. Somewhat verbose due to docstring format (e.g., :param, :return). Front-loaded purpose. Could be tightened without losing clarity.

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 all parameters with examples and constraints (VDC jobs with network capture). Lacks info on return value structure (no output schema) and error handling. Fairly complete for a retrieval tool with no annotations.

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 details every parameter: job_id (required), filter_category (with enumerated list of 8 categories), custom_domains, resource_types, status_codes. Adds significant meaning beyond the schema's basic types and defaults.

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

Purpose5/5

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

States verb+resource: 'Retrieves and filters HAR file data from a Sauce Labs test job'. Distinguishes from sibling 'filter_har_data' by noting it works for specific job context and provides predefined filter categories.

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: when to use (retrieve filtered network data from a job). Does not explicitly mention when not to use or alternatives (e.g., filter_har_data), though examples imply usage.

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

get_private_devicesC

Get a list of private devices with their device information and settings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It only states the tool returns 'device information and settings', but does not mention whether results are paginated, require authentication, or if it returns all devices at once. The description is insufficient for safe invocation.

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—one sentence front-loading the key information. Every word is necessary, though more detail could be added without losing conciseness.

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

Completeness3/5

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

With no parameters and an output schema present, the description is adequate but not complete. It fails to mention common list-tool behaviors like ordering, filtering capabilities, or whether results are cached. For a tool with no inputs, the description should provide more context about what 'private devices' means.

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?

There are no parameters (0 params, 100% schema coverage), so baseline is 4. The description adds minimal meaning beyond the schema by specifying the output content ('device information and settings'), but it is vague and does not elaborate on what fields are included.

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 the action ('get a list') and the resource ('private devices') and mentions the content ('device information and settings'). It distinguishes from siblings like get_specific_device (which returns a single device) but does not explicitly differentiate from other list tools like get_devices_status or get_real_device_jobs.

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 like get_devices_status (which may return different subsets) or get_specific_device. The description implies using it to list private devices, but provides no context on filtering, prerequisites, or exclusions.

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

get_real_device_jobsB
    Get a list of jobs that are actively running on real devices in the data center.
    :param limit: The maximum number of jobs to return.
    :param offset: Limit results to those following this index number. Defaults to 1.
    :param type: Filter results to show manual tests only with LIVE.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
typeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It states jobs are 'actively running' but does not disclose behavioral traits such as auth requirements, rate limits, idempotency, or pagination behavior beyond what parameters imply. The 'actively running' scope is communicated but other impacts are missing.

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: three sentences covering purpose and parameters. No redundant information; every sentence is necessary.

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

Completeness3/5

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

Overall, the description covers the basic purpose and parameter meanings, but lacks details on pagination limits, the meaning of 'LIVE' value for type, and how offset interacts with limit. Output schema exists, so return values are not required, but these gaps reduce completeness.

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?

Schema coverage is 0%, so description must explain parameters. It defines limit (max number), offset (index number, but unclear if zero-based or skip count), and type (manual tests with 'LIVE', but value meaning is ambiguous). While it adds meaning, offset and type descriptions are imprecise.

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', the resource 'list of jobs', and the scope 'actively running on real devices in the data center'. It effectively distinguishes from sibling tools like 'get_specific_real_device_job' (specific job) and 'get_current_jobs_for_tunnel' (tunnel-specific).

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 explicit guidance on when to use this tool versus alternatives like 'get_recent_jobs' or 'get_current_jobs_for_tunnel'. The description implies it's for active real-device jobs but does not state when not to use it or provide context about job lifecycle.

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

get_recent_jobsA
    Retrieves a list of the most recent jobs run on Sauce Labs for the current user.
    Allows specifying the number of jobs to retrieve, up to a maximum.
    Useful for quickly checking the status of recent test runs.
    :param limit: The upper limit (integer) of jobs to retrieve. Max is 100
    
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided; description implies read-only but does not explicitly state no side effects or disclosure of behavior beyond the purpose.

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 a concise param doc line, front-loaded with main purpose, no unnecessary 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?

Simple tool with output schema; description covers purpose, param, and use case sufficiently, though could mention the default limit of 5 more 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?

The param description adds crucial details: it's an integer limit with a maximum of 100, which is absent from the schema (0% coverage).

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 retrieves recent jobs for the current user, distinguishing from sibling tools like get_job_details or get_build_for_job.

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?

Mentions it's useful for quickly checking recent test runs, but lacks explicit guidance on when not to use or comparison with alternatives like get_job_details.

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

get_service_accountC
    Retrieves details of the specified service account.
    :param id: Required. The unique identifier of the service account. You can find the uuid in the URL of the
        service account details view in the Sauce Labs UI. You can also look up the uuid using the Lookup
        Service Accounts endpoint.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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 only states the tool retrieves details without disclosing whether it is read-only, what permissions are needed, or any side effects. For a retrieval operation, this is minimal.

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

Conciseness4/5

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

The description is a single paragraph with a clear param docstring. It is front-loaded and efficient, with no extraneous information. It earns a high score for brevity and structure.

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

Completeness3/5

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

Given the simple nature of the tool (one parameter, output schema exists), the description is adequate but lacks information about the return value structure or any behavioral details. It does not mention that the operation is read-only or any additional context.

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?

The input schema has 0% description coverage for the single parameter 'id'. The description compensates by explaining how to obtain the id (URL or Lookup endpoint), which adds meaning beyond the schema. However, it does not describe the format or constraints of the id.

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 the action ('retrieves details') and the resource ('service account'). However, it does not differentiate this tool from sibling tools like 'get_account_info' or 'get_user', which might have overlapping purposes.

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 provides some guidance on how to find the 'id' parameter (URL or Lookup endpoint) but offers no context on when to use this tool over alternatives, nor any preconditions or exclusion criteria.

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

get_specific_deviceA
    Get information about the device specified in the request.
    :param device_id: Required. The unique identifier of a device in the Sauce Labs
        data center. Use the 'descriptor' value from get_devices_status results.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
device_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior2/5

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

No annotations provided, and the description only states the action without disclosing behavioral traits such as read-only nature, authentication needs, or rate limits. The output schema may cover return format, but the description adds no 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?

Two sentences, front-loaded with purpose, and a concise parameter note. Every sentence serves a purpose with no 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?

With one parameter, no annotations, and an output schema, the description adequately covers what the agent needs to know to use the tool. Could be improved by mentioning output structure, but output schema likely handles that.

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 coverage is 0%, but the description adds significant meaning: explains that device_id is the unique identifier from get_devices_status results, providing crucial context beyond the schema's minimal title.

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 'Get information about the device specified in the request.' Distinguishes from sibling get_devices_status by providing the source for device_id, making the tool's specific purpose distinct.

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 says to use the device_id from get_devices_status results, implying when to use this tool. Does not explicitly state 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.

get_specific_real_device_jobB
    Get information about a specific job running on a real device at the data center.
    :param job_id: Required. The unique identifier of a job running on a real device in the data center. You can
        look up job IDs using the Get Real Device Jobs endpoint.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

Without annotations, the description carries the full burden. It only states the operation ('get information') without disclosing read-only nature, side effects, authentication, or error handling. Minimal behavioral context is provided.

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 two sentences: one for purpose and one for the parameter. No extraneous content, front-loaded, and every sentence adds value.

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

Completeness3/5

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

Given the output schema exists and the tool is simple (one parameter), the description is adequate but not fully complete. It mentions how to get job_ids but lacks prerequisites or typical usage flow, such as the need to call get_real_device_jobs first.

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?

Schema description coverage is 0%, so the description must compensate. It explains job_id as a unique identifier and suggests how to obtain it. This adds meaning but lacks format details (e.g., string length, expected pattern). Baseline is 3 due to the single parameter.

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 the tool retrieves information about a specific job on a real device, using the verb 'Get information' and specifying the resource. It is distinct from siblings like get_real_device_jobs (which lists jobs) and get_specific_real_device_job_asset, but does not explicitly differentiate, making it slightly less than perfect.

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 a job_id is available and hints at obtaining it via the Get Real Device Jobs endpoint. However, it does not provide explicit when-not-to-use guidance or compare with sibling tools, leaving room for improvement.

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

get_specific_real_device_job_assetA
    Download a specific asset for a Real Device Cloud (RDC) job.

    USE THIS METHOD WHEN:
    - The job ran on a physical mobile device (iPhone, Android, etc.)
    - get_test_assets returns an error about "Real Device job"
    - get_log_json_file fails with asset not found errors
    - You need logs/videos from mobile app testing

    For web browser testing on virtual machines, use get_test_assets instead.

    :param job_id: Required. The unique identifier of a job running on a real device in the data center. You can look up job
        IDs using the Get Real Device Jobs endpoint.
    :param asset_type: Required. The unique identifier of a job running on a real device in the data center. You can look up job
        IDs using the Get Real Device Jobs endpoint. Possible values are:

        'deviceLogs' - Device Logs | Appium, Espresso, XCUITest
        'appiumLogs' - Appium Logs | Appium
        'appiumRequests' - Appium Requests | Appium
        'junit.xml' - JUnit XML | Espresso, XCUITest
        'xcuitestLogs' - XCUITest Logs | XCUITest
        'video.mp4' - Video | Appium, Espresso, XCUITest
        'screenshots.zip' - Screenshots | Appium, Espresso
        'network.har' - Network Logs | Appium, Espresso, XCUITest
        'insights.json' - Device Vitals | Appium, Espresso, XCUITest
        'crash.json' - Crash Logs | Appium
    
ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes
asset_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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 downloads assets (a read operation), but lacks details about permissions, file size limits, timeouts, or error handling. The behavioral context is adequate but not comprehensive.

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 a heading and bullet points, making it scannable. It is reasonably concise for the information provided, though the repeated parameter descriptions could be tightened.

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

Completeness3/5

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

The description mentions that job_id can be looked up using Get Real Device Jobs endpoint, providing some context. However, it does not explain prerequisites, return format, or error cases. Given that an output schema exists, the description's completeness is moderate but not fully self-contained.

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?

Schema description coverage is 0%, so the description must compensate. It explains job_id and asset_type, but repeats identical text for both parameters incorrectly for asset_type. It does provide a useful list of possible asset_type values, which adds meaning beyond the schema's bare types. However, the incorrect repetition reduces clarity.

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 'Download a specific asset for a Real Device Cloud (RDC) job,' using a specific verb and resource. It distinguishes from siblings like get_test_assets and get_log_json_file by providing use-case guidance, making its purpose unambiguous.

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 provides explicit 'USE THIS METHOD WHEN' conditions, listing three concrete scenarios. It also explicitly states when not to use it ('For web browser testing on virtual machines, use get_test_assets instead'), offering clear alternatives and exclusions.

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

get_storage_filesB

Returns the set of files that have been uploaded to Sauce Storage by the requestor.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It mentions requestor-scoping but omits details on read-only nature, pagination, rate limits, or any side effects. For a read operation, this is insufficient.

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

Conciseness5/5

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

The description is a single, clear sentence with no unnecessary words. It is optimally concise and front-loaded with the core action.

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

Completeness3/5

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

With zero parameters and an output schema present (not shown), the description is minimal but adequate. However, it lacks context about the output structure or any filtering capabilities, which would help an agent plan subsequent steps.

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?

There are zero parameters and schema coverage is 100%. The description adds no parameter information, which is acceptable since no parameters exist. Baseline of 4 applies.

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 the tool returns a set of files uploaded by the requestor, providing a specific verb and resource. However, it does not explicitly distinguish from sibling tools like get_storage_groups or upload_file_to_storage.

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. The description lacks context on prerequisites, restrictions, or use cases, making it hard for an AI agent to decide when to invoke it.

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

get_storage_groupsA

Returns an array of groups (apps containing multiple files) currently in storage for the authenticated requestor.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It implies a read-only operation but does not disclose authorization requirements, rate limits, or side effects. Limited 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?

Single sentence with no redundancy or irrelevant information. Clearly communicates purpose and scope efficiently.

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?

With no parameters and an output schema present, the description is largely sufficient. It lacks details on pagination or response structure, but the output schema presumably covers return format.

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, so schema coverage is 100%. The description adds context by defining what a group is, though it does not elaborate on authentication scoping beyond 'authenticated requestor'.

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 returns an array of groups, defined as 'apps containing multiple files', and specifies it's for the authenticated requestor. This distinguishes it from sibling tools like get_storage_files.

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 like get_storage_files or get_storage_groups_settings. No exclusions or prerequisites mentioned.

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

get_storage_groups_settingsA
    Returns the settings of an app group with the given ID.
    :param group_id: The unique identifier of the app group. You can look up group IDs using the Get App Storage Groups endpoint.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are present, so the description alone must disclose behavior. It only describes the basic operation without mentioning side effects, idempotency, rate limits, or authentication needs.

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 (two sentences) and front-loaded with the core purpose, though it could be even tighter without losing meaning.

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

Completeness3/5

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

For a simple single-parameter tool with an output schema, the description covers the parameter and provides lookup guidance, but lacks behavioral context that would be expected given no annotations.

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 adds value by explaining group_id is a unique identifier and how to find it, but lacks details on format or constraints.

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 returns settings of an app group by ID, which distinguishes it from siblings like get_storage_groups that likely return group lists.

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 gives explicit guidance on how to obtain the group_id via another endpoint, implying when to use this tool (after fetching group IDs), but does not provide when-not-to-use or alternative tools.

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

get_teamA
    Returns the full profile of the specified team. The ID of the team is the only valid unique identifier.
    :param id: Required. The unique identifier of the team. You can look up the IDs of teams in your organization
        using the Lookup Teams endpoint.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden. It does not disclose any behavioral traits beyond the return value, such as authentication requirements, side effects, or rate limits.

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 two sentences with no fluff. It is appropriately sized and front-loads the purpose. Minor improvement could be merging the two 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?

Given the single parameter and the existence of an output schema, the description provides sufficient context for a simple retrieval tool. It explains the ID source and uniqueness.

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 schema has 0% description coverage, so the description adds meaning by explaining that 'id' is required, unique, and can be obtained via the Lookup Teams endpoint. This adds significant value beyond the raw 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 ('Returns the full profile') and the resource ('specified team'). It also specifies the unique identifier, distinguishing it from sibling tools like lookup_teams.

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 explicitly says the ID is the only valid unique identifier and directs users to the Lookup Teams endpoint for finding IDs. It implies when to use this tool versus lookup_teams, though it does not explicitly state alternatives.

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

get_test_assetsA
    Returns the list of all assets for a test, based on the job ID.

    IMPORTANT: Only use this method with Virtual Device Cloud (VDC) jobs. This will fail
    with a 404 error for Real Device Cloud (RDC) jobs. If you get an error about
    "Real Device job", use get_specific_real_device_job_asset instead.

    To determine job type: RDC jobs typically have device names like "Samsung Galaxy" or "iPhone 14".
    VDC jobs typically have browser names like "chrome", "firefox", or platform names like "Windows 11".

    :param job_id: The Sauce Labs Job ID (VDC jobs only).
    :return: JSON containing a list of assets, from which the URL can be derived.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

No annotations provided, so the description carries the burden. It discloses that the tool fails with 404 for RDC jobs and returns JSON. It could explicitly state read-only nature, but the provided behavioral context is adequate.

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, bold emphasis, and no redundant sentences. Slightly verbose but effective, earning a 4.

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 single-parameter tool with an output schema, the description covers purpose, usage constraints, parameter description, and return format. It is fully complete for agent decision-making.

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 documents the single parameter 'job_id' with context: 'The Sauce Labs Job ID (VDC jobs only).' This adds 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.

Purpose5/5

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

The description clearly states 'Returns the list of all assets for a test, based on the job ID.' It specifies the action and resource, and distinguishes from sibling tools by warning against using with RDC jobs and naming the alternative tool.

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?

It explicitly states 'Only use this method with Virtual Device Cloud (VDC) jobs' and explains the 404 error for RDC jobs, providing the alternative get_specific_real_device_job_asset. It also gives hints to determine job type, offering comprehensive guidance.

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

get_tunnel_informationB
    Returns information about the specified tunnel. The word "tunnel" in this context refers to usage of
    the Sauce Connect tool.
    :param username: Required. The authentication username of the owner of the requested tunnel.
    :param tunnel_id: Required. The unique identifier of the requested tunnel.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes
tunnel_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It only states 'returns information' without disclosing read-only nature, auth requirements, or what specific information is returned. Behaviorally opaque.

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: purpose, term disambiguation, parameter explanations. Efficient, front-loaded, no wasted words.

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

Completeness3/5

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

Covers purpose and parameters, but doesn't explain return value (though output schema exists) or how to obtain tunnel_id. Adequate for a simple lookup, but lacks depth.

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?

Schema coverage is 0%, but description adds basic context: username is 'authentication username of owner', tunnel_id is 'unique identifier of requested tunnel'. Adds some value but remains 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?

Description clearly states it 'returns information about the specified tunnel' and disambiguates 'tunnel' as referring to Sauce Connect, making purpose specific and distinct from siblings like get_tunnels_for_user.

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 explicit guidance on when to use this tool versus alternatives (e.g., get_tunnels_for_user). It implies use for a specific tunnel's details but lacks when-not or comparator context.

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

get_tunnels_for_userC
    Returns Tunnel IDs or Tunnels Info for any currently running tunnels launched by or shared with the specified
    user. The word "tunnel" in this context refers to usage of the Sauce Connect tool.
    It also allows to filter tunnels using an optional "filter" parameter that may take the following values:
    :param username: Required. The authentication username of the user whose tunnels you are requesting.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior1/5

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

With no annotations provided, the description should fully disclose behavioral traits, but it only states what it returns. It lacks information on side effects, permissions, rate limits, or error conditions. The mention of a non-existent filter parameter further reduces transparency.

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 front-loaded with purpose but includes a code-style param documentation block that is awkward and unnecessary. It could be more concise by removing the redundant param documentation and focusing on succinct instructions.

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

Completeness2/5

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

Given the tool has one parameter and an output schema, the description fails to provide complete context. It mentions an optional filter that isn't in the schema, and does not explain the output or any usage constraints. The output schema likely covers return values, but the description is still inadequate.

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

Parameters2/5

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

The input schema has 0% description coverage, so the description must compensate. It describes the username parameter as required and for authentication, but introduces a 'filter' parameter that does not exist in the schema, causing confusion. This adds minimal value and misleads.

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 the tool returns tunnel IDs or info for tunnels launched by or shared with a user, and clarifies 'tunnel' refers to Sauce Connect. However, it does not explicitly differentiate from sibling tools like get_tunnel_information or get_current_jobs_for_tunnel.

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 mentions an optional 'filter' parameter that is not present in the input schema, which is misleading. It provides no guidance on when to use this tool versus alternatives, and no prerequisites or context for use.

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

get_tunnel_version_downloadsA
    Returns the specific paths (URLs) to download specific versions of the SauceConnect tunnel software.
    The word "tunnel" in this context refers to usage of the Sauce Connect tool.
    :param client_version: Optional. Returns download information for the specified Sauce Connect client
        version (For example, '5.2.3').
    
ParametersJSON Schema
NameRequiredDescriptionDefault
client_versionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description covers only the basic behavior (returns URLs). It could disclose that this is a read-only operation, but the tool name and context make that clear enough.

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 and includes parameter details in a structured way. However, it could separate the parameter documentation more clearly from the main 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?

For a simple one-parameter tool with an output schema, the description adequately explains the tool's purpose and parameter. It does not need to detail return values since output schema exists.

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

Parameters2/5

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

The description labels client_version as 'Optional' but the schema marks it as required, creating a contradiction. It provides an example value but the mismatch undermines reliability. Schema coverage is 0%, so description should have been accurate.

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 it returns download URLs for specific versions of SauceConnect tunnel software, which is distinct from sibling tools that retrieve other tunnel information or job details.

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 download links for tunnel versions, but lacks explicit guidance on when to use versus alternatives like get_tunnel_information or get_tunnels_for_user.

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

get_userA
    Returns the full profile of the specified user. The ID of the user is the only valid unique identifier.
    :param id: Required. The user's unique identifier. Specific user IDs can be obtained through the lookup_users Tool
    
ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It does not disclose authentication needs, error behavior (e.g., user not found), or rate limits. Only mentions the identifier uniqueness.

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: first states purpose, second details the parameter. No redundant words, front-loaded 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?

Output schema exists, so return values are covered. Parameter is fully described. Lacks discussion of error handling or permissions, but acceptable for a simple retrieval tool.

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 has 0% description coverage; description adds that 'id' is required, the unique identifier, and how to obtain it via lookup_users, providing meaningful context beyond 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?

Clearly states 'Returns the full profile of the specified user' with a specific verb and resource. The mention of 'user ID as the only valid unique identifier' distinguishes it from sibling tools like lookup_users.

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 indicates that IDs can be obtained from lookup_users, implying a workflow but does not explicitly state when to use this tool over alternatives or provide exclusions.

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

list_team_membersB
    Returns the number of members in the specified team and lists each member.
    :param id: Required. Identifies the team for which you are requesting the list of members.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

Description only states it returns data, no behavioral details beyond that. No annotations provided, so description should disclose side effects, authentication needs, or error conditions, but it does not.

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 fairly concise, though the parameter documentation is slightly redundant with the schema. No wasted sentences, but could be more streamlined.

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

Completeness3/5

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

Output schema exists, so return value details are not required. However, the description does not mention input validation, error handling, or team existence checks. Adequate but with 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?

The description adds value by explicitly explaining the 'id' parameter as the team identifier, which compensates for the input schema's lack of description. Only one parameter, well-covered.

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 returns the number of members and lists each member, using a specific verb and resource. It distinguishes from sibling tools like 'get_team' which retrieves team info rather than member list.

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. The description does not mention prerequisites, exclusions, or when not to use it.

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

lookup_buildsA
    Queries the requesting account and returns a summary of each build matching the query, including the ID value,
    which may be a required parameter of other API calls related to a specific build. You can narrow the results of
    your query using any of the optional filtering parameters.
    :param build_source: The type of device for which you are getting builds. Valid values are: 'rdc' - Real Device
        Builds, 'vdc' - Emulator or Simulator Builds
    :param user_id: Optional. Returns any builds owned by the specified user that the authenticated user is authorized to view. You can look up the IDs of users in your organization using the Lookup Users endpoint.
    :param org_id: Optional. Returns all builds in the specified organization that the authenticated user is authorized to view.
    :param group_id: Optional. Returns all builds associated with the specified group that the authenticated user is authorized to view.
    :param team_id: Optional. Returns all builds for the specified team that the authenticated user is authorized to view.
    :param status: Optional. Returns only builds where the status matches the list of values specified. Valid values are: running - Any job in the build has a state of running, new, or queued. error - The build is not running and at least one job in the build has a state of errored. failed - The build is not running or error and at least one job in the build has a state of failed. complete - The build is not running, error, or failed, but the number of jobs with a state of finished does not equal the number of jobs marked passed, so at least one job has a state other than passed. success -- All jobs in the build have a state of passed.
    :param start: Optional. Returns only builds where the earliest job ran on or after this Unix timestamp. Note: If experiencing errors, try providing both start and end parameters together.
    :param end: Optional. Returns only builds where the latest job ran on or before this Unix timestamp. Note: If experiencing errors, try providing both start and end parameters together.
    :param limit: Optional. The maximum number of builds to return in the response.
    :param name: Optional. Returns builds with a matching build name.
    :param offset: Optional. Begins the set of results at this index number.
    :param sort: Optional. Sorts the results in alphabetically ascending or descending order. Valid values are: asc - Ascending desc - Descending
    
ParametersJSON Schema
NameRequiredDescriptionDefault
build_sourceYes
user_idNo
org_idNo
group_idNo
team_idNo
statusNo
startNo
endNo
limitNo
nameNo
offsetNo
sortNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description alone must disclose behavior. It describes a query operation that returns summaries, which implies read-only, but does not explicitly state it is non-destructive. It does not mention rate limits, authentication details beyond 'requesting account', or how pagination works (though offset and limit are parameters). The description is adequate but lacks explicit safety or side-effect information.

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 structured as a docstring with parameters listed, but it is somewhat verbose with full sentences for each parameter. The main purpose is front-loaded in the first sentence. While clear, it could be more concise by using a list format. Every sentence provides value, but the length is higher than necessary.

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 complexity (12 parameters, 1 required) and the presence of an output schema (not detailed in the description), the description adequately covers the tool's purpose and filtering capabilities. It mentions that the returned ID is useful for other APIs. However, it does not describe pagination behavior (e.g., default limit, how to get next page) or the structure of the response beyond 'summary'. Still, it is mostly complete for a query tool.

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, so the description carries the full burden of explaining parameters. It provides detailed documentation for each parameter: meaning valid values for build_source and status, usage hints for start/end (e.g., provide both), and clarity that user_id, org_id, etc. filter by ownership and authorization. This adds substantial meaning beyond the bare 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 that the tool queries the requesting account and returns a summary of builds, including the ID which is a required parameter for other build-related API calls. It specifies that the results can be narrowed with filtering parameters, and lists required parameter 'build_source' with valid values. This distinguishes it from sibling tools like 'get_build' (single build) or 'lookup_jobs_in_build'.

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 explains that the tool is for listing builds with optional filters, but does not explicitly state when NOT to use it or mention alternatives. There is no guidance on prerequisites or comparisons to sibling tools like 'get_build' or 'get_build_for_job'. Usage is implied but not explicitly differentiated.

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

lookup_jobs_in_buildB
    Returns information about all jobs associated with the specified build. You can limit which jobs are
    returned using any of the optional filtering parameters.
    :param build_source: Required. The type of test device associated with the build and its jobs. Valid values are:
        rdc - Real Device Builds, vdc - Emulator or Simulator Builds
    :param build_id: Required. The unique identifier of the build whose jobs you are looking up. You can look up
        build IDs in your organization using the Lookup Builds endpoint.
    :param modified_since: Optional. Returns only jobs that have been modified after this unicode timestamp.
    :param completed: Optional. Returns jobs based on whether they completed, meaning the tests ran uninterrupted to
        completion: true - Return jobs that have a completed state of true, false - Return jobs that have a
        completed state of false.
    :param errored: Optional. Returns jobs based on their errored state: true - Return jobs that have an errored
        state of true, false - Return jobs that have an errored state of false.
    :param failed: Optional. Returns jobs based on their failed state: true - Return jobs that have a failed state
        of true, false - Return jobs that have a failed state of false.
    :param finished: Optional. Returns jobs based on whether they have finished, meaning they are no longer
        running, but may not have run to completion: true - Return jobs that have a finished state of true, false -
        Return jobs that have a finished state of false.
    :param new: Optional. Returns jobs based on their new state: true - Return jobs that have a new state of true,
        false - Return jobs that have a new state of false.
    :param passed: Optional. Returns jobs based on their passed state: true - Return jobs that have a passed state
        of true, false - Return jobs that have a passed state of false.
    :param public: Optional. Returns jobs based on whether they were run on public devices: true - Return jobs that
        have a public state of true, false - Return jobs that have a public state of false.
    :param queued: Optional. Returns jobs based on whether their current state is queued: true - Return jobs that
        have a queued state of true, false - Return jobs that have a queued state of false.
    :param running: Optional. Returns jobs based on whether they are currently in a running state: true - Return
        jobs that are currently running, false - Return jobs that are not currently running.
    :param faulty: Optional. Returns jobs based on whether they are identified as faulty, meaning either errored or
        failed state is true. true - Return jobs that have a faulty state of true, false - Return jobs that have a
        faulty state of false.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
build_sourceYes
build_idYes
modified_sinceNo
completedNo
erroredNo
failedNo
finishedNo
newNo
passedNo
publicNo
queuedNo
runningNo
faultyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits, but it only lists parameters. It does not mention what happens if the build is missing, rate limits, pagination, or ordering of results. The agent lacks crucial runtime context.

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 a block of text with parameter listings; it is functional but not concisely front-loaded. The first sentence states the purpose, but the parameter list is verbose and could be more structured (e.g., grouping filter parameters).

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

Completeness3/5

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

Given 13 parameters and no annotations, the description covers all parameter semantics but lacks broader context: no mention of output structure, error handling, or limits. The existence of an output schema helps but is not referenced.

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?

Since schema_description_coverage is 0%, the description compensates by explaining each parameter's purpose and valid values (e.g., build_source lists 'rdc' and 'vdc', boolean filters clarify true/false meaning). This adds significant value beyond the bare 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 returns information about jobs for a specified build, using the verb 'Returns' and specifying the resource 'jobs associated with the specified build'. This distinguishes it from sibling tools like get_build (build info) and get_job_details (single job).

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 explicit guidance on when to use this tool versus alternatives. It does not state what scenarios warrant filtering or when other endpoints (e.g., get_recent_jobs) might be more appropriate.

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

lookup_service_accountsA
    Lists existing service accounts in your organization. You can filter the results using the query parameters below.
    :param id: Optional. Comma-separated service account IDs.
        included in the provided list.
    :param username: Optional. Limits the results to usernames that begin with the specified value. For example,
        username=an would return all service accounts in the organization with usernames beginning with "an".
    :param teams: Optional. Limit results to service account who belong to the specified team_ids. Specify multiple
        teams as comma-separated values.
    :param limit: Optional. Limit results to a maximum number per page. Default value is 20.
    :param offset: Optional. The starting record number from which to return results.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
usernameNo
teamsNo
limitNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksYes
countYes
resultsYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations provided, so description must carry burden. It implies read-only by stating 'lists', but doesn't explicitly confirm no side effects, rate limits, or permission requirements. Pagination is hinted via limit/offset parameters.

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 then lists parameters. It is not overly long but includes some redundancy in parameter descriptions. Could be tightened slightly.

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 output schema exists and no nested objects, the description adequately covers the tool's behavior. It explains filtering options and pagination, but could mention the scope ('existing service accounts') more explicitly as organization-wide.

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 compensates by explaining each parameter's purpose and format (e.g., 'Comma-separated service account IDs', 'usernames that begin with the specified value'). However, the id description is slightly redundant.

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 'Lists existing service accounts in your organization' which is a specific verb+resource. It also mentions filtering via query parameters, distinguishing it from sibling tools like get_service_account which retrieves a single account.

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. Siblings like get_service_account and lookup_users exist but no comparison or exclusion criteria are provided.

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

lookup_teamsA
    Queries the organization of the requesting account and returns the number of teams matching the query and a
    summary of each team, including the ID value, which may be a required parameter of other API calls related
    to a specific team.You can filter the results of your query using the name parameter below.
    :param id: Optional. Comma-separated team IDs. Allows to receive details of multiple teams at once. For example,
        id=3d60780314724ab8ac688b50aadd9ff9,f9acc7c5b1da4fd0902b184c4f0b6324 would return details of teams with IDs
        included in the provided list.
    :param name: Optional. Returns the set of teams that begin with the specified name value. For example, name=sauce would
        return all teams in the organization with names beginning with "sauce".
    
ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description should convey behavioral traits. However, it only describes querying and returning data, with no mention of side effects, authentication needs, rate limits, or performance constraints. It assumes a read-only operation but does not explicitly state that.

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 structured with a general purpose overview followed by parameter details in a docstring format. It is not excessively long, but the pseudo-docstring could be more concise.

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 no annotations, the description covers the tool's purpose, filtering options, and that it returns team summaries including IDs. It provides enough context for an agent to use the tool correctly, though it omits details like pagination or limits.

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%, yet the description thoroughly explains both parameters: 'id' as comma-separated IDs for multiple teams, and 'name' as a prefix filter. This adds essential meaning that the schema lacks.

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 that the tool queries the organization and returns the number and summary of matching teams, including IDs. It distinguishes from siblings like 'get_team' by implying it returns multiple teams with filtering, but does not explicitly contrast.

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 explains filtering by name and id, which implies when to use the tool (e.g., looking for teams by name prefix or specific IDs), but it lacks explicit guidance on when not to use it or direct comparisons with sibling tools like 'get_team'.

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

lookup_usersA
    Queries the organization of the requesting account and returns the number of users matching the query and a basic
    profile of each user, including the ID value, which may be a required parameter of other API calls related to a
    specific user. You can narrow the results of your query using any of the following filtering parameters.
    :param id: Optional. Comma-separated user IDs. Allows to receive details of multiple user at once. For example,
        id=3d60780314724ab8ac688b50aadd9ff9,f9acc7c5b1da4fd0902b184c4f0b6324 would return details of users with IDs
        included in the provided list.
    :param username: Optional. Limits the results to usernames that begin with the specified value. For example,
        username=an would return all users in the organization with usernames beginning with "an".
    :param teams: Optional. Limit results to users who belong to the specified team_ids. Specify multiple teams as
        comma-separated values.
    :param roles: Optional. Limit results to users who are assigned certain roles. Valid values are: 1 - Organization Admin,
        4 - Team Admin, 3 - Member. Specify multiple roles as comma-separated values.
    :param phrase: Optional. Limit results to users whose first name, last name, or email address begins with the specified value.
    :param status: Optional. Limit results to users of the specifid status. Valid values are: 'active', 'pending', 'inactive'
    :param limit: Optional. Limit results to a maximum number per page. Default value is 20.
    :param offset: Optional. The starting record number from which to return results.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
usernameNo
teamsNo
rolesNo
phraseNo
statusNo
limitNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksYes
countYes
resultsYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are present, so the description must disclose behavioral traits. It mentions the operation is a query returning count and profiles, but omits details like pagination behavior, what happens with no matches, or that it only queries the requesting account's organization.

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 uses a structured list format for parameters, which is clear, but it is somewhat verbose. Each parameter is explained individually, which adds length. Overall, it is well-organized and front-loaded with the main 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 tool has 8 optional parameters and an output schema exists (not shown), the description covers the query behavior and filtering. However, it lacks explicit mention of pagination and the full response structure, which could be covered by the output schema but is not evident here.

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 compensates by explaining each parameter with examples and valid values (e.g., roles, status). This adds significant meaning beyond the raw 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 it queries the organization and returns number of users and basic profiles including IDs. This is distinct from sibling tools like lookup_teams or get_user, making its purpose unambiguous.

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 explains how to filter users using parameters but does not explicitly state when to use this tool versus alternatives like get_user for a single user. No guidance on when not to use it is provided.

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

update_storage_group_settingsB
    Update app storage group settings for the specified group.

    :param group_id: Required. The unique identifier of the app group.
    :param proxy: Optional. Proxy configuration with 'host' and 'port' keys.
    :param audio_capture: Optional. Enable/disable audio capture during testing.
    :param proxy_enabled: Optional. Enable/disable proxy usage.
    :param lang: Optional. Language setting (e.g., 'en_GB', 'en_US').
    :param orientation: Optional. Device orientation preference.
    :param resigning_enabled: Optional. Enable/disable app resigning (iOS only).
    :param resigning: Optional. iOS-specific resigning settings dict with keys:
        - image_injection: bool
        - group_directory: bool
        - biometrics: bool
        - sys_alerts_delay: bool
        - network_capture: bool
        - vitals: bool (seen in other examples)
        - backtrace: bool (seen in other examples)
    :param instrumentation: Optional. Android-specific instrumentation settings.
    :return: Updated settings response from API.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYes
proxyNo
audio_captureNo
proxy_enabledNo
langNo
orientationNo
resigning_enabledNo
resigningNo
instrumentationNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose any behavioral traits such as whether the update is idempotent, destructive, or requires specific permissions. It only states that it updates settings.

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

Conciseness2/5

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

The description is verbose, listing all parameters with types, which could be more concise. The initial sentence is clear, but the parameter dump is not streamlined.

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

Completeness3/5

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

Given the tool has 9 parameters and no schema descriptions, the description covers them well. However, it lacks overall context about the update behavior (e.g., merge vs replace) and only vaguely mentions the return value.

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, and the description compensates by explaining each parameter in detail, including nested structures like resigning settings. 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 'Update app storage group settings' with a specific verb and resource, and distinguishes itself from sibling tools like get_storage_groups_settings.

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 explicit guidance is given on when to use this tool versus alternatives. For example, it does not mention that get_storage_groups_settings should be used to view current settings.

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

upload_file_to_storageA
    Uploads an app file to Sauce Storage for the purpose of mobile app testing or generic files to be used as Pre-Run
    Executables and returns a unique file ID assigned to the uploaded file.Sauce Storage supports mobile app packages
    in *.apk, *.aab, *.ipa, or *.zip format as well as any other file format.The maximum size of a single file is limited to 4GB.

    :param payload: The path to the file you want to upload.
    :param name: The portion of the payload value that is the actual file name (including the type extension).
    :param description: A description to distinguish your app.
    :param tags: An optional list of comma-separated tag names assigned to the uploaded file. Each tag name length
        must be between 1 and 16 characters. Tag names must only consist of uppercase (A-Z), lowercase (a-z),
        digits (0-9), underscore ("_"), hyphen ("-"), and dot (".") characters. Tag names are case-sensitive. It is
        allowed to assign up to 10 tags to a single file.
    :param project_name: An optional name for the project you want the file (group) to be assigned to. If the
        project doesn't exist, it will be created. Project names can only consist of alphanumeric (uppercase and
        lowercase) characters, along with underscores ("_"), hyphens ("-"), periods ("."), and spaces (" "). Project
        names are case-sensitive and can be max 64 characters long.
    :return: 201	Created.
             400	Bad Request.
             404	Not found.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
nameYes
descriptionYes
tagsYes
project_nameYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses return of a unique file ID, supported formats, 4GB size limit, HTTP status codes, and project creation behavior. However, it does not mention authentication or rate limits.

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 somewhat verbose with a list of :param entries, but it is front-loaded with the main purpose. It could be more concise without losing 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?

For a tool with 5 required parameters and no output schema, the description covers input constraints and return values (201 Created). It lacks explanation of how the file ID is used later, but overall it is fairly 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?

Schema coverage is 0%, but the description explains each parameter in detail, including constraints for tags (length, characters, count) and project_name (characters, max length, auto-creation). This adds significant value beyond the bare 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 uploads files to Sauce Storage for mobile app testing or pre-run executables, specifies supported formats and size limit, and distinguishes from sibling retrieval tools like get_storage_files.

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 such as get_storage_files. It only implies usage through the upload action, but no when-not or exclusion criteria.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 34 tool updates
    • First observedfilter_har_data
    • First observedget_account_info
    • First observedget_build
    • First observedget_build_for_job
    • First observedget_current_jobs_for_tunnel
    • First observedget_devices_status
    • First observedget_job_details
    • First observedget_log_json_file
    • First observedget_my_active_team
    • First observedget_network_har_file
    • First observedget_private_devices
    • First observedget_real_device_jobs
    • First observedget_recent_jobs
    • First observedget_service_account
    • First observedget_specific_device
    • First observedget_specific_real_device_job
    • First observedget_specific_real_device_job_asset
    • First observedget_storage_files
    • First observedget_storage_groups
    • First observedget_storage_groups_settings
    • First observedget_team
    • First observedget_test_assets
    • First observedget_tunnel_information
    • First observedget_tunnel_version_downloads
    • First observedget_tunnels_for_user
    • First observedget_user
    • First observedlist_team_members
    • First observedlookup_builds
    • First observedlookup_jobs_in_build
    • First observedlookup_service_accounts
    • First observedlookup_teams
    • First observedlookup_users
    • First observedupdate_storage_group_settings
    • First observedupload_file_to_storage

TDQS

A3.6/5.0
Disambiguation5/5

Each tool targets a distinct resource or operation, with detailed descriptions that clarify when to use each. Even closely related tools like filter_har_data and get_network_har_file are clearly differentiated by caching behavior. No two tools have overlapping purposes.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using lowercase with underscores. The verbs (get, list, lookup, filter, update, upload) are used predictably, and compound names are structured uniformly. No mixing of conventions.

Tool Count5/5

34 tools cover the major areas of the Sauce Labs platform: jobs, builds, devices, tunnels, storage, teams, users, and HAR data. Each tool serves a distinct purpose, and the count is well-scoped for the platform's breadth without unnecessary redundancy.

Completeness3/5

The toolset is strong on reading and querying (many get/lookup tools) but lacks mutation operations such as delete for storage files, stop for jobs, or create for users/teams. This leaves notable gaps in lifecycle management, though the provided tools cover common monitoring and debugging scenarios.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to automate Android mobile device testing through Appium, with automatic device detection, screen element inspection, and natural language test scenario execution.
    3
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    Enables AI assistants to automate mobile app testing and development for iOS and Android through natural language interactions. Supports intelligent element identification, session management, automated test generation, and comprehensive device interactions including clicks, swipes, screenshots, and app management.
    31
    12,466
    467
    Apache 2.0
  • A
    license
    C
    quality
    A
    maintenance
    Enables AI assistants to interact with SmartBear's suite of testing and monitoring tools including BugSnag, Swagger, Reflect, and more through natural language, allowing querying of testing data, analysis of performance metrics, and management of test automation.
    308
    15,125
    44
    MIT

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/saucelabs/sauce-api-mcp'

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