Skip to main content
Glama

skypilot-mcp

MCP server for SkyPilot. Lets LLMs manage cloud clusters, jobs, and storage through the Model Context Protocol.

Built with fastmcp v3.

Demo

https://github.com/user-attachments/assets/ce90b863-b186-4673-a247-63fb84483a35

Related MCP server: Sandbox MCP

Setup

Requires Python 3.10+.

# Claude Code
claude mcp add --transport stdio --scope project skypilot -- \
  uvx --from git+https://github.com/alex000kim/skypilot-mcp skypilot-mcp

# With a remote SkyPilot API server
claude mcp add --transport stdio --scope project \
  --env SKYPILOT_API_SERVER_ENDPOINT=http://your-server:46580 \
  skypilot -- \
  uvx --from git+https://github.com/alex000kim/skypilot-mcp skypilot-mcp

For Claude Desktop, add to your MCP config:

{
  "mcpServers": {
    "skypilot": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/alex000kim/skypilot-mcp", "skypilot-mcp"]
    }
  }
}

Using in your own repos

This repo includes a .mcp.json file. Copy it into any repo that contains SkyPilot task YAMLs, and coding agents (Claude Code, Cursor, Windsurf, etc.) working in that repo will automatically have access to all SkyPilot MCP tools — launching clusters, submitting jobs, checking status, and more — without any manual setup.

cp .mcp.json /path/to/your-skypilot-project/

Tools

Clusters

Tool

Description

skypilot_cluster_status

List clusters and their statuses

skypilot_cluster_launch

Launch a cluster from a task YAML

skypilot_cluster_exec

Run a task on an existing cluster

skypilot_cluster_stop

Stop a cluster (preserves disk)

skypilot_cluster_start

Restart a stopped cluster

skypilot_cluster_down

Tear down a cluster

skypilot_cluster_autostop

Set idle autostop timer

skypilot_cluster_endpoints

Get cluster endpoint URLs

Jobs (on a cluster)

Tool

Description

skypilot_job_queue

List jobs on a cluster

skypilot_job_status

Get status of specific jobs

skypilot_job_cancel

Cancel jobs

skypilot_job_logs

Get job log snapshot (last N lines)

Managed Jobs (auto-recovery, spot)

Tool

Description

skypilot_managed_job_launch

Launch a managed job

skypilot_managed_job_queue

List managed jobs (with sorting/pagination)

skypilot_managed_job_cancel

Cancel managed jobs

skypilot_managed_job_logs

Get managed job log snapshot

Worker Pools

Tool

Description

skypilot_pool_apply

Create or update a worker pool

skypilot_pool_status

Get pool statuses

skypilot_pool_down

Delete worker pool(s)

skypilot_pool_logs

Get pool log snapshot

Services (Sky Serve)

Tool

Description

skypilot_serve_up

Launch a service

skypilot_serve_update

Update service config (rolling/blue-green)

skypilot_serve_down

Tear down service(s)

skypilot_serve_status

Get service statuses

skypilot_serve_logs

Get service log snapshot

skypilot_serve_terminate_replica

Terminate a specific replica

Volumes

Tool

Description

skypilot_volume_apply

Create or register a volume (PVC, RunPod)

skypilot_volume_ls

List volumes

skypilot_volume_delete

Delete volumes

DAG Optimization & Validation

Tool

Description

skypilot_optimize

Find best cloud/region/instance for a task

skypilot_validate

Validate a task config without launching

Log Downloads

Tool

Description

skypilot_download_logs

Download cluster job logs locally

skypilot_managed_job_download_logs

Download managed job logs

skypilot_serve_download_logs

Download service logs

skypilot_pool_download_logs

Download pool logs

skypilot_tail_provision_logs

Get cluster provisioning logs

skypilot_tail_autostop_logs

Get cluster autostop hook logs

Infrastructure

Tool

Description

skypilot_check

Verify cloud credentials

skypilot_enabled_clouds

List enabled clouds

skypilot_list_accelerators

List available GPUs/TPUs

skypilot_list_accelerator_counts

List accelerator availability counts

skypilot_kubernetes_node_info

Get K8s node resources

skypilot_realtime_gpu_availability

Real-time K8s GPU availability

skypilot_kubernetes_label_gpus

Label K8s GPU nodes for SkyPilot

skypilot_status_kubernetes

Get all SkyPilot resources in K8s

skypilot_local_up / _down

Manage local K8s cluster

skypilot_ssh_up / _down

Manage SSH node pools

skypilot_realtime_slurm_gpu_availability

Real-time Slurm GPU availability

skypilot_slurm_node_info

Get Slurm node resources

Storage & Cost

Tool

Description

skypilot_storage_ls

List storage objects

skypilot_storage_delete

Delete a storage object

skypilot_cost_report

Get cluster cost reports

API Server

Tool

Description

skypilot_api_info

API server health and version

skypilot_api_status

List pending API requests

skypilot_api_cancel

Cancel API requests

skypilot_get_request

Wait for a request to complete

skypilot_api_start / _stop

Start or stop the API server

skypilot_api_server_logs

Get API server logs

skypilot_api_login / _logout

Authenticate with remote API server

Config & Utilities

Tool

Description

skypilot_reload_config

Reload ~/.sky/config.yaml

skypilot_workspaces

List workspaces

skypilot_dashboard

Open SkyPilot dashboard

skypilot_jobs_dashboard

Open managed jobs dashboard

How it works

Long-running operations (launch, exec, stop, down, start, etc.) return a request_id immediately. Use skypilot_get_request with that ID to poll for the result. Read-only operations like status, queue, and cost_report block and return results directly.

The server uses SkyPilot's sync Python SDK. fastmcp runs sync tools in a threadpool, so nothing blocks the event loop.

API server configuration

The MCP server connects to whatever SkyPilot API server your environment is configured for:

  • Local (default): SkyPilot auto-starts a local API server on first use

  • Remote: Set SKYPILOT_API_SERVER_ENDPOINT env var or configure ~/.sky/config.yaml

Development

git clone https://github.com/alex000kim/skypilot-mcp
cd skypilot-mcp
uv sync --extra dev
uv run pre-commit install
uv run pytest

Run the server locally:

# stdio (default)
uv run skypilot-mcp

# HTTP
uv run skypilot-mcp --transport http --port 8000

Available Tools

70 tools
skypilot_api_cancelB
Destructive

Cancel pending API requests. Specify request_ids to cancel specific requests. Returns a request_id for the cancel operation itself.

ParametersJSON Schema
NameRequiredDescriptionDefault
all_usersNo
request_idsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations indicate destructiveHint=true, so the agent knows this is a destructive operation. The description adds that it returns a request_id for the cancel operation itself, which is useful context beyond the annotations. However, it doesn't explain what happens to the canceled requests, whether cancellation is immediate, or any side effects. With annotations covering the destructive nature, a 3 is appropriate.

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

Conciseness5/5

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

Three short sentences, front-loaded with the core action. Every sentence contributes useful information: action, parameter usage, and return behavior.

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

Completeness3/5

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

The tool has two parameters, one undocumented, and an output schema exists so return values needn't be explained. The description covers the main action and return id but neglects the all_users parameter and lacks guidance on when to use this versus other cancel tools. Adequate but with clear gaps.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it only mentions request_ids and says nothing about the all_users parameter. This leaves one parameter completely undocumented, failing to meet the low-coverage burden.

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

Purpose4/5

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

States a specific verb+resource: 'cancel pending API requests', which clearly distinguishes it from siblings like skypilot_job_cancel or skypilot_managed_job_cancel. However, it doesn't explicitly differentiate from those cancel siblings or from skypilot_api_stop (which might also cancel server operations). Still, the focus on 'API requests' is reasonably clear.

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

Usage Guidelines2/5

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

The description says to specify request_ids to cancel specific requests, but gives no guidance on when to use this tool versus skypilot_api_stop, skypilot_job_cancel, or skypilot_managed_job_cancel. No when-not conditions or alternatives are mentioned.

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

skypilot_api_infoA
Read-only

Get SkyPilot API server information including health status, version, commit hash, and authentication details.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

readOnlyHint=true already establishes safety, a low bar. The description usefully adds that the response covers health, version, commit, and authentication details. It stops short of describing whether authentication details imply credential exposure or what format is returned, though the output schema covers the shape.

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

Conciseness5/5

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

A single front-loaded sentence with no waste; every listed field adds value for the caller.

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

Completeness4/5

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

Complete for a simple read-only introspection call: no params, annotations carry safety, and an output schema documents return shape. The only omitted element is differentiation from sibling status tools.

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

Parameters4/5

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

Zero parameters, so the baseline is 4. The description correctly implies no inputs are needed, consistent with the empty schema.

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

Purpose4/5

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

States a specific verb ('Get') and resource ('SkyPilot API server information') with an enumerated field list, so the agent knows exactly what is returned. It does not distinguish itself from the closely-named sibling skypilot_api_status, leaving ambiguity about which to choose.

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

Usage Guidelines3/5

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

Usage context is implied by the read-only, no-argument nature of the call, but there is no explicit when-to-use guidance or routing to alternatives such as skypilot_api_status or skypilot_api_server_logs.

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

skypilot_api_loginB

Log in to a remote SkyPilot API server. Sets the endpoint globally so all subsequent SkyPilot calls use it. Set relogin=True to force re-authentication with OAuth2.

ParametersJSON Schema
NameRequiredDescriptionDefault
reloginNo
endpointNo
service_account_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior4/5

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

Annotations only declare destructiveHint=false, so the description carries most of the behavioral burden. It usefully discloses a significant side effect ('Sets the endpoint globally so all subsequent SkyPilot calls use it') and the OAuth2 re-authentication semantics of relogin, which the annotations do not convey. It omits idempotency behavior and what happens when already logged in, keeping it below 5.

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

Conciseness4/5

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

Three tight sentences, front-loaded with the core action before the side effect and the parameter hint. No filler, though the third sentence is somewhat tacked on rather than integrated.

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

Completeness3/5

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

An output schema exists, so return values need not be described. However, with 0% schema coverage across three parameters and a global-state mutation, the definition leaves the agent unsure how endpoint and service_account_token interact with the login flow, which is a real gap for a tool whose whole purpose is establishing auth context.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it only explains one of three parameters (relogin). Neither endpoint nor service_account_token is clarified — e.g., what endpoint means when null, or how a service account token replaces interactive OAuth2 login.

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

Purpose4/5

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

The first sentence gives a specific verb+resource ('Log in to a remote SkyPilot API server'), which is unambiguous against siblings like skypilot_api_logout, skypilot_api_status, and skypilot_api_info. It stops short of explicitly contrasting itself with those siblings, so it lands just under the top tier.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: the agent can infer this must precede server calls, and the description gives one conditional ('Set relogin=True to force re-authentication'). There is no explicit when-to-use/when-not guidance, no prerequisites (e.g., whether a server must be started first), and no mention of the logout counterpart.

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

skypilot_api_logoutA
Destructive

Log out of the remote SkyPilot API server. Clears all cookies and settings. Only works for remote API servers.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations supply destructiveHint=true, and the description earns credit beyond that by disclosing exactly what is destroyed ("Clears all cookies and settings") and the precondition (remote servers only). It still doesn't say whether the operation is reversible or what happens if called against a local server, but the added context is substantive.

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

Conciseness5/5

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

Three short sentences with zero filler; purpose and the destructive effect are front-loaded, and the precondition is held to the end where it belongs.

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

Completeness4/5

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

An output schema exists so return values need no explanation, and annotations cover the safety profile. The description covers purpose, effect, and precondition; only the failure/edge behavior (e.g., calling it against a local server) is unaddressed, which is a minor gap for a no-arg session tool.

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

Parameters4/5

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

Zero parameters, so the baseline is 4. There is nothing for the description to disambiguate in the schema, and it correctly avoids inventing parameter detail.

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

Purpose5/5

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

States a specific verb+resource ("Log out of the remote SkyPilot API server") and adds a scope qualifier ("Only works for remote API servers"). An agent can immediately distinguish this from the sibling skypilot_api_login without opening the schema.

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

Usage Guidelines3/5

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

The description gives an implied usage condition ("Only works for remote API servers") which is useful, but never names the counterpart tool (skypilot_api_login) or states when an agent should prefer logout vs. other session-ending operations. Adequate but leaves routing to inference.

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

skypilot_api_server_logsB
Read-only

Get SkyPilot API server logs. Returns a snapshot of the server log output. Set tail to limit the number of lines returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
tailNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

The readOnlyHint annotation already declares this is a safe read operation. The description adds that it returns a snapshot of the log output, which usefully clarifies it is not a streaming or follow interface, but it leaves out whether it requires prior authentication or how large the snapshot might be. With annotations covering safety, this modest addition merits a 3.

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

Conciseness5/5

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

Three short sentences, each front-loaded with the core action, return behavior, and the one parameter hint. There is no filler or repetition, and the most important information comes first.

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

Completeness4/5

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

An output schema exists, so the description need not explain return values, and it correctly avoids that. For a single optional parameter tool with readOnlyHint, the description covers the essential call semantics, though it could be more complete about prerequisites or how the snapshot relates to streaming alternatives.

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

Parameters3/5

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

Schema coverage is 0%, so the input schema does not document the tail parameter beyond its type and default. The description compensates by explaining that tail limits the number of lines returned, which adds needed meaning. However, it does not clarify units or what happens when tail is omitted, so it only partially fills the gap.

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

Purpose4/5

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

The description states a specific verb and resource: 'Get SkyPilot API server logs'. It is clearly distinguishable from siblings like skypilot_serve_logs or skypilot_job_logs because it names the API server specifically. It is slightly more than a bare restatement but stops short of differentiating it from the other log-related tools.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as skypilot_serve_logs or skypilot_download_logs. The only usage hint is about the tail parameter, which is parameter semantics, not tool selection. An agent must infer the appropriate context without help.

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

skypilot_api_startA

Start the SkyPilot API server. Set deploy=True for deployment mode (fully utilizes resources). Optionally enable metrics collection and basic auth. Note: foreground mode is not supported via MCP as it would block the server permanently.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo127.0.0.1
deployNo
metricsNo
metrics_portNo
enable_basic_authNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only cover openWorldHint and destructiveHint=false. The description adds real behavioral context: deploy mode 'fully utilizes resources', metrics and basic auth are optional add-ons, and foreground mode would permanently block the server so it is unsupported. That is meaningful disclosure beyond the annotations.

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

Conciseness5/5

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

Three tight sentences with zero filler; the primary action is front-loaded and the limitation note is appropriately placed last.

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

Completeness4/5

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

An output schema exists so return values need no explanation, and the description covers the key operational semantics for a start tool. It is slightly incomplete given the undocumented host and metrics_port parameters, but otherwise sufficient.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry parameter meaning. It explains deploy, metrics, and basic auth (with 'fully utilizes resources' for deploy), but leaves host and metrics_port completely undocumented, so it only partially compensates for the coverage gap.

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

Purpose4/5

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

States a specific verb and resource ('Start the SkyPilot API server'), which cleanly distinguishes it from sibling lifecycle tools like skypilot_api_stop and skypilot_api_status. It is clear, though it does not explicitly name the sibling alternatives.

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

Usage Guidelines3/5

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

It gives the condition for deploy=True and mentions optional metrics/auth, and it flags that foreground mode is not available via MCP. However, it offers no explicit when-to-use-this-vs-skypilot_api_stop/status guidance or prerequisites, so usage is only implied.

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

skypilot_api_statusA
Read-only

