Skip to main content
Glama

release-agent

Deterministic, non-blocking release preparation across a fleet of GitLab repositories — a reconciler engine over a declarative manifest, exposed as a CLI (release) and an MCP server (release-mcp) so you can drive releases from GitHub Copilot Chat, Claude, or any other MCP client in plain language.

Built for the reality of multi-repo products: libraries that must publish before services can pin them, release branches with iterated tags (v1.0.0-1, -2, ...), a QA gate, a deploy repo that pins the final versions — and CI pipelines that take 40–50 minutes. The engine never waits: every command returns in seconds, pipelines run on their own time, and an idempotent reconcile advances whatever is ready whenever you come back.

How it works

  • Manifest (release-manifest.yaml) — declares your repos, their dependency DAG, which files to edit (maven properties, python dependencies, yaml keys), and what variables each pipeline needs. See examples/release-manifest.yaml. The engine hard-codes zero product knowledge — adoption is pure configuration.

  • Run state — one JSON per release, stored in a small dedicated GitLab project. Shared visibility, full history, optimistic locking; any teammate can resume any release.

  • Reconciler — walks the DAG; per node: create branch → commit version pins → cut tag → trigger pipeline (via the API, so per-release variables travel with the build) → poll → record produced versions → unblock dependents. Nothing is ever created twice.

  • Gates — a manual checkpoint (e.g. qa-signoff) the engine will not pass without an explicit release approve.

  • Captures & report — manifest-declared regexes grep job logs for values of interest (Sonar URLs, image digests); release report assembles the whole release — tags, pipelines, versions, captured values — into markdown, optionally published to the state repo (reports/<coordinate>.md).

  • No LLM in the engine — ever. release explain deterministically fetches a failed job's log tail; the model on the client side (Copilot, Claude, ...) interprets it in the same chat. ports.LogExplainer stays as an extension point if you want a hosted model, but nothing requires one.

Related MCP server: GitLab MCP Server

Install

Requires Python 3.13+ and uv.

git clone <this repo> && cd release_agent
uv sync
uv run release --help

Configure

Everything is environment variables (per-developer PAT model):

Variable

Required

Meaning

RELEASE_AGENT_GITLAB_URL

yes

GitLab base URL, e.g. https://gitlab.example.com

RELEASE_AGENT_GITLAB_TOKEN

yes

PAT with api scope (falls back to GITLAB_TOKEN)

RELEASE_AGENT_BOT_TOKEN

no

Second identity used to approve MRs on repos with merge_request: { bot_approve: true }

RELEASE_AGENT_STATE_PROJECT

yes*

Project holding run states + manifest, e.g. group/release-state

RELEASE_AGENT_STATE_BRANCH

no

Branch in the state project (default main)

RELEASE_AGENT_MANIFEST_PATH

no

Manifest path in the state project (default release-manifest.yaml)

RELEASE_AGENT_MANIFEST_FILE

no

Local manifest file (overrides the state project copy)

RELEASE_AGENT_STATE_DIR

yes*

Local state directory instead of a state project (single-user/dev)

* one of STATE_PROJECT / STATE_DIR is required.

Use — CLI

release start 1.0.0 --env sit \
  -i jar_bundle_1_version=1.0.1 -i pydantic_version=10.0.0 -i jar_bundle_2_version=2.3.0

release status 1.0.0        # render the DAG, tags, pipeline URLs
release reconcile 1.0.0     # idempotent tick — run it whenever, it never double-fires
release bump 1.0.0 service-a          # next vX.Y.Z-(N+1) after a QA fix
release approve 1.0.0 qa-signoff      # clear the manual gate
release explain 1.0.0 service-a       # advisory: why did the pipeline fail?

Use — MCP (Copilot Chat, Claude, ...)

Register the stdio server with your client, e.g. VS Code .vscode/mcp.json:

