Skip to main content
Glama
Ownership verified

Server Details

Control Plane (controlplane.com): deploy and operate workloads across AWS, GCP, Azure, and more.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
controlplane-com/ai-plugin
GitHub Stars
9

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.5/5 across 55 of 55 tools scored. Lowest: 3.7/5.

Server CoherenceA
Disambiguation5/5

Every tool targets a distinct resource/action pair (e.g., get_resource vs get_resource_schema, list_deployments vs list_workload_replicas) and descriptions clearly differentiate purposes. No two tools appear to do the same thing.

Naming Consistency5/5

All tools follow a verb_noun snake_case pattern (create_gvc, update_workload, list_resources, query_metrics) with consistent verbs. The few imperative verbs (browse, build, mount) still maintain the same verb-first structure.

Tool Count1/5

With 55 tools, this server far exceeds the typical well-scoped 3-15 tool range. While each tool appears purposeful, the sheer number creates selection overhead and falls into the extreme 50+ category on the rubric.

Completeness4/5

The surface covers nearly the full Control Plane lifecycle: CRUD for GVC, workload, identity, policy, volumeset, and domain, plus observability, templates, image builds, and Terraform. Minor gaps include referenced but missing configure_workload_* tools and no secret creation/deletion (by design).

Available Tools

55 tools
add_domain_portAdd a Domain Port ListenerA
Idempotent
Inspect

Add a new port listener to a domain. Minimal port is {number, protocol}; routes, cors, and tls are optional. Errors if a listener for that port number already exists — use the route/CORS/TLS tools to modify an existing listener instead. Recommended reading before first use: get_cpln_skill("domain") — the runbook for this tool family (read once per session).

ParametersJSON Schema
NameRequiredDescriptionDefault
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
portYesComplete port listener definition. Minimal valid listener: { "number": 443, "protocol": "http" }; routes, cors, and tls are optional.
domainYesFully qualified domain name.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior1/5

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

The description states 'Errors if a listener for that port number already exists', which implies a non-idempotent create operation (a second identical call fails). This directly contradicts the annotation idempotentHint=true. Aside from this error condition, no further behavioral traits (e.g., effects on domain status, LB requirements) are disclosed in the description itself.

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

Conciseness5/5

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

The description is three sentences, front-loaded with the primary action, and each sentence earns its place: minimal payload, duplicate-port error with alternative, and recommended reading. No redundancy or 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?

Given the tool's complexity (nested objects, optional routes/cors/tls) and the presence of a rich output schema, the description covers key context: duplicate error handling, alternative tool usage, and a runbook pointer. The port-number caveat (only 443/80 without LB) is left to the schema, which is acceptable. However, the idempotency contradiction prevents a perfect score.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are already thoroughly documented. The description adds only 'Minimal port is {number, protocol}; routes, cors, and tls are optional', which repeats what the schema's port.description already states. No new parameter-level insight is provided, so baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific action ('Add a new port listener to a domain') and distinguishes from siblings like add_domain_route and remove_domain_port. It also clarifies the minimal required port structure, making the tool's purpose unambiguous.

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

Usage Guidelines5/5

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

Explicitly tells the agent when NOT to use this tool: if a listener for that port number already exists, use route/CORS/TLS tools instead. It also recommends reading the domain runbook via get_cpln_skill('domain') before first use, providing clear alternative paths and prerequisites.

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

add_domain_routeAdd a Route to a Domain ListenerA
Idempotent
Inspect

Append a route entry to an existing port listener. Minimal route is {workloadLink}; omit prefix/regex to match /. Routes are matched by prefix (default) or regex; the new route must not collide with an existing one. Use update_domain_route to replace an existing entry. Recommended reading before first use: get_cpln_skill("domain") — the runbook for this tool family (read once per session).

ParametersJSON Schema
NameRequiredDescriptionDefault
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
routeYesRoute entry forwarding listener traffic to a workload. Minimal valid route: { "workloadLink": "//gvc/{gvc}/workload/{name}" }. All matchers are optional; omit prefix/regex to match /.
domainYesFully qualified domain name.
portNumberYesExisting listener port number to target.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior1/5

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

The description contradicts the idempotentHint annotation. It states 'the new route must not collide with an existing one,' meaning that attempting to add the same route twice would fail on the second call, which is not idempotent behavior. This is a direct conflict with 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?

The description is three sentences with no filler. It front-loads the core action, includes the key constraint (collision), points to the alternative tool, and gives a practical recommendation. 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?

The description provides key contextual details: appending to an existing listener, the collision rule, matching behavior (prefix/default or regex), and a pointer to the runbook. It does not explicitly mention prerequisites like needing a created domain or port listener, though 'existing port listener' implies that. Given the tool's complexity and rich schema, the description is nearly 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 100%, so the parameters are already well-documented. The description adds minimal extra meaning beyond the schema, such as 'omit prefix/regex to match /', but this is also present in the schema's route description. The description does not substantially enhance parameter understanding beyond the baseline.

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 uses a specific verb and resource: 'Append a route entry to an existing port listener.' It clearly states what the tool does and distinguishes it from the sibling tool update_domain_route by explicitly noting that update replaces an existing entry while this appends.

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

Usage Guidelines5/5

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

Explicitly states when to use this tool vs. alternatives: 'Use update_domain_route to replace an existing entry.' Also recommends reading the domain skill runbook before first use, providing clear context and a pointer to additional guidance.

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

browse_templatesBrowse Template CatalogA
Read-onlyIdempotent
Inspect

List the Control Plane Template Catalog — production-ready stacks (Postgres, Redis, Kafka, MongoDB, nginx, …) you can install instead of hand-authoring resources. Returns each template’s name, category, latest version, and whether it creates its own GVC. Reach for this first whenever the user wants a database, cache, queue, or other common service. Pass filter to narrow. Then call get_template for versions and the example values.yaml.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoOptional case-insensitive substring to narrow by name, category, or description (e.g. "database", "redis").

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description reinforces safety by using 'List.' Beyond that, it discloses return details ('name, category, latest version, and whether it creates its own GVC') and mentions filtering behavior. It does not add rate limits or pagination, but with strong annotations the extra behavior is sufficient.

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 compact and front-loaded: the main action and resource appear in the first clause. Every sentence contributes—purpose, return summary, usage guidance, and next-step pointer. No filler or repetition.

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

Completeness5/5

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

For a simple list/filter tool with one optional parameter and an output schema, the description covers purpose, return fields, filter usage, and the follow-up tool. It also benefits from complete annotations and output schema, so nothing critical 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 coverage is 100%, so the baseline is 3. The description only says 'Pass `filter` to narrow,' which adds no meaning beyond the schema's description of the filter as an optional case-insensitive substring. No additional parameter context is provided.

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 opens with a specific verb+resource: 'List the Control Plane Template Catalog.' It immediately distinguishes the tool from siblings like get_template and list_installed_templates by clarifying it's the catalog, not installed templates, and explicitly says 'Reach for this first whenever the user wants a database, cache, queue, or other common service.'

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?

Provides explicit usage context: 'Reach for this first...' and contrasts with hand-authoring resources. It also names the next step: 'Then call get_template for versions and the example values.yaml.' This gives clear when-to-use and a direct alternative.

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

build_imageBuild an Image from a Git RepositoryA
Destructive
Inspect

Build a container image on Control Plane from a GitHub or GitLab repository and push it to the org's private registry. No Docker daemon is involved: the service clones the repo, detects how to build it (Dockerfile when present), and always produces linux/amd64. Returns a buildId to read with get_image_build — the build keeps running after this call returns. ONLY repositories work here. To build a LOCAL FOLDER, tell the user to run cpln image build --remote --dir PATH --name NAME:TAG in their terminal — this server has no access to their filesystem. Building an existing NAME:TAG replaces that image. A private repository needs a one-time browser authorization per org; this tool returns the link when that is missing. Recommended reading before first use: get_cpln_skill("image") — the runbook for this tool family (read once per session).

ParametersJSON Schema
NameRequiredDescriptionDefault
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
tagYesTag for this build, e.g. "v1.2.0". Required — there is no default. Building an EXISTING tag REPLACES it, and any workload on that tag with dynamic-tag support redeploys onto the new image. Prefer a fresh tag.
nameYesImage name WITHOUT the tag, e.g. "my-app". The result is referenced in a workload as //image/NAME:TAG.
branchNoBranch to build. Omit for the repository's default branch.
noCacheNoRebuild every step, ignoring cached layers. Slower — only when a cached layer is suspect.
repoUrlYesHTTPS URL of the repository to build, e.g. "https://github.com/acme/api". GitHub and GitLab only. SSH remotes and URLs with embedded credentials are rejected. A private repo needs a one-time browser authorization per org, which this tool returns a link for.
connectNonceNoOnly when retrying after the user authorized the git provider: echo this tool's previous `connectNonce` verbatim.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior5/5

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

Adds substantial behavioral context beyond the annotations: no Docker daemon involved, always produces linux/amd64, returns a buildId with the build running asynchronously, building an existing NAME:TAG replaces it, and private repos need one-time browser authorization. This complements the destructiveHint/openWorldHint annotations without contradicting them.

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?

Each sentence adds distinct information: action, no-docker, async, overwrite semantics, auth, local-folder alternative, and recommended reading. No fluff; the structure is logical and front-loaded with the core purpose.

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 complex, destructive, asynchronous tool with 7 parameters and an output schema, the description covers all key user-need areas: what it does, how it works, side effects, failure/alternative paths (local folder), and prerequisite reading. The existence of an output schema reduces the need to describe return values, and this description still mentions buildId.

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 100% with detailed per-parameter descriptions, so the description is not required to compensate. It provides general build context (e.g., 'detects how to build it') but does not add parameter-specific meaning beyond what the schema already states for each field.

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 opens with a specific verb and resource: 'Build a container image on Control Plane from a GitHub or GitLab repository and push it to the org's private registry.' It clearly distinguishes from siblings like get_image_build by stating this is the build action and even clarifies 'ONLY repositories work here.'

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

Usage Guidelines5/5

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

Explicitly states when not to use this tool: 'To build a LOCAL FOLDER, tell the user to run `cpln image build --remote --dir PATH --name NAME:TAG`... this server has no access to their filesystem.' It also directs the user to get_cpln_skill('image') for runbook guidance and explains the private-repo auth flow.

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

clear_domain_tlsClear TLS on a Domain ListenerA
DestructiveIdempotent
Inspect

Remove the TLS configuration from a port listener; the listener reverts to platform defaults. NOTE: on 443 with http/http2 the platform re-injects a default TLS block — TLS cannot be disabled there, only reset.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
domainYesFully qualified domain name.
portNumberYesExisting listener port number to target.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior4/5

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

Annotations already mark the tool as destructive (destructiveHint=true) and non-read-only. The description adds meaningful behavioral context: the listener reverts to platform defaults, and on 443 with http/http2 the platform re-injects a default TLS block. These details go beyond the annotation flags.

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

Conciseness5/5

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

Two sentences, front-loaded with the action, and a concise note about the 443 edge case. Every sentence serves a purpose, with no redundant or ambiguous wording.

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

Completeness5/5

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

The description fully explains the operation's effect (revert to defaults) and an important platform-specific behavior (re-injection on 443). Combined with the rich schema descriptions and presence of an output schema, no critical contextual gaps remain for a tool of this complexity.

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 100%, and each parameter (org, domain, portNumber) has its own detailed description, including guidance on org lookup behavior. The tool description itself does not add parameter-specific details, so the schema carries the burden effectively. Baseline 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Remove the TLS configuration from a port listener'. It clearly distinguishes from siblings like remove_domain_port (which removes the whole listener) and set_domain_tls (which adds/updates TLS). The phrase 'the listener reverts to platform defaults' clarifies the scope.

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

Usage Guidelines4/5

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

Provides clear context for when to use: clearing TLS from a listener, and includes an explicit caveat for port 443 with http/http2 where TLS cannot be disabled but only reset. However, it does not explicitly name alternatives like remove_domain_port or set_domain_tls, so it misses a direct when-not-to-use comparison.

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

convert_to_terraformConvert a manifest to TerraformA
Read-onlyIdempotent
Inspect

Convert a Control Plane resource manifest (YAML or JSON) into the equivalent Terraform (HCL). The manifest is first DRY-RUN VALIDATED against the API (no resource is created) — if it fails validation you get the error instead of HCL, so the returned Terraform always corresponds to a schema-valid resource. Pass gvc when the kind is GVC-scoped (workload, identity, volumeset). Set generateImports to also return ready-to-run terraform import commands. To convert an EXISTING resource instead of a manifest, use export_terraform.

ParametersJSON Schema
NameRequiredDescriptionDefault
gvcNoRequired only when the manifest kind is GVC-scoped (workload, identity, volumeset).
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
manifestYesA single Control Plane resource manifest as YAML or JSON (must include `kind` and `name`). It is dry-run validated against the API before conversion, so an invalid manifest returns the validation error instead of HCL.
generateImportsNoAlso return the matching `terraform import` commands, one per resource with the import IDs prefilled. Run them after `terraform init` and before the first `terraform apply` so the existing resources are adopted into state instead of re-created.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior5/5

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

The description explains the dry-run validation behavior before conversion, noting that invalid manifests return an error instead of HCL. This goes beyond the readOnlyHint annotation by describing a two-phase internal process and the return-value semantics. It also clarifies the `generateImports` behavior and prerequisites, which is valuable behavioral context not present in annotations.

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

Conciseness5/5

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

The description is three sentences long, tightly packed with essential information: purpose, validation behavior, conditional parameter guidance, and an explicit sibling alternative. Every sentence earns its place, with no fluff or repetition of structured fields.

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

Completeness5/5

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

Given the tool's complexity (conversion + dry-run validation + optional imports) and a rich output schema, the description is complete: it covers input requirements, validation behavior, conditional parameters, and the workflow for generated imports. The presence of an output schema means return values don't need to be described, and the description still covers the key behavioral nuances for correct invocation.

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 100%, so the schema already documents all parameters. The description adds meaningful context beyond the schema: it explains the dry-run validation interplay with `manifest`, the conditional need for `gvc` based on GVC-scoped kinds, and the operational purpose of `generateImports` (run after init, before apply, to adopt resources). This adds value on top of the schema.

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

Purpose5/5

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

The description states a specific verb ('Convert') and resource ('Control Plane resource manifest') to Terraform (HCL), and clearly distinguishes from the sibling export_terraform by noting 'To convert an EXISTING resource instead of a manifest, use export_terraform.' This is a clear, specific purpose that differentiates it from 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 Guidelines5/5

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

The description explicitly states when to use the tool (converting a manifest) and provides an alternative (export_terraform for existing resources). It also gives command-level guidance: pass `gvc` for GVC-scoped kinds, set `generateImports` for import commands, and indirectly implies a safe dry-run validation workflow. This is explicit when/alternative guidance.

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

create_domainCreate a DomainAInspect

Provision a Control Plane domain, map routes to workloads, and capture DNS records required for validation. Minimal port item is {number, protocol}; route items minimally need workloadLink and may omit prefix/regex to match /. Run this in the organization that will own the domain. Recommended reading before first use: get_cpln_skill("domain") — the runbook for this tool family (read once per session).