List pending and running API requests. Optionally filter by specific request_ids, cluster_name, or fields. Set all_status=True to include finished requests. Use limit to cap the number of results.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
fieldsNo
all_statusNo
request_idsNo
cluster_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

readOnlyHint=true is consistent with a listing operation. The description adds a real behavioral trait beyond annotations: by default only pending and running requests are returned, and finished ones require all_status=True. That default-scope disclosure is valuable; return format and pagination behavior are left unstated but the output schema covers returns.

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

Conciseness4/5

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

Three tight sentences, front-loaded with the core operation and followed by filter guidance. No wasted words; the filter list is slightly terse but not padded.

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

Completeness4/5

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

An output schema exists, so return values need no explanation, and the description covers the operation plus most filter semantics. The only shortfalls are the undocumented 'fields' parameter and the absence of routing guidance against skypilot_get_request, both minor for a read-only list tool.

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

Parameters3/5

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

Schema coverage is 0%, so the description carries the load. It explains request_ids, cluster_name, all_status (with its semantic effect), and limit (caps results), but 'fields' is merely named with no indication of what fields are valid or what selecting them does. That is a meaningful gap for one of five params.

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

Purpose4/5

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

States a specific verb (List) and resource (API requests) with a clear default scope (pending and running). It does not, however, distinguish itself from the sibling skypilot_get_request, which an agent could reasonably confuse this with.

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

Usage Guidelines3/5

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

Gives usage context for the filters (optional filtering, all_status to widen scope, limit to cap), which is implied guidance but not explicit when-to-use. It never states when to prefer this listing tool over skypilot_get_request for a single request, nor 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.

skypilot_api_stopA
Destructive

Stop the SkyPilot API server. Only works for locally hosted API servers. Will raise an error for remote API servers.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, so the safety profile is covered structurally. The description adds non-trivial behavioral context beyond that: the locality restriction and the concrete error behavior for remote servers, which tells the agent this call can fail deterministically on the wrong target.

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

Conciseness5/5

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

Three short sentences, action stated first, then the two constraints. Every sentence carries distinct information with no repetition of the title or annotations.

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

Completeness5/5

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

An output schema exists, so return values need not be explained, and the destructive nature is carried by annotations. For a zero-parameter, locally-scoped stop operation, the action plus the locality/error constraint is everything an agent needs to invoke it correctly.

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

Parameters4/5

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

The tool takes zero parameters, so per the baseline there is nothing for the description to document. No parameter-related text is needed and none is misleading.

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

Purpose5/5

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

States a precise verb+resource ("Stop the SkyPilot API server") that an agent can immediately separate from skypilot_cluster_stop, skypilot_api_cancel, skypilot_api_status, and skypilot_api_logout. The scope qualifier ("API server") targets exactly one subsystem, so no schema inspection is needed to route correctly.

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

Usage Guidelines4/5

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

Gives an explicit precondition and an explicit failure condition: it only works on locally hosted servers and raises an error for remote ones. It does not name an alternative to use for remote servers (e.g. whether any sibling handles that case), which is the only missing piece.

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

skypilot_checkA
Read-only

Check and enable infrastructure credentials. Verifies that credentials are configured correctly for the specified infrastructure (clouds, Kubernetes, SSH, Slurm). If no infra specified, checks all supported infrastructure. Optionally specify a workspace name to scope the check to a specific workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
infraNo
verboseNo
workspaceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

The readOnlyHint annotation already signals a non-mutating operation, and the description adds the useful default-scope behavior and what infra types are covered. The word 'enable' creates mild tension with readOnlyHint, though the core stated function (verify/check) is consistent with it, so it is not a hard contradiction. It discloses no permission or rate-limit context.

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

Conciseness4/5

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

Three sentences that are front-loaded with the primary action ('Check and enable infrastructure credentials') followed by scope defaults and optional scoping. Efficient, with no filler, though the leading phrase slightly duplicates the verification clause.

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

Completeness4/5

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

An output schema exists, so return-value explanation is unnecessary. The description covers the key behaviors (default = all infra, optional workspace scoping) for a simple 3-parameter tool; the only gap is that the 'verbose' parameter goes unaddressed.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It explains 'infra' (clouds, Kubernetes, SSH, Slurm) and its null default (checks all), and the 'workspace' scoping parameter, but leaves 'verbose' entirely unexplained, so compensation is only partial.

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

Purpose4/5

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

The description states a specific verb and resource: it 'checks and enable[s] infrastructure credentials' and 'verifies that credentials are configured correctly' for clouds, Kubernetes, SSH, and Slurm. This is clear and concrete, but it does not distinguish itself from related siblings such as skypilot_enabled_clouds or skypilot_validate, so an agent must infer the boundary.

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

Usage Guidelines3/5

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

It gives useful default behavior ('If no infra specified, checks all supported infrastructure') and workspace scoping, which is implied usage guidance. However, it never states when to prefer this tool over alternatives like skypilot_enabled_clouds or skypilot_validate, and there are no exclusions.

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

skypilot_cluster_autostopA
Idempotent

Set an autostop timer for a cluster. The cluster will automatically stop (or tear down if down=True) after being idle for the specified number of minutes. Set idle_minutes to -1 to disable. Set wait_for to control idle detection: 'jobs_and_ssh' (default), 'jobs', or 'none'. Set hook to a shell command to run on the cluster before autostop. Returns a request_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
downNo
hookNo
wait_forNo
cluster_nameYes
hook_timeoutNo
idle_minutesYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only provide idempotentHint, so the description carries most of the behavioral burden and does well: it discloses idle-based stopping, that down=True tears the cluster down, that -1 disables the timer, and that a hook runs before autostop. It stops short of stating required permissions or the fate of running jobs.

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

Conciseness5/5

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

Front-loaded with the core action, followed by tightly packed sentences that each add a distinct behavioral or parameter fact. No filler and no redundancy.

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

Completeness4/5

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

An output schema exists (request_id is mentioned but need not be described), and the description covers the destructive-mode flag, timer semantics, idle detection, and hooks. The only gap is the undocumented hook_timeout parameter for this 6-parameter mutation tool.

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

Parameters4/5

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

With 0% schema description coverage the description must compensate, and it explains down, idle_minutes (-1 to disable), wait_for (with enumerated values and default), and hook. However, hook_timeout is left undocumented in both schema and description, leaving one meaningful parameter unexplained.

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

Purpose5/5

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

States a specific verb and resource ("Set an autostop timer for a cluster") and immediately clarifies the resulting lifecycle behavior. This is clearly distinct from siblings like cluster_stop, cluster_down, or tail_autostop_logs, so an agent can identify it without opening the schema.

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

Usage Guidelines3/5

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

The description explains what happens when the tool is invoked but never states when to prefer it over cluster_stop or cluster_down, nor any prerequisites. Usage is only implied by the semantics of the parameters rather than an explicit when/when-not routing.

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

skypilot_cluster_downB
Destructive

Tear down a cluster completely. All associated resources are deleted and data on attached disks is lost. Returns a request_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
purgeNo
cluster_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior4/5

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

The destructiveHint annotation already declares this is a destructive operation, but the description adds real value beyond it: it specifies that all associated resources are deleted and that data on attached disks is irreversibly lost, and it notes the request_id return. It stops short of stating approval/authorization requirements or whether the teardown is async.

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

Conciseness5/5

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

Three short sentences, zero filler, and the destructive consequence is stated immediately after the action. Everything is front-loaded and each sentence earns its place.

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

Completeness3/5

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

The existence of an output schema excuses it from explaining return values beyond the request_id mention. But the undocumented 'purge' parameter and the absence of any when-to-use/routing guidance leave real gaps for a destructive 2-parameter tool.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden, and it does not mention the 'purge' parameter at all even though that boolean plausibly controls whether resources are force-deleted. Only cluster_name is implicitly covered by the phrase 'a cluster'.

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

Purpose4/5

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

States a specific verb and resource ('tear down a cluster completely'), and the adverb 'completely' hints at the distinction from the sibling skypilot_cluster_stop. However, it never names the softer alternative, so an agent must infer the difference from the word 'completely' alone.

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

Usage Guidelines2/5

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

No when-to-use guidance is given. With siblings like skypilot_cluster_stop and skypilot_cluster_autostop available, the description never explains when an agent should tear down versus merely stop, nor any preconditions such as the cluster being stopped first.

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

skypilot_cluster_endpointsA
Read-only

Get the endpoint(s) for a cluster. Optionally filter by port number or port name. Returns a mapping of port numbers to endpoint URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
portNo
cluster_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

readOnlyHint=true already declares the safety profile, so the bar is lower. The description adds that results are a mapping of port numbers to endpoint URLs, which is useful behavioral context, but says nothing about auth needs, cluster-state requirements, or empty/failure cases.

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

Conciseness5/5

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

Three compact sentences, front-loaded with the core purpose, then the optional filter, then the return shape. No wasted words.

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

Completeness4/5

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

For a simple two-parameter read tool with an output schema present, the description covers purpose, filter, and return shape adequately. Minor gaps remain around cluster-state prerequisites, but nothing essential for invocation is missing.

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

Parameters4/5

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

Schema coverage is 0%, so the description carries the burden. It clarifies that 'port' may be given as a number or a name—matching the schema's integer/string anyOf—and that it is optional, adding real meaning beyond the bare schema. cluster_name semantics are left implicit.

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

Purpose4/5

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

States a specific verb+resource ('Get the endpoint(s) for a cluster') with a clear scope, and the resource is distinct from siblings like cluster_status or cluster_exec. It doesn't explicitly differentiate from alternatives, but the purpose is unambiguous.

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

Usage Guidelines2/5

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

The description mentions the optional port filter but gives no when-to-use context, no prerequisites (e.g., cluster must be up), and no alternatives. The only 'guidance' is parameter behavior, not selection criteria.

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

skypilot_cluster_execA

Execute a task on an existing cluster. Syncs workdir and runs commands. Accepts a SkyPilot task YAML string. Returns a request_id — use skypilot_get_request to poll for the result.

ParametersJSON Schema
NameRequiredDescriptionDefault
downNo
dryrunNo
task_yamlYes
cluster_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Adds real behavioral context beyond annotations: it syncs the workdir, runs commands, and returns a request_id that must be polled via a named sibling. Annotations only say openWorld/destructive=false, so this async/polling contract is genuinely new info. Missing: what happens to existing cluster state or whether commands run detached.

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

Conciseness5/5

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

Three tight sentences: what it does, what it does behaviorally (sync + run), and the return/poll contract. Front-loaded with the core action, no filler.

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

Completeness4/5

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

With an output schema present, the description need not explain return values, and its request_id/polling tip is a helpful extra. The two unexplained boolean params (down, dryrun) are the main gap given 0% schema coverage.

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

Parameters3/5

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

Schema coverage is 0% – four parameters are completely undocumented in the schema, so the description must compensate. It explains task_yaml (a SkyPilot task YAML string) but says nothing about cluster_name, down, or dryrun. Partial compensation only, hence baseline-ish 3.

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

Purpose5/5

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

States a specific verb (execute a task) and resource (an existing cluster), and distinguishes from launch/start siblings by 'existing cluster'. An agent can pick this out from skypilot_cluster_launch or skypilot_cluster_start without opening a schema.

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

Usage Guidelines4/5

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

Makes clear it operates on an *existing* cluster, implying you must have launched/started one first, and points to skypilot_get_request for polling. However it never states when NOT to use it (e.g. use cluster_launch for new clusters) nor mentions prerequisites explicitly.

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

skypilot_cluster_launchB

Launch a new cluster or submit a task to an existing cluster. Accepts a SkyPilot task YAML string defining resources, setup, and run commands. Set optimize_target to 'COST' (default) or 'TIME'. Set fast=True to skip cloud availability checks for faster provisioning. Set wait_for to control autostop idle detection: 'jobs_and_ssh' (default), 'jobs', or 'none'. Returns a request_id — use skypilot_get_request to poll for the result.

ParametersJSON Schema
NameRequiredDescriptionDefault
downNo
fastNo
dryrunNo
no_setupNo
wait_forNo
task_yamlYes
cluster_nameNo
retry_until_upNo
clone_disk_fromNo
optimize_targetNoCOST
idle_minutes_to_autostopNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior4/5

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

Annotations are sparse (openWorldHint=true, destructiveHint=false), providing minimal behavioral context. The description adds valuable detail: it explains that fast=True skips cloud availability checks, describes wait_for autostop idling semantics, mentions optimize_target, and states that the tool returns a request_id with instructions to poll. This is significant behavioral disclosure beyond the annotations. However, it doesn't cover potential side effects, error handling, or what happens on failure.

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

Conciseness4/5

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

The description is compact and front-loaded: it states the core action first, then in a series of sentences details key parameters and return behavior. It avoids unnecessary fluff. No major structural issues, though it could be organized with bullet-like separation for clarity.

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

Completeness3/5

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

Given the tool's complexity (11 parameters, open-world operation), the description is moderately complete. It covers the main action, some important parameters, and the return mechanism, but it omits guidance on many parameters, prerequisites, and potential side effects. The presence of an output schema reduces the need to describe return values, but the description still leaves gaps for an agent to call the tool correctly in all scenarios.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It explains the semantics of optimize_target, fast, and wait_for, and mentions task_yaml. However, it does not explain other parameters like down, dryrun, no_setup, cluster_name, retry_until_up, clone_disk_from, or idle_minutes_to_autostop. With 11 parameters and only 3-4 covered, the description adds some value but leaves many parameters undocumented.

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

Purpose4/5

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

The description states a clear dual purpose: 'Launch a new cluster or submit a task to an existing cluster,' which is a specific verb+resource. However, the tool name itself is 'cluster_launch' and the description adds the task-submission facet, but it doesn't explicitly differentiate from similar siblings like skypilot_managed_job_launch or skypilot_pool_apply. Distinguishing from those would require more context.

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

Usage Guidelines2/5

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

No explicit when-to-use or when-not-to-use guidance is provided beyond the basic purpose. The description mentions some parameter effects (optimize_target, fast, wait_for) but doesn't say when to choose this tool over alternatives like skypilot_managed_job_launch or skypilot_pool_apply, nor does it state prerequisites such as authentication or cloud credentials.

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

skypilot_cluster_startB

Restart a previously stopped cluster. Reattaches preserved disks. Set wait_for to control autostop idle detection: 'jobs_and_ssh' (default), 'jobs', or 'none'. Returns a request_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
downNo
forceNo
wait_forNo
cluster_nameYes
retry_until_upNo
idle_minutes_to_autostopNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds useful behavioral context ('Reattaches preserved disks'), but says nothing about what force, down, or retry_until_up do to the restart semantics.

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

Conciseness4/5

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

Three tight sentences with the core action front-loaded and no filler. Efficient, though the middle 'reattaches disks' detail could be folded in more economically.

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

Completeness2/5

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

An output schema exists, so the return value needn't be explained. But for a 6-parameter mutation with 0% schema coverage, omitting force, down, retry_until_up, and idle_minutes_to_autostop leaves the agent unable to invoke it correctly for non-default cases.

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

Parameters2/5

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

Schema coverage is 0%, so the description must carry the burden, yet it documents only wait_for (including its 'jobs_and_ssh'/'jobs'/'none' values). Five of six parameters — down, force, retry_until_up, idle_minutes_to_autostop, cluster_name — are given no meaning beyond their names.

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

Purpose4/5

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

States a specific verb and resource ('Restart a previously stopped cluster'), and the qualifier 'previously stopped' implicitly distinguishes it from skypilot_cluster_launch (new cluster) and skypilot_cluster_stop. It never names a sibling explicitly, so it falls short of a 5.

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

