Skip to main content
Glama

Deploy an App

deploy_app
Destructive

Build and deploy an HTTP app in one resumable call. Builds the app files stored with write_app_files (the default), or repoUrl, or skips the build for image. Without gvc it uses the GVC a job made for apps, asks about any other, or creates the first one once the user picks a location. Creates a standard workload (stateful with per-replica storage) or updates one it created, with production defaults (HTTP readiness and liveness checks, 2 replicas so deploys cause no downtime, exposure set now), grants access to secrets its env references, waits up to 40 seconds, and returns the status, the public URL once ready, and the exact next call. Files that must survive restarts: storage. Serverless, several containers, cron, or other protocols: create_workload.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cpuNoCPU per replica (default "250m").
envNoEnv vars. A value may reference a secret key as cpln://secret/NAME.KEY; deploy_app grants the workload access to it.
gvcNoGVC to deploy into; the app runs in every one of its locations. Omit it to use the GVC a job made for apps, or to create the first one. A name that does not exist yet creates that GVC in location.
orgNoOrganization slug.
nameYesWorkload name. Without image or repoUrl, it is also the name the app files were stored under with write_app_files.
portNoPort the app listens on. A build detects it and an update keeps the current one; required to create from image.
imageNoDeploy this image with no build: //image/NAME:TAG from this org, or an exact external reference such as nginx:latest.
branchNoBranch to build, with repoUrl only. Default: the repository default branch.
memoryNoMemory per replica (default "512Mi").
publicYestrue: reachable from the internet at a public URL. false: reachable only by workloads in the same GVC.
buildIdNoThe buildId a previous deploy_app call returned. Continues that build instead of starting a new one.
replaceNotrue replaces a same-name workload that deploy_app did not create. Only after the user said yes.
repoUrlNoBuild from this GitHub or GitLab repository instead of the stored app files.
storageNoFiles that must survive restarts. Without it the container filesystem is wiped on every restart. A database: add_database.
locationNoOnly to create a GVC: An enabled location of the org, from the list a placement question gives.
maxScaleNoMaximum replicas per location (platform default 5).
minScaleNoMinimum replicas per location (default 2; 1 with per-replica storage).
healthPathNoHTTP path for the readiness and liveness checks. Default: what the build detected, else "/".
connectNonceNoOnly after the user authorized the git provider for repoUrl: the connectNonce the previous call returned.
timeoutSecondsNoSeconds a request may run before the platform ends it (platform default 5). Raise it for slow requests: AI calls, third-party APIs, reports, streamed responses.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
okYes
dataNoThe full result. Read this, not only the summary.
detailsNo
summaryYes
nextStepsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and openWorldHint=true, so the write/outside-world profile is known. The description adds real substance beyond that: it creates a standard workload or updates one it created, applies production defaults (HTTP readiness/liveness checks, 2 replicas, exposure set now), grants secret access, waits up to 40 seconds, and returns status, public URL, and the exact next call. It stops short of describing what happens to a same-name workload it did not create (that lives in the schema's replace field), so a 4 rather than 5.

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

Conciseness4/5

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

Purpose and build-source routing are front-loaded in the first two sentences, and every clause carries distinct information (build source, GVC handling, workload defaults, secret access, wait time, return payload, handoff). The middle is one long run-on sentence that could be broken up, costing it the top mark.

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 20-parameter, nested-object, open-world mutation with an output schema, the description covers the decisions an agent must make: which build source, GVC handling, storage vs add_database, and when to use the sibling instead. Return values are covered by the output schema and briefly signaled, so nothing critical 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 and most parameter meaning is already documented. The description still adds cross-parameter workflow semantics the schema treats only field-by-field: resume via buildId, and the branch/healthPath/minScale defaults that flow from build vs image vs storage choices.

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?

Opens with a specific verb+resource+scope: 'Build and deploy an HTTP app in one resumable call.' It further distinguishes itself from the sibling create_workload by naming the exact cases it does not cover (serverless, several containers, cron, other protocols). An agent can select it without opening a schema.

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

Usage Guidelines5/5

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

Routes the agent explicitly: build sources are write_app_files (default), repoUrl, or image; storage routes to the storage field and databases to add_database; the closing sentence hands off non-HTTP/single-container cases to create_workload. GVC omission behavior (job-created GVC, prompt, or create-once-location-picked) is spelled out rather than left to inference.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.