{
  "servers": {
    "release-agent": {
      "type": "stdio",
      "command": "uv",
      "args": ["run", "--directory", "/path/to/release_agent", "release-mcp"],
      "env": {
        "RELEASE_AGENT_GITLAB_URL": "https://gitlab.example.com",
        "RELEASE_AGENT_GITLAB_TOKEN": "${input:gitlab-token}",
        "RELEASE_AGENT_STATE_PROJECT": "group/release-state"
      }
    }
  }
}

Then just talk: "start release 1.0.0 on sit with jar-bundle-2 2.3.0, jar-bundle-1 jar 1.0.1, pydantic 10.0.0" → the model calls release_start; later, "advance the release"release_reconcile. Tools exposed: release_start, release_status, release_reconcile, release_approve, release_bump, release_explain, get_manifest.

Prompt cookbook

You say

Tool the model calls

"Start release 1.2.0 on sit — jar-bundle-1 jar 1.0.2, pydantic 10.1.0, jar-bundle-2 2.4.0"

release_plan (dry-run shown for confirmation) → release_start

"What exactly would starting 1.2.0 do?"

release_plan — branches, MRs, predicted tags, edits, variables; nothing touched

"Where's release 1.2.0?" / "Did the jar-bundle-2 build finish?"

release_status

"Advance the release" / "Pipelines look done, continue"

release_reconcile (idempotent — always safe)

"Why is service-a stuck?"

release_status → explains e.g. an AWAITING_MERGE MR with its link

"QA signed off, approve the release"

release_approve

"Why did service-b fail?"

release_explain → model interprets the failed job's log

"Fix is merged on service-b's release branch, rebuild it"

release_bump (warns if the deploy repo pinned the old tag)

"Which files get edited during a release? What depends on what?"

get_manifest

"What was the last released version of service-a?"

release_tags — reads the repo's tags live, no run state needed

"What releases are in flight?" / "What did we ship last?"

list_releases — all coordinates with progress + attention flags

"Here's my updated manifest — is it valid?"

validate_manifest — full validation before you commit it

"Take 1.2.0 as far as it can go and tell me what's blocking"

chains reconcile → status → summary

"Give me the release report" / "…and publish it"

release_report — tags, pipelines, versions, log-captured values (e.g. Sonar URLs)

Habits that keep it reliable: always name the coordinate ("release 1.2.0") so the model never guesses which release you mean, and ask to "advance" freely — reconcile never double-fires, so an over-eager prompt costs nothing.

Adapt to your product

  1. Copy examples/release-manifest.yaml and describe your repos, tiers, edits, and pipeline variables.

  2. Create a release-state project in GitLab, commit the manifest there.

  3. Gate your CI release/publish jobs to run only from API-triggered tag pipelines ($CI_COMMIT_TAG && $CI_PIPELINE_SOURCE == "api" — purely additive, design §9). On GitLab 17.7+ also set each project's "Minimum role to use pipeline variables" to developer, or API-triggered pipelines with variables are rejected with HTTP 400.

  4. Need a new file mutation? Add one function to EDIT_KINDS in src/release_agent/core/edits.py.

  5. Have an LLM endpoint? Implement ports.LogExplainer and wire it in src/release_agent/bootstrap.py.

Development

uv run pytest          # unit + engine tests against an in-memory fake GitLab
uv run ruff check .

License

MIT

Available Tools

12 tools
get_manifestC

The release manifest YAML — the declarative source of truth for the repo topology.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only indicates the tool returns YAML content, but does not mention whether it is read-only, if it requires authentication, or what happens if no manifest exists. The behavior is minimally transparent.

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 a single, concise sentence with no extraneous words. However, it could be more direct (e.g., 'Retrieves the release manifest YAML') rather than a definition. Still, it is efficient.

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

Completeness3/5

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