Usage Guidelines3/5

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

'Previously stopped cluster' implies the precondition for use, and the wait_for sentence gives conditional guidance for one parameter. However, there is no explicit when-not or named alternative among the many cluster siblings (launch, stop, down, autostop).

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

skypilot_cluster_statusA
Read-only

Get the status of SkyPilot clusters. Returns cluster names, statuses, resource types, autostop settings, and more. If no cluster_names provided, returns all clusters. Set refresh to 'NONE' (default, no refresh), 'AUTO' (refresh only clusters with autostop or spot instances), or 'FORCE' (refresh all).

ParametersJSON Schema
NameRequiredDescriptionDefault
refreshNoNONE
all_usersNo
cluster_namesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=true, so the safety profile is covered. The description goes beyond that by spelling out the three refresh modes and their semantics (NONE = no refresh, AUTO = only autostop/spot clusters, FORCE = all), which tells the agent when the call may reach out to providers. It stops short of noting cost/latency of FORCE or any permission implications of all_users.

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

Conciseness4/5

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

Three sentences, no filler, and the core purpose is front-loaded ahead of the optional details. The field enumeration in sentence two is mildly redundant given an output schema exists, but it costs little.

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

Completeness4/5

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

With an output schema present, the description need not explain return values, and it correctly focuses on scoping and refresh behavior. The main gap is that all_users is never explained, which matters in a multi-user cluster system, but otherwise the agent has enough to call the tool correctly.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry parameter meaning. It does well for refresh (all three values defined, default stated, enum absent from the schema) and cluster_names (empty means all), but the all_users parameter is never mentioned in either the schema or the description, leaving one of three parameters semantically opaque.

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

Purpose4/5

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

The description gives a specific verb and resource ("Get the status of SkyPilot clusters") and enumerates the returned fields, which clearly separates it from mutation siblings like skypilot_cluster_stop/start/down. It does not, however, explicitly distinguish itself from adjacent read tools such as skypilot_status_kubernetes, skypilot_pool_status, or skypilot_cluster_endpoints.

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

Usage Guidelines3/5

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

The default-scope rule ("If no cluster_names provided, returns all clusters") gives implicit usage guidance for the no-argument case. There is no explicit when-to-use guidance, no prerequisites, and no direction toward alternatives when a different flavor of cluster/pool/kubernetes status is what the agent actually wants.

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

skypilot_cluster_stopA
Destructive

Stop a running cluster. Data on attached disks is preserved. Billing for instances stops but disk charges continue. Set graceful=True to wait for in-progress data uploads to finish before stopping (prevents data loss). Returns a request_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
purgeNo
gracefulNo
cluster_nameYes
graceful_timeoutNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior4/5

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

The description adds substantial behavioral context beyond the destructiveHint annotation: it explains billing implications ('billing for instances stops but disk charges continue'), data preservation on attached disks, what graceful=True does, and that a request_id is returned. It does not, however, explain the purge parameter's effect, which is a notable omission for a destructive-adjacent operation.

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

Conciseness5/5

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

The description is four sentences, front-loaded with the core action, then side effects, a key parameter tip, and the return value. Every sentence adds value and there is no redundancy.

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

Completeness3/5

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

An output schema exists and annotations cover the destructive hint, so the description need not explain return values. However, it is incomplete for a 4-parameter stop tool because it omits purge and graceful_timeout semantics, and its blanket claim that 'data on attached disks is preserved' may be misleading if purge is set.

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

Parameters2/5

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

With 0% schema description coverage, the description must carry parameter semantics. It explains only graceful; it does not mention purge (which is likely destructive) or graceful_timeout, leaving three of four parameters undocumented. This is a significant gap given the low schema coverage.

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

Purpose4/5

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

The description states a clear verb and resource: 'Stop a running cluster.' It is unambiguous and specific. However, it does not explicitly differentiate from siblings like skypilot_cluster_down or skypilot_cluster_autostop, which would help an agent choose correctly.

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

Usage Guidelines3/5

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

Usage is implied by 'Stop a running cluster,' and the graceful tip provides some context for when to use that parameter. But there is no explicit guidance on when to prefer this over cluster_down, autostop, or api_stop, and no exclusions or prerequisites are stated.

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

skypilot_cost_reportA
Read-only

Get cost reports for all clusters, including those that have been terminated. Shows estimated costs based on resource types and usage duration. Optionally filter by number of days.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

With readOnlyHint=true, the safety profile is already covered. The description adds that terminated clusters are included and that costs are estimated based on resource types and duration, which is useful behavioral context beyond the annotation, but it doesn't discuss output format, accuracy limitations, or any 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.

Conciseness5/5

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

Three concise sentences, front-loaded with the primary purpose, then scope details, then the optional filter. No wasted words.

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

Completeness4/5

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

The tool is simple (one optional parameter), and the description covers what the report includes and the filter option. Since an output schema exists, return values needn't be explained. It could mention cost units or estimation caveats, but is nearly complete for an agent to call it correctly.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It explains that the optional 'days' filter restricts the report to a number of days, adding meaning beyond the schema's bare integer type. No default or format details are given, but the core semantics are clarified.

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

Purpose4/5

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

The description uses a specific verb and resource ('Get cost reports for all clusters'), and notably mentions including terminated clusters, which distinguishes it from cluster_status-type tools. It is clear without needing sibling names, though it shares 'list-like' semantics with other status tools.

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

Usage Guidelines3/5

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

The description implies usage for cost estimation and mentions the optional days filter, but provides no explicit guidance on when to choose this tool over alternatives like cluster_status or api_info, nor any exclusions. Usage is implied but not stated.

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

skypilot_dashboardB
Read-only

Open the SkyPilot dashboard in the default web browser. Optionally specify a starting page.

ParametersJSON Schema
NameRequiredDescriptionDefault
starting_pageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations only declare readOnlyHint=true, so the description must carry most of the behavioral burden. It usefully discloses the observable side effect that a browser window is launched and that a page can be preset, but says nothing about prerequisites (server running, authentication) or whether the call blocks awaiting the UI. Partial but real added context.

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

Conciseness4/5

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

Two short sentences with the primary action front-loaded and the optional parameter mentioned second. No waste, though it is minimal rather than maximally informative.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the safety profile is covered by readOnlyHint. However, the description omits any prerequisite or authentication context for a tool that depends on a live SkyPilot environment, leaving a gap for an otherwise simple definition.

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

Parameters3/5

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

Schema description coverage is 0% for the single optional starting_page parameter, so the description must compensate. It does state the parameter is optional and controls the landing page, which is meaningful, but gives no accepted values or format examples (e.g., 'jobs', 'clusters'), leaving ambiguity.

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

Purpose4/5

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

The description states a specific verb ('Open'), resource ('SkyPilot dashboard'), and medium ('default web browser'), so an agent immediately understands the action. It does not explicitly distinguish itself from the sibling skypilot_jobs_dashboard, which is a plausible source of confusion, so it falls short of a 5.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus alternatives, no mention of the closely related skypilot_jobs_dashboard sibling, and no prerequisites such as a running API server or prior login. Usage is only implied by the verb.

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

skypilot_download_logsB
Read-only

Download job logs from a cluster to a local directory. Returns a mapping of job IDs to local log file paths.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idsNo
cluster_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

readOnlyHint=true is already supplied by annotations, so the safety profile is covered. The description does add that files land in a local directory and that a job-ID-to-path mapping is returned, but it omits key behavior: what happens when job_ids is null, and whether existing local files are overwritten. Consistent with annotations, no contradiction.

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

Conciseness4/5

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

Two tight sentences, front-loaded with the action and followed by the return shape. No wasted clauses, though it is on the terse side for a tool with unstated parameter behavior.

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

Completeness3/5

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

An output schema exists, so the return-value sentence is somewhat redundant, and the description omits the two things an agent actually needs: how to pick among the sibling download_logs tools and what a null job_ids means. Adequate but with clear gaps for a tool in a crowded family.

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

Parameters2/5

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

Schema description coverage is 0% for both parameters, so the description must carry the load. It implicitly references job IDs via the return mapping but never explains that job_ids selects which logs to fetch or that a null default means all jobs; cluster_name is not explained either (though self-evident).

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

Purpose4/5

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

States a specific verb+resource ('download job logs from a cluster') and even names the destination ('to a local directory'), which is more than a tautology. However, it does not differentiate itself from the four sibling download tools (managed_job_download_logs, serve_download_logs, pool_download_logs), so an agent cannot tell which of them applies to a plain cluster job without opening each schema.

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

Usage Guidelines2/5

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

No when-to-use guidance is given, and critically no distinction from skypilot_managed_job_download_logs / serve_download_logs / pool_download_logs, which share nearly the same name pattern. The agent is left to infer that 'cluster' jobs are the scope.

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

skypilot_enabled_cloudsA
Read-only

List all clouds that have been enabled (credentials configured). Returns a list of cloud names. Set expand=True to expand Kubernetes and SSH into individual resource pools. Optionally specify a workspace name to scope the listing to a specific workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
expandNo
workspaceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true, so the safety profile is covered. The description adds real behavioral context beyond that: it states the return is a list of cloud names, and that expand=True changes the granularity by expanding Kubernetes and SSH into individual resource pools. It doesn't cover edge cases such as what happens when no clouds are enabled.

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

Conciseness5/5

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

Three tightly packed sentences with the core purpose front-loaded, followed by the return value and then the two parameter behaviors. No filler or repetition; every sentence adds information.

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

Completeness5/5

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

For a small read-only listing tool with an output schema present, the description covers purpose, return type, both parameters, and the expansion behavior. There is no meaningful gap an agent would need to fill before invoking it correctly.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must carry the param burden, and it does explain both parameters: expand=True expands Kubernetes/SSH into resource pools, and workspace scopes the listing to a workspace. It compensates well for the schema gap, though it could be more precise about the expanded output shape.

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

Purpose4/5

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

The description gives a specific verb and resource with a qualifier that narrows scope meaningfully: 'List all clouds that have been enabled (credentials configured)'. This distinguishes it from sibling tools like skypilot_workspaces or skypilot_kubernetes_node_info, though it never names an alternative explicitly.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: you call it to discover which clouds are usable, and set expand=True when you want Kubernetes/SSH broken out into resource pools. There is no explicit when-to-use vs. when-not guidance and no named alternative, leaving the agent to infer the context.

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

skypilot_get_requestA
Read-only

Wait for a SkyPilot request to complete and return its result. Use this after calling tools that return a request_id (e.g., skypilot_cluster_launch, skypilot_cluster_stop, etc.). This call blocks until the request finishes.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds the crucial behavioral trait that the call 'blocks until the request finishes' — a significant latency/waiting characteristic not conveyed by the annotations. No mention of timeout behavior, which would round this out.

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

Conciseness5/5

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

Three short sentences, front-loaded with the core purpose and followed by usage and the blocking trait. Zero filler.

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

Completeness4/5

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

An output schema exists, so return values need not be described. The description covers purpose, trigger, and blocking behavior. It omits timeout/failure behavior for a blocking call, but is otherwise complete for a single-parameter tool.

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

Parameters3/5

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

The single request_id parameter has 0% schema description coverage, so the description carries the burden. It does explain where request_id comes from (tools that return a request_id), which adds useful meaning, but doesn't specify the format or any constraints.

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

Purpose4/5

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

States a specific verb+resource: waiting for a SkyPilot request and returning its result. It distinguishes itself from sibling status/log tools by making clear it is the blocking operation tied to a request_id, though it doesn't explicitly contrast itself with skypilot_api_status or skypilot_stream_and_get.

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

Usage Guidelines4/5

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

Explicitly says to use it 'after calling tools that return a request_id' and names example producers (skypilot_cluster_launch, skypilot_cluster_stop). It gives clear triggering context but no when-not guidance, e.g., when a non-blocking status check or stream would be preferable.

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

skypilot_job_cancelA
Destructive

Cancel jobs on a cluster. Provide either job_ids to cancel specific jobs, or set cancel_all=True to cancel all jobs (mutually exclusive). Set all_users=True to cancel jobs from all users. Returns a request_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idsNo
all_usersNo
cancel_allNo
cluster_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

The annotations already declare destructiveHint=true, so the agent knows the operation is destructive. The description adds the mutual-exclusivity constraint between job_ids and cancel_all and mentions the return of a request_id, but does not describe other behavioral traits like irreversibility details, confirmation requirements, or side effects beyond the annotation.

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

Conciseness4/5

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

The description is three sentences: it front-loads the core action, then gives parameter usage, then notes the return. It is efficiently sized with no wasted text, though the final return-value sentence is slightly redundant given the presence of an output schema.

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

Completeness4/5

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

Given four parameters, a destructive annotation, and an output schema, the description covers the key invocation rules and mutual exclusivity. It is nearly complete, though it could briefly clarify cluster_name's role or explicitly differentiate this tool from sibling cancel operations.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must carry the burden. It explains the meaning of job_ids, cancel_all, and all_users, and explicitly notes the mutual exclusivity between job_ids and cancel_all. Only cluster_name is left without added semantic detail, but its required and self-descriptive name limits the gap.

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

Purpose4/5

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

The description states a specific verb and resource: cancel jobs on a cluster. It clearly communicates the action, but does not differentiate this tool from sibling cancel tools like skypilot_managed_job_cancel or skypilot_api_cancel, leaving the agent to infer which cancel variant is appropriate.

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

Usage Guidelines3/5

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

The description explains how to invoke the tool with job_ids, cancel_all, and all_users, including that job_ids and cancel_all are mutually exclusive. However, it gives no guidance on when to choose this tool over alternatives such as skypilot_managed_job_cancel, so tool-selection context is only implied.

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

skypilot_job_logsA
Read-only

Get a snapshot of logs from a job running on a cluster. Returns the last N lines (default 100, set to 0 for all). Does not stream/follow logs. If no job_id is provided, returns logs for the latest job.

ParametersJSON Schema
NameRequiredDescriptionDefault
tailNo
job_idNo
cluster_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

With readOnlyHint=true, the safety profile is already known, but the description adds important behavior: it returns a snapshot, not a stream; it shows the last N lines with default 100 and 0 meaning all; and it defaults to the latest job when job_id is omitted. These details go beyond the annotation and help the agent invoke it correctly.

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

Conciseness5/5

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

Three short sentences, front-loaded with the core action, followed by behavioral clarifications. No wasted words; every sentence adds useful information about the returned data or parameter behavior.

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

Completeness4/5

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

Given the tool's simplicity, the presence of an output schema, and the readOnlyHint annotation, the description is nearly complete. It covers snapshot behavior, tail semantics, and job_id fallback. The only minor gap is that it does not mention cluster_name explicitly or prerequisites like the cluster being running, but these are largely inferable.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must carry parameter meaning. It explains tail's default and the special value 0 for all lines, and it explains job_id's fallback behavior when omitted. cluster_name is required but self-evident from context, so the description compensates well for the lack of schema descriptions.

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

Purpose4/5

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

The description states a specific verb and resource: 'Get a snapshot of logs from a job running on a cluster.' It is clear, though it does not explicitly distinguish this tool from similar siblings like skypilot_managed_job_logs or the various download_logs tools. The scope 'job running on a cluster' is helpful but not a full sibling differentiation.

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

Usage Guidelines3/5

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

The description provides behavioral context ('snapshot', 'Does not stream/follow logs') and a default for missing job_id, which implies when to use it, but it does not explicitly say when to choose this tool over alternatives such as skypilot_managed_job_logs or skypilot_download_logs. No exclusions or direct alternatives are named.

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

skypilot_job_queueB
Read-only

