Skip to main content
Glama

Create customer recipe revision

create_application_recipe_revision
Idempotent

Create an immutable customer-owned application recipe revision by resolving image tags to digests and validating the pinned Compose definition. It does not update running installations.

Instructions

Resolve image tags from their registries, validate the resulting digest-pinned Compose definition, and freeze that exact definition as a later immutable customer-owned recipe revision. This does not update the running installation. If validation remains pending, retain its ID and resolved_compose_yaml, poll get_application_recipe_validation, then retry with validation_id and that exact pinned document. In-place updates retain the existing secret names and registry bindings for rollback safety; create a separate project when those bindings must change. Requires applications:manage.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
envNoPlain, non-secret environment values. Put secret values in the install tool's secrets field.
orderNoYesTenant-owned service order number: 1-64 ASCII letters, digits or hyphens, e.g. VP12345 or VP12345-1
confirmedYesTrue only after the user confirmed this immutable recipe revision
project_idYesCustomer-owned recipe project UUID returned by list_application_recipes
compose_yamlYesDocker Compose YAML. Mutable image tags are resolved once and replaced with immutable sha256 digests before worker validation.
secret_namesNoSecret variable names only; definitions and exports never contain values
validation_idNoResume only the exact successful validation for this service and digest-pinned compose_yaml; retain the initial resolved document
idempotencyKeyYesClient-global unique key. Reuse it only to replay this exact immutable revision request.
registry_credential_idsNoOwned registry credential UUIDs from list_application_registry_credentials

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv2.3.16

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=true), and the description adds material context beyond them: the revision is immutable, the running installation is untouched, in-place updates preserve existing secret names and registry bindings for rollback safety, and applications:manage is required. This is exactly the extra behavioral disclosure annotations cannot carry.

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?

Five dense sentences, front-loaded with the core action before the validation-pending and binding-retention caveats. Every sentence carries distinct information, though the run-on first sentence and the tightly packed conditional clauses could be trimmed slightly.

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 9-parameter, nested-object mutation tool with no output schema and an asynchronous validation dependency, the description covers the full workflow: what is frozen, what is untouched, how to resume a pending validation, and the binding-change escape hatch. Nothing an agent needs to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description goes further by explaining the validation_id workflow (retain the ID and resolved_compose_yaml, retry with the same pinned document) and the digest-pinning behavior of compose_yaml, adding operational meaning to parameters whose schema text is already complete.

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 chain (resolve, validate, freeze) and an exact resource ('immutable customer-owned recipe revision'), which distinguishes it from create_application_recipe, install_application_recipe, and validate_application_recipe. An agent can tell what it produces and that it is not an installation action.

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 when/when-not guidance: it states this does not update the running installation, routes pending validations to get_application_recipe_validation with the retained validation_id, and tells the agent to create a separate project rather than reuse this tool when secret names or registry bindings must change. Alternatives and preconditions are named, not implied.

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

Deploy Server

Other Tools