Given the existence of an output schema (not shown but flagged), the description need not explain return values. However, the description is very brief and fails to provide enough context about the tool's role among many siblings, leaving the agent with limited understanding of when to invoke it.

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 has zero parameters, so the description does not need to add parameter detail. Baseline for 0 params is 4, and the description adequately states what the tool returns without requiring parameter clarifications.

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

Purpose3/5

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

The description states the tool returns the 'release manifest YAML' and calls it the 'declarative source of truth', but lacks a clear verb ('get' is implied by name) and does not distinguish it from sibling tools like validate_manifest or release_plan. The purpose is somewhat vague.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as validate_manifest or release_plan. There is no mention of use cases, prerequisites, or exclusions.

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

list_releasesA

Every release known to the state store, newest first, with a progress summary.

Use this to discover coordinates when the user doesn't name one ("what's in flight?", "what was our last release?").

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

No annotations provided, but the description discloses the ordering (newest first) and content (all releases, progress summary). No additional behavioral traits like pagination are mentioned, but the tool is simple with no parameters.

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 purpose, second with usage guidance. No wasted words.

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 no parameters and an existing output schema, the description covers all needed context: ordering, content, and usage context. Siblings are distinct.

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?

No parameters exist, so baseline 4 applies. The description correctly adds no unnecessary param info.

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 every release, sorted newest first, with a progress summary. It distinguishes itself from siblings like get_manifest by implying this is for broad discovery.

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: to discover coordinates when the user doesn't name one, with example queries like 'what's in flight?' and 'what was our last release?'.

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

release_approveB

Clear a manual gate (e.g. 'qa-signoff') and advance the nodes it was blocking.

ParametersJSON Schema
NameRequiredDescriptionDefault
gateYes
coordinateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

Without annotations, description only states the immediate effect (clear gate, advance nodes). Does not disclose potential side effects, reversibility, error states, or permission requirements.

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

Conciseness5/5

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

Single sentence with no superfluous text. Efficient and direct.

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

Completeness2/5

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

Despite having output schema, description doesn't mention return format or behavior. For a tool with two required parameters and multiple siblings, more detail is needed for an AI agent to use it correctly.

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

Parameters2/5

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

Only one parameter ('gate') is illustrated with an example ('qa-signoff'), but 'coordinate' is not explained at all. Schema coverage is 0%, so description fails to adequately define both parameters.

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

Purpose5/5

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

Clearly states the tool clears a manual gate and advances blocked nodes, using specific verb 'clear' and resource 'manual gate'. Differentiates from siblings like release_bump or release_start by focusing on gate approval.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. Siblings are listed but no differentiation criteria or prerequisites provided.

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

release_bumpB

After a fix landed on a node's release branch: cut the next iterated tag and build it.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeYes
coordinateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries full weight. It describes the action as creating a tag and building, which implies mutation, but does not disclose side effects, prerequisites, or reversibility. The description lacks details about what happens to previous tags or builds.

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 a single, front-loaded sentence that conveys the essential action. It is concise and efficient, though the extreme brevity sacrifices parameter and behavioral detail.

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

Completeness3/5

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

Given the tool has an output schema and two undocumented required parameters, the description is minimally adequate. It explains the core action but does not cover parameter meanings or return values. Additional context would improve completeness.

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

Parameters1/5

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

Schema description coverage is 0%, and the description provides no explanation for the two required parameters ('node', 'coordinate'). The description hints at 'node' from 'node's release branch', but does not clarify what values are valid or how 'coordinate' is used.

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 ('cut the next iterated tag and build it'), the resource (tag on release branch), and the condition ('after a fix landed'). It distinguishes this tool from siblings like 'release_plan' or 'release_approve'.

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 an explicit usage context ('after a fix landed on a node's release branch'), implying when to use the tool. It does not explicitly exclude alternatives, but the sibling list makes the distinction clear.

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

release_explainA

Explain why a node's pipeline failed (advisory; reads the failed job's log).

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeYes
coordinateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It states the tool is 'advisory' and reads logs, indicating a non-destructive read operation. However, it lacks details on required permissions, side effects, 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?