List jobs on a cluster's job queue. Returns job IDs, names, statuses, submission times, and resource usage.

ParametersJSON Schema
NameRequiredDescriptionDefault
all_usersNo
cluster_nameYes
skip_finishedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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

The readOnlyHint annotation already establishes this as a safe read operation. The description adds what is returned (job IDs, names, statuses, submission times, resource usage), which is useful, but the output schema likely covers the same ground and no auth, rate-limit, or pagination behavior is disclosed.

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

Conciseness5/5

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

Two tightly written sentences, front-loaded with the core purpose and followed by the return fields. Every sentence earns its place.

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

Completeness3/5

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

The definition covers purpose and return fields, and annotations handle safety. However, it omits usage guidance and leaves two of three parameters undocumented, which is a meaningful gap for correct invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it does not. 'Cluster's job queue' loosely implies the required cluster_name, yet the optional all_users and skip_finished parameters are left completely unexplained.

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

Purpose4/5

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

The description states a specific verb and resource: 'List jobs on a cluster's job queue.' This distinguishes it from a managed job queue and from single-job status tools, but it does not explicitly name or contrast with siblings like skypilot_managed_job_queue or skypilot_job_status.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance, no prerequisites, and no alternatives. Usage is only implied by the purpose, and with many sibling tools available, an agent gets no help selecting this one over alternatives.

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

skypilot_jobs_dashboardA
Read-only

Open the managed jobs dashboard in the default web browser. Shows a dedicated view for monitoring managed jobs.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds that it opens the default web browser and provides a dedicated monitoring view, which is useful behavioral context beyond the annotation. However, with an output schema present and no mutation concerns, the remaining behavioral disclosure is limited.

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

Conciseness5/5

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

Two concise sentences, front-loaded with the primary action and then a clarifying note about the view. There is no redundant or wasteful language.

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

Completeness4/5

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

Given no parameters, an output schema, and readOnly annotation, the description is largely complete. It could mention whether authentication or a running dashboard server is required, but for a simple browser-opening tool, it provides adequate context.

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

Parameters4/5

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

The tool accepts zero parameters, so there is no parameter semantics to document. Per the guidelines, zero parameters gives a baseline of 4. The description appropriately focuses on the action rather than parameters.

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

Purpose4/5

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

The description states a specific action and resource: opening the managed jobs dashboard in the default browser. It clearly distinguishes from siblings like skypilot_dashboard (general dashboard) and skypilot_managed_job_queue (querying queue data) by specifying 'managed jobs dashboard'. It lacks mention of sibling alternatives, but the resource is unambiguous.

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

Usage Guidelines3/5

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

Usage is implied: use this to visually monitor managed jobs. There is no explicit when-to-use guidance or reference to alternatives such as skypilot_dashboard or skypilot_managed_job_queue. An agent can infer the context but must guess at boundaries.

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

skypilot_job_statusA
Read-only

Get the status of specific jobs on a cluster. If no job_ids provided, returns the status of the latest job.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idsNo
cluster_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

readOnlyHint=true already tells the agent this is a safe read. The description adds the meaningful default-behavior disclosure (omitted job_ids returns the latest job). It does not mention behavior when the cluster doesn't exist, job not found, or authentication requirements.

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

Conciseness5/5

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

Two short sentences, zero filler, with the primary action front-loaded and the default-behavior caveat following. Every sentence earns its place.

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

Completeness4/5

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

An output schema exists, so return values need not be described. The description covers the optional-parameter fallback, giving most of what an agent needs; only error/precondition behavior for the required cluster_name is missing.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry parameter meaning. It explains the optional job_ids behavior well (defaults to latest job) but says nothing about the required cluster_name or what forms a job_id takes. Partial compensation, not full.

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

Purpose4/5

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

States a specific verb and resource ('Get the status of specific jobs on a cluster'), which distinguishes it from skypilot_cluster_status (cluster-level). However, it does not differentiate from the closely-named sibling skypilot_job_queue, leaving the agent to infer the boundary.

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

Usage Guidelines3/5

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

The fallback rule ('if no job_ids provided, returns the status of the latest job') gives useful invocation context, but there is no guidance on when to prefer this over skypilot_job_queue or skypilot_job_logs, and no stated prerequisites.

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

skypilot_kubernetes_label_gpusB

Label GPU nodes in a Kubernetes cluster for use with SkyPilot. Currently supports NVIDIA GPUs only. Set cleanup_only=True to remove existing labeling resources. Returns a request_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNo
cleanup_onlyNo
wait_for_completionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations only declare destructiveHint=false, so the description carries most of the burden. It correctly discloses the NVIDIA-only limitation and that cleanup_only removes resources, plus that a request_id is returned. It does not say whether the labeling mutates cluster state persistently, whether it requires elevated permissions, or what the request_id is used for beyond this tool.

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

Conciseness4/5

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

Three short sentences, front-loaded with the core action and then the constraints. No filler. Slightly terse given the parameter gap, but structurally efficient.

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

Completeness3/5

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

An output schema exists, so return-value explanation is optional and the request_id mention suffices. Still, for a mutating cluster operation with two entirely undocumented parameters and no stated prerequisites or scope of effect, the description is only minimally adequate.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for three undocumented parameters. It only explains cleanup_only. context and wait_for_completion are left completely unexplained in both schema and description, leaving the agent to guess their meaning and defaults.

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

Purpose4/5

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

States a specific verb (Label) and resource (GPU nodes in a Kubernetes cluster), and names the integration context (SkyPilot). Could be sharper about which nodes get labeled, but it is clearly distinguishable from siblings like skypilot_kubernetes_node_info (read-only inspection) or skypilot_status_kubernetes.

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

Usage Guidelines3/5

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

The mention of cleanup_only=True removes labeling resources provides an implied when-to-use path, and the NVIDIA-only scope narrows applicability. However, it never states prerequisites (e.g., kubectl access, target cluster selection) or when to prefer alternatives such as skypilot_kubernetes_node_info.

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

skypilot_kubernetes_node_infoB
Read-only

Get resource information for all nodes in a Kubernetes cluster. Shows CPU, memory, GPU, and other resource details per node.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations declare readOnlyHint=true, so the safety profile is already known. The description adds what data is returned (CPU, memory, GPU), which is useful, but does not cover authentication, rate limits, or pagination. With annotations covering the read-only nature, a 3 is appropriate.

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

Conciseness5/5

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

Two sentences, front-loaded and with no extraneous information. Every part earns its place.

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

Completeness4/5

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

Given that an output schema exists, the description need not explain return values. It covers purpose and scope adequately, though it lacks usage guidance and parameter explanation. For a simple read-only tool, it is mostly complete.

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

Parameters3/5

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

Schema description coverage is 0% for the single 'context' parameter. The description does not explain the 'context' parameter at all, so it fails to compensate for the low schema coverage. However, with only one optional parameter and an output schema present, baseline 3 is reasonable.

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

Purpose4/5

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

The description states a specific verb+resource: 'Get resource information for all nodes in a Kubernetes cluster', and lists what is shown (CPU, memory, GPU). It clearly distinguishes from the sibling skypilot_slurm_node_info by specifying Kubernetes, though it does not name that sibling in the description.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives like skypilot_slurm_node_info or skypilot_status_kubernetes. Usage is only implied by the scope (Kubernetes nodes).

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

skypilot_list_accelerator_countsB
Read-only

List available accelerators and their available counts. Returns a mapping of accelerator names to available quantities. Filter by name, region, quantity, or specific clouds.

ParametersJSON Schema
NameRequiredDescriptionDefault
cloudsNo
gpus_onlyNo
name_filterNo
region_filterNo
quantity_filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

readOnlyHint=true already establishes this is a safe read, so the bar is lower. The description adds that it 'Returns a mapping of accelerator names to available quantities', but since an output schema exists this return-shape note is largely redundant, and it says nothing about filtering defaults or scope behavior.

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

Conciseness4/5

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

Three short sentences, front-loaded with the core action followed by return and filter detail. No filler, though the return sentence partly duplicates output-schema information.

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

Completeness3/5

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

Output-schema presence relieves it of explaining return values, but for a 5-parameter tool with 0% schema description coverage, the description leaves gpus_only and all defaults unaddressed, and provides no help distinguishing it from skypilot_list_accelerators.

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

Parameters3/5

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

Schema description coverage is 0% across 5 parameters, so the description must carry more. It names four filter dimensions (name, region, quantity, clouds) that map to name_filter, region_filter, quantity_filter, and clouds, but leaves gpus_only undocumented and adds no format, syntax, or default semantics.

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

Purpose4/5

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

States a specific verb and resource ('List available accelerators and their available counts') and clarifies scope by noting it returns a mapping of names to quantities. It is clear about what it does, but does not explicitly distinguish itself from the nearby sibling skypilot_list_accelerators.

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

Usage Guidelines2/5

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

The description offers no when-to-use guidance, prerequisites, or contrast with the very similar skypilot_list_accelerators sibling. The only usage hint is the list of filter dimensions, which is implied rather than framed as a selection rule.

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

skypilot_list_acceleratorsB
Read-only

List available accelerators (GPUs/TPUs) across clouds. Filter by name, region, quantity, or specific clouds. Set gpus_only=False to include non-GPU accelerators like TPUs. Set case_sensitive=False for case-insensitive name filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
cloudsNo
gpus_onlyNo
all_regionsNo
name_filterNo
region_filterNo
require_priceNo
case_sensitiveNo
quantity_filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds the non-obvious default that non-GPU accelerators are excluded unless gpus_only is disabled, but this is largely a restatement of the schema default; undocumented behaviors such as require_price defaulting to true (filtering out unpriced accelerators) are not disclosed.

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

Conciseness4/5

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

Four short sentences, front-loaded with the core purpose before the option guidance. The repeated 'Set X=Y to...' phrasing is slightly mechanical but each sentence carries information; minimal waste.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and read-only safety is covered by annotations. The gaps are the undocumented all_regions and require_price parameters and the lack of disambiguation from the accelerator-counts/realtime-availability siblings.

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

Parameters3/5

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

Schema description coverage is 0% across 8 parameters, so the description must compensate. It names the name, region, quantity and cloud filter dimensions plus the gpus_only and case_sensitive defaults, but leaves all_regions and the consequential require_price untouched, so roughly a quarter of parameters remain unexplained.

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

Purpose4/5

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

States a specific verb and resource ('List available accelerators (GPUs/TPUs) across clouds') with scope made explicit. It does not, however, distinguish itself from the closely named sibling skypilot_list_accelerator_counts or skypilot_realtime_gpu_availability, so an agent must infer the boundary.

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

Usage Guidelines3/5

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

Usage is implied through parameter guidance ('Set gpus_only=False to include...', 'Set case_sensitive=False...'), which tells the agent when to flip options. There is no explicit routing to alternatives (e.g. the accelerator-counts tool or realtime availability tool), so the when-not guidance is absent.

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

skypilot_local_downA
Destructive

Tear down the local Kubernetes cluster started by local_up. Only works when the API server is running locally. Returns a request_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations only give destructiveHint=true; the description goes beyond that by scoping exactly what is destroyed (the local cluster created by local_up) and by disclosing the local-API-server prerequisite, which is a real operational constraint. It does not describe reversibility or failure behavior, but it adds meaningful context over the annotation.

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

Conciseness4/5

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

Three short sentences, front-loaded with the action and scope, and the precondition follows immediately. The final 'Returns a request_id' sentence is largely redundant given a declared output schema, so it is tight but not perfectly waste-free.

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

Completeness3/5

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

For a simple teardown tool with an output schema and a destructiveHint annotation, the description covers action, scope, and precondition adequately. The notable gap is the undocumented 'name' parameter, leaving the agent unsure whether any selector should be passed.

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

Parameters2/5

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

The single parameter 'name' has 0% schema coverage and is never mentioned in the description, which instead refers to 'the local Kubernetes cluster' in the definite, implying no selector is needed. With low coverage the description should compensate for the unexplained parameter but does not.

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

Purpose5/5

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

States a specific verb (tear down) and resource (the local Kubernetes cluster started by local_up), and pins its identity to the counterpart skypilot_local_up, which distinguishes it from the many other *_down siblings (cluster_down, ssh_down, pool_down, serve_down).

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

Usage Guidelines4/5

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

Adds a clear precondition — 'Only works when the API server is running locally' — and implies the inverse pairing with local_up as the correct context. It stops short of explicitly naming when to prefer cluster_down or other teardown tools, so it is clear context without full alternative routing.

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

skypilot_local_upA

Launch a local Kubernetes cluster for SkyPilot. Set gpus=True to enable GPU passthrough. Only works when the API server is running locally. Returns a request_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
gpusNo
nameNo
port_startNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior4/5

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

Annotations give openWorldHint=true and destructiveHint=false, so the safety profile is partly covered, and the description adds two non-obvious behaviors: a hard precondition (API server must be local) and an asynchronous return ('Returns a request_id'). It stops short of disclosing persistence/lifecycle (does the cluster survive, how is it torn down) or any auth requirements.

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

Conciseness5/5

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

Three short sentences, front-loaded with the action, then the key flag, then the precondition and return value. No filler and no redundancy with the schema.

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

Completeness3/5

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

For a zero-required-parameter setup tool with an output schema, the essentials are mostly present, but the request_id is mentioned without saying it should be polled via the sibling skypilot_get_request, and no lifecycle/cleanup counterpart is referenced. The preconditions and flag semantics are covered.

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

Parameters2/5

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

Schema coverage is 0% for all three parameters, so the description must carry the meaning. It explains gpus=True as GPU passthrough (useful beyond the bare boolean default), but 'name' and 'port_start' are left entirely unexplained — no hint that name is a cluster identifier or what port range port_start begins.

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

Purpose4/5

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

States a specific verb and resource: 'Launch a local Kubernetes cluster for SkyPilot.' That is clearly distinct from the cloud-cluster siblings, but the description never names or contrasts with the obvious counterpart skypilot_local_down (teardown) or skypilot_cluster_launch, so sibling differentiation is only implicit.

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

Usage Guidelines3/5

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

'Only works when the API server is running locally' is a genuine precondition that constrains when the call can succeed. However, there is no guidance on when to choose this over skypilot_cluster_launch, skypilot_ssh_up, or other environment-setup siblings, and no note that skypilot_local_down is the matching cleanup call.

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

skypilot_managed_job_cancelA
Destructive

Cancel managed jobs. Provide exactly one of: name, job_ids, cancel_all=True, or pool (mutually exclusive). Set all_users=True to cancel jobs from all users. Set graceful=True to wait for in-progress data uploads before cancelling. Returns a request_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
poolNo
job_idsNo
gracefulNo
all_usersNo
cancel_allNo
graceful_timeoutNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations only declare destructiveHint=true; the description adds substantive behavior beyond that – the return value (request_id), that graceful waits for in-progress data uploads, and that all_users widens scope to every user. This is meaningful disclosure of side effects and scope for a destructive tool.

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

Conciseness5/5

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

Four tight sentences, front-loaded with the action and then the selection constraint before the optional flags. No filler, and the return value is appended efficiently.

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

Completeness4/5

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

An output schema exists and the description still names the return value, and it covers the mutually-exclusive selection modes plus the two behavioral flags. Only graceful_timeout is left unexplained, a small gap for a mostly complete destructive-operation definition.

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

Parameters4/5

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

Schema coverage is 0%, so the description must carry the load and largely does: it explains name, job_ids, pool, cancel_all (with mutual exclusivity), all_users, and graceful with semantics. It omits any explanation of graceful_timeout, leaving one of seven parameters undocumented.

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

