Skip to main content
Glama

Promote commit to production

promote_commit
DestructiveIdempotent

Make a commit (by job_id) the project's canonical (production) deploy, optionally exposing it publicly. The previously-canonical commit keeps running but loses the production URL. Pass mode="guarded" to run an SLO canary against the current canonical first and block for a verdict before finalizing (see the mode field for details); omit it (or pass "manual") for the previous instant-flip behavior. Requires a read-write token.

Input Schema

NameRequiredDescriptionDefault
modeNo'manual' (default) flips canonical immediately. 'guarded' runs an SLO canary first — paired synthetic probes vs the current canonical plus error-log rate plus I2 canonical-coherence, over a stability window — and blocks until a verdict: PASS finalizes the same as manual, FAIL restores the candidate and aborts (no data lost), INSUFFICIENT_SIGNAL parks the run for a human to resolve (no HTTP/MCP confirm tool yet — resolve from the dashboard). Returns run_id/state/verdict either way.
exposeNowhen true, also make the commit public
job_idYesthe deployment job id to promote to canonical (from list_deployments)
publicNoalias of expose, the name expose_commit uses; true also makes the commit public
project_idNooptional; when given it must be the project that owns job_id
keep_old_canonicalNoopt-in flag for storage v2: keep the outgoing canonical commit running on a clone of main (default false)

Output Schema

NameRequiredDescriptionDefault
okYes
modeNo
stateNo
run_idNo
statusNopresent, and always "pending_approval", only when this call was parked instead of run immediately because the project's (or kad-back's own) plan-mode setting requires a human to approve it first
messageYes
plan_idNopoll get_plan_status with this id for the eventual outcome
verdictNo
approve_atNothe kad.dev dashboard URL a human approves or rejects this plan from
expires_in_sNothe plan can no longer be approved after this many seconds
candidate_job_idNo
prev_canonical_job_idNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the destructiveHint/idempotentHint annotations: it explains the prior canonical keeps running but loses its production URL, that guarded mode blocks for a verdict, that FAIL restores the candidate with no data lost, and that INSUFFICIENT_SIGNAL parks the run with no confirm tool available. These are exactly the consequences an agent needs before invoking a destructive, blocking operation.

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

Conciseness4/5

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

Front-loaded with the state change and its side effect, then the mode branch, then the auth requirement. Slightly dense with nested parentheticals in the guarded sentence, but nearly every clause carries decision-relevant information.

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

Completeness5/5

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

For a destructive, potentially blocking mutation with an output schema (run_id/state/verdict are noted as returned) and full annotation coverage, the description supplies the missing behavioral context: what changes, what the old canonical retains, and how non-PASS outcomes are resolved. Nothing needed to call it safely is absent.

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 every parameter including the guarded-mode semantics is already documented, and the description largely recaps mode/expose rather than adding format or default detail beyond the schema. The one value-add is the census that mode is optional and that omitting it retains legacy behavior, which the schema also states.

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 (promote) and resource (commit) plus the precise resulting state: it becomes the project's canonical (production) deploy. The mention of the expose_commit alias and the contrast with demote_commit/expose_commit in the sibling list makes the boundary clear without opening another schema.

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

Usage Guidelines4/5

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

Gives concrete selection guidance for the main branching decision: use mode="guarded" to gate on an SLO canary, omit or pass "manual" for the instant flip, and states the read-write token prerequisite. It does not explicitly distinguish this from redeploy/rollback_commit/demote_commit, which is the remaining gap.

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.

Resources