The description is a single, concise sentence that front-loads the core action. No redundant or extraneous words.

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

Completeness3/5

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

While the tool has an output schema, the description omits parameter details and does not fully explain the input context. It is adequate for an experienced user but incomplete for an agent lacking domain knowledge.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain the two parameters ('node', 'coordinate'). Without any parameter guidance, the agent cannot infer their meaning or format.

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 explains why a node's pipeline failed by reading the failed job's log. It uses a specific verb ('explain') and resource ('why a node's pipeline failed'), distinguishing it from sibling tools like release_status or release_report.

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 implies use when a node's pipeline fails, but does not explicitly exclude alternatives or state when not to use it. The advisory note clarifies it's a read operation, but no direct comparison to siblings is provided.

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

release_planA

Dry-run of release_start: exactly what would be created — branches, MRs, predicted tags (computed from the tags that exist right now), file edits with resolved values, and pipeline variables. Strictly read-only; nothing is touched.

ALWAYS call this before release_start with the same arguments and show the user the plan; only call release_start after they confirm.

ParametersJSON Schema
NameRequiredDescriptionDefault
envYes
rfcNo
inputsYes
coordinateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Declares 'Strictly read-only; nothing is touched' and lists all outputs (branches, MRs, tags, file edits, pipeline variables). With no annotations, the description fully covers behavioral traits.

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 unnecessary words. Front-loaded with purpose. 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?

Despite lacking parameter details, the description covers the core purpose, behavioral safety, and usage workflow. Given the presence of an output schema and the tool's role as a dry-run, the description is mostly complete. However, parameter documentation gap reduces completeness.

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

Parameters2/5

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

Schema has 4 parameters with 0% description coverage. The description does not explain any parameter meaning (e.g., coordinate, env, inputs). It relies on the assumption that parameters match release_start, which is not stated explicitly. This is a significant gap.

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?

Description clearly states it is a dry-run of release_start, listing exactly what would be created (branches, MRs, tags, etc.). It distinguishes itself from siblings by explicitly contrasting with release_start.

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 to call this before release_start with the same arguments, show the plan to the user, and only call release_start after confirmation. This is exemplary usage guidance.

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

release_reconcileA

One idempotent tick: read actual GitLab state and advance whatever is ready.

Safe to call any time; does nothing if pipelines are still running.

ParametersJSON Schema
NameRequiredDescriptionDefault
coordinateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

No annotations exist, so description carries full weight. It declares idempotency, explains it reads state and advances, and notes it is harmless if pipelines are running. This covers key behavioral traits, though error scenarios or return details are omitted. Output schema exists to cover return values.

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

Conciseness5/5

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

Two short sentences, front-loaded with the core action and key behaviors. Every sentence adds value without redundancy.

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

Completeness3/5

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

Given the tool has one parameter, no annotations, an output schema, and 11 siblings, the description covers usage conditions and idempotency but omits parameter meaning and return value summary. Adequate but with clear gaps.

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

Parameters1/5

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

Only one parameter 'coordinate' (string, required) with zero schema description coverage. The description does not mention or explain the parameter at all, leaving the agent without any guidance on what value to 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 clearly states it is an idempotent tick that reads actual GitLab state and advances what is ready. It distinguishes from siblings like 'release_bump' or 'release_approve' by emphasizing its idempotent, read-then-advance behavior.

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

Usage Guidelines4/5

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

Explicitly says 'Safe to call any time; does nothing if pipelines are still running.' This provides clear guidance on when to use it and under what conditions it is effective. Could mention alternatives like 'release_status' for checking, but still strong.

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

release_reportA

The release report (markdown): inputs, per-node tags, pipelines, produced versions, and values captured from job logs (e.g. Sonar report URLs).

With publish=true the report is also committed to the state repo (reports/.md).

ParametersJSON Schema
NameRequiredDescriptionDefault
publishNo
coordinateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

The description mentions that setting publish=true commits the report to the state repo, which is a side effect. However, with no annotations provided, the description should also disclose other behavioral traits such as idempotency, required permissions, or whether the tool is read-only when publish=false. This is not addressed.

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 concise: two sentences that front-load the report content and then describe the publish option. Every sentence adds necessary information without redundancy. The structure is efficient for quick parsing.

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 presence of an output schema (not shown but referenced), the description adequately covers the report content and optional publishing. However, it does not mention prerequisites (e.g., existing release state) or error conditions. For a tool with only two parameters, this is nearly complete but lacks some contextual detail.

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 has zero descriptions for its parameters, so the description must clarify their meanings. It explains that coordinate is used in the filename 'reports/<coordinate>.md' and that publish controls whether the report is committed to the state repo. This adds value beyond the schema, though a more explicit mapping would be beneficial.

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 that the tool produces a release report in markdown format, listing inputs, per-node tags, pipelines, produced versions, and values from job logs. It also explains the optional publishing behavior, making the tool's purpose specific and distinct from sibling tools like release_start or release_plan.

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

Usage Guidelines3/5

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

The description implies usage for generating and optionally publishing release reports, but it does not provide explicit guidance on when to use this tool versus alternatives (e.g., use this instead of release_status for detailed logs). No exclusion criteria or context is given, leaving the agent to infer when this tool is appropriate.

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

release_startA

Start a release: build run state from the manifest and fire every ready node.

inputs are the manifest-declared release inputs (e.g. library versions). Returns immediately; pipelines run in GitLab on their own time. Call release_plan first and show the user what will happen.

ParametersJSON Schema
NameRequiredDescriptionDefault
envYes
rfcNo
inputsYes
coordinateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

The description discloses key behavioral traits: 'Returns immediately; pipelines run in GitLab on their own time' (async execution). It also explains that inputs are manifest-declared. With no annotations provided, this partial transparency is valuable, though it omits potential side effects or error conditions.

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 highly concise, with three sentences that convey purpose, parameter explanation, and behavioral notes. No superfluous content; every sentence adds value.

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

Completeness3/5

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

Given the tool's complexity (4 parameters, nested object in inputs, output schema exists), the description covers core functionality and async behavior but does not detail parameters like coordinate or env. It relies on the user having called release_plan first, which provides context. While adequate, there are gaps regarding parameter semantics and potential errors.

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

Parameters2/5

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

The description only explains the 'inputs' parameter ('manifest-declared release inputs'). With schema description coverage at 0%, the other parameters (coordinate, env, rfc) remain unexplained, leaving the agent to infer their meanings. The limited parameter clarification is insufficient.

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: 'Start a release: build run state from the manifest and fire every ready node.' It also distinguishes from sibling 'release_plan' by advising to call that first, making the tool's specific role evident.

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 explicitly instructs to 'Call release_plan first and show the user what will happen,' providing a clear prerequisite and usage order. While it does not list when not to use this tool, it offers sufficient guidance for proper use.

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

release_statusB

Read-only view of the release DAG: node states, tags, pipeline URLs, gates.

ParametersJSON Schema
NameRequiredDescriptionDefault
coordinateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

The description declares the tool as read-only, indicating no destructive side effects. However, with no annotations, it lacks details about permissions, caching behavior, or real-time constraints. The disclosure is adequate but not extensive.

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 a single, concise sentence that front-loads the key purpose. It could be improved by adding a brief explanation of the parameter, but overall it's efficient.

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

Completeness3/5

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

Given the output schema exists, return values are covered. However, the description does not explain the parameter, which is critical for correct invocation. For a simple tool with one param, the description is mostly adequate but incomplete.

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

Parameters1/5

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

The single parameter 'coordinate' has no description in the schema (0% coverage) and the tool description does not explain what it represents. For a tool with zero parameter documentation, the description fails to add any meaning, leaving agents to guess.

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?

Description clearly states the tool provides a read-only view of the release DAG, listing specific elements like node states, tags, pipeline URLs, and gates. This distinguishes it from sibling tools like release_approve (which writes) and list_releases (which might list releases but not DAG details).

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 a read-only use case for inspecting DAG status, but it does not explicitly state when to choose this tool over alternatives like get_manifest or release_explain. No exclusions or prerequisites are mentioned.

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

release_tagsA

A node's repository tags, newest first, read LIVE from GitLab — no run state needed.

Use this to answer "what was the last released version of ?" from the repo itself rather than from a release's state or the manifest.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Without annotations, the description carries full burden; it discloses live read behavior and no run state dependency, implying safety and real-time data. Could add more on side effects or auth, but 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?

Two concise sentences, no fluff, front-loaded with purpose and key details, every sentence adds value.

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 sibling tools and output schema, description adequately frames the tool's role. Could elaborate on tag format, but overall 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 coverage is 0%; description mentions 'node' implicitly but does not explain the 'limit' parameter. It adds some meaning for node but fails to compensate fully for missing 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?

Description clearly states the tool retrieves repository tags live from GitLab, newest first, and distinguishes from release state or manifest, differentiating it from siblings like get_manifest and release 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?

Explicitly instructs use for answering 'what was the last released version of <node>?' from the repo itself, contrasting with release state or manifest, providing clear context for when to use.

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

validate_manifestA

Validate a release manifest YAML without touching anything.

Returns 'valid' with a topology summary, or the exact validation error. Use before committing manifest changes to the state repo.

ParametersJSON Schema
NameRequiredDescriptionDefault
manifest_yamlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Discloses that the tool is read-only ('without touching anything') and describes the return values ('valid' with summary or error). No annotation provided, so description carries burden and does so adequately.

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

Conciseness5/5

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

Three concise sentences with no extraneous information; key information is front-loaded.

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

Completeness3/5

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

Low complexity and presence of output schema reduce need for return details, but parameter information is incomplete. Overall adequate but not exhaustive.

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

Parameters2/5

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

With 0% schema description coverage, the description should detail the single parameter. It merely names it ('manifest YAML') without format, examples, or constraints.

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 validates a release manifest YAML with no side effects, distinguishing it from sibling tools that perform other release operations.

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

Usage Guidelines4/5

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

Explicitly advises to use before committing manifest changes, providing clear context. However, no exclusions or alternatives are mentioned.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 12 tool updatesv0.1.0
    • First observedget_manifest
    • First observedlist_releases
    • First observedrelease_approve
    • First observedrelease_bump
    • First observedrelease_explain
    • First observedrelease_plan
    • First observedrelease_reconcile
    • First observedrelease_report
    • First observedrelease_start
    • First observedrelease_status
    • First observedrelease_tags
    • First observedvalidate_manifest

TDQS

A3.7/5.0

Scored across 12 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: manifest retrieval, release listing, approval, bumping, explanation, planning, reconciliation, reporting, starting, status, tags, and validation. No two tools overlap in intent.

Naming Consistency3/5

Most tools follow the 'release_verb' pattern, but three (get_manifest, list_releases, validate_manifest) lack the prefix, creating inconsistency. The naming is still descriptive but not uniform.

Tool Count5/5

12 tools is well-scoped for a release management server. Each tool serves a necessary step in the release lifecycle without unnecessary duplication.

Completeness5/5

The tool set covers the full release workflow: planning, starting, approving, bumping, reconciling, reporting, status checking, and tag fetching. Validation and explanation tools add robustness. No obvious gaps for common release operations.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to interact with GitLab repositories, manage merge requests, review code diffs, post comments, and handle issues directly through natural language.
    32
    MIT
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Connects AI assistants to GitLab, enabling natural language queries for merge requests, reviews, discussions, pipeline tests, and job logs with the ability to respond to comments and resolve discussions.
    -