Purpose4/5

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

States a specific verb and resource ('Cancel managed jobs'), which separates it from the regular-job sibling skypilot_job_cancel by resource name. It does not, however, explicitly route agents away from other cancel-family siblings such as skypilot_api_cancel, so it stops short of the top score.

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

Usage Guidelines4/5

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

Gives a concrete operating rule – provide exactly one of name, job_ids, cancel_all, or pool, and notes these are mutually exclusive – which is genuine invocation guidance. It lacks when-to-use-vs-alternative routing (e.g., when to prefer skypilot_job_cancel or skypilot_api_cancel), so it is clear context without exclusions.

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

skypilot_managed_job_download_logsB
Read-only

Download logs from a managed job to a local directory. Specify by name or job_id. Set controller=True to download controller logs instead of job logs. Optionally specify local_dir to control where logs are saved.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
job_idNo
refreshNo
local_dirNo
controllerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

readOnlyHint=true already covers the safety profile, so the description is not required to restate it. It does add useful behavior: the controller=True switch redirects output to controller logs, and local_dir controls the save location. However, the refresh parameter's effect is never explained, leaving a behavioral gap.

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

Conciseness4/5

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

Four short sentences, front-loaded with the core action and then the selection/option details. No filler, though it is slightly list-like rather than tightly structured.

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

Completeness3/5

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

An output schema exists, so return values need not be described. For a 5-param read tool this is mostly adequate, but the unexplained refresh parameter and the lack of any name/job_id mutual-exclusion note leave an agent with missing decision context.

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

Parameters3/5

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

Schema description coverage is 0%, so the description carries the param burden. It meaningfully explains name, job_id, controller, and local_dir (4 of 5), but refresh is undocumented in both the schema and the description, and no guidance is given for resolving name vs. job_id conflicts.

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

Purpose4/5

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

States a specific verb (Download) and resource (logs from a managed job) with a clear destination (local directory). It is distinguishable from skypilot_managed_job_logs (view vs. download) only by inference, not by explicit contrast, so it falls short of a 5.

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

Usage Guidelines3/5

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

It says how to select a job (name or job_id) and when to use the controller flag, but gives no explicit guidance on when to prefer this tool over skypilot_managed_job_logs or skypilot_download_logs. Usage is implied rather than stated.

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

skypilot_managed_job_launchA

Launch a managed job with automatic recovery from spot preemptions and hardware failures. Accepts a SkyPilot task YAML string (single task or multi-document YAML for job groups with parallel execution). Set pool to target a specific worker pool. Set num_jobs to launch multiple copies of the same job. Returns a request_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
poolNo
num_jobsNo
task_yamlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only declare openWorldHint=true and destructiveHint=false; the description adds genuine behavioral context beyond that — spot/hardware failure recovery and the request_id return. It omits whether launch is asynchronous/blocking, which matters for a launch operation whose result is an ID.

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

Conciseness4/5

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

Four compact sentences, front-loaded with the core action before optional-parameter notes. Minor tautology in 'Set pool to target a specific worker pool', otherwise efficient with no filler.

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

Completeness4/5

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

Output schema exists so return value detail isn't required, annotations cover safety, and the description covers input shape, multi-doc groups, and the two key optional params. It doesn't connect request_id to the follow-up retrieval tools (skypilot_get_request, skypilot_stream_and_get) an agent would need next.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does for three of four parameters: task_yaml accepts a YAML string (single or multi-document for job groups with parallel execution), pool targets a worker pool, num_jobs launches multiple copies. Only 'name' is left unexplained, and no format examples are given.

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

Purpose4/5

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

States a specific verb and resource ('Launch a managed job') plus a distinguishing behavioral trait (automatic recovery from spot preemptions/hardware failures). It separates this from skypilot_cluster_launch by virtue of 'managed job', but never names a sibling explicitly, so it stops short of a 5.

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

Usage Guidelines3/5

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

It explains what the optional parameters do (pool targets a worker pool, num_jobs launches copies) which implies usage, but gives no when-to-use vs the sibling launch/queue tools and no prerequisites or exclusions. Usage is inferable rather than stated.

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

skypilot_managed_job_logsA
Read-only

Get a snapshot of logs from a managed job. Returns the last N lines (default 100, set to 0 for all). Does not stream/follow. Specify by name or job_id. Set controller=True to view the jobs controller logs instead. Set task to view logs for a specific task in a JobGroup (task name or 0-based index).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
tailNo
taskNo
job_idNo
refreshNo
controllerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

The readOnlyHint annotation already covers the safety profile, and the description adds substantial behavioral context: snapshot semantics, default 100 lines with 0 meaning all, no streaming/following, and the controller/task switches. This goes well beyond what the annotation conveys.

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

Conciseness4/5

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

Front-loaded with the core purpose, then a series of compact, value-bearing sentences. No filler; each clause documents a distinct behavior or parameter.

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

Completeness4/5

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

An output schema exists so return values needn't be described, and the description covers most parameters and the non-streaming behavior. The lone gap is the undocumented 'refresh' parameter, which is minor given the otherwise thorough coverage.

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

Parameters4/5

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

With 0% schema description coverage, the description carries the burden and largely succeeds: it explains tail (default 100, 0 for all), name-or-job_id selection, task (name or 0-based index), and controller. Only the 'refresh' parameter is left unexplained.

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

Purpose4/5

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

States a specific verb and resource ('Get a snapshot of logs from a managed job'), which an agent can distinguish from sibling tools like skypilot_job_logs and skypilot_managed_job_download_logs. It does not explicitly name those siblings, but the 'snapshot' framing and 'managed job' scoping are clear.

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

Usage Guidelines3/5

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

'Does not stream/follow' signals this is a snapshot rather than a streaming operation, implying usage versus tools like skypilot_stream_and_get. However, it never names an alternative or states when to prefer this over download_logs or the regular job_logs, so routing is only implied.

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

skypilot_managed_job_queueB
Read-only

List managed jobs and their statuses (v2 API). Returns job IDs, names, statuses, submission times, recovery information, total count, and status counts. Set refresh=True to fetch the latest state from the cluster (slower but up-to-date). Supports sorting and pagination via limit, sort_by, and sort_order parameters.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
fieldsNo
job_idsNo
refreshYes
sort_byNo
all_usersNo
sort_orderNo
skip_finishedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior4/5

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

readOnlyHint=true already establishes the safety profile, and the description adds genuine behavioral context beyond it: the refresh=True path hits the cluster and is explicitly 'slower but up-to-date.' It also enumerates what is returned (statuses, submission times, recovery info, counts), though it does not mention pagination limits or result caps.

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

Conciseness4/5

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

Four compact sentences with the core purpose front-loaded and no filler. It is dense but each sentence carries information; it stops just short of ideal because the return-value sentence lists fields an existing output schema already covers.

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

Completeness3/5

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

For an 8-parameter tool with 0% schema coverage, four parameters (job_ids, fields, all_users, skip_finished) are undocumented in both the schema and the description. The output schema means return values need not be explained, and the refresh guidance is the most important piece, but the filtering parameters remain opaque to an agent.

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

Parameters3/5

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

Schema description coverage is 0%, so the description carries the full explanatory burden, and it only partially does so. refresh gets real semantics (cluster fetch, slower but current) and limit/sort_by/sort_order are named with their purpose (pagination, sorting), but job_ids, fields, all_users, and skip_finished are never mentioned anywhere.

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

Purpose4/5

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

States a specific verb and resource ('List managed jobs and their statuses') and tags the API version ('v2 API'), which is the only thing separating it from the sibling skypilot_managed_job_queue_v1. It does not, however, explicitly tell the agent when v2 is preferred over v1 or over skypilot_job_queue, so the differentiation is suggestive rather than decisive.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus the near-identical skypilot_managed_job_queue_v1 or skypilot_job_queue siblings. The only conditional guidance ('Set refresh=True...') is about a parameter's cost/latency tradeoff, not about tool selection, so an agent gets no routing help.

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

skypilot_managed_job_queue_v1A
Read-only

List managed jobs and their statuses (v1 API). Returns a flat list of job records without pagination or sorting support. Use this for compatibility with older API servers or when the simpler return format is preferred. Set refresh=True to fetch the latest state from the cluster.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idsNo
refreshYes
all_usersNo
skip_finishedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already cover readOnlyHint=true, so the safety profile is settled. The description adds value beyond that: the return is a flat list with no pagination or sorting, and refresh=True pulls the latest state from the cluster. It stops short of explaining what refresh=False does (cached/stale), which would be the last behavioral gap.

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

Conciseness4/5

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

Four tight sentences, front-loaded with the core action and return shape before the usage condition and the refresh hint. No filler, though it is slightly longer than strictly necessary.

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

Completeness3/5

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

An output schema exists, so return-value explanation is legitimately absent. However, with 0% schema coverage on a 4-parameter tool, three filter parameters go entirely undescribed, which is a meaningful completeness gap for a listing tool an agent must filter correctly.

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

Parameters2/5

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

Schema description coverage is 0% across 4 parameters, so the description carries the full burden and covers only refresh. The filtering parameters job_ids, all_users and skip_finished are undocumented in both schema and description, leaving an agent to guess at their semantics.

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

Purpose4/5

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

States a specific verb+resource ('List managed jobs and their statuses') and pins the variant with '(v1 API)'. It distinguishes itself implicitly from the sibling skypilot_managed_job_queue via the v1/compatibility framing, though it never names that sibling explicitly, which keeps it just shy of a 5.

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

Usage Guidelines4/5

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

Explicit when-to-use: 'for compatibility with older API servers or when the simpler return format is preferred.' That gives a real selection condition. It lacks an explicit alternative ('use X otherwise'), so it falls short of a 5.

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

skypilot_optimizeA
Read-only

Find the best execution plan for a task. Analyzes available clouds, regions, and instance types to find the optimal placement. Set minimize to 'COST' (default) or 'TIME'. Returns the optimized DAG with the best resources selected.

ParametersJSON Schema
NameRequiredDescriptionDefault
minimizeNoCOST
task_yamlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations declare readOnlyHint=true, so the safety profile is covered. The description adds that it analyzes clouds/regions/instance types and returns an optimized DAG, which is useful context beyond the annotation. However, it doesn't disclose potential costs, time taken, or whether it requires cloud credentials beyond what the schema implies.

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

Conciseness4/5

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

The description is three concise sentences, front-loaded with the core action and followed by method and parameters. It is efficient with no wasted words, though it could be slightly more structured with bullets for the minimize options.

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

Completeness4/5

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

Given that an output schema exists, the description needn't explain return values, but it does mention returning the optimized DAG. For a tool with two parameters, one undocumented (task_yaml), and no annotation beyond readOnly, the description is fairly complete but misses explaining the required task_yaml input.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It mentions the 'minimize' parameter with allowed values ('COST' default or 'TIME'), providing crucial meaning beyond the bare schema. However, it does not explain 'task_yaml' at all, leaving one of two parameters undocumented.

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

Purpose4/5

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

States a specific verb (find/optimize) and resource (execution plan for a task), and clarifies that it analyzes clouds, regions, and instance types for optimal placement. It is clear what the tool does, though it doesn't explicitly differentiate itself from siblings like skypilot_validate or skypilot_check.

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

Usage Guidelines3/5

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

The description implies usage (to find the best execution plan) but offers no explicit when-to-use or when-not-to-use guidance relative to alternatives. Sibling tools like skypilot_validate exist, but the description doesn't explain when to optimize versus validate. Usage context is only implied.

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

skypilot_pool_applyA

Create or update a worker pool. A worker pool is a long-lived set of compute resources that can host multiple managed jobs. Accepts a SkyPilot task YAML string defining the pool's resources. Set mode to 'rolling' (default) or 'blue_green' for the update strategy. Returns a request_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNorolling
workersNo
pool_nameYes
task_yamlNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations declare openWorldHint=true and destructiveHint=false, so the safety profile is partially covered. The description adds useful behavioral context: the tool is an apply-style upsert, it accepts a SkyPilot YAML, it supports rolling vs blue_green update strategies, and it returns a request_id. It does not discuss permissions or side effects on existing workers, but it meaningfully extends annotations.

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

Conciseness4/5

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

Four front-loaded sentences with no filler. The definition of a worker pool is useful but slightly verbose for the space; overall efficient.

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

Completeness3/5

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

An output schema exists (returns a request_id) so return format is covered externally. However, with 0% schema description coverage and no annotations for auth, the description should ideally mention pool_name semantics, workers, and when an update would disrupt existing jobs. It is adequate but leaves notable gaps for a mutating, open-world tool.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate. It explains that task_yaml is a SkyPilot YAML string defining resources and that mode selects 'rolling' (default) or 'blue_green'. It does not mention the workers parameter or pool_name, leaving two of four parameters unexplained, but it covers the two most semantically loaded parameters.

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

Purpose5/5

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

The description states a specific verb+resource ('Create or update a worker pool') and defines what a pool is ('a long-lived set of compute resources that can host multiple managed jobs'), which cleanly distinguishes it from sibling tools like skypilot_cluster_launch or skypilot_managed_job_launch.

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

Usage Guidelines3/5

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

The description implies usage (create/update pools, choose update strategy) but never states when to prefer this over alternatives like skypilot_cluster_launch or skypilot_serve_up, nor prerequisites. It's implied but not explicit guidance.

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

skypilot_pool_downA
Destructive

Delete worker pool(s). Specify pool_names or set delete_all=True. Set purge=True to force deletion even with errors. Returns a request_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
purgeNo
delete_allNo
pool_namesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

destructiveHint=true is already declared, so the safety profile is covered. The description adds meaningful context beyond annotations: the purge flag forces deletion despite errors, and it discloses a return value (request_id). The key behavioral trait of error-forcing is unique to the description.

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

Conciseness5/5

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

Four short sentences, each earning its place: verb+resource, selection guidance, purge behavior, return value. No waste and front-loaded.

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

Completeness4/5

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

An output schema exists, so return format need not be explained, yet the description still notes the request_id. For a 3-param destructive tool with 0% schema coverage, the description covers the essential invocation semantics and the error-forcing behavior. Minor gap: it doesn't clarify whether pool_names and delete_all can be combined.

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

Parameters4/5

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

Schema coverage is 0%, so the description must carry parameter meaning. It explains the mutual exclusivity of pool_names vs delete_all (though not stated as exclusive, it says 'or') and clarifies purge semantics ('force deletion even with errors'), which the schema default of false does not convey.

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

Purpose5/5

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

Specific verb (Delete) and resource (worker pool(s)), with the scope constraint made explicit. Among siblings like skypilot_pool_apply and skypilot_cluster_down, the resource (worker pool) and operation (delete) are unambiguous.

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

Usage Guidelines3/5

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

The description implies usage through the parameter guidance ('Specify pool_names or set delete_all=True'), which tells the agent how to invoke but not when to prefer this over alternatives. No explicit when-to-use or prerequisites are stated.

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

skypilot_pool_download_logsB
Read-only

Download worker pool logs to a local directory. Optionally filter by targets ('controller', 'load_balancer', 'replica') and worker_ids.

ParametersJSON Schema
NameRequiredDescriptionDefault
tailNo
targetsNo
local_dirYes
pool_nameYes
worker_idsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

readOnlyHint=true already declares this as a safe read, so the burden is lower. The description adds that logs are written to a local directory and that filtering is optional, but does not mention overwrite behavior, whether the local dir is created, or how much is downloaded by default (tail is unexplained).

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

Conciseness4/5

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

Two tight sentences, front-loaded with the action and destination. No filler, though the second sentence packs two filter parameters without explaining the tail parameter at all.

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