ParametersJSON Schema
NameRequiredDescriptionDefault
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
tagsNoOptional tags; they behave like Kubernetes labels. Special behavior-changing tags: cpln/routeLimitOverride (raises the per-port route cap to 200), cpln/skipDNSCheck, cpln/wildcard (wildcard certificate).
portsYesRequired listener list. Each listener minimally needs number and protocol; cors, routes, and tls are optional nested blocks.
domainYesFully qualified domain name such as example.com or api.example.com.
dnsModeYesDNS delegation mode. cname — REQUIRED for apex domains (example.com) and the common choice for a single subdomain. ns — subdomains ONLY (delegates that subdomain zone to Control Plane); the platform rejects ns on an apex.
gvcLinkNoOptional GVC link (full or shorthand //gvc/{name}). Each workload in the GVC gets a {workload}.{domain} subdomain. Mutually exclusive with workloadLink.
descriptionNoDomain description so operators understand the purpose (treat it like a concise annotation).
workloadLinkNoOptional workload link (e.g. //gvc/{gvc}/workload/{name}) to bind the ENTIRE domain to one workload — STATEFUL workloads only (the platform rejects serverless/standard here). For those, target the workload with ports[].routes instead. Mutually exclusive with gvcLink.
acceptAllHostsNoAccept any host header (defaults to false).
certChallengeTypeNoCertificate challenge type (http01 or dns01). Optional — omit for the platform default, and MUST be omitted for .internal domains (the platform rejects it there).
acceptAllSubdomainsNoAccept any subdomain (defaults to false).

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior4/5

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

Annotations already indicate readOnly=false, and the description adds behavioral context by saying the tool will 'capture DNS records required for validation' and by specifying minimal route/port requirements. It does not go into failure modes (e.g., non-80/443 ports leaving warning status), but those are detailed in the schema, so this is acceptable.

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 long, front-loaded with purpose, then minimal-input guidance, then ownership and runbook recommendations. Every sentence contributes valuable information with no redundancy, making it highly concise and well-structured.

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

Completeness5/5

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

Given the complex input schema (100% covered) and the presence of an output schema, the description provides the necessary high-level purpose, critical input minimalisms, and a runbook pointer. It is complete enough for an agent to understand when and how to invoke 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 100%, so the baseline is 3. The description's mention of 'minimal port item is {number, protocol}' and 'route items minimally need workloadLink' is a concise summary of what the schema already documents, adding no genuinely new parameter semantics.

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 opens with 'Provision a Control Plane domain, map routes to workloads, and capture DNS records required for validation,' which clearly states the create operation with specific resource and scope. It also gives minimal input shapes for ports and routes, thus distinguishing itself from sibling tools like add_domain_route and update_domain.

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

Usage Guidelines4/5

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

The description advises 'Run this in the organization that will own the domain' and recommends reading get_cpln_skill("domain") before first use, providing clear context on when to use the tool. However, it does not explicitly mention exclusions or alternatives (e.g., using add_domain_route for existing domains), which prevents a 5.

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

create_gvcCreate a Control Plane GVCAInspect

Create a new GVC (Global Virtual Cloud) — the deployment scope workloads live in. Configure placement in this call through locations or locationQuery: a GVC without placement cannot run workloads (locationOptions is DNS geo-routing tuning for placed locations, not placement). If the user did not specify placement, ASK first (list_resources kind="location" shows the options) — never guess a region and never create an empty GVC. Custom domains are configured with the Domain resource (create_domain), not on the GVC.

ParametersJSON Schema
NameRequiredDescriptionDefault
envNoEnvironment variables defined on the GVC. Workloads with inheritEnv=true redeploy when these values change.
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
kedaNoKEDA autoscaling configuration for the GVC.
nameYesResource name (lowercase kebab-case, starts with a letter, 2-64 chars). Names are IMMUTABLE — renaming = delete + recreate (loses URL, DNS, policy links).
tagsNoOptional tags (key-value pairs such as env=prod). Use them like Kubernetes labels for governance and search.
tracingNoDistributed tracing configuration.
locationsNoLocations the GVC deploys to — any location the org has: a built-in cloud region ("aws-eu-central-1"), a BYOK location registered from your own cluster, or a friendly name like "frankfurt" (resolved server-side against the org's own list). REQUIRED unless locationQuery provides placement instead. If the user has not named one, ASK which location(s) to use (list_resources kind="location" shows the options); never pick one silently.
descriptionNoDescription (surfaced in tooling similar to a Kubernetes annotation).
loadBalancerNoGVC load balancer configuration.
sidecarEnvoyNoAdvanced Envoy sidecar filters (maps to spec.sidecar.envoy).
locationQueryNoDynamic placement: a query that selects locations.
locationOptionsNoPer-location DNS geo-routing options (routingTier priority, latency bias/cutoff) for locations already placed via `locations` or `locationQuery`. Routing only — it does NOT place the GVC anywhere.
pullSecretLinksNoSecret links for docker/ecr/gcp secrets so workloads can pull from private registries (e.g., /org/{org}/secret/{secret} or //secret/{secret}).
aliasWorkloadLinkNoLink to a workload in this GVC whose canonical endpoint backs the GVC alias DNS record (e.g. //gvc/{gvc}/workload/{name}). NOTE: the alias is INERT while the target workload is suspended (suspend=true or maxScale=0) — it takes effect only while the workload runs.
endpointNamingFormatNoSubdomain format for the canonical workload endpoint. "default": {workload}-{gvc}.cpln.app; "org": {workload}-{gvc}.{org}.cpln.app; "legacy": legacy scheme. When omitted on create, the platform defaults to "org".

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior4/5

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

The annotations only provide flags (readOnlyHint: false, destructiveHint: false), so the description carries the transparency burden. It reveals that a GVC without placement cannot run workloads, that locationOptions is only geo-routing tuning and not placement, and that server-side resolution of location names occurs. It also warns against guessing regions. It doesn't detail side effects like cost or irreversible changes, but the immutability of names is covered in the schema. Overall, it adds meaningful behavioral context without contradiction.

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

Conciseness5/5

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

The description is detailed but every sentence earns its place. It is front-loaded with the core purpose and placement requirement, then covers the domain separation and ask-first guidance. It is concise for the complexity of the tool, using clear, direct language without redundancy. The structure flows logically from purpose to key constraints.

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

Completeness5/5

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

Given the tool's complexity (15 parameters, nested objects, output schema exists), the description covers the most critical aspects: placement is required, what to do if not specified, and what is not handled here (domains). It also references the alternative tool (list_resources) for user choices. The presence of an output schema means return values need not be explained in the description. The description is adequate for an agent to invoke this tool correctly in most scenarios.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds semantic value beyond the schema by clarifying the interaction between `locations`, `locationQuery`, and `locationOptions`, and by explicitly stating that `locationOptions` is not placement. It also gives usage context for the `locations` parameter (e.g., 'never pick one silently'). This helps the agent understand parameter relationships and constraints beyond what individual descriptions provide.

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 uses a specific verb ('Create') and resource ('GVC') and clearly defines what a GVC is: 'the deployment scope workloads live in.' It also explicitly differentiates from sibling tools by stating that custom domains are configured via create_domain, not on the GVC, and the placement guidance distinguishes it from other create tools.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use and when-not-to-use guidance. It states that placement is configured through `locations` or `locationQuery`, and that `locationOptions` is not placement. It instructs the agent to ASK first if placement is not specified, referencing list_resources kind='location' as the alternative, and explicitly says 'never guess a region and never create an empty GVC.' It also notes that custom domains are handled by create_domain, not this tool.

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

create_identityCreate an IdentityAInspect

Create a new identity in a GVC. Provider blocks can provision real resources in the connected cloud account, including AWS IAM roles, GCP service accounts, and Azure managed identities. Optionally seed networkResources (agent-based) and nativeNetworkResources (PrivateLink / PSC). Identities are assigned to workloads via spec.identityLink. Recommended reading before first use: get_cpln_skill("access-control") — the runbook for this tool family (read once per session).

ParametersJSON Schema
NameRequiredDescriptionDefault
awsNoAWS cloud-identity block. Binds the identity to an AWS cloud account so workloads can assume the role.
gcpNoGCP cloud-identity block. Binds the identity to a GCP service account / bindings on cloud resources.
gvcYesGVC slug (lowercase kebab-case). Use the GVC the user named; otherwise discover with list_resources (kind="gvc") and let them choose — never guess (a wrong GVC targets the wrong environment).
ngsNoNGS cloud-identity block. Binds the identity to a NATS account for pub/sub permissions.
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
nameYesResource name (lowercase kebab-case, starts with a letter, 2-64 chars). Names are IMMUTABLE — renaming = delete + recreate (loses URL, DNS, policy links).
tagsNoOptional tags for the identity.
azureNoAzure cloud-identity block. Binds the identity to an Azure managed identity with role assignments.
descriptionNoIdentity description.
spicedbAccessNoGrant access to SpiceDB clusters (max 5).
memcacheAccessNoGrant access to memcache clusters (max 5).
networkResourcesNoAgent-based network resources (cloud wormhole). Max 50 (nativeNetworkResources has its own separate limit); names/FQDNs share one namespace across both arrays.
nativeNetworkResourcesNoOptional cloud-native network resources (AWS PrivateLink, GCP PSC). Each item requires name, ports, and exactly one provider block. Max 50 (networkResources has its own separate limit); names/FQDNs share one namespace across both arrays.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior5/5

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

The description discloses a significant side effect beyond the annotations: provider blocks can provision real resources in the connected cloud account (AWS IAM roles, GCP service accounts, Azure managed identities). It also adds useful behavioral context about optional networkResources and nativeNetworkResources, complementing the structured hints.

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 compact and front-loaded, with the core action first followed by a few high-value sentences about provider behavior, network resources, assignment, and prerequisite reading. Every sentence adds useful context 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?

For a tool with 13 parameters, nested objects, and cloud-provider side effects, the description supplies the essential conceptual framing and points to an access-control runbook. It is complete enough for an agent to understand what creating an identity involves, though it does not spend time contrasting the update/delete lifecycle.

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 schema already covers 100% of parameters with rich descriptions, so the baseline applies. The description adds high-level conceptual value — real cloud resource provisioning and the identity-to-workload link — but does not add per-parameter detail beyond the well-documented input schema.

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

Purpose5/5

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

The description opens with a specific action and scope: "Create a new identity in a GVC." It clearly distinguishes this from update_identity and other sibling tools, and reinforces purpose by explaining that identities are later assigned to workloads via spec.identityLink.

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?

Guidance is implied rather than explicit: the description mentions provider-backed resources, optional network resources, and a recommended access-control runbook to read before first use. However, it does not name alternatives such as update_identity/delete_resource or state when not to use this tool.

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

create_policyCreate a PolicyAInspect

Create a new policy with target kind, optional target scopes (targetAll/targetLinks/targetQuery), and principal bindings (addPermissions plus at least one principal list — one without the other is an error). Target scopes may be combined; targetAll wins because target="all" applies the policy to every resource. Recommended reading before first use: get_cpln_skill("access-control") — the runbook for this tool family (read once per session).

ParametersJSON Schema
NameRequiredDescriptionDefault
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
nameYesResource name (lowercase kebab-case, starts with a letter, 2-64 chars). Names are IMMUTABLE — renaming = delete + recreate (loses URL, DNS, policy links).
tagsNoOptional tags for the policy (behave like Kubernetes labels for selectors and compliance).
addUsersNoUser links to add (e.g., ["//user/alice"])
addGroupsNoGroup links to add
targetAllNoSet to true to target all resources of the kind. Pick the target scope that matches intent (combining scopes is legal; target=all wins).
targetKindYesTarget resource kind (e.g., "secret", "workload", "identity"). Only the kinds listed by get_permissions have meaningful permission schemas — confirm permission names there before binding.
descriptionNoPolicy description
targetLinksNoTarget resource links (e.g., ["//secret/my-secret"]). GVC-scoped kinds (workload/identity/volumeset/dbcluster) need the gvc segment: //gvc/GVC/workload/NAME. Pick the target scope that matches intent (combining scopes is legal; target=all wins).
targetQueryNoDynamically target resources matching a query (e.g. all secrets tagged env=prod). Pick the target scope that matches intent (combining scopes is legal; target=all wins).
addIdentitiesNoIdentity links to add (e.g., ["//gvc/my-gvc/identity/my-identity"]). Identities are GVC-scoped — the gvc segment is required.
addPermissionsNoPermissions to grant (e.g., ["reveal", "use"]). For the full list run get_permissions. Secret values need `reveal`, not `read`.
addServiceAccountsNoService account links to add (e.g., ["//serviceaccount/sa-1"])

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior4/5

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

The description adds meaningful behavioral context beyond the annotations: combining target scopes is legal, targetAll wins because target='all' applies to every resource, and addPermissions without a principal list is an-error. It also recommends get_cpln_skill('access-control') as the runbook before first use, which helps the agent anticipate prerequisite knowledge.

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

Conciseness5/5

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

The description is three focused sentences: it fronts the primary purpose, then concisely covers high-risk constraints, and ends with a useful, specialized reference to get_cpln_skill. No redundant text fills the description.

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

Completeness5/5

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

Given 13 parameters, nested targetQuery, another output schema, and nested objects, this description is strong because it efficiently highlights the most decision-heavy parts, points to get_cpln_skill for runbook context, and points to get_permissions for valid permission names. The generous schema coverage and output schema make additional detail unnecessary.

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?

Although the schema already covers 100% of the parameter descriptions, the description adds relationship-level semantics by grouping addPermissions with principal lists and explaining the mutual requirement. It also clarifies targetAll's precedence over other target scopes, which is not immediately obvious by reading the schema alone.

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 opens with 'Create a new policy' and specifies the core elements: target kind, target scopes, and principal bindings. This clearly distinguishes it from sibling update_policy and other resource-creation tools by naming both the verb, resource, and key scope.

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

Usage Guidelines4/5

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

The description gives clear field guidance for when to use this tool and explains key constraints: target scopes may combine, targetAll wins, and principal bindings require addPermissions plus at least one principal list. It does not explicitly contrast using create_policy versus update_policy, but the 'Create a new policy' action and sibling context make that implied.

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

create_volumesetCreate a VolumesetAInspect

Create a new volumeset in a GVC with explicit performance class, filesystem type, initial capacity, snapshot policy, and (optional) autoscaling. Performance class and filesystem type are IMMUTABLE — choose carefully. xfs/ext4 support snapshots; shared is read-write-many but cannot be snapshotted. Snapshot defaults injected when omitted: createFinalSnapshot=true, retentionDuration "7d". customEncryption (customer-managed KMS keys) cannot be set here — apply a full manifest with the CLI (cpln apply), calling get_resource_schema (kind=volumeset) first. Mount separately via mount_volumeset_to_workload (ext4/xfs need a stateful or vm workload; shared mounts on any workload type). Recommended reading before first use: get_cpln_skill("stateful-storage") — the runbook for this tool family (read once per session).

ParametersJSON Schema
NameRequiredDescriptionDefault
gvcYesGVC slug (lowercase kebab-case). Use the GVC the user named; otherwise discover with list_resources (kind="gvc") and let them choose — never guess (a wrong GVC targets the wrong environment).
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
nameYesResource name (lowercase kebab-case, starts with a letter, 2-64 chars). Names are IMMUTABLE — renaming = delete + recreate (loses URL, DNS, policy links).
tagsNoOptional tags (treat like Kubernetes labels for governance and search).
snapshotsNoSnapshot policy.
autoscalingNoReactive + predictive autoscaling settings.
descriptionNoVolumeset description so operators know what data lives here.
mountOptionsNoMount options — only for shared-filesystem volume sets (resources provisioned per mount point).
fileSystemTypeNoFilesystem type. Immutable. xfs/ext4 support snapshots; shared is RWX without snapshots (default xfs).
initialCapacityYesInitial capacity in GB. Performance-class minimums apply (general-purpose-ssd ≥10, high-throughput-ssd ≥200). Max 65536.
performanceClassNoPerformance class. Immutable after creation — choose carefully (default general-purpose-ssd).
storageClassSuffixNoSelf-hosted location override for storage class lookup.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior5/5

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

Discloses many behavioral traits beyond the sparse annotations (readOnlyHint=false, destructiveHint=false): performance class and filesystem type are immutable, snapshot defaults are injected (createFinalSnapshot=true, retentionDuration '7d'), and xfs/ext4 support snapshots while shared does not. These details give the agent essential expectations about side effects and constraints that the annotations do not cover.

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 front-loaded with the core purpose and every subsequent sentence earns its place by adding distinct, high-value information (immutability, snapshot defaults, encryption limitation, mounting guidance, reading recommendation). While long, the length is justified by the tool's complexity and no sentence is redundant.

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

Completeness5/5

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

Given the tool's complexity (12 params, nested objects, output schema), the description covers key constraints, defaults, exclusions, and cross-references to related tools and documentation. It provides enough context for correct invocation and successful execution without needing to describe return values since an output schema exists.

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

Parameters5/5

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

Although schema coverage is 100%, the description adds meaningful semantic context by highlighting which parameters are most important (performance class, filesystem type, initial capacity, snapshot policy, autoscaling) and by explaining immutability implications and default injection behavior. This goes beyond what the schema parameter descriptions already state.

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 opens with a specific verb+resource: 'Create a new volumeset in a GVC with explicit performance class, filesystem type, initial capacity, snapshot policy, and (optional) autoscaling.' It clearly names the action and key settings, and differentiates from related tools by stating 'Mount separately via mount_volumeset_to_workload,' making the purpose unambiguous.

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

Usage Guidelines5/5

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

Provides explicit when-not-to-use guidance: customEncryption cannot be set here and requires `cpln apply` with a full manifest, plus it names the alternative tool for mounting (mount_volumeset_to_workload) and clarifies workload type restrictions (ext4/xfs need stateful or vm; shared mounts anywhere). Also recommends reading get_cpln_skill('stateful-storage') before first use, effectively explaining a prerequisite.

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

create_workloadCreate a WorkloadAInspect

Create a serverless/standard/stateful workload — or a SCHEDULED JOB by setting type: "cron". Define the container(s) in the typed containers[] array (the only way — there are no flat image/cpu/port fields) and scaling in the single autoscaling block. For a cron workload set type: "cron" and a required schedule (plus optional job policy); autoscaling/timeoutSeconds/debug do not apply to cron and are rejected. Decide reachability IN THIS CALL: a user-facing service needs public: true (or an explicit firewallConfig); omitted = deny-by-default, no internet access — do not create closed and patch the firewall afterward. Use the production-grade defaults from get_cpln_rules: explicit readiness + liveness probes, minScale ≥ 2 for user-facing services, CPU/memory sized to the runtime (NOT the platform defaults of 50m / 128Mi), autoscaling metric matched to traffic shape, never scale-to-zero unless the user asked for it by name. Type and name are immutable — changing either = delete + recreate. For databases / caches / queues / brokers / search / gateways / WAF / S3-compatible storage, propose the matching Template Catalog entry first (see get_cpln_rules). Recommended reading before first use: get_cpln_skill("workload") — the runbook for this tool family (read once per session).

ParametersJSON Schema
NameRequiredDescriptionDefault
gvcYesGVC slug (lowercase kebab-case). Use the GVC the user named; otherwise discover with list_resources (kind="gvc") and let them choose — never guess (a wrong GVC targets the wrong environment).
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
nameYesWorkload name (lowercase kebab-case, must start with a letter, max 49 chars, cannot end with -headless). The name is IMMUTABLE — "renaming" requires delete + recreate (loses public URL, internal DNS, policy targetLinks).
tagsNoOptional tags (key/value pairs such as env=prod).
typeNoWorkload type (default: standard — always-running). Use "cron" for a SCHEDULED JOB: then `schedule` is REQUIRED and the job-policy fields apply, while autoscaling/timeoutSeconds/debug do NOT (they are rejected — probes and autoscaling have no meaning for a cron run). vm is not supported.standard
debugNoEnable or disable spec.defaultOptions.debug. Not valid with type: "cron".
publicNoConvenience shortcut: opens the external firewall BOTH ways — inbound 0.0.0.0/0 AND outbound 0.0.0.0/0 (a public service almost always needs both directions). Mutually exclusive with firewallConfig, and an explicit firewallConfig overrides it. OMITTED = no external access (deny-by-default) — decide exposure here, at create time; do not create closed and patch the firewall open afterward.
suspendNoEnable or disable spec.defaultOptions.suspend (no replicas run while suspended; for a cron workload this pauses scheduled runs)
scheduleNoREQUIRED when type is "cron" (and ONLY valid then): a NUMERIC 5-field cron expression like "0 */6 * * *" (no @daily macros, no MON/JAN names). Omit entirely for serverless/standard/stateful.
capacityAINoEnable or disable spec.defaultOptions.capacityAI — applies to every type (default ON for serverless/standard/cron; on cron the new reservation takes effect at the next scheduled run). Explicit true is rejected with the cpu metric and with GPUs.
containersYesRequired full container specs (1-8). Each item minimally needs name and image; all other container fields are optional. This is the only way to define containers — there are no flat image/cpu/port fields.
autoscalingNoAutoscaling configuration → spec.defaultOptions.autoscaling (metric, target, minScale, maxScale, scaleToZeroDelay, maxConcurrency, keda). This is the ONLY place scaling is configured. Omit to use platform defaults (minScale 1, maxScale 5).
descriptionNoWorkload description
historyLimitNoNumber of completed job instances to retain (default 5)
identityLinkNoIdentity link granting 3rd-party cloud resource access, e.g. //identity/my-id
restartPolicyNoWhat to do when a job instance fails
firewallConfigNoInbound/outbound access control. Access is restricted by default.
timeoutSecondsNoSet spec.defaultOptions.timeoutSeconds — max request duration (platform default 5s; serverless caps at 600)
concurrencyPolicyNoWhat to do when a run is due while a prior run is still active (default Forbid)
supportDynamicTagsNoEnable or disable spec.supportDynamicTags (detects image digest changes).
activeDeadlineSecondsNoMax seconds to wait for the job to complete before it is stopped

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior5/5

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

Beyond annotations (readOnlyHint=false, openWorldHint=true, destructiveHint=false), the description discloses that for cron workloads autoscaling/timeoutSeconds/debug are rejected, that type and name are immutable (changing = delete + recreate), and that deciding reachability must happen in this call (deny-by-default, don't patch later). It also mentions reading get_cpln_rules for production-grade defaults. No contradiction with annotations.

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

Conciseness3/5

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

The description is dense and front-loaded with the main workflow, but it's long and includes a fair amount of detail (e.g., 'the only way', 'do not create closed and patch the firewall afterward') that could be trimmed since it's partly repeated in the schema comments for containers[] and public. Not egregiously verbose, but borderline. It gets a 3 because it's a bit overlong for a tool that has a 100% schema-coverage and a rich 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 the high complexity (21 params, nested objects, many enums) and the 100% schema coverage, the description complements by pointing to get_cpln_rules and get_cpln_skill for runbook details, and covers the decision logic for cron vs other types and when to use templates. It doesn't repeat return values (output schema exists). It could mention error cases (except org-not-found which is in the schema's org param) but that's minor. Overall, complete enough.

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 100%, so baseline is 3. The description adds value by linking parameters to the goal: containers[] is the only way to define containers (no flat image/cpu/port fields), autoscaling is the only place to configure scaling, and public/firewallConfig decide reachability. For cron, it says schedule is required and autoscaling/timeoutSeconds/debug are rejected. It also references get_cpln_rules for defaults like minScale ≥ 2 for user-facing services. This slightly exceeds the baseline.

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

Purpose5/5

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

The description clearly states it creates a workload covering serverless/standard/stateful and cron job types. It's specific about the resource (workload) and the action (create), and it distinguishes from siblings like update_workload, install_template, and build_image. Unlike the sister tools that handle domains or templates, this is the only creation tool for workloads. It also teases the cron type and points to helper tools (get_cpln_rules, get_cpln_skill) for guidance.

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

Usage Guidelines5/5

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

Explicitly tells when NOT to use this tool: for databases/caches/queues/brokers/search/gateways/WAF/S3-compatible storage, propose the matching Template Catalog entry first. It also directs to get_cpln_rules and get_cpln_skill before first use, naming the runbook and skill. This contrasts with sibling tools (install_template, update_workload, create_gvc) and gives clear decision criteria.

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

delete_resourceDelete a ResourceA
Destructive
Inspect

Delete one Control Plane resource by kind + name — the single delete tool for every deletable kind. Secrets are not deletable here — their lifecycle is managed by the user. Deletes on the call (your client confirms the write first). Before calling, read the resource and tell the user what the deletion removes and which dependents break, and proceed only on their explicit approval. Deletion is permanent. Never invent a name.

ParametersJSON Schema
NameRequiredDescriptionDefault
gvcNoGVC slug — REQUIRED only for GVC-scoped kinds (workload, identity, volumeset); ignored otherwise.
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
kindYesResource kind to delete. One of: workload, identity, volumeset, gvc, policy, group, domain, cloudaccount, agent, ipset, mk8s, serviceaccount, image, user.
nameYesName of the resource to delete. Read the resource and present what the deletion removes and breaks, then call only on the user's explicit approval. Never invent a name. Most kinds use lowercase kebab-case names; exceptions: domain = the full hostname ("app.example.com"), image = NAME or NAME:TAG ("my-app:v1.2").

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior5/5

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

Beyond the destructiveHint annotation, the description adds critical behavioral context: deletion is permanent, the call triggers deletion immediately ('your client confirms the write first'), and it mandates a user-approval workflow before invoking. It also clarifies that secrets are managed elsewhere, preventing misuse. These details significantly enhance the agent's understanding of consequences.

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 compact yet information-dense. Every sentence contributes value: the core action, the exclusivity, the secrets exception, the immediate deletion behavior, the required pre-call procedure, permanence, and name accuracy. There is no redundant or promotional language.

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 destructive tool, the description is exceptionally complete. It covers the action, scope, exclusions, procedural requirements, and permanence. The output schema exists, so not describing return values is acceptable. The combination of annotations, schema, and description leaves little room for ambiguity in a high-stakes delete 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?

The input schema provides 100% coverage with detailed descriptions for all parameters, including patterns and conditional requirements (e.g., gvc only for GVC-scoped kinds). The description reinforces the importance of 'name' with 'Never invent a name' but does not add substantial new semantics beyond the schema. Therefore, the baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states the tool's function: 'Delete one Control Plane resource by `kind` + `name`'. It also positions it as the single delete tool for every deletable kind, distinguishing it from sibling tools that handle specific removal operations like remove_domain_port or uninstall_template. The exclusion of secrets further sharpens its scope.

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

Usage Guidelines5/5

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

The description explicitly says when to use this tool: for any deletable Control Plane resource, and when not to: secrets are not deletable here. It provides a clear pre-call procedure: read the resource, inform the user of impacts, and proceed only on explicit approval. The 'Never invent a name' instruction adds practical safety guidance.

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

expand_volumesetExpand Volumeset VolumeA
Idempotent
Inspect

Increase the storage capacity of a volume in a volumeset. Live operation — no downtime, no data loss. Throttled: expansion is throttled to 4 per volume per rolling 24 hours — an HTTP 429 means the rolling window is exhausted (waiting briefly will NOT help; wait for the oldest expansion to age out). Available for all filesystem types (ext4, xfs, shared). Recommended reading before first use: get_cpln_skill("stateful-storage") — the runbook for this tool family (read once per session).

ParametersJSON Schema
NameRequiredDescriptionDefault
gvcYesGVC slug (lowercase kebab-case). Use the GVC the user named; otherwise discover with list_resources (kind="gvc") and let them choose — never guess (a wrong GVC targets the wrong environment).
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
nameYesResource name (lowercase kebab-case, starts with a letter, 2-64 chars). Names are IMMUTABLE — renaming = delete + recreate (loses URL, DNS, policy links).
locationYesLocation of the volume to expand (e.g. aws-us-east-2)
volumeIndexYesIndex of the volume to expand
timeoutSecondsNoMaximum time (seconds) to wait for the resize to complete. Optional — server applies a default if omitted.
newStorageCapacityYesNew storage capacity in GB (must be larger than current size). Max 65536.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior5/5

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

Discloses significant non-obvious behavior beyond annotations: throttling of 4 expansions per volume per 24 hours, meaning of HTTP 429, that waiting briefly will not help, and no data loss. This is valuable context annotations cannot convey.

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?

Each sentence is purposeful and informative, front-loading the core purpose, then key behaviors (live, throttling, filesystem support, reading). No redundancy or filler.

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?

Covers live operation, safety, throttling behavior, filesystem compatibility, and recommended reading. Combined with a rich schema and output schema, nothing critical is left unexplained.

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 covers 100% of parameters with detailed descriptions, so the baseline is 3. The description adds no parameter-specific guidance beyond what the schema already provides.

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 'Increase the storage capacity of a volume in a volumeset' with a specific verb and resource, clearly distinguishing it from sibling tools like create_volumeset, update_volumeset, or mount_volumeset_to_workload.

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

Usage Guidelines4/5

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

Provides clear usage context: live operation, no downtime/data loss, available for all filesystem types, and a recommended runbook. However, it does not explicitly name alternatives or state when not to use, so it stops 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.

export_terraformExport an existing resource to TerraformA
Read-onlyIdempotent
Inspect

Generate Terraform (HCL) for EXISTING Control Plane resources from a self link. Single resource (/org/acme/gvc/prod/workload/api) or bulk by path depth — /org/acme exports the whole org, /org/acme/gvc/prod/workload exports every workload in a GVC. Set generateImports to get ready-to-run terraform import commands for adopting the resources into Terraform state, and includeDependencies to pull in referenced resources. Secrets are never exported — a ref that targets secrets is refused, and an export that would pull secrets in is refused wholesale. An unsupported kind is rejected with the supported list (list_terraform_kinds, full profile, enumerates them up front). For an in-memory manifest, use convert_to_terraform. Recommended reading: get_cpln_skill("iac-terraform-pulumi").

ParametersJSON Schema
NameRequiredDescriptionDefault
resourceYesSelf link of an existing resource, e.g. `/org/acme/gvc/prod/workload/api` (a full `https://api.cpln.io/org/...` URL is also accepted). Use a shorter path for a bulk export: `/org/acme` (whole org) or `/org/acme/gvc/prod/workload` (all workloads in a GVC).
generateImportsNoAlso return the matching `terraform import` commands, one per resource with the import IDs prefilled. Run them after `terraform init` and before the first `terraform apply` so the existing resources are adopted into state instead of re-created.
includeDependenciesNoAlso export referenced/dependent resources so the generated HCL is self-contained.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior5/5

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

The description adds significant behavioral context beyond the annotations, revealing that secrets are never exported and that unsupported resource kinds are rejected with a list. It also explains the behavior of generateImports and includeDependencies, giving the agent a clear picture of edge cases and side effects.

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

Conciseness5/5

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

The description is moderately long but every sentence adds value: examples, bulk export behavior, flags, secret handling, error handling, alternative tool, and further reading. It is front-loaded with the core purpose and stays organized.

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 tool with an output schema, the description covers purpose, usage alternatives, edge cases (secrets, unsupported kinds), and parameter guidance. It does not need to describe return values since the output schema covers that, making the description complete for the agent's selection and invocation needs.

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

Parameters3/5

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

The input schema already provides 100% description coverage for all three parameters, including examples and operational details. The tool description repeats much of this information without adding new semantic insights, so it meets the baseline but does not elevate it.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Generate Terraform (HCL) for EXISTING Control Plane resources from a self link.' It uses specific verbs and resources, and distinguishes itself from the sibling tool convert_to_terraform by noting the difference between existing resources and in-memory manifests.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool, including bulk export scenarios based on path depth. It names an alternative (convert_to_terraform) and excludes secret-exporting cases, effectively covering when-not-to-use. It also directs users to a skill for further reading.

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

get_commandGet a CommandA
Read-onlyIdempotent
Inspect

Fetch one asynchronous-operation command by its UUID, to check the status of a long-running operation issued against a workload or volumeset (cron run, replica stop, volume expand / shrink / snapshot / restore / delete). Returns the lifecycleStage, status messages, and full JSON. Pass kind (workload|volumeset), gvc, name, and the commandId (discover ids with list_commands).

ParametersJSON Schema
NameRequiredDescriptionDefault
gvcYesGVC slug (lowercase kebab-case). Use the GVC the user named; otherwise discover with list_resources (kind="gvc") and let them choose — never guess (a wrong GVC targets the wrong environment).
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
kindYesParent resource that owns the command — `workload` (cron runs via workload_start_cron, replica stops via workload_stop_replica) or `volumeset` (volume expand / shrink / snapshot / restore / delete). Both are GVC-scoped.
nameYesName of the parent workload or volumeset the command was issued against.
commandIdYesUUID of the command (the `id` field from list_commands, or the Location of the issuing call).

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, and the description adds useful behavioral context: it returns lifecycleStage, status messages, and full JSON, and covers operation types per kind. No contradictions with annotations.

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

Conciseness5/5

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

Two sentences pack purpose, examples, return info, and required params. The description is front-loaded and every clause adds value; 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?

With a highly detailed schema and annotations (readOnly, idempotent), the description covers all essential context: what it does, when to use, how to discover IDs, and what it returns. The output schema exists, so return details need not be exhaustive. No significant gaps.

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 100%, with each parameter fully documented, including guidance on never guessing org/gvc and discovering commandId via list_commands. The tool description merely summarizes these params without adding new semantics, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool fetches an asynchronous-operation command by UUID to check status of long-running operations. It provides examples (cron run, replica stop, volume operations) and mentions return content, distinguishing it from siblings like list_commands and get_workload_logs.

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

Usage Guidelines4/5

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

It explicitly states when to use the tool (to check status of long-running operations) and points to list_commands for discovering command IDs. It lacks an explicit 'when-not to use' clause, but the context and alternative reference are strong.

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

get_cpln_rulesGet Control Plane Operating GuideA
Read-onlyIdempotent
Inspect

Returns the Control Plane operating guide — the resource model, how secrets/images/workloads/domains fit together, production-grade defaults, how to verify a change landed, and how to handle failures. Read it once per session before the first create/update/delete, and any time a multi-resource task spans unfamiliar ground.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context by detailing what the guide contains and when to consult it, going beyond the annotations to explain the tool's role as a session-level reference.

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

Conciseness5/5

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

Two sentences, no fluff. The first sentence lists the guide's contents; the second provides usage timing. Both earn their place and the description is front-loaded with the core purpose.

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

Completeness5/5

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

Given the tool's simplicity (no params) and the existence of an output schema, the description fully covers purpose, content, and when to use it. It leaves no ambiguity about the tool's role in the broader sibling set.

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 has zero parameters and schema coverage is 100%, so there is nothing to document. The baseline for 0 params is 4, and the description appropriately omits any parameter details since none exist.

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

Purpose5/5

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

The description clearly states the tool returns the Control Plane operating guide and enumerates its contents (resource model, secrets/images/workloads/domains, defaults, verification, failure handling). This specific verb+resource structure distinguishes it from all sibling tools, which perform concrete operations rather than providing guidance.

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

Usage Guidelines5/5

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

Explicitly instructs when to use: once per session before the first create/update/delete, and any time a multi-resource task spans unfamiliar ground. This gives clear, actionable context for the agent and implicitly differentiates it from operation-focused siblings.

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

get_cpln_skillGet a Control Plane SkillA
Read-onlyIdempotent
Inspect

Returns the runbook for one Control Plane task family — how to use the feature correctly, the platform constraints that are easy to miss, when it is the WRONG tool, and what to do with the result. Tools that belong to a family name their skill as recommended reading; read it once per session before the first such operation.

ParametersJSON Schema
NameRequiredDescriptionDefault
skillYesSkill to read — tools name their skill as "recommended reading". Available: access-control, audit-compliance, autoscaling-capacity, cdn-rate-limiting, cpln, domain, environment-promotion, external-logging, firewall-networking, gitops-cicd, iac-terraform-pulumi, image, ipset-load-balancing, k8s-operator, logql-observability, metrics-observability, migration-patterns, mk8s-byok, native-networking, org-management, query-spec, setup-agent, setup-cloud-access, setup-secret, stateful-storage, tag, template-catalog, workload, workload-security, workload-troubleshooting.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, but the description adds rich behavioral context: the runbook includes 'platform constraints that are easy to miss', 'when it is the WRONG tool', and 'what to do with the result'. It also notes session-level reading, going beyond the annotations without contradicting them.

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 two sentences, front-loaded with the core action, and every phrase earns its place. It efficiently conveys purpose, content, and usage timing without redundancy.

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

Completeness5/5

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

The tool has a single enum parameter, rich schema coverage, and an output schema exists to describe return values. The description fully addresses what the runbook covers and when to read it, making it complete for the tool's simple yet specialized 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 coverage is 100% with a detailed enum description explaining 'Skill to read — tools name their skill as recommended reading'. The tool description adds little beyond the schema's own parameter description, so with high coverage a baseline 3 is appropriate; no extra meaning is needed.

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

Purpose5/5

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

The description clearly states the tool 'Returns the runbook for one Control Plane task family' with a specific verb and resource, and enumerates the runbook's contents (correct usage, platform constraints, wrong-tool guidance, result handling). This distinguishes it from the many sibling operational tools by positioning it as a meta-resource for learning, not a direct operation.

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

Usage Guidelines4/5

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

The description gives explicit context: 'Tools that belong to a family name their skill as recommended reading; read it once per session before the first such operation.' This tells the agent when to use the tool, though it does not explicitly name alternative tools or provide exclusion criteria beyond implying it is a prerequisite.

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

get_image_buildGet an Image Build Status and LogA
Read-onlyIdempotent
Inspect

Read a build started by build_image: its status, its progress events, and its log. Statuses are queued and building (still running), pushed (done), and failed. The log comes back automatically when the build failed, since that is where the cause is; pass includeLog to see it otherwise. Read on an interval, never in a tight loop. Recommended reading before first use: get_cpln_skill("image") — the runbook for this tool family (read once per session).

ParametersJSON Schema
NameRequiredDescriptionDefault
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
buildIdYesThe `buildId` build_image returned. Never construct one.
logOffsetNoOpaque resume cursor. Echo back `nextLogOffset` from the previous response so each read returns only NEW output. Never compute, guess or add to this number. Omit to read from the start.
includeLogNoOmit for the default: the build log is returned only when the build FAILED, where it is the diagnosis. Set true to also read it while building or after success — it is large, so only when the user asked to see it.
maxLogLinesNoCap on log lines returned (default 80); the newest are kept.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description doesn't need to repeat that. It adds valuable context: statuses enumeration (queued/building/pushed/failed), automatic log behavior on failure, and the polling guidance. It doesn't describe output format, but that's covered by the output schema. Slight gap: no mention of potential errors or rate limits beyond 'never in a tight loop', but the guidance suffices for behavioral transparency.

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

Conciseness5/5

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

The description is a single, dense paragraph of about 80 words. It front-loads the core purpose, then explains statuses, log behavior, polling cadence, and a prerequisite reading reference. Every sentence adds value; there is no fluff or repetition of schema details. Highly efficient.

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

Completeness5/5

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

Given that the tool has an output schema (not shown but existence is noted) and complete schema descriptions for all 5 parameters, the description covers the key operational context: status lifecycle, log retrieval conditions, polling guidance, and a pointer to the runbook. For a read-only, idempotent tool, this is comprehensive. No missing elements like error handling or auth are necessary given the existing annotations.

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

Parameters3/5

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

Schema description coverage is 100%; every parameter has a detailed description in the schema. The tool description adds minimal extra insight: it explains the logOffset resume cursor concept ('Echo back nextLogOffset... Only NEW output') and emphasizes includeLog's default behavior, which complements the schema. However, the description doesn't significantly add beyond the schema—the schema already covers semantics. Thus baseline 3 is appropriate.

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

Purpose5/5

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

The description explicitly states: 'Read a build started by build_image: its status, its progress events, and its log.' It names the source tool (build_image) and clearly differentiates from sibling tools like get_workload_logs and get_workload_events by focusing on image build status and log. The verb 'Read' plus the resource 'build started by build_image' is specific and unambiguous.

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

Usage Guidelines5/5

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

The description provides explicit usage guidance: 'Read on an interval, never in a tight loop' and 'Recommended reading before first use: get_cpln_skill("image") — the runbook for this tool family (read once per session).' It also explains when includeLog is needed and when it's not, contrasting with default behavior. No explicit exclusions of alternatives are needed because the purpose is so narrowly scoped.

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

get_installed_templateGet Installed Template ResourcesA
Read-onlyIdempotent
Inspect

Show an installed release’s current status, revision, and the Control Plane resources it created (kind, name, link). Returns release metadata only — install values and manifests are never included. Requires the token to have reveal permission on the release’s helm bookkeeping secret, where release state is stored.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
nameYesRelease name — the unique, immutable identifier for this installed instance within the org.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior5/5

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

Beyond the annotations (readOnlyHint, idempotentHint, non-destructive), the description discloses a significant behavioral requirement: the token must have `reveal` permission on the helm bookkeeping secret. It also states that values and manifests are never included, adding context that the annotations do not cover. No contradiction with annotations.

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

Conciseness5/5

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

Three sentences, each earning its place: first states the functionality, second states an exclusion, third states a permission requirement. The description is front-loaded with the verb 'Show' and contains no redundant 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?

An output schema is present, so the description does not need to explain return values. It covers purpose, scope, exclusions, and permission requirements, which is sufficient for a 2-parameter read-only tool. The description is complete for an agent to decide whether to invoke it.

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

Parameters3/5

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

The input schema has 100% description coverage for both parameters, with detailed explanations (org pattern and release name immutability). The description adds no parameter-specific guidance beyond the overall action. According to the rubric, baseline 3 applies when schema coverage is high and the description does not add extra param semantics.

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 uses the specific verb 'Show' with a clear resource ('an installed release') and enumerates the returned data (status, revision, resources with kind, name, link). It also explicitly states what is excluded ('install values and manifests are never included'), which distinguishes it from sibling tools like get_template or list_installed_templates.

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

Usage Guidelines5/5

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

The description provides an explicit when-to-use: when needing an installed release's current status, revision, and created resources. It also gives a clear when-not-to-use by stating that install values and manifests are never included, signaling that the tool is not appropriate for those needs. This is an explicit exclusion criterion, though it does not name an alternative tool.

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

get_permissionsGet Permissions for a Resource KindA
Read-onlyIdempotent
Inspect

Fetch available permissions for a resource kind from the /-schema/permissions endpoint. Recommended reading before first use: get_cpln_skill("access-control") — the runbook for this tool family (read once per session).

ParametersJSON Schema
NameRequiredDescriptionDefault
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
kindYesResource kind to get permissions for

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds the endpoint and a runbook reference but does not disclose additional behavioral traits such as error handling, auth requirements, or rate limits. It does not contradict 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?

The description is two sentences long and front-loaded: the first sentence states the purpose, the second gives a runbook pointer. No unnecessary words or repetition, making it highly concise and well-structured.

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

Completeness4/5

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

The tool is simple, with a rich schema, comprehensive annotations, and an output schema. The description covers the operation and points to a runbook for deeper context. It could have mentioned the return value format, but the output schema fills that gap, making it complete enough.

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 100%, with both org and kind having descriptive text. Org's schema description includes explicit guidance (e.g., NEVER guess, ask if missing, stop on org-not-found), so the tool description does not need to elaborate. Baseline 3 is appropriate since the schema carries the parameter semantics.

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

Purpose5/5

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

The description explicitly states 'Fetch available permissions for a resource kind' and names the endpoint, making the operation unambiguous. It also distinguishes itself from sibling tools like get_resource or get_resource_schema by focusing specifically on permissions retrieval.

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

Usage Guidelines3/5

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

The description includes a prerequisite: 'Recommended reading before first use: get_cpln_skill("access-control")', which is a usage preparation hint. However, it does not explicitly state when to use this tool vs alternatives or provide exclusions, so the usage context is implied from the purpose sentence rather than directly spelled out.

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

get_resourceGet a ResourceA
Read-onlyIdempotent
Inspect

Fetch one Control Plane resource by kind + name (no name for kind="org"). Returns a summary plus the full JSON. The single read-one tool for every resource kind. Secrets return metadata only — the API never includes their data. Call this before any update or delete to capture current state.

ParametersJSON Schema
NameRequiredDescriptionDefault
gvcNoGVC slug — REQUIRED only for GVC-scoped kinds (workload, identity, volumeset); ignored otherwise.
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
kindYesResource kind to fetch. One of: org, workload, identity, volumeset, gvc, secret, policy, group, domain, cloudaccount, agent, ipset, mk8s, serviceaccount, auditctx, image, location, user.
nameNoResource name. Required for every kind except `org` (which is singular). Most kinds use lowercase kebab-case names; exceptions: domain = the full hostname ("app.example.com"), image = NAME or NAME:TAG ("my-app:v1.2").

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior4/5

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

Annotations already mark it as readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds valuable behavioral detail: secrets return metadata only (API never includes data), and it returns a summary plus full JSON. This goes beyond annotations without contradicting them.

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 long, front-loaded with the core purpose, then adds usage guidance and a security caveat. Every sentence contributes actionable information without redundancy.

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

Completeness5/5

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

For a single-resource fetch tool, it covers the essential operational details: resource selection (kind+name), org singular behavior, return format (summary + full JSON), secrets handling, and recommended usage (before update/delete). The output schema exists, so the description need not elaborate on return fields.

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 100%, with each parameter well-documented. The description reiterates the kind+name lookup and org exception, but does not add meaningful semantics beyond what the schema already provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Fetch') and resource ('Control Plane resource by kind + name'), immediately clarifying the operation. It explicitly states 'The single read-one tool for every resource kind,' which distinguishes it from sibling tools like list_resources and search_control_plane.

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

Usage Guidelines4/5

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

It provides clear usage context: 'Call this before any update or delete to capture current state.' While it doesn't name alternatives or explicitly state when not to use, the phrase 'single read-one tool' strongly implies it should be used for individual reads, and the context is sufficient for an agent to differentiate.

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

get_resource_schemaGet Resource Schema & API EndpointsA
Read-onlyIdempotent
Inspect

Return the exact object schema and REST API endpoints for a Control Plane resource kind, so you can author an accurate manifest for cpln apply or call the API directly. ALWAYS call this FIRST whenever you are about to write a cpln apply YAML/JSON file, set up CI/CD that applies Control Plane resources, or build a request body for the REST API — do not hand-write a manifest or guess field names from memory. Pick a kind and pass org (and gvc for workload/identity/volumeset). Large schemas come back as a shallow map with deep sections collapsed to {"_expand":""} stubs; pass path (e.g. "spec.containers") to expand a section on demand. Server-managed fields (id/status/version/etc.) are already removed; name and kind are required at create.

ParametersJSON Schema
NameRequiredDescriptionDefault
gvcNoGVC slug. REQUIRED only for GVC-scoped kinds (workload, identity, volumeset); ignored for org-scoped kinds.
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
kindYesThe Control Plane resource kind to describe. Returns its apply-ready object schema plus the concrete REST endpoints. workload, identity, and volumeset are GVC-scoped (require `gvc`); all others are org-scoped.
pathNoDot-path into the schema to expand in full, e.g. "spec.containers" or "spec.defaultOptions.autoscaling". Omit for the top-level overview. Deeply nested objects come back as {"_expand":"<path>"} stubs — call this tool again with `path` set to that value to see that section.
maxDepthNoOverride how many object levels to expand from the path root. Omit for the default (small schemas return in full; large ones return a shallow map you can drill into). Raise it to pull more in one call.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior5/5

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

Beyond the annotations (read-only, idempotent, non-destructive), the description discloses that large schemas return shallow maps with `{"_expand":"<path>"}` stubs, that server-managed fields are removed, and that `name` and `kind` are required at create. This adds meaningful behavioral context beyond what annotations provide.

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 appropriately sized, front-loaded with the core purpose, and every sentence delivers actionable guidance without redundancy. It balances length with density of useful information.

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

Completeness5/5

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

Given the rich input schema, annotations, and output schema, the description is complete. It covers what the tool returns, when to use it, how to handle large schemas, and the requirements for creating resources, with no critical gaps.

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

Parameters4/5

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

The input schema provides 100% parameter descriptions, so the baseline is 3. The description adds value by explaining the `path` expansion behavior with an example ('spec.containers') and clarifying the `gvc` requirement for GVC-scoped kinds, slightly exceeding the baseline.

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

Purpose5/5

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

The description explicitly states it returns 'the exact object schema and REST API endpoints for a Control Plane resource kind' with the purpose of authoring manifests for `cpln apply` or direct API calls. It distinguishes itself from sibling tools by positioning itself as the mandatory first step before any manifest creation.

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

Usage Guidelines5/5

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

It provides explicit when-to-use instructions: 'ALWAYS call this FIRST whenever you are about to write a cpln apply YAML/JSON file, set up CI/CD... or build a request body.' It also states what not to do ('do not hand-write a manifest or guess field names from memory') and explains when to pass `gvc` and `path`.

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

get_templateGet Template Detail & Example ValuesA
Read-onlyIdempotent
Inspect

Show a catalog template’s available versions, prerequisites, whether it creates its own GVC, and the EXAMPLE values.yaml for the chosen (or latest) version. Read this before install_template — copy and edit the example values to configure the deployment.

ParametersJSON Schema
NameRequiredDescriptionDefault
versionNoTemplate version (e.g. "3.0.1"). Omit to use the latest. See get_template for available versions.
templateYesCatalog template to use — select one of the available templates (full details via browse_templates/get_template).

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior3/5

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

Annotations already declare readOnly, idempotent, and non-destructive, so the description does not need to restate the safety profile. It adds the 'chosen (or latest) version' default and the pre-install workflow, but no further behavioral context like auth requirements 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, front-loaded with the tool's function followed by a concrete next action. No filler or redundant qualification.

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

Completeness5/5

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

With an output schema and read-only annotations present, the description fully covers the caller's workflow: what the tool returns and how to use it before installation. Nothing essential for correct invocation 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 100%, so the baseline is 3; the description echoes the version default ('latest') but adds little beyond what the schema already states. It connects the template and version parameters to the returned example values, but does not meaningfully extend the parameter documentation.

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 uses a specific verb, 'Show,' with a specific resource: a catalog template's versions, prerequisites, whether it creates its own GVC, and the example values.yaml. It also positions itself relative to install_template, making its read-only detail role clear.

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

Usage Guidelines4/5

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

It gives explicit when-to-use guidance: read this before install_template, and copy/edit the returned values to configure deployment. It does not explicitly contrast with browse_templates or state when not to use it, which leaves a small gap in routing to alternatives.

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

get_traceGet TraceA
Read-onlyIdempotent
Inspect

Fetch one distributed trace by ID (from query_traces) and summarize it: span tree with per-span durations and services, plus an error-span list with status messages. Use it to pinpoint WHERE latency or failures sit inside a request path. Very large traces are truncated to the first spans in tree order — error spans are always listed.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
traceIdYesTrace ID (hex, from query_traces results).

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds significant behavioral context: truncation of very large traces to the first spans in tree order, with error spans always listed. It also describes the output structure (span tree, per-span durations/services, error-span list), which goes well beyond annotation coverage.

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

Conciseness5/5

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

The description is three sentences, each serving a distinct purpose: stating the function, giving usage guidance, and disclosing a limitation. It is front-loaded with the core purpose and contains no fluff.

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

Completeness5/5

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

The description covers what the tool does, how to use it, and a critical limitation (truncation). Since an output schema exists, the description doesn't need to detail the return format further. This is complete for a complex trace-summarization 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 input schema already fully documents both org and traceId with patterns and constraints, so the description doesn't need to add much. It reinforces that traceId comes from query_traces results, but this is also in the schema. No new parameter semantics are provided beyond the schema.

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

Purpose5/5

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

The description clearly states the tool fetches a trace by ID and summarizes it with a span tree and error-span list, explicitly sourcing from query_traces. This distinguishes it from sibling tools like get_resource or get_template, and the verb 'Fetch' plus resource 'distributed trace' is specific and unambiguous.

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

Usage Guidelines4/5

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

The description provides clear usage context: 'Use it to pinpoint WHERE latency or failures sit inside a request path.' It also implies a workflow by referencing query_traces as the source, but it doesn't explicitly state when not to use it (e.g., alternative tools for listing or other analysis).

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

get_workload_eventsGet Workload EventsA
Read-onlyIdempotent
Inspect

Fetch event log for a workload to diagnose readiness/liveness probe issues and errors. Use after a deploy fails — pair with list_deployments and get_workload_logs to triangulate the failure. Recommended reading before first use: get_cpln_skill("workload-troubleshooting") — the runbook for this tool family (read once per session).

ParametersJSON Schema
NameRequiredDescriptionDefault
gvcYesGVC slug (lowercase kebab-case). Use the GVC the user named; otherwise discover with list_resources (kind="gvc") and let them choose — never guess (a wrong GVC targets the wrong environment).
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
nameYesWorkload name (lowercase kebab-case, must start with a letter, max 49 chars, cannot end with -headless). The name is IMMUTABLE — "renaming" requires delete + recreate (loses public URL, internal DNS, policy targetLinks).

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds context about the tool's diagnostic purpose and suggests a workflow, which supplements the annotations without contradiction.

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

Conciseness5/5

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

Three sentences, each purposeful: purpose, usage scenario, and recommended prerequisite. Front-loaded with the core action and outcome, no fluff or repetition.

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

Completeness5/5

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

For a simple read-only tool with an output schema, the description fully covers when to use, why, and complementary actions. Combined with rich schema descriptions and annotations, it is complete for effective use.

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

Parameters3/5

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

Schema description coverage is 100%, with each parameter (org, gvc, name) having detailed guidance (e.g., never guess org, discover gvc). The description itself doesn't add parameter-level details, but the schema already does the heavy lifting, warranting the baseline score.

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 ('Fetch'), resource ('event log for a workload'), and the diagnostic purpose ('readiness/liveness probe issues and errors'). It clearly distinguishes from sibling tools like get_workload_logs by specifying event log vs. logs.

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

Usage Guidelines5/5

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

Explicitly states when to use ('Use after a deploy fails') and pairs it with specific alternatives/complements ('list_deployments and get_workload_logs'). Also recommends a runbook (get_cpln_skill) for first-time users, providing valuable context.

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

get_workload_logsGet Workload LogsA
Read-onlyIdempotent
Inspect

Query workload logs from a GVC. Provide structured params (gvc, workload, container, location, filter) OR a raw LogQL query — a raw query REPLACES the structured params, so it must embed ALL labels itself. Available labels: gvc, workload, container, location, provider, replica, stream — replica and stream are only reachable via a raw query. filter is a literal substring match (|=), not regex; for regex use a raw query with |~. Cron workload? Get jobExecutions via list_deployments (with location), then re-query with a raw query scoping replica= plus the execution's time window — embed gvc/workload/location labels in the raw query. Returns structured JSON with timestamps, messages, and labels. Recommended reading before first use: get_cpln_skill("workload-troubleshooting") — the runbook for this tool family (read once per session).

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoAbsolute end time (exclusive, ISO 8601).
gvcNoGVC name. Required unless raw `query` is provided.
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
fromNoAbsolute start time (inclusive, ISO 8601). Overrides `since`. Must be earlier than `to`.
limitNoMaximum log entries to return (default: 30, max: 999).
orderNoSort order (default: "oldest_first").
queryNoRaw LogQL query. REPLACES the structured params entirely, so it must embed ALL labels itself (gvc, workload, location, …) — required for the replica/stream labels, which have no structured param. Not sanitized — use structured params when possible.
sinceNoLookback window as relative duration (default: "1h"). Examples: "30m", "2h", "1d".
filterNoLiteral substring filter (LogQL `|=`) — only return log lines containing this exact text. NOT a regex; for regex matching use a raw `query` with `|~`.
locationNoLocation to filter logs for (e.g., "aws-us-east-1").
workloadNoWorkload name to filter logs for.
containerNoContainer name to filter logs for (e.g., "main", "_accesslog").

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior5/5

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

Annotations already declare readOnly, idempotent, and non-destructive. The description adds significant behavioral detail: raw query replaces structured params entirely and must embed all labels, filter is a literal substring match (|=) not regex, and replica/stream are only accessible via raw query. It also discloses return shape (structured JSON with timestamps, messages, labels). This exceeds what annotations provide without contradiction.

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

Conciseness5/5

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

The description is information-dense with no filler. Once the purpose is stated, it covers structured vs raw query, label availability, filter semantics, the cron special case, return type, and a recommended runbook—each sentence adds distinct value. The length is justified by the tool's complexity; it is not bloated.

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 tool with 12 parameters, a raw query mode, and intricate edge cases, the description covers nearly all necessary context: dual modes, special labels, regex handling, cron workflow, return format, and prerequisite reading. Combined with full schema coverage and an output schema, it is complete enough for an agent to invoke 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 coverage is 100% for all 12 parameters, so baseline is 3. The description adds meaningful semantic context beyond the schema by explaining the relationship between `query` and structured params (replacement semantics), the exact meaning of `filter` (literal substring vs regex), and which labels are only available via raw query. This is valuable but not a full per-parameter breakdown, so a 4 is merited.

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 opens with 'Query workload logs from a GVC', giving a specific verb and resource. It clearly distinguishes this tool from siblings like query_metrics or query_traces by focusing on workload logs, and further clarifies the tool's two modes (structured params vs raw LogQL).

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

Usage Guidelines5/5

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

It gives explicit guidance on when to use structured params versus a raw query, noting that replica and stream labels are only reachable via raw query and that regex requires a raw query. It also provides a specific alternative workflow for cron workloads using list_deployments, and recommends a prerequisite skill. This is thorough and actionable.

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

grant_workload_secret_accessGrant Workload Secret AccessA
Idempotent
Inspect

Grant an EXISTING workload access to a secret: ensures the workload has an identity and creates/updates a policy binding with the reveal permission. Never returns secret values. The workload must already exist — for a NEW workload, call create_workload first, then this (a deployment referencing a secret stays paused until access is granted, then resumes). The secret must exist too — if missing, draft its manifest with placeholder values for the user to fill in and apply themselves (setup-secret skill), then re-run. Does NOT modify workload env/volumes — reference the secret there via cpln://secret/ in the spec. Recommended reading before first use: get_cpln_skill("setup-secret") — the runbook for this tool family (read once per session).

ParametersJSON Schema
NameRequiredDescriptionDefault
gvcYesGVC slug (lowercase kebab-case). Use the GVC the user named; otherwise discover with list_resources (kind="gvc") and let them choose — never guess (a wrong GVC targets the wrong environment).
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
policyNameNoOptional org-scoped policy resource name to create/use; pass the name only. Omit to default to {gvc}-{workloadName}-secrets-policy.
secretNameYesExisting org-scoped secret name to grant access to; pass the name only, not cpln://secret/... or //secret/... .
identityNameNoOptional identity resource name to create/use in this GVC; pass the name only. Omit to default to {gvc}-{workloadName}.
workloadNameYesExisting workload name that should receive secret access; pass the name only, not a link.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior5/5

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

Beyond annotations (readOnlyHint=false, idempotentHint=true), the description adds valuable disclosures: never returns secret values, does NOT modify workload env/volumes, and creates/updates policy binding. It also explains the resume behavior of paused deployments. No contradiction with annotations.

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

Conciseness5/5

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

The description is front-loaded with the core purpose, then proceeds through prerequisites, safety, non-behaviors, and resource pointers. Every sentence earns its place—no filler. The length is appropriate for a tool with 6 parameters and important caveats.

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

Completeness5/5

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

Given the complexity (mutation, prerequisites, security considerations) and presence of output schema and annotations, the description is complete. It covers identity creation, policy binding, secret existence, non-modification of env/volumes, and references the skill runbook. No critical gaps remain.

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 100%, so the baseline is 3. The description does not add parameter-specific meaning beyond the schema; it mentions 'pass the name only' indirectly through schema descriptions but not in the tool description itself. Schema already handles parameter semantics thoroughly.

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 opens with a specific verb+resource+scope: "Grant an EXISTING workload access to a secret" and explains the mechanism (ensures identity, creates/updates policy binding with reveal permission). It clearly distinguishes this from sibling tools like create_identity or create_policy by framing it as a composite grant operation, not just identity or policy creation.

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

Usage Guidelines5/5

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

Explicitly states prerequisites and alternatives: workload must already exist (call create_workload first for new workloads), secret must exist (use setup-secret skill if missing), and points to get_cpln_skill("setup-secret") as recommended reading. It also mentions the behavioral consequence of deployment pausing until access is granted, giving clear when-to-use guidance.

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

install_templateInstall TemplateAInspect

Install a catalog template as a new release. Provide name (release name), template, optional version (defaults to latest), the values YAML (from get_template), and gvc unless the template creates its own. Validate first where available: preview_template (full profile; same inputs) dry-runs the render and catches values mistakes before anything is created. Deployment is asynchronous — verify with get_installed_template afterwards. Recommended reading before first use: get_cpln_skill("template-catalog") — the runbook for this tool family (read once per session).

ParametersJSON Schema
NameRequiredDescriptionDefault
gvcNoTarget GVC. Required unless the template creates its own GVC (get_template shows which). If the user named one for the template, use it; if not, list available GVCs with list_resources (kind="gvc") and let them choose.
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
nameYesRelease name — the unique, immutable identifier for this installed instance within the org.
valuesYesThe values.yaml content (YAML mapping) that configures the install. Start from get_template’s example values.
versionNoTemplate version (e.g. "3.0.1"). Omit to use the latest. See get_template for available versions.
templateYesCatalog template to use — select one of the available templates (full details via browse_templates/get_template).

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior5/5

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

Annotations only declare readOnlyHint=false and destructiveHint=false; the description carries the behavioral burden and does so well. It discloses creation semantics, asynchronous deployment requiring follow-up verification, the preview/dry-run path, version defaulting, and the gvc condition — traits an agent cannot infer from annotations 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?

The description is front-loaded with the core action and then covers parameter essentials, validation, verification, and prerequisite reading in five purposeful sentences. No filler or repetition of schema details beyond a useful one-line summary.

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 6-parameter, 4-required create operation with no nested objects and an output schema, the description is complete: it explains input sources, when gvc is optional, how to validate first, how to confirm the result, and where to learn more. The only minor concern is referencing preview_template, which is not in the sibling list, but 'where available' mitigates the risk.

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 100%, so the baseline is 3. The description restates key parameter behaviors already present in the schema (version defaults to latest, values come from get_template, gvc matters unless the template creates its own) but adds no new parameter-level information beyond what the schema documents.

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 object: 'Install a catalog template as a new release.' The phrase 'new release' and the explicit parameter list (name, template, version, values, gvc) distinguish it from sibling tools like upgrade_template and uninstall_template.

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

Usage Guidelines4/5

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

Provides clear context: validate first with preview_template when available, deployment is asynchronous and must be verified with get_installed_template, and get_cpln_skill('template-catalog') should be read first. It does not explicitly state when to prefer upgrade_template/uninstall_template for existing releases, so it stops short of full when-not coverage.

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

list_commandsList CommandsA
Read-onlyIdempotent
Inspect

List the asynchronous operation commands issued against a workload or volumeset — cron runs and replica stops (workload), or volume expand / shrink / snapshot / restore / delete (volumeset). Each row shows the command id, type, lifecycleStage (pending → running → completed / failed), and message count. Pass kind (workload|volumeset), gvc, and name; optionally filter by lifecycleStage. Use get_command for one command’s full status.

ParametersJSON Schema
NameRequiredDescriptionDefault
gvcYesGVC slug (lowercase kebab-case). Use the GVC the user named; otherwise discover with list_resources (kind="gvc") and let them choose — never guess (a wrong GVC targets the wrong environment).
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
kindYesParent resource that owns the command — `workload` (cron runs via workload_start_cron, replica stops via workload_stop_replica) or `volumeset` (volume expand / shrink / snapshot / restore / delete). Both are GVC-scoped.
nameYesName of the parent workload or volumeset whose commands to list.
limitNoMaximum number of items to return (1-500, default: all).
lifecycleStageNoOptional server-side filter — return only commands in this lifecycle stage (terminal: completed, failed, cancelled).

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by explaining lifecycleStage transitions (pending → running → completed/failed) and the kinds of operations (cron runs, replica stops, volume operations), which goes beyond the annotations without contradicting them.

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 two sentences: first explains what is listed and shown; second explains required/optional parameters and points to get_command. It packs substantial detail without redundancy or 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?

The tool has a rich output schema and annotations, so the description doesn't need to explain return structure. It fully covers scope, required inputs, and alternative tools. The only minor gap is not specifying a default for limit (schema says 'default: all'), but that is present in the schema.

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 100%, with detailed descriptions for all six parameters (e.g., 'kind' explains workload vs. volumeset; 'gvc' includes discovery guidance). The tool description adds minimal parameter-level semantics beyond the schema, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool lists asynchronous operation commands against a workload or volumeset, enumerates specific command types, and distinguishes from the sibling tool get_command by noting 'Use get_command for one command’s full status.' This is a specific verb-plus-resource with clear 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 Guidelines4/5

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

It specifies required parameters (kind, gvc, name) and an optional filter (lifecycleStage), and explicitly directs users to get_command for single-command details. While it doesn't list exclusions (e.g., when not to use), the guidance is clear and actionable, earning above-average but not perfect.

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

list_deploymentsList Workload DeploymentsA
Read-onlyIdempotent
Inspect

A workload's deployments — its per-location rollout status. This is the PRIMARY readiness check after create_workload/update_workload: poll it (without location) until ready, then report the canonical endpoint as the public URL — never construct a URL by hand. Without location: every location with readiness, endpoints, and the canonical URL. With location: that single deployment in full detail — version chain, per-container readiness/restarts/messages, full JSON. For cron workloads, per-execution run history lives in status.jobExecutions of that per-location detail. Pair with get_workload_events and get_workload_logs to diagnose failures.

ParametersJSON Schema
NameRequiredDescriptionDefault
gvcYesGVC slug (lowercase kebab-case). Use the GVC the user named; otherwise discover with list_resources (kind="gvc") and let them choose — never guess (a wrong GVC targets the wrong environment).
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
locationNoOPTIONAL. A workload has one deployment per location it runs in. Omit for readiness across ALL locations plus the canonical public URL. Pass a location (e.g. "aws-us-east-1") for that single deployment's full detail — version chain, per-container readiness, and full JSON.
workloadYesWorkload whose deployments to inspect.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior5/5

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

The description adds substantial behavioral context beyond the readOnly/idempotent annotations: it explains the difference between omitting vs. specifying 'location', the presence of version chain and per-container readiness/restarts/messages in the full detail, and the status.jobExecutions location for cron workloads. It also warns against constructing URLs manually, which is not inferable from annotations.

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

Conciseness5/5

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

The description is dense yet well-organized: purpose → usage pattern → parameter behavior → cron edge case → related tools. Every sentence contributes unique value with no redundancy or filler.

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

Completeness5/5

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

The description fully contextualizes the tool within the workload lifecycle: it explains readiness polling, when to use with/without location, special cron handling, and how to combine with events/logs for diagnostics. The presence of an output schema means return-value details do not need to be exhaustively described.

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

Parameters4/5

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

The schema already covers all parameter descriptions at 100%, but the description adds key semantic nuance for the 'location' parameter (omit for all locations + canonical URL, pass a location for single deployment detail) and clarifies the use of org/gvc/workload. This exceeds the baseline for a fully-documented schema.

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

Purpose5/5

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

The description clearly defines the tool as listing a workload's per-location rollout status, and explicitly distinguishes it from diagnostic tools like get_workload_events and get_workload_logs. It also positions it as the primary readiness check after create_workload/update_workload, making its purpose unmistakable.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use guidance: poll after create/update until ready, use without 'location' for all-location readiness, and pair with get_workload_events/get_workload_logs for failure diagnosis. It also tells the agent to report the canonical endpoint as the public URL and never hand-construct it.

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

list_installed_templatesList Installed TemplatesA
Read-onlyIdempotent
Inspect

List the template releases installed in an org (name, template, version, GVC, revision). Use get_installed_template for the resources and status of a specific release.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
limitNoMaximum number of items to return (1-500, default: all).

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior3/5

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

Annotations already disclose readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds the scope 'in an org' and the output fields, but does not provide additional behavioral context such as pagination, authorization requirements, or rate limits. It does not contradict annotations.

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

Conciseness5/5

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

The description is two concise sentences with no filler. The first sentence states the action and the output fields; the second points to a more specific sibling tool for deep detail. Every sentence serves a purpose.

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

Completeness5/5

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

For a simple read-only listing tool with a detailed output schema and strong annotations, the description is complete. It communicates the scope (org), the output fields, and directs users to get_installed_template for per-release details. No significant gaps remain.

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

Parameters3/5

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

The input schema covers 100% of parameters with detailed descriptions (org pattern, limit min/max), so the description's reference to 'org' adds little beyond the schema. The mention of returned fields is about output, not parameter semantics. Baseline 3 is appropriate when the schema already provides thorough parameter documentation.

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

Purpose5/5

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

The description clearly states the tool 'List the template releases installed in an org' and enumerates the returned fields (name, template, version, GVC, revision). It uses a specific verb ('List') with a resource ('template releases') and explicitly distinguishes itself from get_installed_template, making the purpose unambiguous.

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

Usage Guidelines5/5

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

The description provides an explicit alternative: 'Use get_installed_template for the resources and status of a specific release.' This tells the agent when not to use this tool and when to choose a sibling instead, satisfying the criteria for when/when-not/alternatives guidance.

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

list_metricsList & Discover MetricsA
Read-onlyIdempotent
Inspect

Discover what metrics you can query before calling query_metrics, so you never guess a metric name or label. Returns the documented Control Plane default metrics (with type and a correct PromQL template each), PLUS the metrics actually present in the org right now — including CUSTOM metrics your workloads expose and kube_/node_ families. Pass filter to narrow by substring. Pass metric to see that metric’s REAL label dimensions and values (workload, gvc, location, …) from live data so your PromQL filters are grounded, not invented. Reach for this whenever a metrics query returns nothing or you are unsure of names/labels — it is optional, not required when you already know the metric you want.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
limitNoMaximum number of items to return (1-500, default: all).
filterNoCase-insensitive substring to narrow the catalog and live metric names (e.g. "cpu", "workload", "agent").
metricNoA metric name to ground: returns its REAL label dimensions and sample values (workload, gvc, location, …) from live data, so you can build an accurate PromQL filter. Works for custom metrics too.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the bar is lower. The description adds substantive behavioral context: it returns both documented defaults and live org metrics, and the `metric` parameter fetches real label dimensions and values from live data. No contradiction with annotations.

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

Conciseness4/5

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

The description is longer than typical but every sentence adds value: purpose, return content, parameter nuances, and usage triggers. It is front-loaded with the key 'discover' message and structured logically. Minor verbosity is justified by the tool's broad scope.

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 existence of an output schema and annotations covering safety, the description is complete enough: it states what is returned, how to filter, how to ground metrics, and when to use it. Minor omissions like pagination details are not critical for correct invocation.

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?

Input schema covers all parameters with descriptions (100% schema_description_coverage), so baseline is 3. The description enhances meaning by clarifying `filter` is a case-insensitive substring that narrows 'catalog and live metric names' and that `metric` exposes live label dimensions (workload, gvc, location) and works for custom metrics, beyond the schema.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Discover what metrics you can query before calling query_metrics'. It enumerates exactly what is returned (documented default metrics with types and PromQL templates, plus live metrics including custom and kube_/node_ families), clearly distinguishing it from sibling tools like query_metrics.

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?

Explicit usage guidance is given: 'Reach for this whenever a metrics query returns nothing or you are unsure of names/labels' and the exclusion 'optional, not required when you already know the metric you want.' It positions the tool as a precursor to query_metrics, making the use case unmistakable.

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

list_quotasList Organization QuotasA
Read-onlyIdempotent
Inspect

List quotas for an organization (per-org Control Plane resource limits). Each entry includes current usage, max, unit, and any dimensions. Set nearLimit=true to filter to quotas currently using ≥80% of their max — use this as a quick "what is about to break?" check before provisioning. Read-only — to raise a quota, request an increase by pinging Control Plane on Slack or emailing support@controlplane.com.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
limitNoMaximum number of items to return (1-500, default: all).
nearLimitNoFilter to quotas currently using ≥80% of their maximum. Useful as a quick "what is about to exhaust?" check.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description confirms 'Read-only'. It adds useful context about the response format ('Each entry includes current usage, max, unit, and any dimensions') and the ≥80% nearLimit threshold, which goes beyond annotation coverage.

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

Conciseness5/5

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

Three sentences front-load the primary purpose, then provide a concrete filter use case and an escalation path. There is no filler or redundancy; every sentence contributes to agent understanding.

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?

This is a simple tool with full annotations, a complete schema, and an output schema. The description covers the key use case (pre-provisioning check), response contents, and the alternative action for quota increases, leaving no significant gaps.

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 100%, and the schema itself robustly documents all three parameters, including org's 'NEVER guess' guidance. The tool description adds no new parameter meaning beyond the schema, so the baseline 3 is appropriate.

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

Purpose5/5

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

The description opens with 'List quotas for an organization (per-org Control Plane resource limits)', providing a specific verb, resource, and scope. This clearly differentiates it from sibling tools like list_resources or list_metrics.

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

Usage Guidelines5/5

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

The description explicitly frames the nearLimit=true filter as a 'what is about to break?' check to run before provisioning. It also provides a clear when-not: 'Read-only — to raise a quota, request an increase by pinging Control Plane on Slack or emailing support@controlplane.com'.

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

list_resourcesList Resources of a KindA
Read-onlyIdempotent
Inspect

List Control Plane resources of one kind as a summary table. The single read-list tool for every resource kind — pass kind (e.g. "workload", "secret", "gvc"), org, and gvc for GVC-scoped kinds. For a single item's full JSON use get_resource. Workload deployments are not a kind here — use list_deployments.

ParametersJSON Schema
NameRequiredDescriptionDefault
gvcNoGVC slug — REQUIRED only for GVC-scoped kinds (workload, identity, volumeset); ignored otherwise.
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
kindYesResource kind to list. One of: workload, identity, volumeset, gvc, secret, policy, group, domain, cloudaccount, agent, ipset, mk8s, serviceaccount, auditctx, image, location, user.
limitNoMaximum number of items to return (1-500, default: all).

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior4/5

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

While annotations already declare readOnlyHint, idempotentHint, and destructiveHint, the description adds valuable behavioral context: it returns a summary table (not full JSON), and it clarifies that workload deployments are excluded. This goes beyond the annotations, though it stops short of describing pagination or default limits, which are partially covered by the 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?

The description is three sentences, front-loaded with the core purpose. Each sentence earns its place: function, usage pattern, and alternative tools. No redundant or filler content.

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

Completeness5/5

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

The tool has a rich schema, annotations, output schema, and many siblings. The description covers the tool's role, required inputs, GVC-scoping nuance, and key alternatives. With the output schema handling return-value details, nothing essential 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 coverage is 100%, so the baseline is 3. The description mentions the key parameters (kind, org, gvc) and provides examples, but this largely mirrors what the schema already documents. It does not add new semantic details about format or behavior beyond the schema, so it stays at the baseline.

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

Purpose5/5

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

The description clearly states the tool lists Control Plane resources of one kind as a summary table, using the specific verb 'list' and identifying the resource type. It distinguishes itself from get_resource (full JSON) and list_deployments (deployments are not a kind), making its scope unambiguous.

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

Usage Guidelines5/5

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

The description explicitly positions this as 'the single read-list tool for every resource kind' and provides concrete usage instructions (pass kind, org, and gvc for GVC-scoped kinds). It also names alternatives: get_resource for a single item's full JSON and list_deployments for workload deployments, offering clear when-to-use and when-not-to-use guidance.

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

list_workload_replicasList Workload ReplicasA
Read-onlyIdempotent
Inspect

List the names of the running replicas (pods) of a workload in a location. Read-only operational inventory for confirming which replicas are currently serving. Recommended reading before first use: get_cpln_skill("workload-troubleshooting") — the runbook for this tool family (read once per session).

ParametersJSON Schema
NameRequiredDescriptionDefault
gvcYesGVC slug (lowercase kebab-case). Use the GVC the user named; otherwise discover with list_resources (kind="gvc") and let them choose — never guess (a wrong GVC targets the wrong environment).
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
limitNoMaximum number of items to return (1-500, default: all).
locationNoGVC location / deployment name. Default: the GVC's first location.
workloadYesWorkload whose running replicas to list.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds a bit of context by clarifying it deals with 'running replicas' and being an 'operational inventory', but it does not disclose additional behavioral details such as pagination, authentication requirements, or rate limits. With strong annotations, a score of 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.

Conciseness4/5

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

The description is three sentences long, front-loading the purpose in the first sentence and adding useful context (operational inventory, runbook recommendation) afterward. It is concise and well-structured, though the runbook sentence is somewhat ancillary to the tool's immediate 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?

The tool has an output schema, so return values do not need explanation. The description covers the purpose, scope, and a recommended prerequisite (the runbook). With 5 params fully documented in the schema, this is reasonably complete for a read-only list tool, though it could perhaps mention the default location behavior explicitly.

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 100%, with rich descriptions for each parameter (e.g., 'NEVER guess' for org, guidance on gvc). The tool description itself does not elaborate on parameters, relying on the schema to carry that weight. Given the high coverage, this meets the baseline of 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?

The description clearly identifies the action ('List the names of the running replicas (pods) of a workload in a location') with a specific verb and resource. It distinguishes itself from siblings like list_deployments or get_workload_logs by focusing on the inventory of running pods, which is a distinct operational concern.

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

Usage Guidelines4/5

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

The description states a clear use case ('Read-only operational inventory for confirming which replicas are currently serving'), providing context for when to use the tool. It also recommends a runbook before first use. However, it does not explicitly name alternatives or state when not to use this tool, so it stops 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.

mount_volumeset_to_workloadMount Volumeset to WorkloadA
Idempotent
Inspect

Attach a volumeset to a workload — mounts into the FIRST container only. Creates the volumeset when missing; size/fileSystemType/performanceClass apply ONLY on that create path and are ignored when the volumeset already exists. Workload-type rule: ext4/xfs (read-write-once) volumesets require a stateful or vm workload and bind to ONE workload; shared-filesystem volumesets mount on any workload type. Workload types are immutable — switching requires deleting and recreating the workload (plan downtime). Recommended reading before first use: get_cpln_skill("stateful-storage") — the runbook for this tool family (read once per session).

ParametersJSON Schema
NameRequiredDescriptionDefault
gvcYesGVC slug (lowercase kebab-case). Use the GVC the user named; otherwise discover with list_resources (kind="gvc") and let them choose — never guess (a wrong GVC targets the wrong environment).
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
sizeNoInitial capacity in GB — CREATE-ONLY (ignored when the volumeset already exists; expand_volumeset grows it). Required when creating. Min 10 (200 for high-throughput-ssd), max 65536.
tagsNoOptional tags for the volumeset; use them like Kubernetes labels for governance and search.
mountPathNoMount path inside the container (defaults to /mnt/{volumesetName}). Normalized before validation (".." resolved, "//" collapsed); reserved paths /dev, /dev/log, /tmp, /var, /var/log are rejected.
descriptionNoVolumeset description so operators know what data lives here (treat it like a Kubernetes annotation).
workloadNameYesExisting workload name to mount storage into; pass the name only, not a link.
volumesetNameNoOptional volumeset resource name, not a link. Omit to use {workloadName}-vol. If this volumeset does not exist yet, `size` is required so the tool can create it before mounting.
fileSystemTypeNoFile system type — CREATE-ONLY (ignored when the volumeset already exists); default xfs. ext4/xfs are read-write-once (stateful or vm workloads only); shared is read-write-many (any workload type).
recoveryPolicyNoWhat a NEW replica does when a matching volume already exists: "retain" (default) reuses the data, "recycle" starts fresh (schema/volumeSpec recoveryPolicy).
performanceClassNoPerformance class — CREATE-ONLY (ignored when the volumeset already exists); default general-purpose-ssd. high-throughput-ssd requires size ≥ 200; shared pairs only with fileSystemType shared.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior5/5

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

Beyond the annotations (idempotentHint=true), the description reveals critical behaviors: mounting only into the FIRST container, the create-only nature of size/fileSystemType/performanceClass, workload-type constraints, and the immutable workload-type consequence that requires delete/recreate downtime. This is substantial added transparency.

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 compact given the tool's complexity, with approximately five sentences each carrying essential information. It front-loads the primary action, then covers create-only semantics, workload-type rules, immutability warning, and a reference to the skill runbook—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?

For a tool with 11 parameters, conditional create semantics, and workload-type restrictions, the description covers all key behavioral caveats and even references a runbook for deeper context. Since an output schema exists, return values need not be explained. The description is sufficiently complete for correct tool selection and invocation.

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

Parameters4/5

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

The input schema already provides 100% parameter descriptions, including the create-only semantics for size/fileSystemType/performanceClass and workload-type rules for fileSystemType. The tool description reinforces these in a concise summary, adding a holistic view that ties parameters to the overall flow, but does not introduce entirely new parameter information.

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

Purpose5/5

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

The description opens with a specific verb+resource: 'Attach a volumeset to a workload — mounts into the FIRST container only.' This unambiguously identifies the tool's action and scope, and distinguishes it from siblings like create_volumeset, expand_volumeset, and create_workload.

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

Usage Guidelines5/5

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

The description clearly states when to use this tool (attach volumeset, optionally creating it) and when not (e.g., size is ignored if the volumeset already exists, implying expand_volumeset for growth). It also explains workload-type requirements and points to get_cpln_skill('stateful-storage') for first-use guidance, giving explicit context and alternatives.

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

query_audit_eventsQuery Audit EventsA
Read-onlyIdempotent
Inspect

Query the Control Plane audit trail for mutations on one or more resources of the same kind. Omit name and names to fetch every event for that kind in the org. Supply names to audit multiple resources in one call (events are merged and sorted newest-first). Supports filtering by subject, audit context, and time range. Platform events live in the built-in cpln context.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd time — ISO 8601 OR a relative duration meaning that long ago (units m/h/d/w/mo/y; months are "mo"). Only valid with `from`.
gvcNoGVC name. Required when `kind` is GVC-scoped (workload, identity, dbcluster, volumeset) AND `name`/`names` is provided.
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
fromNoStart time — ISO 8601 (e.g. "2025-10-23T07:00:00Z") OR a relative duration meaning that long ago (units m/h/d/w/mo/y; months are "mo", e.g. "3mo"). Overrides `since`.
kindYesResource kind to query audit events for — singular, exact spelling (e.g., "workload", "secret", "policy", "identity", "auditctx", "gvc"). With a custom `context`, kind instead matches the arbitrary `resource.type` your workload wrote (e.g., "order").
nameNoSingle resource name. Mutually exclusive with `names`. Omit both to query every resource of that kind in the org.
limitNoMaximum events to return in the merged result (default: 50, max: 1000).
namesNoMultiple resource names to audit in one call. Merges events from all named resources, sorted newest-first. Max 25 names. Mutually exclusive with `name`.
sinceNoRelative lookback window from now (default: "7d"). Examples: "1h", "24h", "7d", "30d". Mutually exclusive with from/to.
contextNoAudit context name (default: "cpln"). Use a custom context name to query workload-written events.
subjectNoFilter by subject: user email (contains "@"), full link (starts with "/"), or bare service-account name (auto-resolved to /org/{org}/serviceaccount/{name}).

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds useful behavioral context beyond annotations: events are "merged and sorted newest-first" when multiple names are supplied, and platform events live in the built-in `cpln` context. This exceeds the baseline but stops short of describing pagination or edge 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?

The description is three sentences, each earning its place: purpose, usage variants, filtering/context note. No redundancy or fluff. It is front-loaded with the core purpose in the first sentence.

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

Completeness4/5

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

The description covers the key high-level behaviors: audit trail, mutations, same-kind scope, all/single/multiple mode, filtering capabilities, and the default cpln context. With a rich schema and an output schema present, it does not need to explain parameter syntax. Minor gap: it does not mention when custom contexts are relevant for workload-written events, which is left to the schema.

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 100%, so the baseline is 3. The description does reference `name` and `names` and their omit/supply behavior, but this information is already present in the schema descriptions. No additional parameter meaning is added, so the score remains at the baseline.

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 opens with a specific verb and resource: "Query the Control Plane audit trail for mutations on one or more resources of the same kind." This clearly distinguishes the tool from sibling tools like query_metrics, query_traces, and get_resource, which target different data. The scope (mutations, same kind) is explicit.

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

Usage Guidelines4/5

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

The description gives actionable guidance: "Omit `name` and `names` to fetch every event... Supply `names` to audit multiple resources in one call." It also mentions filtering by subject, context, and time range. However, it does not explicitly name alternative tools or state when not to use this tool, 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.

query_metricsQuery Workload Metrics (PromQL)A
Read-onlyIdempotent
Inspect

Run a PromQL query against Control Plane metrics (Prometheus-compatible). Default is a range query over the last hour at 60s step — pass resolution: "instant" for a point-in-time query, since / from / to to adjust the window, and step to control resolution. Results are sliced to the first 50 series in prose; the full Prometheus response is included as JSON. If you already know the metric, just query it: gauges like cpu_used, mem_used, replica_count are used bare — as are the pre-rated egress and requests_per_second (never wrap these in rate()); genuine counters need rate(), e.g. sum by (workload) (rate(container_restarts[5m])); latency is a histogram: histogram_quantile(0.95, sum by (le) (request_duration_ms_bucket)). Only when you are unsure of the exact metric name or label values — or a query returns no series — call list_metrics first to see what is actually present in the org (incl. custom metrics) and a metric’s real labels. Use this to verify autoscaling signals before changing scaling settings — measure first, then change.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd of range — RFC3339 or epoch seconds. Default: now.
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
fromNoStart of range — RFC3339 or epoch seconds. Overrides `since` when set.
stepNoStep (range queries only). Examples: "15s", "60s", "5m". Default: "60s".
queryYesPromQL query, scoped automatically to the org in the request path (no `org=` label needed). Use REAL Control Plane metric names — call list_metrics if unsure. Examples with actual metrics: `avg by (workload) (cpu_used)` (gauge), `sum by (workload) (rate(container_restarts[5m]))` (counter), `histogram_quantile(0.95, sum by (le) (request_duration_ms_bucket))` (latency histogram). Pre-rated series — `egress`, `cross_zone_traffic`, `requests_per_second` — are queried bare, never wrapped in rate().
sinceNoRelative lookback (e.g., "5m", "1h", "24h"). Used when `from` is not provided. Default: "1h".
resolutionNo`instant` for /query — a single sample at `to` (defaults to now); `from`/`since`/`step` are ignored. `range` for /query_range (default).

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior5/5

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

Beyond the annotations (readOnly, idempotent, non-destructive), it discloses key behaviors: default range query over last hour at 60s step, result slicing to first 50 series in prose, full Prometheus response as JSON, and the rule never to wrap pre-rated metrics in rate(). No contradiction with annotations.

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

Conciseness5/5

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

The description is long but information-dense; every sentence serves a purpose, from defaults to output format to metric-type rules to fallback guidance. It is front-loaded with the primary action and default behavior, followed by examples and alternatives.

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

Completeness5/5

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

The description covers defaults, time-window handling, resolution modes, output truncation, metric-type guidance, and explicit fallback to list_metrics. With an output schema present, return-value documentation is unnecessary, leaving no significant gap.

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

Parameters5/5

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

Although the schema has 100% coverage, the description adds crucial parameter semantics: what 'instant' vs 'range' means, how since/from/to interact, and metric-type-specific query patterns (gauges bare, counters with rate(), histograms with histogram_quantile). This goes far beyond the schema's field descriptions.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Run a PromQL query against Control Plane metrics (Prometheus-compatible).' It clearly distinguishes from siblings by naming list_metrics as the lookup tool and focusing on Prometheus metrics versus audit events or traces.

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

Usage Guidelines5/5

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

It explicitly states when to use the tool directly ('If you already know the metric, just query it') and when to call list_metrics first ('Only when you are unsure... or a query returns no series'). It also gives a concrete use case: 'Use this to verify autoscaling signals before changing scaling settings.'

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

query_tracesQuery Distributed TracesA
Read-onlyIdempotent
Inspect

Search distributed traces (Tempo/TraceQL) — find slow or failing requests across workloads, then drill in with get_trace. Provide structured params (gvc, workload, location, errorsOnly, minDuration) OR a raw traceql query — a raw query REPLACES the structured params, so it must embed ALL filters itself. Span attributes available: resource.gvc, resource.workload, resource.location. Traces exist only where tracing is enabled on the GVC (spec.tracing via update_gvc/create_gvc) and only for sampled requests after enablement. Returns a table of trace IDs with root span, start time, and duration.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoAbsolute end time (exclusive, ISO 8601).
gvcNoFilter traces to one GVC (matches the `resource.gvc` span attribute).
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
fromNoAbsolute start time (inclusive, ISO 8601). Overrides `since`. Must be earlier than `to`.
limitNoMaximum traces to return (default: 20, max: 100).
sinceNoLookback window as relative duration (default: "1h"). Examples: "30m", "2h", "1d".
traceqlNoRaw TraceQL query (e.g. `{ resource.workload = "api" && status = error }`). REPLACES the structured params entirely, so it must embed ALL filters itself. Span attributes available: resource.gvc, resource.workload, resource.location.
locationNoFilter traces to one location (e.g., "aws-us-east-1").
workloadNoFilter traces to one workload (matches the `resource.workload` span attribute).
errorsOnlyNoOnly return traces containing at least one error span.
minDurationNoOnly return traces slower than this total duration (e.g., "500ms", "2s") — the slow-request finder.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior5/5

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

Beyond the readOnly/idempotent annotations, the description discloses that a raw `traceql` query REPLACES structured params, that traces are only present when tracing is enabled and sampled, and that results are a table of trace IDs with root span, start time, and duration. This adds real behavioral context without contradicting annotations.

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

Conciseness5/5

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

The two-sentence description is information-dense but efficient; it front-loads the core purpose, then packs interaction rules, prerequisites, and output format without redundancy.

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

Completeness5/5

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

Given the complexity of 11 parameters, an output schema, and annotations, the description covers the essential selection guidance, the replace semantics of traceql, the tracing-enabled prerequisite, sampling caveat, and result shape, making it a complete usage summary.

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?

While the schema fully documents each parameter, the description adds critical interaction semantics: raw `traceql` replaces all structured filters, and `minDuration` is framed as the slow-request finder. It also lists available span attributes for query authoring, exceeding schema descriptions.

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

Purpose5/5

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

The description opens with a specific action ('Search distributed traces (Tempo/TraceQL)') and states the purpose ('find slow or failing requests'), explicitly distinguishing itself from the sibling get_trace for drilling into a single trace.

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

Usage Guidelines4/5

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

It specifies the use case (find slow or failing requests), names the follow-up alternative (get_trace), and notes a key prerequisite (tracing must be enabled on the GVC). It doesn't enumerate all exclusion cases but gives sufficient context for selection.

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

remove_domain_portRemove a Domain Port ListenerA
DestructiveIdempotent
Inspect

Remove a port listener from a domain. Live traffic on that port stops immediately and any routed workloads become unreachable through this domain on that port.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
domainYesFully qualified domain name.
portNumberYesExisting listener port number to target.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior4/5

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

Given annotations already indicate destructive and idempotent behavior, the description adds valuable context about the immediate impact on live traffic and workforce reachability. This goes beyond the structured hints and helps the agent anticipate consequences.

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 two sentences, front-loaded with the action, and every word adds value. There is no filler or repetition of structured data.

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 destructive removal tool, the description is sufficient: it states the action and immediate consequences. With complete schema, annotations, and an output schema, it does not need to explain return values. Minor omissions like prerequisites are not critical given the schema covers 'existing listener port number.'

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

Parameters3/5

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

The input schema already provides descriptions for all three parameters (100% coverage), so the description does not add parameter-level meaning. The baseline of 3 is appropriate because the schema handles the details and the description's mention of 'port' aligns with portNumber.

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

Purpose5/5

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

The description clearly states the action ('Remove a port listener from a domain') with a specific verb and resource, distinguishing it from sibling tools like remove_domain_route. The scope 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 when to use this tool by focusing on port listeners, but it does not explicitly mention alternatives or when not to use it. The consequence of live traffic stopping provides contextual cues, but no exclusion or alternative guidance is given.

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

remove_domain_routeRemove a Route from a Domain ListenerA
DestructiveIdempotent
Inspect

Delete a single route entry from a port listener. Traffic that matched this route returns 404 on the affected listener until a new matching route is configured.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
domainYesFully qualified domain name.
portNumberYesExisting listener port number to target.
routeIdentifierYesIdentifier for an existing route. Route identity is path matcher + host matcher (Joi uniqueRoute) — include the route's hostPrefix/hostRegex when it has one, or a same-path route on a different host is matched instead.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior4/5

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

Annotations already mark this as destructive and idempotent, and the description adds the specific consequence of 404 responses until a new route is configured. This is useful behavioral context beyond the structured hints, though it omits details like permission requirements or failure modes.

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 just two sentences: the first states the action, the second explains the consequence. No filler, no redundancy, and the most important information is 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?

With full schema coverage, an output schema, and annotations covering destructive/idempotent behavior, the description adds the key implication (404 until a new route). It does not mention prerequisites like the route needing to exist, but that is likely covered by the output schema or implied by the 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 100%, with detailed parameter descriptions including the routeIdentifier identity semantics. The tool description itself adds no additional parameter meaning beyond what the schema provides, so a baseline of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb 'Delete' and clearly identifies the resource as 'a single route entry from a port listener.' This distinguishes it from sibling tools like remove_domain_port and add_domain_route, and the phrase 'single route entry' narrows the scope appropriately.

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

Usage Guidelines4/5

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

The description provides clear context by stating the immediate effect ('Traffic that matched this route returns 404 on the affected listener until a new matching route is configured'), which helps the agent understand when this destructive tool is appropriate. However, it does not explicitly mention alternatives or when not to use it, 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.

search_control_planeSearch Control Plane DocsA
Read-onlyIdempotent
Inspect

Search across the Control Plane knowledge base to find relevant information, code examples, API references, and guides. Use this tool when you need to answer questions about Control Plane, find specific documentation, understand how features work, or locate implementation details. The search returns contextual content with titles and direct links to the documentation pages. If you need the full content of a specific page, use the query_docs_filesystem_control_plane tool to head or cat the page path (append .mdx to the path returned from search — e.g. head -200 /api-reference/create-customer.mdx). In the default core profile, continue with search_control_plane; query_docs_filesystem_control_plane is available only in the full profile.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior4/5

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

Annotations already communicate safety (readOnly, idempotent, non-destructive). The description adds valuable behavioral context: returns 'contextual content with titles and direct links' and explains how to access full content via another tool. It could mention result limits or pagination, but for this simple search tool the added behavior is sufficient and complements the annotations.

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

Conciseness4/5

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

The description is thorough but slightly verbose. It front-loads the core purpose in the first sentence, then logically flows into usage guidance, output description, and alternative tool instructions. Every sentence serves a purpose, though the last sentence about profile availability could be seen as an extra detail; still, it aids correct tool selection and is well-organized.

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 one-parameter search tool with an output schema, the description is complete: it explains what kind of content is returned (titles and links), how to use the results to get full content (append .mdx and use head/cat), and when to choose an alternative tool. It also covers the profile constraint, leaving no major gaps for an agent to understand how and when to invoke this 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 schema has one parameter 'query' described simply as 'Search query', which is 100% coverage. The description does not elaborate on query syntax, formatting, or accepted query types, but given the parameter's simplicity and full schema coverage, the baseline of 3 is appropriate. No additional semantic value is added beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the tool searches the Control Plane knowledge base for 'relevant information, code examples, API references, and guides' — a specific verb+resource. It distinguishes itself from the sibling tool query_docs_filesystem_control_plane by explicitly noting that search returns titles and links, not full page content, and by directing users to the alternative for full content.

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?

Provides explicit use cases: 'when you need to answer questions about Control Plane, find specific documentation, understand how features work, or locate implementation details.' It also gives clear when-not-to-use guidance, specifying that for full page content you should use query_docs_filesystem_control_plane, and even explains profile differences (default vs full) with actionable next steps.

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

set_domain_tlsSet TLS on a Domain ListenerA
DestructiveIdempotent
Inspect

Set or replace the TLS block on a port listener (cipher suites, minimum protocol version). Provide the complete TLS shape; existing TLS settings on this listener are overwritten. Recommended reading before first use: get_cpln_skill("domain") — the runbook for this tool family (read once per session).

ParametersJSON Schema
NameRequiredDescriptionDefault
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
tlsYesTLS configuration for the listener (cipher suites, min protocol, and optional custom server/client certificates).
domainYesFully qualified domain name.
portNumberYesExisting listener port number to target.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior4/5

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

The annotations already indicate destructive and idempotent behavior, and the description adds crucial context: 'existing TLS settings on this listener are overwritten.' This goes beyond the generic hints and clarifies the replace semantics. It also advises reading a runbook before first use, which sets expectations for the 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 three sentences, front-loaded with the core action, then the critical overwrite warning, and a useful pointer to the runbook. Every sentence earns its place, with no redundancy or 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?

Given the tool's complexity (nested TLS object, 4 required params) and the presence of an output schema, the description covers the key behavioral aspects and even provides a learning resource. It could mention more about return values, but the output schema likely handles that. The pointer to the runbook fills any remaining gaps.

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

Parameters3/5

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

The input schema provides 100% description coverage for all four parameters, including the nested TLS object with subfields. The description adds no new parameter-level detail, but the schema already documents each field thoroughly. The baseline of 3 is appropriate since the schema carries the burden.

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

Purpose5/5

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

The description clearly states the verb ('Set or replace') and the resource ('TLS block on a port listener'), with specific scope (cipher suites, minimum protocol version). It also differentiates from siblings by emphasizing replacement/overwrite semantics, which is distinct from tools like clear_domain_tls.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool: whenever setting or replacing TLS on a listener. It explicitly warns to provide the complete TLS shape and that existing settings are overwritten. However, it doesn't explicitly mention alternatives or when not to use it, though it does recommend consulting the runbook, which provides additional guidance.

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

uninstall_templateUninstall TemplateA
Destructive
Inspect

Uninstall a release and remove the resources it created. Provide the release name. Recommended reading before first use: get_cpln_skill("template-catalog") — the runbook for this tool family (read once per session).

ParametersJSON Schema
NameRequiredDescriptionDefault
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
nameYesRelease name — the unique, immutable identifier for this installed instance within the org.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior4/5

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

Annotations already declare destructiveHint: true, and the description adds destructive scope: 'remove the resources it created.' It also specifies the required input (release name). This adds useful context beyond the annotation, though it doesn't elaborate on irreversibility or edge cases, which is acceptable given the annotation coverage.

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

Conciseness5/5

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

The description is exactly two sentences, front-loaded with the primary action and followed by a helpful reference. Every word serves a purpose, with no redundant or vague phrasing.

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

Completeness5/5

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

Given the presence of a full output schema, rich parameter descriptions, and annotations marking destructive behavior, the description covers the essential context: purpose, destructive scope, required input, and a pointer to a runbook. There are no obvious gaps for this tool's complexity.

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 100%, and the schema already provides detailed semantics for both org (including error-handling guidance) and name ('unique, immutable identifier'). The description only restates 'Provide the release name' without adding new meaning, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb+resource: 'Uninstall a release and remove the resources it created.' This clearly distinguishes it from sibling tools like delete_resource (general resource deletion) and install_template/upgrade_template (opposite life-cycle actions). The required input 'release name' is also mentioned.

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

Usage Guidelines4/5

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

The description gives clear context for when to use it (to uninstall a release) and includes a practical prerequisite: 'Recommended reading before first use: get_cpln_skill("template-catalog") — the runbook for this tool family.' It does not explicitly mention alternatives or when not to use, which would merit a 5, but the context is sufficient.

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

update_domainUpdate a DomainA
DestructiveIdempotent
Inspect

Update metadata (description, tags), top-level spec flags (acceptAllHosts, acceptAllSubdomains), or the GVC/workload binding. CANNOT change ports or routes directly — to add, repoint, or remove a route on an existing domain use add_domain_route / update_domain_route / remove_domain_route for routes, add_domain_port / remove_domain_port for listener ports, and set_domain_tls / clear_domain_tls for TLS (all core); only CORS edits (set_domain_cors / clear_domain_cors) are full profile. After binding gvcLink/workloadLink, re-read status.dnsConfig — bindings add records the user must create. Recommended reading before first use: get_cpln_skill("domain") — the runbook for this tool family (read once per session).

ParametersJSON Schema
NameRequiredDescriptionDefault
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
tagsNoAdd or update tags without replacing the full set. Submit an empty list to clear all tags.
domainYesFully qualified domain name to update.
gvcLinkNoBind the domain to a GVC (e.g., /org/{org}/gvc/{gvc} or //gvc/{gvc}). Mutually exclusive with `removeGvcLink` and `workloadLink`.
descriptionNoNew description for the domain.
workloadLinkNoBind the entire domain to one workload (e.g. //gvc/{gvc}/workload/{name}). Mutually exclusive with `removeWorkloadLink` and `gvcLink`.
removeGvcLinkNoDetach the domain from its current GVC binding.
removeTagKeysNoTag keys to remove from the resource.
acceptAllHostsNoAccept any host header (overrides existing).
removeWorkloadLinkNoDetach the domain from its current workload binding.
acceptAllSubdomainsNoAccept any subdomain (overrides existing).

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior4/5

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

Annotations already mark this as non-read-only, idempotent, and destructive. The description adds behavioral context beyond these: it highlights that binding creates DNS records the user must create, and that it cannot modify ports/routes directly, which are limitations. It also mentions a recommended pre-read skill, which is a usage behavior. This adds value without contradicting the annotations.

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

Conciseness4/5

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

The description is well-structured, starting with the core purpose, then exclusions, then side-effects and a reading recommendation. Every sentence adds necessary information—there is no filler. It is slightly longer than minimal but the complexity of the tool justifies it.

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

Completeness5/5

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

Given the tool's complexity (11 parameters, 2 required, output schema), the description covers what can be updated, what cannot, alternatives, side-effects, and a prerequisite read. The presence of an output schema means return values don't need elaboration. It is a complete, self-sufficient description.

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

Parameters3/5

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

The input schema already provides 100% parameter descriptions (e.g., tags: 'Add or update tags without replacing the full set. Submit an empty list to clear all tags.'). The description groups parameters into meaningful categories (metadata, spec flags, bindings) and introduces the DNS side-effect, but does not provide syntax beyond the schema. Baseline for full schema coverage is 3; the grouping and side-effect note add a little, but not enough to exceed.

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

Purpose5/5

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

The description clearly states the tool updates metadata (description, tags), spec flags (acceptAllHosts, acceptAllSubdomains), and GVC/workload bindings. It explicitly differentiates from siblings by listing what it cannot do and directing to add_domain_route, update_domain_route, remove_domain_route, add_domain_port, remove_domain_port, set_domain_tls, and clear_domain_tls for routes, ports, and TLS. This gives a precise verb+resource distinction.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use vs. alternatives: 'CANNOT change ports or routes directly' followed by the exact sibling tools for routes, ports, and TLS. It also advises re-reading status.dnsConfig after binding gvcLink/workloadLink to create required DNS records, and recommends reading get_cpln_skill('domain') before first use. This is clear context with exclusions and prerequisites.

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

update_domain_routeUpdate a Route on a Domain ListenerA
DestructiveIdempotent
Inspect

Replace a single route entry on a port listener. Identify the existing route via prefix or regex (whichever it uses); the replacement route needs workloadLink and may omit optional matchers to match /. Returns the full updated domain JSON for inspection. Recommended reading before first use: get_cpln_skill("domain") — the runbook for this tool family (read once per session).

ParametersJSON Schema
NameRequiredDescriptionDefault
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
routeYesRoute entry forwarding listener traffic to a workload. Minimal valid route: { "workloadLink": "//gvc/{gvc}/workload/{name}" }. All matchers are optional; omit prefix/regex to match /.
domainYesFully qualified domain name.
portNumberYesExisting listener port number to target.
routeIdentifierYesIdentifier for an existing route. Route identity is path matcher + host matcher (Joi uniqueRoute) — include the route's hostPrefix/hostRegex when it has one, or a same-path route on a different host is matched instead.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior4/5

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

Annotations already mark destructiveHint=true, readOnlyHint=false, and idempotentHint=true. The description adds behavioral context beyond that by mentioning the route identity matching (prefix or regex), the requirement for workloadLink, the optional omission of matchers to match '/', and the return of the full updated domain JSON. This complements the annotations without contradiction.

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

Conciseness5/5

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

The description is three sentences, front-loaded with the primary action, and every sentence is purposeful. It includes a useful pointer to the runbook without unnecessary embellishment. No redundancy or 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?

Given the complex nested schema (5 required params, nested objects, 100% coverage) and the indication of an output schema, the description covers the essential workflow: identify, replace, and inspect result. It directs to the runbook for deeper context. It doesn't enumerate edge cases, but the schema does, so it's adequately 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 coverage is 100% with detailed descriptions for every parameter, including routeIdentifier and route. The description adds some semantic gloss (e.g., 'whichever it uses' for route matcher, 'may omit optional matchers to match /') but does not significantly extend the schema's own documentation. Baseline 3 is appropriate given the high schema coverage.

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

Purpose5/5

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

The description uses a specific verb ('Replace') and resource ('single route entry on a port listener'), clearly distinguishing this update tool from sibling add_domain_route and remove_domain_route. It also explains the core mechanics (identify via prefix/regex, require workloadLink) which further pins down the purpose.

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

Usage Guidelines4/5

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

The description clearly indicates when to use the tool (replacing an existing route) and provides context about identifying the route and required fields. It does not explicitly name alternatives or state exclusions, but the replace vs. add/remove distinction is implicit. The recommendation to read get_cpln_skill before first use is a useful usage guideline.

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

update_gvcUpdate a Control Plane GVCA
DestructiveIdempotent
Inspect

Update a GVC. Scalars, description, tags, env, pullSecretLinks, and placement addLocations MERGE with existing values; remove* counterparts (removeLocations, removeTagKeys, removeEnvNames, removePullSecretLinks) take entries away, and remove* flags (removeLocationQuery, removeTracing, removeLoadBalancer, removeKeda, removeSidecarEnvoy, removeAliasWorkloadLink) delete an optional block entirely. The nested objects (loadBalancer, keda, tracing, sidecarEnvoy, locationOptions, locationQuery) are REPLACED wholesale: always submit the complete object, never a partial patch, or the omitted sub-fields are dropped. Custom domains are configured with the Domain resource (create_domain), not on the GVC. Placement and endpoint changes can redeploy workloads or affect public workload availability.

ParametersJSON Schema
NameRequiredDescriptionDefault
envNoAdd or update GVC environment variables (merged with existing). Submit an empty list to clear every env variable.
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
kedaNoReplace the KEDA configuration.
tagsNoAdd or update GVC tags (merged with existing tags) without replacing the entire set. Submit an empty list to clear all tags.
gvcNameYesGVC slug (lowercase kebab-case). Use the GVC the user named; otherwise discover with list_resources (kind="gvc") and let them choose — never guess (a wrong GVC targets the wrong environment).
tracingNoReplace the tracing configuration.
removeKedaNotrue deletes spec.keda.
descriptionNoNew description. Treat it like a concise annotation for future operators.
addLocationsNoPlacement locations to ADD (merged with existing; duplicates skipped). Accepts location names, friendly names, or links, validated against the org's own location list.
loadBalancerNoReplace the GVC load balancer configuration.
sidecarEnvoyNoReplace the Envoy sidecar filters (spec.sidecar.envoy).
locationQueryNoReplace the dynamic placement query.
removeTagKeysNoTag keys to remove from the GVC.
removeTracingNotrue deletes spec.tracing (stops trace export).
removeEnvNamesNoEnvironment variable names to remove.
locationOptionsNoReplace per-location geo-routing options. Submit an empty list to remove them all.
pullSecretLinksNoAdd pullSecretLinks (merged with existing). Submit an empty list to clear them all.
removeLocationsNoPlacement locations to REMOVE. Workloads redeploy out of removed locations and may lose capacity there.
aliasWorkloadLinkNoLink to a workload in this GVC whose canonical endpoint backs the GVC alias DNS record (e.g. //gvc/{gvc}/workload/{name}). NOTE: the alias is INERT while the target workload is suspended (suspend=true or maxScale=0) — it takes effect only while the workload runs.
removeLoadBalancerNotrue deletes spec.loadBalancer (reverts to platform default load balancing).
removeSidecarEnvoyNotrue deletes spec.sidecar (drops the custom Envoy filters).
removeLocationQueryNotrue deletes spec.staticPlacement.locationQuery, so placement follows the plain location list again.
endpointNamingFormatNoSet the canonical endpoint subdomain format (default/legacy/org).
removePullSecretLinksNopullSecretLinks to remove (exact string match).
removeAliasWorkloadLinkNotrue deletes spec.aliasWorkloadLink (detaches the GVC alias DNS record).

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior5/5

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

Annotations already mark this as mutating, destructive, and idempotent, but the description adds crucial specifics beyond those hints: which parameters remove entries, which remove entire blocks, and which nested objects are replaced wholesale. The warning that partial patches drop omitted sub-fields and that changes can affect workload availability is exactly the kind of behavioral disclosure agents need.

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 dense but every sentence earns its place: the subject, the merge/remove/replace taxonomy, the domain-resource pointer, and the operational risk warning. It stays compact despite the complexity of a 25-parameter update API, with no filler or repetition of schema content.

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

Completeness5/5

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

Given the rich schema and output schema, the description covers the remaining conceptual gaps: merge vs replace behavior, destructive remove flags, partial-patch dangers, and side effects on workloads. An agent can safely select and invoke this tool with the information provided.

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

Parameters5/5

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

With 100% schema coverage across 25 parameters, the description adds meaningful high-level semantics that the schema alone does not convey: scalars, tags, env, pullSecretLinks, and addLocations merge; remove* counterparts remove; nested objects replace wholesale. It explicitly names all remove flags and reinforces the complete-object requirement, which is critical for correct invocation.

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

Purpose5/5

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

The description opens with 'Update a GVC'—a specific verb plus target resource—and then details merge vs replace semantics. It clearly differentiates this from create_gvc and sibling resource-specific update tools. The explicit note that custom domains are handled by create_domain further disambiguates scope.

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

Usage Guidelines5/5

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

The description gives clear context for when to use this tool and provides a concrete exclusion: custom domains must be configured with the Domain resource (create_domain), not on the GVC. It also warns that placement and endpoint changes can redeploy workloads or affect availability, giving agents operational risk awareness.

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

update_identityUpdate an IdentityA
DestructiveIdempotent
Inspect

Update an identity's description, tags, and (optionally) replace its networkResources / nativeNetworkResources wholesale. Provider blocks can modify real resources in the connected cloud account, including AWS IAM roles, GCP service accounts, and Azure managed identities. Recommended reading before first use: get_cpln_skill("access-control") — the runbook for this tool family (read once per session).

ParametersJSON Schema
NameRequiredDescriptionDefault
awsNoReplace the AWS cloud-identity block (full object). To switch xor-fields (roleName ↔ policyRefs), just send the new block — it replaces wholesale.
gcpNoReplace the GCP cloud-identity block (full object). To switch xor-fields (serviceAccount ↔ bindings), just send the new block — it replaces wholesale.
gvcYesGVC slug (lowercase kebab-case). Use the GVC the user named; otherwise discover with list_resources (kind="gvc") and let them choose — never guess (a wrong GVC targets the wrong environment).
ngsNoReplace the NGS cloud-identity block (full object — it replaces wholesale).
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
nameYesResource name (lowercase kebab-case, starts with a letter, 2-64 chars). Names are IMMUTABLE — renaming = delete + recreate (loses URL, DNS, policy links).
tagsNoAdd or update tags without replacing the full set. Submit an empty list to clear all tags.
azureNoReplace the Azure cloud-identity block (full object — it replaces wholesale).
descriptionNoNew description for the identity.
removeTagKeysNoTag keys to remove from the resource.
spicedbAccessNoReplace the SpiceDB cluster access list (max 5).
memcacheAccessNoReplace the memcache cluster access list (max 5).
networkResourcesNoReplace the full networkResources array (wholesale).
removeCloudIdentitiesNoCloud-identity blocks to clear from the identity (e.g., ["aws"]). Server-side $drop semantics — use this to detach an identity from a cloud account.
nativeNetworkResourcesNoOptional replacement for the full nativeNetworkResources array (wholesale). Each item requires name, ports, and exactly one provider block.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior4/5

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

Annotations already mark destructiveHint=true and readOnlyHint=false, but the description adds critical context: 'Provider blocks can modify real resources in the connected cloud account, including AWS IAM roles, GCP service accounts, and Azure managed identities.' It also clarifies that networkResources and nativeNetworkResources are replaced wholesale, and that tags can be updated without full replacement—details beyond the schema and annotations.

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

Conciseness5/5

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

The tool description is only two sentences, yet it packs the core purpose, the dangerous side effect, and a prerequisite recommendation. There is zero fluff; every phrase earns its place, and the most important info (what it does, what's risky) is 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?

Given the tool's complexity (15 parameters, nested cloud blocks), the description is quite complete. It covers the action, the destructive potential, the wholesale replacement pattern, and recommends a runbook. It does not discuss return values, but an output schema exists, shifting that burden away. The only minor gap is not explaining the difference between 'tags' and 'removeTagKeys' but that is covered in the schema.

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

Parameters4/5

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

Schema description coverage is 100%, so each parameter is already well-documented. The description adds semantic value by highlighting the wholesale-replacement behavior for networkResources/nativeNetworkResources and the tag update semantics (add/update vs. clear). This goes beyond the schema's per-field descriptions, enriching the agent's understanding of parameter interplay.

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 specifies the exact scope: 'Update an identity's description, tags, and (optionally) replace its networkResources / nativeNetworkResources wholesale.' It names the resource (identity) and the precise operations, clearly differentiating from create_identity and other update_* tools. The mention of cloud identity blocks further clarifies the tool's role.

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

Usage Guidelines4/5

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

The description warns about the high-impact nature ('Provider blocks can modify real resources in the connected cloud account') and recommends reading a skill ('get_cpln_skill("access-control")') before first use. It provides clear context but does not explicitly enumerate when to use this tool versus alternatives, though the update-vs-create distinction is implicit from the resource name.

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

update_policyUpdate a PolicyA
DestructiveIdempotent
Inspect

Update a policy: metadata (description, tags), target scope (targetAll / targetLinks / removeTargetLinks / targetQuery / removeTargetQuery), and bindings (addBindings merges by permission set; removeBindings strips principals from matching bindings). Optimistic concurrency uses version/id from the current state. Call get_resource (kind="policy") first to capture state.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
nameYesResource name (lowercase kebab-case, starts with a letter, 2-64 chars). Names are IMMUTABLE — renaming = delete + recreate (loses URL, DNS, policy links).
tagsNoAdd or update tags without replacing the full set. Submit an empty list to clear all tags.
targetAllNoWhen true sets target="all" and clears targetLinks (exclusive with targetLinks/removeTargetLinks).
addBindingsNoBindings to merge in. Matching permission sets merge principalLinks; otherwise a new binding is appended.
descriptionNoNew description for the policy.
targetLinksNoReplace the targetLinks list with this exact set. Use removeTargetLinks for incremental removal.
targetQueryNoReplace the dynamic target query (resources matching it are targeted).
removeTagKeysNoTag keys to remove from the resource.
removeBindingsNoBindings to remove. Each item is { permissions: string[], principalLinks: string[] }; matching permission/principal pairs are stripped and empty bindings are removed.
removeTargetLinksNoRemove these targetLinks from the existing list (mutually exclusive with full-replacement targetLinks).
removeTargetQueryNotrue deletes targetQuery; a stale query keeps granting on every matched resource, additively to targetLinks.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior4/5

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

Annotations already indicate destructive and idempotent behavior; the description adds important nuance by explaining that addBindings merges by permission set, removeBindings strips principals, and optimistic concurrency depends on the current version/id. No contradiction with annotations, and the added behavior details go beyond what annotations alone convey.

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

Conciseness5/5

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

The description is three sentences, front-loaded with the main purpose, and uses compact category lists to avoid redundancy. Every sentence earns its place, including the final call-to-action about get_resource.

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

Completeness4/5

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

For a tool with 12 parameters, nested schemas, and an output schema, the description covers the key operational context: what can be updated, merge/strip behavior, and the required prerequisite call to get_resource. It does not explain every destructive edge case, but the input schema handles those details, so the description is sufficient.

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

Parameters4/5

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

The schema has 100% description coverage, so the parameter semantics baseline is high. The description adds value by grouping the 12 parameters into three concerns — metadata, target scope, and bindings — and by highlighting the merge/strip behavior for bindings. It reinforces the schema without needing to restate every field 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?

The description clearly states it updates a policy and enumerates exactly what can be updated: metadata, target scope, and bindings, including merge/strip semantics. This goes beyond a simple verb+resource and helps distinguish update_policy from create_policy or get_resource.

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

Usage Guidelines4/5

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

The description gives an explicit usage precondition: call get_resource (kind="policy") first to capture the current state for optimistic concurrency. It does not explicitly say when not to use this tool or mention alternatives like create_policy, so it falls short of a 5, but the context provided is clear and actionable.

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

update_volumesetUpdate a VolumesetA
DestructiveIdempotent
Inspect

Update mutable volumeset fields: description, tags, initialCapacity (for newly-provisioned volumes), snapshot policy, autoscaling, mountOptions. snapshots/autoscaling/mountOptions REPLACE the entire stored object — include every field you want to keep. Filesystem type and performance class are IMMUTABLE — to change either, snapshot first and recreate. customEncryption cannot be set here — apply a full manifest with the CLI (cpln apply; get_resource_schema kind=volumeset first). Changing initialCapacity does not resize existing volumes; expand_volumeset grows them. Recommended reading before first use: get_cpln_skill("stateful-storage") — the runbook for this tool family (read once per session).

ParametersJSON Schema
NameRequiredDescriptionDefault
gvcYesGVC slug (lowercase kebab-case). Use the GVC the user named; otherwise discover with list_resources (kind="gvc") and let them choose — never guess (a wrong GVC targets the wrong environment).
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
nameYesResource name (lowercase kebab-case, starts with a letter, 2-64 chars). Names are IMMUTABLE — renaming = delete + recreate (loses URL, DNS, policy links).
tagsNoAdd or update tags without replacing the full set. Submit an empty list to clear all tags.
snapshotsNoREPLACES the entire snapshot policy — include every field you want to keep (omitted fields are removed).
autoscalingNoREPLACES the entire autoscaling object — include every field you want to keep (omitted fields are removed).
descriptionNoNew description.
mountOptionsNoREPLACES the entire mountOptions object (shared-filesystem volume sets only) — include every field you want to keep.
removeTagKeysNoTag keys to remove from the resource.
initialCapacityNoUpdate the initialCapacity (note: existing volumes do not shrink — expand_volumeset does hot expansion).
removeSnapshotsNotrue deletes spec.snapshots (stops the automatic snapshot schedule).
removeAutoscalingNotrue deletes spec.autoscaling (volumes stop auto-growing).
removeMountOptionsNotrue deletes spec.mountOptions (reverts to platform mount defaults).

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=true, idempotentHint=true), the description discloses critical behavior: snapshots/autoscaling/mountOptions REPLACE entire stored objects, some fields are immutable, and initialCapacity doesn't affect existing volumes. These are non-obvious and valuable caveats not present in annotations.

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

Conciseness4/5

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

The description is dense and well-structured, front-loading the main purpose and then listing caveats. It is longer than minimal, but every sentence conveys a distinct fact (replacement semantics, immutability, alternative tools, recommended reading). It earns its length without being verbose.

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

Completeness5/5

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

Given the tool's complexity (13 params, nested objects, output schema present), the description covers all critical use-case caveats: replacement behavior, immutable fields, no-resize behavior, alternatives for encryption and expansion, and a pointer to the runbook. An output schema exists, so return-value details are unnecessary.

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 100%, so the baseline is 3. The description adds some high-level context (e.g., initialCapacity for newly-provisioned volumes, replacement semantics for three objects), but most of this is already embedded in the schema's parameter descriptions. The description doesn't significantly expand beyond what the schema already explains.

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 opens with 'Update mutable volumeset fields' and names the specific mutable fields (description, tags, initialCapacity, snapshot policy, autoscaling, mountOptions). This clearly distinguishes it from siblings like create_volumeset, delete_resource, and expand_volumeset, especially by explicitly pointing to expand_volumeset for growing volumes.

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

Usage Guidelines5/5

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

The description gives explicit usage guidance: it states that changing filesystem type/performance class requires snapshot + recreate, that customEncryption must be handled via the CLI manifest, and that initialCapacity changes do not resize existing volumes, directing to expand_volumeset instead. It also recommends reading a skill before first use, effectively describing when to prepare.

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

update_workloadUpdate a WorkloadA
DestructiveIdempotent
Inspect

Update an existing workload (PATCH semantics — only specified fields change). Workload type and name are IMMUTABLE: trying to change either via update fails — those require delete + recreate. If the target is a CRON workload, patch its schedule / job policy / suspend / capacityAI / containers here (autoscaling/timeoutSeconds/debug do not apply to cron and are rejected); schedule/job fields are likewise rejected against a non-cron workload. Call get_resource (kind="workload") first to capture current state so a rollback exists. Avoid silent downgrades (probes, autoscaling) — see the production-grade defaults in get_cpln_rules. Advanced spec sections (loadBalancer, sidecar, extras, localOptions, rolloutOptions, securityOptions, requestRetryPolicy) are NOT here — use the matching configure_workload_* tool. Recommended reading before first use: get_cpln_skill("workload") — the runbook for this tool family (read once per session).

ParametersJSON Schema
NameRequiredDescriptionDefault
gvcYesGVC slug (lowercase kebab-case). Use the GVC the user named; otherwise discover with list_resources (kind="gvc") and let them choose — never guess (a wrong GVC targets the wrong environment).
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
nameYesWorkload name (lowercase kebab-case, must start with a letter, max 49 chars, cannot end with -headless). The name is IMMUTABLE — "renaming" requires delete + recreate (loses public URL, internal DNS, policy targetLinks).
tagsNoAdd or update tags without replacing the full set. Submit an empty list to clear all tags.
debugNoEnable or disable spec.defaultOptions.debug. Not valid for a cron workload.
publicNoConvenience shortcut: opens the external firewall BOTH ways — inbound 0.0.0.0/0 AND outbound 0.0.0.0/0. Mutually exclusive with firewallConfig (an explicit firewallConfig overrides it).
suspendNoEnable or disable spec.defaultOptions.suspend (for a cron workload, pauses/resumes scheduled runs)
scheduleNoNew cron schedule (NUMERIC 5-field expression, e.g. "0 */6 * * *" — no macros or day/month names). Only valid when the target workload is type "cron".
capacityAINoEnable or disable spec.defaultOptions.capacityAI — applies to every type (default ON for serverless/standard/cron; on cron the new reservation takes effect at the next scheduled run). Explicit true is rejected with the cpu metric and with GPUs.
containersNoOptional container patches, merged by required `name` into existing containers. Minimal patch item is { "name": "app" }; other containers are preserved. Set only fields you want to change. An unknown name ADDS a new container and must include image.
autoscalingNoAutoscaling patch → merged key-by-key into spec.defaultOptions.autoscaling.
descriptionNoUpdate workload description
historyLimitNoNumber of completed job instances to retain (default 5)
identityLinkNoIdentity link granting 3rd-party cloud resource access, e.g. //identity/my-id
removeTagKeysNoTag keys to remove from the resource.
restartPolicyNoWhat to do when a job instance fails
firewallConfigNoReplace the firewall config wholesale.
timeoutSecondsNoSet spec.defaultOptions.timeoutSeconds — max request duration (platform default 5s; serverless caps at 600)
concurrencyPolicyNoWhat to do when a run is due while a prior run is still active (default Forbid)
removeIdentityLinkNotrue deletes spec.identityLink, revoking the cloud/secret access it granted.
supportDynamicTagsNoEnable or disable spec.supportDynamicTags (detects image digest changes)
activeDeadlineSecondsNoMax seconds to wait for the job to complete before it is stopped

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior5/5

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

Despite annotations already declaring destructiveHint=true and readOnlyHint=false, the description adds substantial value: PATCH merge semantics, immutable name/type (with failure outcome 'update fails'), cron-field rejection, rollback advice, and explicit out-of-scope list. No contradiction with annotations.

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

Conciseness5/5

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

Front-loaded with the most important fact (PATCH semantics) and every subsequent sentence earns its place: immutability, cron rules, rollback, scope exclusions, and learning resources. Dense but not a single wasted word for a 22-parameter tool with this complexity.

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 tool this complex (22 params, 3 required, cron/autoscaling/firewall nuances), the description is remarkably complete for its purpose: it doesn't restate parameters (output schema exists) but instead routes to get_cpln_skill('workload') runbook, get_cpln_rules for defaults, configure_workload_* for advanced sections, and get_resource for rollback safety — exactly the missing context an agent needs.

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 100% with rich per-parameter descriptions, so baseline is 3. The description adds value above baseline by explaining cross-parameter applicability (autoscaling/timeoutSeconds/debug rejected on cron, schedule rejected on non-cron) and the merge-by-name container strategy that frames how all params behave. Slight deduction because the bulk of per-param meaning still lives in the schema, which is appropriate.

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

Purpose5/5

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

The description opens with a specific verb+resource ('Update an existing workload') immediately clarifies PATCH semantics (only specified fields change), and distinguishes itself from configure_workload_* and create_workload. The immutability disclosure (type/name require delete+recreate) and cron-specific behavior sharply separate it from siblings.

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

Usage Guidelines5/5

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

Explicitly names alternatives: configure_workload_* for advanced spec sections, get_resource(kind='workload') for state capture/rollback, get_cpln_rules for production defaults, and get_cpln_skill('workload') as the runbook. Also gives field-applicability rules for cron vs non-cron. This is exemplary when/when-not guidance.

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

upgrade_templateUpgrade TemplateA
Destructive
Inspect

Upgrade an installed release to a new version and/or updated values. Identify the release by name only — the template and GVC are immutable and read from the installed release, so you do NOT pass them. Omit version to move to the latest available. values REPLACE the release's current values entirely (no merge) — start from the currently applied values (CLI: cpln helm get values <name> --all), not the template example. Verify with get_installed_template after. Recommended reading before first use: get_cpln_skill("template-catalog") — the runbook for this tool family (read once per session).

ParametersJSON Schema
NameRequiredDescriptionDefault
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
nameYesRelease name — the unique, immutable identifier for this installed instance within the org.
valuesYesThe complete values.yaml for the release going forward — it REPLACES the currently applied values entirely (there is no reuse-values merge). Start from the release's CURRENT values (CLI: `cpln helm get values <RELEASE> --all`; there is no MCP path), not the template example, or previously customized settings silently fall back to defaults.
versionNoTarget version to upgrade to. Omit for the latest available version.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior5/5

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

The annotations include destructiveHint=true, and the description goes beyond this by stating the exact destructive behavior: 'values REPLACE the release's current values entirely (no merge).' It adds a concrete safety workflow: start from the currently applied values, not the template example, and verify afterward. This is rich behavioral transparency.

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 compact but each sentence earns its place. It front-loads the core purpose, then adds the immutable-identity constraint, the version default, the destructive replacement warning with remediation, and a verification step. No filler or redundant text; the tool-family reading recommendation is useful and brief.

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 destructive upgrade operation, the description and schema together cover required parameters, destructive replacement behavior, how to source current values, what to omit for latest, and how to verify success. The output schema is present, so return-value detail does not need to be in the description. This is complete for an agent to use the tool safely.

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

Parameters4/5

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

The input schema already covers all 4 parameters with detailed descriptions (100% coverage), so the description does not need to restate basic meanings. It adds valuable semantics beyond the schema: the release is found by name only, template/GVC are immutable, version omission means latest, and the replacement semantics for values. That is meaningful added context above the schema.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Upgrade an installed release to a new `version` and/or updated `values`.' It clearly distinguishes this from install/uninstall by emphasizing the release is already installed and that template/GVC are immutable and read from the installed release. This removes ambiguity against sibling tools like install_template and get_installed_template.

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

Usage Guidelines4/5

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

The description conveys strong usage context: it tells the agent to identify releases by name only, to omit version for latest, to use current values rather than template examples, and to verify with get_installed_template after. It does not explicitly name install_template as the alternative for new installs, but the phrase 'installed release' and the immutable template/GVC note make the install-versus-upgrade boundary clear.

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

workload_start_cronWorkload — Start a Cron RunA
Destructive
Inspect

Trigger an immediate run of a cron workload (useful when the schedule is suspended or you need an out-of-band execution). Every call requests another run, consumes real compute, and may execute job mutations or external calls, so treat it as destructive and confirm the side effects with the user.

ParametersJSON Schema
NameRequiredDescriptionDefault
gvcYesGVC slug (lowercase kebab-case). Use the GVC the user named; otherwise discover with list_resources (kind="gvc") and let them choose — never guess (a wrong GVC targets the wrong environment).
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
nameYesWorkload name (lowercase kebab-case, must start with a letter, max 49 chars, cannot end with -headless). The name is IMMUTABLE — "renaming" requires delete + recreate (loses public URL, internal DNS, policy targetLinks).
locationYesLocation where this job should execute. Must be one of the locations where this workload is deployed — call list_deployments to list the workload's locations.
containerOverridesNoOPTIONAL. Most manual runs need no overrides — omit this entirely to run the job exactly as configured. Provide it only to change a container for this single run (e.g. a one-off command, image, or env). It is an array because a workload can have multiple containers; add one entry per container you want to change, each targeting an existing container by `name`. Call get_resource (kind="workload") first to see the workload’s containers (names, image, command, env) so you know what to set.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior5/5

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

The description discloses important behavioral traits beyond the annotations: every call requests another run, consumes real compute, may execute job mutations or external calls, and is non-idempotent. This complements the destructiveHint=true and idempotentHint=false annotations with specific user-facing consequences.

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 two sentences, front-loaded with the primary action, and every clause adds value. It is concise without sacrificing important behavioral warnings.

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

Completeness5/5

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

Given the rich schema descriptions, complete annotations, and presence of an output schema, the tool description adequately covers purpose, usage context, and side effects. It is complete for an agent to select and invoke the tool appropriately.

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 100% and the parameter descriptions are highly detailed (e.g., org 'NEVER guess', name immutability, location discovery via list_deployments). The tool description itself adds no parameter-level semantics, so the baseline of 3 applies.

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

Purpose5/5

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

The description clearly states the action: 'Trigger an immediate run of a cron workload.' It also specifies the use case ('schedule is suspended' or 'out-of-band execution'), which distinguishes it from other workload operations like workload_stop_replica or update_workload.

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

Usage Guidelines4/5

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

The description gives clear context on when to use this tool: when a schedule is suspended or an out-of-band execution is needed. It also instructs the agent to confirm side effects with the user. It does not explicitly name alternative tools, but the use cases are concrete enough to guide selection.

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

workload_stop_replicaWorkload — Stop a ReplicaA
Destructive
Inspect

Terminate a single running replica (pod) of a workload by issuing a stopReplica command — useful to recycle a wedged or unhealthy replica. The platform reschedules a replacement per the workload’s scaling, so this interrupts only in-flight work on that one replica; it does not delete the workload or any persistent data. Discover replica names with list_workload_replicas, and pass a location where the workload is deployed (list_deployments). The resulting command is trackable with get_command / list_commands.

ParametersJSON Schema
NameRequiredDescriptionDefault
gvcYesGVC slug (lowercase kebab-case). Use the GVC the user named; otherwise discover with list_resources (kind="gvc") and let them choose — never guess (a wrong GVC targets the wrong environment).
orgYesOrganization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants.
nameYesWorkload name (lowercase kebab-case, must start with a letter, max 49 chars, cannot end with -headless). The name is IMMUTABLE — "renaming" requires delete + recreate (loses public URL, internal DNS, policy targetLinks).
replicaYesExact replica (pod) name to terminate. Discover names with list_workload_replicas.
locationYesLocation where the replica runs — must be a location where this workload is deployed (see list_deployments).

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the call succeeded.
dataNoThe full machine-readable result — list rows, the resource object, query results. Read THIS, not just the summary.
summaryYesOne-line summary of the result.
nextStepsNoRecommended follow-up actions for this task, in order.
Behavior5/5

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

The annotations already flag destructiveHint=true, but the description adds crucial nuance: it interrupts only in-flight work on that one replica, the platform reschedules a replacement, and persistent data remains intact. This tells an agent exactly the blast radius beyond the structured annotations.

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

Conciseness5/5

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

The description is compact and front-loaded with the purpose, followed by consequences, discovery guidance, and tracking information. Every sentence earns its place; there is no filler or repetition of schema fields.

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

Completeness5/5

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

Given the five required parameters and destructive behavior, the description covers why to use the tool, what happens after (replica scheduling), what doesn't get affected, and which companion tools to use. An output schema exists, so return-value details can be left to the schema. This is sufficient for an agent to select and invoke 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 100%, and all parameters already have meaningful field descriptions, including warnings against guessing gvc/org. The tool description reinforces the new for replica and location but adds little new semantic information beyond the schema. Baseline 3 is appropriate when the schema carries the heavy lifting.

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 opens with a specific verb and resource: "Terminate a single running replica (pod) of a workload by issuing a `stopReplica` command." It clearly distinguishes this from workload_start_cron and other workload-related siblings, and clarifies what it does not do (does not delete the workload or persistent data).

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?

Context is clear: use it to recycle a wedged or unhealthy replica, and the description names discovery and tracking tools (list_workload_replicas, list_deployments, get_command/list_commands). However, it does not explicitly state when not to use it or name a direct alternative for stopping the whole workload, so it stops short of a full 5.

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

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    AI-native control plane for Kubernetes and GitOps. Provides 30+ tools for service deployment, database provisioning, and log management via natural language.
    1
    1
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Agentic cloud platform with 45+ MCP tools. Deploy any containerized stack, debug live pods (shell, file editing, DB queries), manage custom domains & TLS, push to built-in container registry, scale pods, and manage GPU workloads. The infrastructure layer where AI agents ship software to production.
    8

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.