Sauce Labs MCP Server
OfficialThe Sauce Labs MCP Server provides comprehensive integration with the Sauce Labs testing platform, enabling AI assistants to manage accounts, devices, test jobs, builds, storage, tunnels, and real device cloud sessions through natural language.
Account & Organization Management: Retrieve account info, look up users, teams, and service accounts, get detailed profiles, list team members, and get your active team.
Device Management: List all devices with availability status, get detailed specs for specific devices, and manage private devices.
Test Job Management: Retrieve recent jobs, get comprehensive details for VDC and RDC jobs, list actively running real device jobs, and download job assets (device logs, Appium logs, video, screenshots, network HAR, crash logs).
Build Monitoring: Search/filter builds by user, team, status, or date range; get build details; find the build for a specific job; and list jobs within a build.
Storage Management: List uploaded app files and storage groups, upload new files (APK, AAB, IPA, ZIP, up to 4GB), retrieve group settings, and update group settings (proxy, resigning, instrumentation, orientation, language).
Tunnel (Sauce Connect) Monitoring: List active tunnels, get tunnel details, check current jobs per tunnel, and retrieve download URLs for Sauce Connect versions.
Test Assets & Logs: Retrieve all VDC test artifacts, get structured execution logs, and retrieve/filter HAR network capture data (by domain, resource type, status code, or predefined filters like analytics, errors, slow, third-party).
Real Device Cloud (RDC) Interactions:
Session Management: Create, list, get details for, and delete real device sessions.
App Lifecycle: Install (including from Sauce Storage), launch, and uninstall apps; poll for installation status.
Device Interaction: Take screenshots, open URLs/deep links, execute shell commands, and apply device settings (orientation, locale).
File Management: Push/pull files to/from devices, list directory contents, and remove files.
Network Simulation: Forward HTTP requests, start/stop network capture, and set/reset network profiles or conditions.
Appium Integration: Start and manage hosted Appium servers, check status, list available versions, and manage WebDriverAgent on iOS devices.
Provides comprehensive integration with Sauce Labs testing platform, enabling management of device cloud resources, test job analysis, build monitoring, storage management, and tunnel monitoring across 300+ real devices and virtual machines
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Sauce Labs MCP Servershow me the status of my recent test jobs"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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-rdcauto-discovers the latest RDC v2 endpoints from the OpenAPI spec at startup; the cached spec is used as a fallback when the network is unavailableResponse 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+
pipSauce 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-mcpThis installs both servers and registers their command-line entry points:
sauce-api-mcp— core serversauce-api-mcp-rdc— RDC OpenAPI server
Verify installation:
which sauce-api-mcp
which sauce-api-mcp-rdcConfiguration for LLM Clients
Claude Desktop (Mac / Linux / Windows)
Locate your Claude Desktop config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Find your Python installation's
bindirectory:python3 -c "import sys; print(sys.prefix + '/bin')"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" } } } }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: stdioEnvironment 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 |
| Your Sauce Labs username |
| Your Sauce Labs access key (found in Account Settings) |
Optional Environment Variables
Variable | Default | Description |
|
| Data centre region: |
|
| Maximum list items returned before truncation (RDC server) |
Getting Your Sauce Labs Credentials
Log into your Sauce Labs account
Navigate to Account → User Settings
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:
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 justwhich sauce-api-mcpModule 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 |
| Retrieve current user account information |
| Find users in your organisation |
| Get detailed user information |
| Find teams in your organisation |
| Get team details |
| List all members of a specific team |
| List service accounts |
| Get service account details |
| Get the active team for the authenticated user |
Device Management
Tool | Description |
| List all devices and their current status |
| Get detailed information about a specific device |
| List private devices available to your account |
Test Jobs
Tool | Description |
| Retrieve your most recent test jobs |
| Get comprehensive details about a specific job |
| List active jobs on real devices |
| Get details about a specific real device job |
| Download job assets (logs, videos, screenshots) |
Builds
Tool | Description |
| Search for builds with filters |
| Get detailed information about a specific build |
| Get the build associated with a job |
| List all jobs within a build |
Storage
Tool | Description |
| List uploaded application files |
| List app storage groups |
| Get settings for a storage group |
| Upload an app file to Sauce Storage |
| Update app group settings (resigning, instrumentation, etc.) |
Tunnels
Tool | Description |
| List active Sauce Connect tunnels |
| Get details about a specific tunnel |
| See how many jobs are using a tunnel |
| Get download URLs for Sauce Connect versions |
Test Assets & Logs
Tool | Description |
| Retrieve test artifacts for a VDC job |
| Get structured test execution logs for a VDC job |
| Get HAR network capture data with filtering |
| 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 |
| Allocate a real device and return an ACTIVE session. Polls until ACTIVE or times out (~55 s) |
| List current device sessions with optional filtering |
| Close a session and release the device back to the pool |
| Get full details of a specific session |
Device Discovery
Tool | Description |
| Browse the full device catalogue with OS/model filters |
| Get live availability status of devices |
App Management
Tool | Description |
| Start an app installation on a device (returns an installation ID) |
| Poll installation status — call repeatedly until FINISHED |
| Launch an already-installed app |
| Remove an app from a device |
| List ongoing or recent app installations |
| Install an app from Sauce Storage |
Device Interaction
Tool | Description |
| Capture the current device screen |
| Open a URL or deep link on the device |
| Run an adb shell command (Android) |
| Change device settings (orientation, locale, etc.) |
File Operations
Tool | Description |
| Upload a local file to the device (restricted to |
| Download a file from the device |
| List files in a device directory |
| Delete a file from the device |
| Get metadata about a file or directory on the device |
Network & Proxy
Tool | Description |
| Forward HTTP requests through the device proxy |
| Capture network traffic |
| Simulate network conditions |
| List available network profiles |
| Restore normal connectivity |
Appium
Tool | Description |
| Start a hosted Appium server co-located with the device |
| Check if Appium is running and get its endpoint URL |
| List available Appium versions |
| Launch WDA on an iOS device |
| Check WDA status |
Development Setup
Prerequisites
Python 3.10+
uvpackage managerGit
Clone and Setup
git clone https://github.com/saucelabs/sauce-api-mcp.git
cd sauce-api-mcp
uv syncThis 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 dependenciesRunning the Servers Locally
uv run sauce-api-mcp
uv run sauce-api-mcp-rdcBoth 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 pytestAdding Dependencies
uv add httpx
uv add --dev pytest-asyncioCI / Release Workflow
Continuous Integration
Every pull request targeting main runs three sequential jobs via build.yml:
test — integration tests across Python 3.10, 3.11, 3.12 (in parallel)
test-live — live tests on Python 3.12 (after
test)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:
Go to Actions → Release → Run workflow
Choose the release type:
patch,minor,major, orprereleaseFor pre-releases, optionally set the token (
alpha,beta,rc)
The workflow then:
Bumps the version in
pyproject.tomlandserver.jsonusingpython-semantic-releaseCreates a
v*git tag and a GitHub Release with auto-generated changelogPublishes 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
Sauce Labs Documentation: docs.saucelabs.com
API Reference: docs.saucelabs.com/dev/api
Support: Contact Sauce Labs support through your account dashboard
GitHub Issues: Report bugs or request features
Changelog
For a full history of releases and changes, see the GitHub Releases page.
v1.1.0
Merged
sauce-api-mcpandsauce-labs-mcp(RDC OpenAPI) into single monorepo packageAdded
sauce-api-mcp-rdcentry point for the RDC-focused serverMigrated RDC server from deprecated
FastMCPOpenAPItoOpenAPIProvider + FastMCP(fastmcp 3.x)Automated release workflow via
workflow_dispatchwithpython-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.lockfor 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 toolsfilter_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
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| filter_category | No | ||
| custom_domains | No | ||
| resource_types | No | ||
| status_codes | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| build_source | Yes | ||
| build_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| build_source | Yes | ||
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | ||
| tunnel_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It 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.
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.
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.
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.
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.
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"])
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| filter_category | No | ||
| custom_domains | No | ||
| resource_types | No | ||
| status_codes | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| device_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| asset_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | ||
| tunnel_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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').
| Name | Required | Description | Default |
|---|---|---|---|
| client_version | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It does not disclose 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| build_source | Yes | ||
| user_id | No | ||
| org_id | No | ||
| group_id | No | ||
| team_id | No | ||
| status | No | ||
| start | No | ||
| end | No | ||
| limit | No | ||
| name | No | ||
| offset | No | ||
| sort | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| build_source | Yes | ||
| build_id | Yes | ||
| modified_since | No | ||
| completed | No | ||
| errored | No | ||
| failed | No | ||
| finished | No | ||
| new | No | ||
| passed | No | ||
| public | No | ||
| queued | No | ||
| running | No | ||
| faulty | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| username | No | ||
| teams | No | ||
| limit | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| links | Yes | |
| count | Yes | |
| results | Yes |
TDQS
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.
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.
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.
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.
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.
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".
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| username | No | ||
| teams | No | ||
| roles | No | ||
| phrase | No | ||
| status | No | ||
| limit | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| links | Yes | |
| count | Yes | |
| results | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | Yes | ||
| proxy | No | ||
| audio_capture | No | ||
| proxy_enabled | No | ||
| lang | No | ||
| orientation | No | ||
| resigning_enabled | No | ||
| resigning | No | ||
| instrumentation | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| name | Yes | ||
| description | Yes | ||
| tags | Yes | ||
| project_name | Yes |
TDQS
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.
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.
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.
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.
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.
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.
34 tool updates
- First observed
filter_har_data - First observed
get_account_info - First observed
get_build - First observed
get_build_for_job - First observed
get_current_jobs_for_tunnel - First observed
get_devices_status - First observed
get_job_details - First observed
get_log_json_file - First observed
get_my_active_team - First observed
get_network_har_file - First observed
get_private_devices - First observed
get_real_device_jobs - First observed
get_recent_jobs - First observed
get_service_account - First observed
get_specific_device - First observed
get_specific_real_device_job - First observed
get_specific_real_device_job_asset - First observed
get_storage_files - First observed
get_storage_groups - First observed
get_storage_groups_settings - First observed
get_team - First observed
get_test_assets - First observed
get_tunnel_information - First observed
get_tunnel_version_downloads - First observed
get_tunnels_for_user - First observed
get_user - First observed
list_team_members - First observed
lookup_builds - First observed
lookup_jobs_in_build - First observed
lookup_service_accounts - First observed
lookup_teams - First observed
lookup_users - First observed
update_storage_group_settings - First observed
upload_file_to_storage
TDQS
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.
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.
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.
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
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
Direct access to Cypress tests results and accessibility reports in your AI workflow.
Drive real Android & iOS devices and web browsers from natural language for mobile + web QA. 290+ tools across device control, app management, automation sessions, browser automation, and flow recording / replay. Bearer-auth — get a token at robotactions.com → Profile → API Tokens.
Agentic testing: HyperExecute jobs, test failure triage, SmartUI visual diffs, a11y audits
- LimrunOAuthcom.limrun
Cloud iOS simulators and Android emulators your agent can create, drive, and throw away.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to automate Android mobile device testing through Appium, with automatic device detection, screen element inspection, and natural language test scenario execution.3MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Jenkins CI/CD systems for build management, job monitoring, console log analysis, and debugging through natural language commands.2MIT

MCP Appiumofficial
AlicenseBqualityAmaintenanceEnables 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.3112,466467Apache 2.0
SmartBear MCP serverofficial
AlicenseCqualityAmaintenanceEnables 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.30815,12544MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/saucelabs/sauce-api-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server