Completeness3/5

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

An output schema exists so return values need not be explained. But with 5 parameters at 0% schema coverage and no annotations beyond readOnly, the description leaves tail, pool_name, and local_dir semantics unstated, which is a gap for a download tool.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate; it supplies the allowed values for targets ('controller', 'load_balancer', 'replica') and mentions worker_ids filtering. However pool_name, local_dir, and especially tail (a numeric limit) remain undocumented in both description and schema.

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

Purpose4/5

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

Specific verb+resource: 'Download worker pool logs to a local directory' clearly states what the tool does and its destination. It implicitly separates itself from related siblings by scoping to 'worker pool' logs, though it does not explicitly name the sibling variants (pool_logs, serve_download_logs, etc.).

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

Usage Guidelines2/5

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

No when-to-use guidance, no exclusions, and no alternatives named among the many log/download siblings (skypilot_pool_logs, skypilot_download_logs, skypilot_serve_download_logs). The mention of optional filtering is parameter guidance, not usage routing.

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

skypilot_pool_logsA
Read-only

Get a snapshot of logs from a worker pool. Target can be 'controller', 'load_balancer', or 'replica'. Optionally specify a worker_id. Returns the last N lines (default 100, set to 0 for all). Does not stream/follow.

ParametersJSON Schema
NameRequiredDescriptionDefault
tailNo
targetNocontroller
pool_nameYes
worker_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

With only readOnlyHint=true in annotations, the description carries meaningful extra burden and delivers: it discloses snapshot (non-streaming, non-following) semantics and the tail=0-means-all special case. It doesn't state permission requirements or size/cost limits, but the behavioral profile is solidly richer than the annotation alone.

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

Conciseness5/5

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

Four short sentences, front-loaded with the verb and resource, then target, then worker_id, then tail behavior and the streaming caveat. No filler; every sentence adds information an agent needs.

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

Completeness4/5

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

For a 4-parameter read tool with an output schema (so return values need not be described), the description covers target, worker_id, tail, and streaming semantics well. It leaves open how worker_id interacts with target (e.g. whether a replica id is required for that target), which is the main remaining gap.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does: it enumerates the three valid target values (controller, load_balancer, replica), explains worker_id's optionality, and gives tail's default and the non-obvious 0=all convention. Only pool_name semantics go unexplained, which is self-evident.

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

Purpose4/5

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

States a specific verb and resource ('Get a snapshot of logs from a worker pool') and enumerates the valid targets. It is clear on its own, but it never names the nearest sibling (skypilot_pool_download_logs) or otherwise explicitly separates itself from the other log tools, so it stops short of a 5.

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

Usage Guidelines3/5

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

There is no explicit when/when-not guidance or sibling routing. The closest thing is the implicit distinction created by 'snapshot' and 'Does not stream/follow', which signals this is the pull-once variant rather than a streaming/tail tool, but the agent must infer that against pool_download_logs, serve_logs, and the tail_* tools.

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

skypilot_pool_statusA
Read-only

Get the status of worker pools. Returns pool names, worker counts, statuses, and resource information. If no pool_names provided, returns all pools.

ParametersJSON Schema
NameRequiredDescriptionDefault
pool_namesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so safety is covered. The description adds that status, counts, and resource information are returned, but this largely duplicates the output schema. The default all-pools behavior is a useful behavioral detail, though no auth/rate-limit 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.

Conciseness4/5

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

Three short sentences, front-loaded with purpose followed by return contents and parameter behavior. No superfluous language, though it could arguably combine the last two sentences for tighter structure.

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

Completeness4/5

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

For a simple read-only status tool with an existing output schema and one optional parameter, the description covers purpose, return contents, and default behavior adequately. The main gap is explicit when-to-use guidance versus sibling pool tools.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must carry the load. It explains the only parameter's effect clearly: providing pool_names filters results, omitting them returns all pools. It does not specify the expected string format, but the parameter name and behavior are well covered.

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

Purpose5/5

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

States a specific verb ('Get the status') and resource ('worker pools'), and describes the returned data. An agent can easily distinguish this from siblings like pool_apply, pool_down, and pool_logs, which perform different actions.

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

Usage Guidelines2/5

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

Provides a default-behavior note ('If no pool_names provided, returns all pools') but no explicit guidance on when to use this tool versus alternatives such as pool_logs, pool_apply, or cluster_status. Usage is only implied by the tool name.

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

skypilot_realtime_gpu_availabilityA
Read-only

Get real-time GPU availability in a Kubernetes cluster. Shows which GPUs are currently available and their quantities. Filter by GPU name or minimum quantity. Set is_ssh to filter by SSH-based (True) or Kubernetes-based (False) infrastructure, or leave unset for all.

ParametersJSON Schema
NameRequiredDescriptionDefault
is_sshNo
contextNo
name_filterNo
quantity_filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

Annotations declare readOnlyHint=true, so the safety profile is covered. The description reveals it queries a live cluster and shows current quantities, but says nothing about refresh cadence, cost/latency of the Kubernetes query, or whether results are cached. For a 'real-time' tool, that's a notable gap.

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

Conciseness4/5

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

Three sentences, all substantive, front-loaded with the core purpose. Efficient, though the is_ssh sentence is a bit dense with parenthetical booleans.

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

Completeness4/5

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

An output schema exists, so return-value explanation isn't required. The description covers the query scope and three of four parameters. Missing only the context parameter's meaning, which is minor given the tool's otherwise clear scope.

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

Parameters3/5

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

Schema description coverage is 0%, so the description carries the burden and compensates partially by explaining is_ssh's boolean semantics fully. However, context, name_filter, and quantity_filter receive no description beyond their names – name_filter's matching rules (substring? exact?) and quantity_filter's semantics (minimum available count) are not clarified.

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

Purpose5/5

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

States a specific verb (Get) and resource (real-time GPU availability) with context (in a Kubernetes cluster). Explicitly distinguishes from the Slurm sibling via the Kubernetes qualifier, so an agent can pick it correctly.

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

Usage Guidelines3/5

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

Describes filtering capabilities ('Filter by GPU name or minimum quantity') and explains the is_ssh parameter's semantics, implying usage. But there's no explicit when-to-use guidance relative to alternatives like skypilot_list_accelerators or skypilot_list_accelerator_counts.

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

skypilot_realtime_slurm_gpu_availabilityA
Read-only

Get real-time GPU availability in a Slurm cluster. Shows which GPUs are currently available and their quantities. Filter by GPU name, minimum quantity, or Slurm cluster name.

ParametersJSON Schema
NameRequiredDescriptionDefault
name_filterNo
quantity_filterNo
slurm_cluster_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds 'real-time' and the output content (GPUs and quantities), which are useful behavioral details, but it omits rate limits, auth, or data freshness guarantees.

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

Conciseness5/5

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

Three short sentences, front-loaded with the core purpose. No wasted words; each sentence adds a distinct piece of information.

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

Completeness4/5

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

The description covers purpose, output summary, and all filters. With an output schema present and annotations covering read-only safety, it is largely complete, though it could clarify how multiple filters combine or the format of the cluster name.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate. It maps each of the three filters to its purpose (GPU name, minimum quantity, Slurm cluster name), adding meaningful semantics beyond the bare parameter names, though it does not specify matching syntax or defaults.

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

Purpose5/5

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

States a specific verb ('Get real-time GPU availability') and resource ('Slurm cluster'), and the scope 'Slurm' distinguishes it from the sibling realtime_gpu_availability tool. An agent can identify its purpose without opening the schema.

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

Usage Guidelines2/5

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

Provides no explicit when-to-use or when-not-to-use guidance. It does not mention alternatives such as skypilot_realtime_gpu_availability or list_accelerators, nor prerequisites like authentication.

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

skypilot_reload_configA
Idempotent

Reload the SkyPilot client-side configuration from ~/.sky/config.yaml. Use after making manual changes to the config file.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare idempotentHint=true, so the safety profile is partly covered. The description adds the source location it re-reads from, but says nothing about failure modes, permissions, or behavior if the file is absent.

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

Conciseness5/5

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

Two short sentences, action first, guidance second, with no filler or redundancy.

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

Completeness4/5

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

An output schema exists so return values need not be explained, and this is a simple zero-argument operation. The definition is essentially complete, though it omits any note on what happens if the config file is missing or malformed.

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

Parameters4/5

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

The tool takes zero parameters, so baseline is 4. There is nothing for the description to disambiguate, and it introduces no misleading parameter language.

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

Purpose5/5

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

States a specific verb ('Reload'), the exact resource ('SkyPilot client-side configuration'), and even the source path ('~/.sky/config.yaml'). No sibling tool in the list deals with config reloading, so the agent can distinguish it cleanly.

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

Usage Guidelines4/5

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

Gives an explicit use trigger: 'Use after making manual changes to the config file.' That clearly tells the agent when to invoke it, though it offers no when-not conditions or named alternatives.

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

skypilot_serve_downA
Destructive

Tear down service(s). Specify service_names or set delete_all=True. Set purge=True to force deletion even with errors. Returns a request_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
purgeNo
delete_allNo
service_namesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, so the safety profile is covered. The description adds two useful behavioral facts not in the annotations: the purge behavior (force deletion despite errors) and that a request_id is returned. It does not disclose whether teardown is reversible or what errors trigger the purge path.

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

Conciseness5/5

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

Three sentences, front-loaded with the primary action, then the targeting options, then the escape hatch and return value. Zero filler.

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

Completeness4/5

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

For a three-parameter destructive tool with an output schema (so return-value detail is omitted correctly) and destructiveHint coverage, the description supplies the decisions an agent must make: how to target services and when to force deletion. The main remaining gap is the absence of usage guidance relative to sibling teardown tools.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must carry parameter meaning and it does: it explains that service_names and delete_all are alternative selection modes and that purge=True forces deletion despite errors. Defaults and types come from the schema. The description does not mention that all three parameters are optional or what the default behavior is with no arguments.

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

Purpose4/5

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

Clear verb+resource ('Tear down service(s)') that distinguishes it from siblings like skypilot_serve_status or skypilot_serve_logs. The phrasing 'tear down' is slightly informal versus the sibling skypilot_serve_up, but the intent is unambiguous.

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

Usage Guidelines3/5

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

The description states the two alternative targeting modes ('Specify service_names or set delete_all=True'), which tells the agent how to use the tool but not when. There is no explicit condition distinguishing when to use this versus skypilot_serve_terminate_replica.

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

skypilot_serve_download_logsA
Read-only

Download service logs to a local directory. Optionally filter by targets ('controller', 'load_balancer', 'replica') and replica_ids.

ParametersJSON Schema
NameRequiredDescriptionDefault
tailNo
targetsNo
local_dirYes
replica_idsNo
service_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

readOnlyHint=true is already declared, and the description usefully adds that the output lands in a caller-specified local directory (a local side effect not conveyed by the annotation). It does not disclose overwrite behavior, whether files are appended or replaced, or any auth/scope requirements for the target service, which matters for a 5-parameter tool.

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

Conciseness5/5

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

Two short sentences, front-loaded with the core action and followed immediately by the optional filters. No filler, no repetition of the name or title.

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

Completeness3/5

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

An output schema exists so return values need not be described, and the annotation covers the safety profile. The gap is that half the parameters (tail, local_dir, service_name) are unexplained and there is no routing guidance relative to the similarly named log-viewing siblings, leaving the agent to infer key behavior.

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

Parameters3/5

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

Schema description coverage is 0% and there are no enums in the schema, yet the description supplies the allowed target values ('controller', 'load_balancer', 'replica') and the purpose of replica_ids, which is genuine added meaning. It still leaves tail, local_dir, and service_name semantics entirely undocumented in both places.

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

Purpose4/5

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

States a specific verb and resource ('Download service logs to a local directory'), which clearly distinguishes it as a retrieval-to-disk operation rather than a viewing operation. However, it never names the close sibling skypilot_serve_logs, so an agent must infer the download-vs-display distinction on its own.

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

Usage Guidelines3/5

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

The description explains optional filtering by targets and replica_ids, which hints at when the filters are useful, but it gives no explicit when-to-use guidance and never contrasts itself with skypilot_serve_logs or skypilot_serve_status. Usage is implied by the 'download to a local directory' framing rather than stated.

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

skypilot_serve_logsA
Read-only

Get a snapshot of logs from a service component. Target can be 'controller', 'load_balancer', or 'replica'. When target is 'replica', optionally specify replica_id. Returns the last N lines (default 100, set to 0 for all). Does not stream/follow.

ParametersJSON Schema
NameRequiredDescriptionDefault
tailNo
targetNocontroller
replica_idNo
service_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

readOnlyHint already declares the safe-read profile, and the description adds real context beyond it: 'snapshot' semantics, 'Does not stream/follow', and tail=0 meaning all lines. That clarifies non-streaming behavior an agent needs. It stops short of noting anything about permissions or rate limits, but for a read-only log fetch that is minor.

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

Conciseness5/5

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

Four short sentences, zero filler, front-loaded with the purpose before constraints. Every sentence adds actionable information.

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

Completeness4/5

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

An output schema exists, so return-shape detail is not required, and the parameter behavior around target/replica_id/tail is well covered. The only gap is not routing the agent away from the similarly-named download-logs sibling.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it largely does: it enumerates target values ('controller', 'load_balancer', 'replica'), explains tail (default 100, 0 = all) and the replica_id conditionality. Only service_name goes unmentioned, though its meaning is self-evident.

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

Purpose4/5

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

Clear specific verb+resource: 'Get a snapshot of logs from a service component.' It scopes to a specific component (with 'controller'/'load_balancer'/'replica' targets), which distinguishes it from generic job/pool log tools. However, it does not explicitly differentiate itself from the close sibling skypilot_serve_download_logs, which a reader might confuse with it.

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

Usage Guidelines3/5

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

It gives conditional guidance for one parameter ('When target is replica, optionally specify replica_id'), which is genuinely useful. But it never states when to use this tool versus siblings like skypilot_serve_download_logs or skypilot_api_server_logs, so selection context is only implied.

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

skypilot_serve_statusA
Read-only

Get the status of services. Returns service names, statuses, replica counts, endpoint URLs, and more. If no service_names provided, returns all services.

ParametersJSON Schema
NameRequiredDescriptionDefault
service_namesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations declare readOnlyHint=true, so safety is already covered. The description adds the returned fields (names, statuses, replica counts, endpoint URLs), but since an output schema exists, this is partly redundant; no pagination, freshness, or error behavior is disclosed.

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

Conciseness4/5

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

Three tight sentences with the core action front-loaded and the filter default placed last. No filler, though the 'and more' phrasing is vague.

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

Completeness4/5

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

For a read-only status tool with an output schema present, the definition covers the action, the filter default, and the return shape adequately. Only cross-tool routing and pagination/edge-case behavior are unaddressed.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must carry the burden for the single parameter. It explains that service_names acts as a filter and that omitting it returns all services, adding meaning beyond the bare anyOf/null schema.

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

Purpose4/5

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

States a specific verb+resource ('Get the status of services'), so an agent immediately understands the operation. However, it does not differentiate itself from sibling status tools like skypilot_pool_status or skypilot_api_status, nor from serve siblings like skypilot_serve_logs.

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

Usage Guidelines3/5

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

The clause 'If no service_names provided, returns all services' implies the filtering use case, but there is no explicit when-to-use versus alternatives (e.g., when to check serve_status vs serve_logs vs cluster_status). Usage is implied rather than stated.

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

skypilot_serve_terminate_replicaA
Destructive

Terminate a specific replica of a service. Set purge=True to force termination even with errors. Returns a request_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
purgeNo
replica_idYes
service_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

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

The destructiveHint annotation already signals that this is a destructive operation. The description adds useful behavioral context beyond that: purge=True overrides errors during termination, and the call returns a request_id. It does not explain graceful shutdown or failure modes in detail, but it meaningfully enriches the annotation.

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

Conciseness5/5

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

Three short sentences with zero waste. The purpose is front-loaded, the purge behavior follows logically, and the return value is stated last. Every sentence earns its place.

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

Completeness4/5

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

An output schema exists, so the description need not detail return values, though it helpfully mentions request_id. The destructiveHint annotation covers the safety profile, and the description covers the core action and purge behavior. Missing details about prerequisites or post-termination service state are minor for this narrow operation.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry parameter meaning. It explains purge well ('force termination even with errors') but says nothing about service_name or replica_id beyond their self-evident names and the phrase 'replica of a service'. This is adequate but leaves some gaps for a low-coverage schema.

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

Purpose4/5

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

The description gives a specific verb ('Terminate') and a precise resource ('a specific replica of a service'), making the core action unambiguous. However, it does not explicitly differentiate itself from sibling operations like skypilot_serve_down or skypilot_serve_update, so it stops short of the top score.

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

Usage Guidelines2/5

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

The description says nothing about when to choose this tool over alternatives such as terminating the whole service with skypilot_serve_down. The only conditional guidance is for the purge parameter, which is parameter-level rather than tool-selection guidance.

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

skypilot_serve_upB

Launch a new service. Accepts a SkyPilot task YAML string with a service section defining replicas, readiness probe, etc. Returns a request_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_yamlYes
service_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations indicate an open-world, non-destructive operation. The description adds that it returns a request_id, which is useful behavioral context. It does not, however, disclose side effects, resource creation implications, or authentication needs beyond what annotations cover.

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

Conciseness4/5

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

The description is two sentences and front-loads the primary action. It is efficient and avoids unnecessary detail, though the second sentence could be slightly more informative about the return value's purpose.

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

Completeness3/5

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

Given that an output schema exists, the description need not explain return values in detail, but it does provide the request_id. However, with 0% schema coverage for two required parameters, the description is insufficient to fully understand how to properly provide task_yaml and service_name.

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

Parameters2/5

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

Schema description coverage is 0%, meaning neither parameter has a description in the schema. The description mentions task_yaml and service_name, providing minimal semantics for task_yaml but none for service_name. This does not compensate for the lack of schema documentation.

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

Purpose4/5

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

The description states a specific verb and resource ('Launch a new service') and clarifies the expected input format (a SkyPilot task YAML string with a service section). It doesn't explicitly distinguish itself from the sibling tool skypilot_serve_update, but the word 'new' implies the distinction.

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

Usage Guidelines3/5

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

Usage is implied: use this to launch a new service. However, the description does not provide explicit guidance on when to use this versus alternatives like skypilot_serve_update or skypilot_local_up, nor does it mention prerequisites or exclusions.

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

skypilot_serve_updateB

Update an existing service with a new task configuration. Set mode to 'rolling' (default) or 'blue_green'. Returns a request_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNorolling
task_yamlYes
service_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=false and openWorldHint=true. The description adds the mode semantics and notes a request_id is returned, but says nothing about deployment behavior, rollback, or whether a rolling update can fail mid-way. Modest value beyond the annotations.

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

Conciseness4/5

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

Three lean sentences with the core action front-loaded and no filler. Efficient, though the return-value note is slightly redundant given an output schema exists.

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

Completeness3/5

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

The output schema covers the return value and annotations cover the safety profile, so those are not needed. However, for a mutation tool with 0% param coverage, the description omits the task_yaml format, the meaning of service_name, and any failure/reversibility context.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry parameter meaning. It documents only 'mode' (rolling default / blue_green) and leaves both required parameters, task_yaml and service_name, entirely unexplained, including the format of the YAML config. It does not compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb (Update) and resource (an existing service) plus the operative input (a new task configuration). It distinguishes itself conceptually from skypilot_serve_up (create) and skypilot_serve_down, though it never names a sibling to sharpen the boundary.

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

Usage Guidelines3/5

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

The mode options ('rolling' default vs 'blue_green') give some operational guidance, but there is no statement of when to pick this over skypilot_serve_up, serve_down, or terminate_replica, nor any prerequisites or exclusions. Usage is only implied.

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

skypilot_slurm_node_infoC
Read-only

Get resource information for all nodes in a Slurm cluster. Shows node name, partition, state, GPU type, total/free GPUs, vCPU count, and memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
slurm_cluster_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safety profile is clear. The description adds the return field list, which is useful context, but does not disclose other behavioral traits such as pagination, authentication needs, 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.

Conciseness5/5

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

Two sentences with zero waste, front-loading the purpose and following with concrete output fields. Nothing is redundant or verbose.

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

Completeness3/5

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

An output schema exists, so return values are formally covered, and the description helpfully enumerates them. However, the sole input parameter is left unexplained, making the definition incomplete for correct invocation despite the tool's simplicity.

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

Parameters1/5

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

With only one parameter and 0% schema description coverage, the description carries the full burden of explaining the parameter. It never mentions slurm_cluster_name, its meaning, allowed values, or the effect of its null default, leaving the parameter entirely undocumented.

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

Purpose4/5

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

States a specific verb ('Get') and resource ('resource information for all nodes in a Slurm cluster'), and lists the fields it returns. The Slurm scope distinguishes it from the Kubernetes analog, but it does not explicitly name alternatives or differentiate from broader status tools like skypilot_cluster_status.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as skypilot_kubernetes_node_info, skypilot_realtime_slurm_gpu_availability, or skypilot_cluster_status. Usage is only implied by the resource scope, with no exclusions or prerequisites stated.

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

skypilot_ssh_downB
Destructive

Tear down Kubernetes cluster on SSH targets. Optionally specify a specific infra name. Returns a request_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
infraNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, so the tearing-down semantics are corroborated rather than contradicted. The description adds the ssh-target scoping and the request_id return, but says nothing about irreversibility, what happens to running work, or auth requirements – modest added context only.

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

Conciseness5/5

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

Two short sentences, front-loaded with the action and target, then the optional parameter and the return value. No filler.

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

Completeness3/5

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

An output schema exists so the return value need not be explained beyond the request_id note, which it provides. However, with only one destructive action, no usage context, and no auth or side-effect detail, the definition remains thin for a cluster-teardown operation.

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

Parameters4/5

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

Schema coverage is 0% and the description at least explains what the single 'infra' parameter does ('Optionally specify a specific infra name') and that it is optional. That compensates meaningfully for the undocumented schema, though no format or naming-convention detail is given.

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

Purpose4/5

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

States a specific verb ('Tear down') and resource ('Kubernetes cluster on SSH targets'), which clearly distinguishes it from the parallel skypilot_cluster_down and skypilot_ssh_up siblings via the 'SSH targets' scope. It's specific but doesn't explicitly name a sibling it differs from, keeping it at a 4.

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

Usage Guidelines2/5

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

The description notes the optional infra name but gives no when-to-use context, no prerequisites, and no mention of the corresponding skypilot_ssh_up as the natural counterpart. An agent must infer the usage scenario from the name alone.

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

skypilot_ssh_upB

Deploy SSH node pools defined in ~/.sky/ssh_node_pools.yaml. Optionally specify a specific infra name or config file path. Returns a request_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNo
infraNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavior beyond that by noting it returns a request_id, implying an async/queued operation an agent must track. However, it omits auth requirements and how the request_id is consumed (e.g., via get_request).

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

Conciseness4/5

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

Three short sentences, front-loaded with the core action and default source file, followed by optional-parameter guidance and the return note. No filler; slightly more could be said about request tracking, but it is tight.

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

Completeness3/5

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

An output schema exists, so return values need not be explained (though request_id is mentioned anyway). For an async deploy tool, the description leaves unclear how to follow up on the request and what environment/auth it needs, which an agent would want.

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

Parameters3/5

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

Schema description coverage is 0%, so the schema itself documents nothing about 'file' or 'infra'. The description loosely maps them ('a specific infra name or config file path') and marks them optional, which partially compensates, but it lacks format, default behavior, or the relationship between the two parameters.

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

Purpose4/5

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

States a specific verb (deploy) plus the exact resource (SSH node pools) and its default source file, which lets an agent separate it from the many cluster/serve/pool siblings. It does not explicitly name skypilot_ssh_down as its counterpart, but the action is unambiguous.

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

Usage Guidelines3/5

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

The description implies usage through the optional 'infra name or config file path' hints, but never states when to prefer this over alternatives like skypilot_local_up or skypilot_pool_apply, nor any prerequisites or when-not-to-use conditions. Usage is implied rather than spelled out.

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

skypilot_status_kubernetesA
Read-only

[Experimental] Get all SkyPilot clusters and jobs in a Kubernetes cluster. Includes managed jobs and services. Returns cluster info, managed job records, and context information.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds genuine value beyond that by disclosing the data scope (managed jobs, services, cluster info, context info) and flagging the tool as [Experimental], though it omits pagination or rate-limit behavior.

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

Conciseness4/5

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

Front-loaded with the core purpose in the first sentence and kept to three sentences. Slight redundancy between 'Includes managed jobs and services' and 'Returns ... managed job records', but overall efficient.

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

Completeness4/5

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

With zero parameters, an output schema, and safety annotations, the description covers everything needed to invoke it correctly and understand its return scope. The only gap is not routing the agent away from the similar skypilot_cluster_status sibling.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to document beyond the schema. Baseline 4 applies; no parameter-level meaning is missing.

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

Purpose4/5

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

States a specific verb ('Get') and resource (SkyPilot clusters and jobs) scoped to a Kubernetes cluster, which distinguishes it from the generic skypilot_cluster_status sibling. However, it never names that sibling explicitly, so differentiation relies on the agent inferring the K8s scoping.

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

Usage Guidelines3/5

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

Usage is implied by the scope ('in a Kubernetes cluster'), so an agent can guess this is the K8s-specific status check. There is no explicit when-to-use versus skypilot_cluster_status or the many other status siblings, and no exclusions or prerequisites.

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

skypilot_storage_deleteB
Destructive

Delete a SkyPilot-managed storage object (cloud bucket). Returns a request_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

The destructiveHint annotation already flags the write/destructive nature, so the bar is lower. The description usefully adds that it returns a request_id, implying an async operation the agent may need to poll via skypilot_get_request, but it says nothing about irreversibility, permissions, or what happens to bucket contents.

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

Conciseness4/5

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

Two short sentences, front-loaded with the action and resource, with no filler. It is efficient, though the trailing detail about request_id could be folded more usefully into behavioral context.

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

Completeness3/5

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

An output schema exists, so return values need not be explained. However, for a destructive single-parameter tool, the description omits prerequisites, irreversibility, and how to use the returned request_id, leaving meaningful gaps.

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

Parameters2/5

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

Schema coverage is 0% and the single required parameter 'name' has no description in the schema or the tool description. The description implies 'name' identifies the storage object but does not say whether it is the storage name reported by skypilot_storage_ls, a bucket name, or an ID.

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

Purpose4/5

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

States a specific verb ('Delete') and resource ('SkyPilot-managed storage object (cloud bucket)'), which is clearly distinguishable from siblings like skypilot_storage_ls and skypilot_volume_delete. It does not explicitly name a sibling, but the resource is unambiguous.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives (e.g., storage_ls to inspect first) and no prerequisites or warnings. The only implicit cue is the destructive nature, which is already carried by annotations.

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

skypilot_storage_lsA
Read-only

List all SkyPilot-managed storage objects (cloud buckets).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

readOnlyHint=true already establishes this is a safe read operation, and the description adds the useful scoping detail that the objects are cloud buckets. It does not describe ordering, pagination, or whether empty results are possible, but with annotations covering safety and an output schema present, a 3 is appropriate.

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

Conciseness5/5

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

A single front-loaded sentence with no filler; every word (SkyPilot-managed, storage objects, cloud buckets) narrows scope. Nothing is wasted.

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

Completeness4/5

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

Given zero parameters, a 100%-covered (empty) schema, and a dedicated output schema, the description needn't explain return values. It is essentially complete for a simple list tool, only lacking sibling disambiguation.

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

Parameters4/5

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

The tool takes zero parameters, which is the baseline for a 4. There is nothing further the description could add about inputs, and no arguments exist that need documenting.

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

Purpose4/5

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

States a specific verb (List) and resource (SkyPilot-managed storage objects), then clarifies with 'cloud buckets' so the agent knows exactly what is returned. It clearly differs from skypilot_storage_delete, though it doesn't verbally distinguish itself from the similarly-named skypilot_volume_ls sibling.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance, prerequisites, or named alternative. The listing intent is implied by 'List all,' but the agent must infer when this is preferable to skypilot_volume_ls or other status tools.

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

skypilot_stream_and_getA
Read-only

Wait for a SkyPilot request to complete while capturing its log output. Unlike skypilot_get_request (which only returns the final result), this also returns the streaming logs produced during execution — useful for long-running operations like launch, exec, or managed job launch. Returns a JSON object with 'result' and 'logs' fields. Set tail to limit how many trailing log lines are captured (default: all). Set follow=False to return immediately with whatever logs are available. Use log_path instead of request_id to stream from a specific log file on the API server.

ParametersJSON Schema
NameRequiredDescriptionDefault
tailNo
followNo
log_pathNo
request_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, lowering the bar, and the description still adds substantial context: the blocking/waiting nature, the returned shape ('result' and 'logs'), the tail default, and the follow=False immediate-return behavior. It doesn't cover edge cases like what happens on timeout or failure, but for a read-only streaming tool this is strong disclosure.

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

Conciseness5/5

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

Front-loaded with the core purpose, then sibling differentiation, then return shape, then parameter semantics in descending priority. Every sentence carries distinct information with no filler or redundancy.

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

Completeness5/5

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

Has an output schema, read-only/open-world annotations, and a description that covers blocking behavior, return fields, and parameter semantics. For a 4-parameter read-only tool, an agent has everything needed to invoke it correctly.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must carry the load, and it explains three of four parameters meaningfully: tail (limits trailing log lines, default all), follow=False (returns immediately with available logs), and log_path (stream from a specific log file instead of request_id). request_id's role is implied by the overall purpose but not explicitly defined, keeping this just short of a 5.

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

Purpose5/5

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

States a specific verb and resource ('Wait for a SkyPilot request to complete while capturing its log output') and explicitly distinguishes itself from the sibling skypilot_get_request, which 'only returns the final result.' An agent can tell exactly what this does and how it differs from its closest sibling without opening any schema.

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

Usage Guidelines5/5

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

Names the alternative (skypilot_get_request) with the distinguishing condition, and gives concrete when-to-use guidance ('useful for long-running operations like launch, exec, or managed job launch'). The follow=False escape hatch and log_path path are also framed as conditional usage, leaving nothing to inference.

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

skypilot_tail_autostop_logsB
Read-only

Get autostop hook logs (autostop_hook.log) for a cluster. Shows the log output from the autostop hook. Returns the last N lines (default 100, set to 0 for all).

ParametersJSON Schema
NameRequiredDescriptionDefault
tailNo
cluster_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

readOnlyHint=true already tells the agent this is a safe read. The description adds genuinely useful behavior beyond that: the log file name and the tail-count semantics (default 100, 0 means all). It does not cover error cases or what happens for a nonexistent/stopped cluster.

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

Conciseness4/5

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

Three short sentences, front-loaded with purpose and then the tail behavior. No filler or repetition of the tool name.

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

Completeness3/5

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

An output schema exists, so return-value explanation is not needed. The description covers purpose and the key parameter, but omits sibling differentiation and usage context for a tool that sits among several log-retrieval siblings.

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

Parameters3/5

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

Schema description coverage is 0%, so the description has to carry the load. It does explain the non-obvious `tail` parameter (default 100, 0 = all lines), but `cluster_name` is left entirely to the schema/name inference. Partial compensation for the coverage gap.

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

Purpose4/5

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

States a specific verb and resource: retrieves the autostop hook log (autostop_hook.log) for a named cluster. The resource is concrete enough to separate it from the sibling skypilot_tail_provision_logs and skypilot_cluster_autostop, though it never names those alternatives explicitly.

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

Usage Guidelines2/5

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

The description says what it fetches but never says when to reach for it over siblings like skypilot_tail_provision_logs, skypilot_cluster_autostop, or skypilot_api_server_logs. No prerequisites or exclusion conditions are given.

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

skypilot_tail_provision_logsA
Read-only

Get provisioning logs (provision.log) for a cluster. Shows the log output from when the cluster was being provisioned. Optionally specify a worker node index for multi-node clusters. Returns the last N lines (default 100, set to 0 for all).

ParametersJSON Schema
NameRequiredDescriptionDefault
tailNo
workerNo
cluster_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

readOnlyHint=true already tells the agent this is a safe read. The description usefully adds the default tail (100) and the 'set to 0 for all' semantics, which is genuinely actionable behavior. But it says nothing about failure modes (e.g., cluster not provisioned, missing log file) or multi-worker default behavior, so the added value is moderate.

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

Conciseness5/5

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

Three crisp sentences, front-loaded with what the tool returns, then worker indexing, then the tail semantics. No filler or repetition.

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

Completeness4/5

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

Output schema exists, so return-value format need not be explained. For a read-only, 3-param log retrieval tool, the description covers purpose, both optional params' semantics, and defaults. It only lacks edge-case mention (e.g., what happens if no provision.log exists), a minor gap.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It does: explains worker is an optional node index for multi-node clusters, and tail defaults to 100 with 0 meaning all lines. cluster_name meaning is obvious. It doesn't clarify tail negative-value behavior or worker indexing base, but it substantially lifts the undocumented schema.

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

Purpose5/5

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

States a specific verb (get/tail) and resource (provisioning logs / provision.log) for a cluster, and clarifies this is provisioning-time output. Easily distinguished from siblings like skypilot_tail_autostop_logs, skypilot_pool_logs, and skypilot_api_server_logs by the 'provision.log' qualifier.

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

Usage Guidelines3/5

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

Implied usage: retrieve provisioning logs for a cluster, with optional worker index and tail count. But it doesn't state when to use this vs other log tools (autostop logs, api server logs), nor when not to use it, leaving the agent to infer from the log-type distinction alone.

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

skypilot_validateA
Read-only

Validate a task configuration without launching it. Checks that file paths (workdir, file_mounts) exist locally and that the task specification is valid on the server side. Raises an error if validation fails, returns success message otherwise.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_yamlYes
workdir_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior4/5

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

Goes beyond the readOnlyHint annotation by disclosing the two validation scopes (local path existence for workdir/file_mounts, plus server-side spec validation) and the failure contract ('raises an error if validation fails, returns success message otherwise'). This is genuinely useful behavioral context and is consistent with readOnlyHint=true.

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

Conciseness4/5

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

Two tight sentences with the operation and its scope front-loaded. Efficient, though the parenthetical '(workdir, file_mounts)' adds a detail that does not map cleanly to any actual parameter.

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

Completeness4/5

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

An output schema exists, so return values need not be described, and the tool is a simple 2-parameter validator. The main gap is unexplained parameter semantics, but the error/success contract and validation scopes make it adequate for correct invocation.

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

Parameters2/5

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

Schema description coverage is 0% and the description never explains task_yaml or workdir_only. It mentions 'workdir' and 'file_mounts,' but file_mounts is not even a parameter here, so the reader gets no real guidance on what task_yaml must contain or what workdir_only toggles.

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

Purpose4/5

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

States a specific verb+resource ('Validate a task configuration') and immediately scopes it with 'without launching it,' which distinguishes it from launch tools. It does not, however, explicitly distinguish itself from the similarly-named sibling skypilot_volume_validate, so the differentiation is only partial.

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

Usage Guidelines3/5

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

'Without launching it' implies the pre-flight use case, so usage is inferable, but there is no explicit when-to-use or when-not, and no reference to the alternative skypilot_volume_validate (which validates a different resource). The agent must infer the routing.

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

skypilot_volume_applyA

Create or register a volume. Accepts a volume configuration as a JSON/dict with fields: name, type ('k8s-pvc' or 'runpod-network-volume'), size (e.g. '100GB'), and optional fields like infra, labels, use_existing, config. Returns a request_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
sizeNo
infraNo
configNo
labelsNo
volume_typeYes
use_existingNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare destructiveHint=false and openWorldHint=true, so the safety profile is partly covered. The description adds that it 'Returns a request_id', hinting at an async workflow, but it does not say the caller must poll via skypilot_get_request, nor does it state permission or idempotency behavior for the 'register' path.

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

Conciseness4/5

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

Two sentences, front-loaded with the action and followed by the parameter inventory; nothing is wasted. The field list is dense but each item earns its place given 0% schema coverage.

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

Completeness4/5

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

Output schema exists, so the return value need not be explained in depth, and the description's brief request_id note suffices. For a mutating operation with 0% schema coverage, it covers the parameters adequately, though it omits the async follow-up step and register-vs-create semantics.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must carry the load, and it does: it enumerates all fields (name, type, size, infra, labels, use_existing, config), marks the optional ones, and supplies enum-like values for type and a size example ('100GB') not present in the schema. Minor gap: the distinction between volume_type and the described 'type' field could confuse.

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

Purpose4/5

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

States a specific verb+resource ('Create or register a volume') that an agent can clearly distinguish from skypilot_volume_ls, skypilot_volume_delete, and skypilot_volume_validate. It does not explicitly name those siblings, but the create verb makes the role unambiguous.

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

Usage Guidelines3/5

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

Implied usage is clear from 'Create or register', but there is no explicit guidance on when to use this versus skypilot_volume_validate (validation first?) or when to prefer registering vs creating. No when-not or prerequisite information is given.

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

skypilot_volume_deleteA
Destructive

Delete one or more volumes by name. Set purge=True to force deletion from the database even if the cloud deletion fails. Returns a request_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
namesYes
purgeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, so the safety profile is covered. The description adds real behavioral context beyond that: the two-layer deletion model (cloud vs. database) and the fact that purge overrides a failed cloud delete. It does not mention auth needs or reversibility, so it stops short of 5.

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

Conciseness5/5

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

Three short sentences, zero filler, with the core action front-loaded and the non-obvious purge behavior immediately after. Every sentence carries information.

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

Completeness4/5

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

With an output schema present, the description needn't explain returns (it mentions request_id as a bonus). For a destructive tool with annotations and an output schema, the remaining gap is what happens to resources still using the volume and whether deletion is reversible, but the core call semantics are complete.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it largely does: purge=True is explained precisely (force DB deletion even if cloud deletion fails), and 'by name' clarifies the names argument. The array-of-names semantics could be spelled out further, but the key parameter is well covered.

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

Purpose4/5

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

States a specific verb (delete) and resource (volumes), with scope ('one or more ... by name'). It is clearly distinct from the volume_apply/ls/validate siblings, though it never names or contrasts them explicitly, which caps it below 5.

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

Usage Guidelines3/5

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

The description gives useful guidance on the purge flag (use it to force DB deletion when cloud deletion fails), but it never states when to prefer this tool over alternatives or any prerequisites/exclusions. Usage is implied rather than spelled out.

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

skypilot_volume_lsA
Read-only

List all volumes. Set refresh=True to refresh volume state from cloud APIs before returning (slower but most up-to-date).

ParametersJSON Schema
NameRequiredDescriptionDefault
refreshNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already declares a safe read operation, so the description doesn't need to. It does add useful context: refresh=True queries cloud APIs for current state, with a performance cost. Missing details like return format or pagination are covered by the output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: the first states the core action, the second explains the only parameter. No wasted words, front-loaded with the primary purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values needn't be described. The description covers the tool's action and the sole parameter's behavior completely. A brief mention of when to choose this over skypilot_storage_ls would make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single boolean parameter, so the description must compensate. It explains exactly what refresh does, its default implication, and the slower-but-fresher trade-off. It doesn't state the default value explicitly, but the schema's default=false covers that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb+resource ('List all volumes') sufficient to distinguish it from siblings like skypilot_volume_apply and skypilot_volume_delete. However, no explicit contrast is drawn with skypilot_storage_ls, the closest neighbor, leaving minor ambiguity about volume vs. storage listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the refresh parameter's trade-off (slower but up-to-date), which implicitly advises when to use it. But it offers no guidance on when to use this tool versus skypilot_storage_ls or skypilot_volume_validate, leaving usage context only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

skypilot_volume_validateB
Read-only

Validate a volume configuration without creating it. Checks that the volume specification is valid on the server side. Raises an error if validation fails, returns success otherwise.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
sizeNo
infraNo
configNo
labelsNo
volume_typeYes
use_existingNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already signals a safe read, and the description adds non-obvious behavior: the server-side check, error-on-failure, and success-on-pass semantics. This gives the agent real behavioral context beyond annotations, though it says nothing about cost or latency of the server-side check.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences that front-load the core action and the key non-mutation constraint. No filler; slightly repetitive in restating 'valid/success/error' but efficient overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, and the description covers the success/error outcome. However, with 7 undocumented parameters at 0% schema coverage, an agent lacks enough guidance to construct a valid call without opening external references.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 7 parameters (2 required), yet the description explains none of them. It does not clarify what name, volume_type, size, infra, config, labels, or use_existing mean or which combinations are valid for validation, so the parameter semantics burden is entirely unmet.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (validate a volume configuration) and explicitly scopes it as 'without creating it,' which distinguishes it from the mutating skypilot_volume_apply sibling. It is clear and agent-usable, though it never names the alternative directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'without creating it' implies this is a dry-run check to run before an apply, but it never states when to prefer validation over skypilot_volume_apply, nor any prerequisites. Usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

skypilot_workspacesA
Read-only

List available SkyPilot workspaces. Returns workspace names and their configurations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the read-only safety profile is covered. The description adds that it returns names and configurations, but nothing about scoping, filtering, or ephemeral behavior beyond what the output schema provides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero waste, purpose front-loaded. Every sentence earns its place for a tool this simple.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the return format needn't be explained, and with zero parameters the contract is trivial. The definition is essentially complete; only a scoping note (e.g., per-user vs. global) is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so parameter semantics carry a baseline of 4. There is nothing for the description to disambiguate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List') and resource ('SkyPilot workspaces'), so the purpose is unambiguous. It doesn't differentiate from siblings, but no sibling in the list covers workspaces, so the risk of confusion is low.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool, no prerequisites, and no excluded conditions. The description simply asserts the operation without context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 70 tool updatesv0.1.0
    • First observedskypilot_api_cancel
    • First observedskypilot_api_info
    • First observedskypilot_api_login
    • First observedskypilot_api_logout
    • First observedskypilot_api_server_logs
    • First observedskypilot_api_start
    • First observedskypilot_api_status
    • First observedskypilot_api_stop
    • First observedskypilot_check
    • First observedskypilot_cluster_autostop
    • First observedskypilot_cluster_down
    • First observedskypilot_cluster_endpoints
    • First observedskypilot_cluster_exec
    • First observedskypilot_cluster_launch
    • First observedskypilot_cluster_start
    • First observedskypilot_cluster_status
    • First observedskypilot_cluster_stop
    • First observedskypilot_cost_report
    • First observedskypilot_dashboard
    • First observedskypilot_download_logs
    • First observedskypilot_enabled_clouds
    • First observedskypilot_get_request
    • First observedskypilot_job_cancel
    • First observedskypilot_job_logs
    • First observedskypilot_job_queue
    • First observedskypilot_job_status
    • First observedskypilot_jobs_dashboard
    • First observedskypilot_kubernetes_label_gpus
    • First observedskypilot_kubernetes_node_info
    • First observedskypilot_list_accelerator_counts
    • First observedskypilot_list_accelerators
    • First observedskypilot_local_down
    • First observedskypilot_local_up
    • First observedskypilot_managed_job_cancel
    • First observedskypilot_managed_job_download_logs
    • First observedskypilot_managed_job_launch
    • First observedskypilot_managed_job_logs
    • First observedskypilot_managed_job_queue
    • First observedskypilot_managed_job_queue_v1
    • First observedskypilot_optimize
    • First observedskypilot_pool_apply
    • First observedskypilot_pool_down
    • First observedskypilot_pool_download_logs
    • First observedskypilot_pool_logs
    • First observedskypilot_pool_status
    • First observedskypilot_realtime_gpu_availability
    • First observedskypilot_realtime_slurm_gpu_availability
    • First observedskypilot_reload_config
    • First observedskypilot_serve_down
    • First observedskypilot_serve_download_logs
    • First observedskypilot_serve_logs
    • First observedskypilot_serve_status
    • First observedskypilot_serve_terminate_replica
    • First observedskypilot_serve_up
    • First observedskypilot_serve_update
    • First observedskypilot_slurm_node_info
    • First observedskypilot_ssh_down
    • First observedskypilot_ssh_up
    • First observedskypilot_status_kubernetes
    • First observedskypilot_storage_delete
    • First observedskypilot_storage_ls
    • First observedskypilot_stream_and_get
    • First observedskypilot_tail_autostop_logs
    • First observedskypilot_tail_provision_logs
    • First observedskypilot_validate
    • First observedskypilot_volume_apply
    • First observedskypilot_volume_delete
    • First observedskypilot_volume_ls
    • First observedskypilot_volume_validate
    • First observedskypilot_workspaces

TDQS

B3.3/5.0

Scored across 70 tools

Disambiguation3/5

Most tools are well-scoped by action+resource, but several near-duplicates exist: skypilot_managed_job_logs vs skypilot_managed_job_download_logs, skypilot_serve_logs vs skypilot_serve_download_logs, skypilot_pool_logs vs skypilot_pool_download_logs, and the v1/v2 managed_job_queue variants. An agent must read descriptions closely to pick the right 'get logs' vs 'download logs' tool.

Naming Consistency4/5

Strong, predictable prefix_service_action pattern throughout (e.g. skypilot_cluster_launch, skypilot_serve_up, skypilot_volume_delete). Minor inconsistencies like skypilot_workspaces (no action verb), skypilot_dashboard, and skypilot_optimize/validate/check lacking a clear resource prefix slightly break the pattern.

Tool Count2/5

70 tools is far too many for coherent agent selection. While SkyPilot's surface is genuinely broad (clusters, jobs, managed jobs, services, pools, volumes, storage, kubernetes, ssh, slurm), this exceeds a workable tool count and forces many overlapping variants.

Completeness4/5

Coverage is extensive across the SkyPilot domain: full cluster lifecycle, managed jobs, services, pools, volumes, storage, and infra checks. Minor gaps like cluster log streaming (only job/autostop logs) and no explicit cluster exec-cancel, but the surface is largely complete.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server that enables LLMs to run ANY code safely in isolated Docker containers.
    121
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that bridges MCP clients with local LLM services, enabling seamless integration with MCP-compatible applications through standard tools like chat completion, model listing, and health checks.
    -