albs-mcp
OfficialProvides tools for interacting with AlmaLinux Build System (ALBS), enabling AI agents to manage builds, sign packages, create release plans, and investigate build failures.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@albs-mcpinvestigate build 52679"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
albs-mcp
MCP server and CLI for AlmaLinux Build System (ALBS).
Gives AI coding assistants direct access to ALBS — investigate build failures, create builds, sign packages, all through natural language.
Two ways to use:
MCP server | CLI + Skill | |
How it works | AI calls tools via MCP protocol | AI runs |
Setup | Add to MCP config | Install |
Best for | Dedicated ALBS workflow | Lightweight setup, avoiding MCP context pollution |
Works without AI | No | Yes ( |
What it can do
Without a token (read-only)
Investigate build failures — the main use case. Give the agent a build ID and it greps the logs for the failure signatures (
search_log), pinning the exact file, line, and diagnostic, then widens the context around it. No guessing at line offsets and no burning tokens on 100k+ line log files.Get build details — statuses of all tasks, packages, architectures, sign tasks.
List and search builds — browse recent builds, filter by package name or status.
Get platforms — dynamically fetched list of all platforms and their supported architectures.
Download and read logs — any log file from any build: grep it (
search_log), page it bottom-up (read_log_tail), or read a line range. No read can blow up: each line is clipped to 500 chars and the whole result to 40k chars (max_line_chars=0/max_chars=0to lift), so a log whose single lines run to several KB of compiler flags comes back in pages that join up exactly instead of one oversized blob. Reading auto-downloads the log if it isn't on disk yet.Check sign status — see whether sign tasks for a build completed or failed.
List products — all release targets (products) with their platforms, official/community flag, and IDs.
View release plans — status, source packages, and target repositories of any existing release.
With a JWT token (authenticated)
Create builds — specify packages, platform(s), branch/tag/SRPM. Supports multiple platforms in a single build (e.g. AlmaLinux-8 + AlmaLinux-9). Architectures default to each platform's full list unless you override. Supports custom Git URLs for repos outside
git.almalinux.org(e.g. GitHub, GitLab). Supports all mkbuild.py options: linked builds, mock definitions, excludes, flavors, secureboot, modules, with/without.Sign builds — create sign tasks with a chosen key.
List sign keys — see available keys with IDs and platform mappings.
Create release plans — build a scheduled release plan for a build (which packages go to which repositories) targeting a chosen platform + product. The actual release is never performed — this only creates the plan; committing/publishing is intentionally blocked.
Delete builds — intentionally blocked for safety.
Log types
ALBS produces several log files per build task. The key ones for debugging:
Log | What's inside |
| Chroot setup, dependency resolution. Check first — if deps failed, nothing else matters. |
| Stderr output from the build process. Often has the clearest error message. |
| Full build log (can be 100k+ lines). The complete rpmbuild output — where compile errors live. Grep it with |
| Mock state transitions. |
| Hardware info of the build node. |
| List of packages installed in the chroot. |
| ALBS-level task log (task assignment, upload). |
| Mock configuration used for the build. |
Related MCP server: Kerneldev MCP
Install
pip install git+https://github.com/AlmaLinux/albs-mcp.gitThis installs both the MCP server (albs-mcp) and the CLI (albs).
Authentication
The JWT token is read from (checked in order):
ALBS_JWT_TOKENenvironment variable~/.albs/credentialsfile (Python dict with atokenkey):
{"token": "eyJ..."}Without a token both MCP and CLI work in read-only mode.
Never commit real tokens. Use env vars or
~/.albs/credentials, not CLI arguments.
Setup option 1: MCP server
Add to your MCP client config (e.g. mcp.json or equivalent):
{
"mcpServers": {
"albs": {
"command": "albs-mcp"
}
}
}Setup option 2: CLI + Skill
For setups where MCP context pollution is a concern, or when using tools that don't support MCP.
Step 1. Install the package (same as above — gives you the albs command):
pip install git+https://github.com/AlmaLinux/albs-mcp.gitStep 2. Add the workflow instructions to your AI tool:
# Copy the skill directory to your tool's skills location, e.g.:
cp -r skills/albs-cli <YOUR_SKILLS_DIR>/albs-cliOr copy the contents of skills/albs-cli/SKILL.md into your project's AGENTS.md or equivalent instructions file.
The skill teaches the AI agent the same workflows (investigation order, EPEL handling, signing) but via albs shell commands instead of MCP tool calls.
Step 3. Verify:
albs --helpThe CLI also works standalone — no AI needed. Useful for scripts and manual terminal use.
CLI usage
# List platforms
albs platforms
# Investigate a build
albs build-info 52679
albs failed-tasks 52679
# log-search greps for the failure and shows it with context — start here.
# It auto-downloads the log if needed (download-log is optional)
albs log-search 52679 "mock_build.395391.1772974729.log"
# ...or grep for something specific
albs log-search 52679 "mock_build.395391.1772974729.log" -e "Hunk #\d+ FAILED" -A 3
# When the search finds nothing, page the log bottom-up: each page prints the
# exact command for the page above it, so the pages join up with no gaps
albs log-tail 52679 "mock_build.395391.1772974729.log"
albs log-tail 52679 "mock_build.395391.1772974729.log" --before-line 772
# Search builds
albs search --project bash --page 2
# Create a build (requires JWT)
albs create-build AlmaLinux-9 bash --branch c9s
albs create-build AlmaLinux-10 https://example.com/pkg.src.rpm \
--from-srpm --add-epel-dist --arch x86_64_v2 \
--flavor EPEL-10 --flavor EPEL-10_altarch
# Build on multiple platforms at once
albs create-build AlmaLinux-8 bash --branch c9s \
--add-platform AlmaLinux-9
# Build from an external Git repo (e.g. GitHub)
albs create-build AlmaLinux-10 \
--git-url https://github.com/ykohut/leapp-data.git \
--branch devel-ng-0.23.0
# Independent tasks (disable the default sequential per-platform task chain,
# so packages build in parallel within each platform)
albs create-build AlmaLinux-9 bash glibc openssl --branch c9s --independent-tasks
# Sign a build (requires JWT)
albs sign-keys
albs sign-build 52679 --key-id 4
# Check whether signing finished
albs sign-status 52679
# List products (release targets) and view an existing release plan
albs products
albs release-plan 39229
# Create a release plan (requires JWT) — never performs the actual release
albs create-release-plan 62316 --platform AlmaLinux-8 --product AlmaLinux
# Release a PARTIAL build (only fully-completed packages):
albs create-release-plan 62316 --platform AlmaLinux-8 --product AlmaLinux \
--whole-packages-only
# Pass token via flag or env var
albs --token "eyJ..." sign-keys
ALBS_JWT_TOKEN="eyJ..." albs sign-keysRun albs --help or albs <command> --help for full usage.
Tools reference
Read-only (no auth)
Tool | Description |
| All platforms and their architectures, fetched dynamically from ALBS |
| Build summary: every task with status, arch, package, git ref, log count, plus Secure Boot state, flavors and any linked builds |
| Only failed tasks with their log files listed; key logs marked with ★ |
| All log/config files available for a build on the server |
| Download a log file to local disk ( |
| Start here on a failure: grep a log for the build-failure signatures (or your own regex) and get every hit with line numbers and context; auto-downloads if needed |
| Read a page of a log from the end, and page upward from there ( |
| Read a specific line range from a log (e.g. around a |
| Browse builds by page, filter by package name or running status — shows each package as an NVR plus the build's release state; a |
| Status of a build's sign tasks (idle/in_progress/completed/failed) — use after |
| List all products (release targets): ID, name, official/community, platforms |
| View an existing release: status, source packages, target repositories |
Authenticated (JWT required)
Tool | Description |
| List sign keys: ID, name, GPG keyid, active status, platform mappings |
| Create a build: packages or custom Git URLs + platform(s) + branch/tag/srpm, with all mock options |
| Create a sign task for a build with a chosen key |
| Create a scheduled release plan for a build + platform + product. Never performs the actual release — only the plan |
| Blocked — performing the actual release is disabled; only plans are supported |
| Blocked — disabled for safety |
Prompts
MCP prompts are user-invoked workflow entry points. In clients like Claude Code they appear as slash commands (/mcp__albs__<name>); the user triggers them, not the agent.
Prompt | Arguments | Description |
|
| Seeds the build-failure investigation workflow for a build ID. Equivalent to asking "why did build N fail?", but as a one-step parameterized command. |
|
| Seeds the release-plan workflow for a build ID (confirm platform, pick product, create the plan). Never performs the actual release. |
Example (Claude Code):
/mcp__albs__investigate_build 52679
/mcp__albs__release_plan 52679investigate_build expands into the investigation workflow (get_build_info → get_failed_tasks → download/read the key logs in order), parameterized by the build ID. release_plan expands into the release-plan workflow (get_build_info → get_products → create_release_plan), and explicitly stops at the plan — it never commits/publishes.
Example: investigating a failed build
Ask the agent: "What went wrong in build 52679?"
The agent will:
get_build_info(70368)— sees that only the i686 task failed; the other 7 arches builtget_failed_tasks(70368)— gets the log files, ★ marks the important onessearch_log(70368, "mock_build.441500.1785274367.log")— greps the 936-line / 600 KB log and returns the cause with context, in one call:>>> 826 | usr/lib/common/mech_openssl.c:2766:52: error: passing argument 5 of 'EVP_PKEY_get_octet_string_param' from incompatible pointer type 833 | note: expected 'size_t *' {aka 'unsigned int *'} but argument is of type 'CK_ULONG *' {aka 'long unsigned int *'} >>> 853 | make[1]: *** [Makefile:9851: ...mech_openssl.lo] Error 1search_log(70368, "mock_root.441500.1785274367.log")— no matches: the chroot and dependencies were fine, so this is not a dependency failureReports: "
CK_ULONG *isunsigned long *while OpenSSL wantssize_t *; on ILP32 (i686) those are different types, so the 3.27.0 rebase only breaks on 32-bit."
Had the search come up empty, the next move is read_log_tail and then the
↑ earlier: ... call it prints, walking the log upward a page at a time. Pages are
sized by the character budget, not a line count — 165 lines of this mock_build, or
350 of the same build's mock_root — and each one starts exactly where the previous
stopped, so nothing is skipped.
Note what step 3 replaces. read_log_tail on that log returns
make: *** [Makefile:4615: all] Error 2 — the symptom, hundreds of lines below the real
error, because make -j keeps compiling after the first failure. Asking for enough tail to
reach the error instead returns 167 KB of gcc command lines and can exceed the caller's
result-size limit. search_log returns 4 KB with the answer at the top.
Example: creating a build
Ask the agent: "Build bash for AlmaLinux-9 from branch c9s"
The agent will call:
create_build(packages=["bash"], platform="AlmaLinux-9", branch="c9s")For multiple platforms at once:
create_build(packages=["bash"], platforms=["AlmaLinux-8", "AlmaLinux-9"], branch="c9s")For external Git repos (e.g. GitHub), use git_urls:
create_build(git_urls=["https://github.com/ykohut/leapp-data.git"], platform="AlmaLinux-10", branch="devel-ng-0.23.0")Architectures default to each platform's full list. When arch_list is specified with multiple platforms, it is validated against each platform individually.
Example: creating a release plan
Ask the agent: "Create a release plan for build 62316 on AlmaLinux-8."
The agent will:
get_build_info(62316)— confirms the platform and that the build has completed tasksget_products()— lists products so you can pick the target (e.g.AlmaLinux)create_release_plan(build_id=62316, platform="AlmaLinux-8", product="AlmaLinux")— collects the completed build tasks, resolves the platform/product names to IDs, and creates a scheduled planReports the plan (status, source packages, target repositories) and makes clear that nothing was published — it is only a plan
The actual release (committing/publishing the plan) is intentionally not performed. Asking the agent to "release for real" routes to
commit_release, which is blocked and explains that only plans are supported.
Tests
pip install -e ".[test]"
# Unit tests (no network, 263 tests)
pytest tests/test_client_unit.py tests/test_server_unit.py tests/test_cli_unit.py -v
# Integration tests (hits real ALBS API, read-only, 30 tests)
pytest tests/test_integration.py -v
# All tests
pytest -vEnvironment variables
Variable | Description | Default |
| JWT token for authenticated operations | — |
| Directory for downloaded logs |
|
Available Tools
19 toolscommit_releaseA
Commit (perform) a release. CURRENTLY BLOCKED.
This server only creates release plans. Performing the actual release (publishing packages) is intentionally disabled.
| Name | Required | Description | Default |
|---|---|---|---|
| release_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description takes on the full burden of behavioral disclosure. It transparently states the tool is blocked and disabled, which is the key behavioral trait. However, it does not specify what happens if the tool is called (e.g., returns an error, no-op), leaving a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the critical 'CURRENTLY BLOCKED' warning, and wastes no words. Every phrase earns its place, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is blocked and there is an output schema (so return format is not needed), the description is nearly complete. It explains the purpose and the disabled state, but it does not describe the exact failure behavior (error code, message, etc.), which would fully round out the context for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it does not mention the release_id parameter at all. The parameter is a single integer with a self-explanatory name, so the lack of extra detail is not critical, but the description adds no value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's intended action ('Commit (perform) a release') and immediately signals its current non-functional status ('CURRENTLY BLOCKED'), which distinguishes it from functional sibling tools like create_release_plan. It is specific and unambiguous about what the tool is supposed to do.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says the server only creates release plans and that performing the actual release is intentionally disabled. This tells the agent not to use this tool for actual releases and implies create_release_plan as the alternative, though it does not name it directly. Clear enough to guide usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_buildA
Create a new build on ALBS. Requires JWT token.
Platforms and allowed architectures are fetched dynamically from ALBS. Use get_platforms to see available options.
For EPEL builds (SRPMs from dl.fedoraproject.org/pub/epel/), the tool automatically applies EPEL-specific flavors and defaults arch to x86_64_v2.
Args: platform: Target platform (single). Use get_platforms to see available options. platforms: List of target platforms to build on (e.g. ["AlmaLinux-8", "AlmaLinux-9"]). Can be used alone or combined with platform. At least one must be provided. packages: List of package names (for git/branch) or SRPM URLs (for from_srpm). For from_tag: use "pkg_name tag_name" format or just "tag_name". At least one of packages or git_urls must be provided. git_urls: List of custom Git repository URLs to build from (e.g. ["https://github.com/user/repo.git"]). Use for repos outside git.almalinux.org/rpms. The branch parameter sets the git ref. For from_tag, use "url tag_name" format. Cannot be used with from_srpm. branch: Git branch to build from (e.g. "a8", "c9s"). from_tag: Build from git tags instead of branch. from_srpm: Build from source RPM URLs. tags: Explicit tags for each package when from_tag=True (must match packages length). arch_list: Architectures to build. Default: all for the platform (x86_64_v2 for EPEL builds). skip_tests: Disable %check phase by adding --define "__spec_check_template exit 0;" to mock definitions. add_epel_dist: Extract .elN dist suffix from each package name/URL and set it as a per-task mock definition: dist=".elN.alma_altarch". Only works with from_tag or from_srpm. Recommended for EPEL-altarch builds. beta: Enable beta flavor. secureboot: Enable SecureBoot signing. nosecureboot: Override secureboot requirement for SB packages. excludes: Space-separated packages to exclude from mock. definitions: Dict of mock definitions, e.g. {"dist": ".el9"}. linked_builds: Build IDs to link. flavors: Additional flavor names. with_opts: Mock --with options. without_opts: Mock --without options. modules: Modules to enable, e.g. ["nodejs:18"]. independent_tasks: When True, disables the per-platform sequential task chain so packages build independently / in parallel within each platform (the default ALBS behavior chains task N's start on task N-1's completion). Applied to every platform entry in the payload. Default: False.
| Name | Required | Description | Default |
|---|---|---|---|
| beta | No | ||
| tags | No | ||
| branch | No | ||
| flavors | No | ||
| modules | No | ||
| excludes | No | ||
| from_tag | No | ||
| git_urls | No | ||
| packages | No | ||
| platform | No | ||
| arch_list | No | ||
| from_srpm | No | ||
| platforms | No | ||
| with_opts | No | ||
| secureboot | No | ||
| skip_tests | No | ||
| definitions | No | ||
| nosecureboot | No | ||
| without_opts | No | ||
| add_epel_dist | No | ||
| linked_builds | No | ||
| independent_tasks | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden. It discloses authentication needs (JWT token), dynamic fetching of platforms/architectures, automatic EPEL handling, and the behavior of independent_tasks and skip_tests. It doesn't explicitly state that this is a mutating operation, but 'create' implies it. It also doesn't describe side effects or reversibility, but that's not critical for a create action. Overall it's quite transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy but every sentence provides necessary information given the 22 parameters. It is structured with an intro on EPEL and an 'Args:' section with clear bullet-like formatting. It front-loads the purpose and then systematically covers each parameter. Not a single sentence is fluff, so it earns its length. Slightly less concise than ideal due to volume, but that's warranted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high complexity (22 params, no annotations), the description is remarkably complete. It covers parameter semantics, constraints, special cases (EPEL, from_tag/from_srpm), and references get_platforms for available options. It also notes the output schema exists (though not shown), so return values don't need explanation. An agent has enough information to invoke the tool correctly without guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully compensate. It provides detailed meanings for all 22 parameters, including constraints (e.g., at least one of packages/git_urls, cannot combine git_urls with from_srpm), format examples (e.g., 'pkg_name tag_name' for from_tag), and special behaviors (add_epel_dist extracts dist suffix). This is exemplary parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Create a new build on ALBS' which is a specific verb (create) and resource (build on ALBS). It also notes the JWT token requirement. It doesn't explicitly contrast with sibling tools like create_release_plan, but the action is distinct and unambiguous. One point off because it doesn't explicitly name the sibling it's not, but the purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context for when to use certain parameters (e.g., EPEL builds auto-apply flavors, from_tag vs from_srpm, uses get_platforms for available options). It explains constraints like 'Cannot be used with from_srpm' and 'At least one must be provided'. It doesn't explicitly say 'use this instead of X' but the context is clear for a create operation with no direct alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_release_planA
Create a release PLAN on ALBS. Requires JWT token.
Creates a "scheduled" release and computes which packages go to which repositories. It NEVER performs the actual release — nothing is published. Committing the plan (the real release) is intentionally not supported here.
The completed build tasks are collected automatically; the build must have completed tasks. Platform and product names are validated against ALBS — use get_platforms() and get_products() to see valid names.
Args: build_id: The build to release. platform: Target platform name (e.g. "AlmaLinux-9"). product: Target product name (e.g. "AlmaLinux", "epel-al"). Use get_products() to list available products. build_ids: Optional additional build ids to include in the same plan. whole_packages_only: When True, include only packages whose every architecture task completed (drop half-built packages). Use for a PARTIAL build superseded by a 'retry failed' build. Default: False.
| Name | Required | Description | Default |
|---|---|---|---|
| product | Yes | ||
| build_id | Yes | ||
| platform | Yes | ||
| build_ids | No | ||
| whole_packages_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosure. It covers auth (requires JWT token), the non-destructive nature (nothing is published), and the automatic collection of completed build tasks with the prerequisite that builds must have completed tasks. This is rich behavioral context beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The key facts (doesn't publish, requires JWT) are front-loaded, and the Args section is cleanly structured. It is somewhat verbose — the whole_packages_only explanation and the build-task prerequisite sentence could be tightened — but every sentence earns its place and nothing is fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 params, zero schema parameter descriptions, and no annotations, the description covers the needed ground: prerequisites (JWT, completed build tasks), validation guidance, sibling pointers for valid values, and an explanation of the advanced whole_packages_only flag. An output schema exists, so return-value documentation is not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully compensate — and it does. Every parameter is explained: build_id, platform with a concrete example ('AlmaLinux-9'), product with examples and a pointer to get_products(), build_ids purpose, and whole_packages_only with its behavioral meaning. This fully covers the five parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb ('Create a release PLAN'), resource ('ALBS'), and mechanism ('computes which packages go to which repositories'). The contrast with the never-performed actual release clearly distinguishes it from commit_release, so an agent can tell them apart without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description is explicit that the tool never publishes and that committing the plan is intentionally unsupported here, implicitly routing the real release to commit_release. It also directs the agent to get_platforms() and get_products() for valid names and explains when whole_packages_only should be used (partial build superseded by a retry-failed build). It falls just short of naming commit_release explicitly as the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_buildA
Delete a build. CURRENTLY BLOCKED.
This operation is intentionally disabled for safety.
| Name | Required | Description | Default |
|---|---|---|---|
| build_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 discloses that the operation is a delete (destructive) and that it is currently blocked, which is the most critical behavioral fact. It does not explain what happens on invocation (e.g., error vs no-op), but for a disabled tool, the blocking is the essential transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—two sentences—and front-loads the action ('Delete a build') followed by the critical blocking status. Every sentence earns its place; there is zero fluff, making it highly efficient for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is intentionally disabled, the description is practically complete: it tells the agent what the tool would do and why it cannot be used right now. The output schema exists but is irrelevant to a blocked tool, and no additional context (e.g., permissions, side effects) is necessary for correct non-use. It lacks details on error behavior, but that is minor given the blocked status.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the undocumented build_id parameter. However, the description makes no mention of the parameter at all. While the parameter name is self-explanatory, the description adds no semantic value, leaving the agent to infer that build_id identifies the target build without any explicit confirmation or edge-case guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Delete a build') and clearly differentiates from siblings like create_build and sign_build. The 'CURRENTLY BLOCKED' note adds crucial context that the operation is intentionally disabled, so an agent immediately knows the tool's purpose and current status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent the tool is blocked and disabled for safety, which is a clear 'when NOT to use' directive. It does not mention alternatives, but for a disabled tool, the only actionable guidance is to avoid calling it, which is provided clearly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_logA
Download a build log file to local filesystem.
The file will be saved to $ALBS_LOG_DIR// (default: /tmp/albs-logs//). After downloading, use read_log_tail to read the contents.
| Name | Required | Description | Default |
|---|---|---|---|
| build_id | Yes | ||
| filename | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 discloses that the file is saved to a specific path, which is a side effect. It doesn't mention potential overwrites, permissions, or that it only downloads without reading. The description is honest but not deep; it explains the core behavior and destination without extra context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the main purpose, and includes essential path information in a clear format. It adds a relevant follow-up suggestion without unnecessary fluff. Excellent structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple download tool with two parameters and an output schema present, the description covers the core purpose, the file destination, and a recommended next step. It doesn't explain the return value, but the output schema likely covers that. It's adequate for the tool's simplicity and complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does by showing the path pattern '$ALBS_LOG_DIR/<build_id>/<filename>', which ties both parameters to the file location. However, it doesn't explicitly define what build_id or filename represent beyond the path, and it doesn't mention any constraints or formats. Partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Download') and a specific resource ('build log file') with an explicit destination ('to local filesystem'). It also explains the file path pattern, which distinguishes it from siblings like read_log_tail and search_log. This is clear and actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear usage hint: after downloading, use read_log_tail to read contents. This implies the tool is for saving files locally rather than for immediate reading. However, it doesn't explicitly state when not to use it or compare against alternatives like list_build_logs, so it's slightly incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_build_infoA
Get build details: tasks, statuses, packages, architectures.
Returns a summary of the build including each task's status, architecture, package name, and whether it has sign tasks. Also lists any linked builds (their -br repos are mixed into the buildroot), which is needed to accurately reproduce a similar rebuild.
| Name | Required | Description | Default |
|---|---|---|---|
| build_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the output contents in detail, including task status, architecture, package name, sign-task presence, and linked builds—critical for understanding the tool's behavior. It also explains why linked builds matter (repos mixed into buildroot), which is valuable beyond a generic summary. It stops short of stating read-only nature explicitly, but that is implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two paragraphs of roughly 60 words, front-loaded with the core purpose and then detailing the return contents. Every sentence adds value—the linked-builds note is especially important. No redundancy or fluff; it is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter) and that an output schema exists, the description covers the essential semantics: what is returned and a key nuance (linked builds). It does not mention error handling, authentication, or performance, but these are not critical for a read-only getter with a clear output schema. The description sufficiently positions the tool for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, build_id, is documented only as an integer in the schema with no description. The tool description does not mention build_id at all, so it adds no meaning beyond the schema. Since schema description coverage is 0%, the description should compensate, but it doesn't. The parameter is simple and self-explanatory from the tool name, preventing a score of 1, but it still falls short of providing any guidance (e.g., where to find build_id).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Get') and a clear resource ('build details') followed by a concise list of what's included: tasks, statuses, packages, architectures. It further elaborates on the summary content, distinguishing it from sibling tools like get_products or get_sign_task_status. The tool's purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (when you need build details, especially the complete task list and statuses) and even mentions a specific use case (reproducing a rebuild via linked builds). However, it does not explicitly state when NOT to use it or name alternative tools, leaving some ambiguity against siblings like get_failed_tasks or get_sign_task_status that also provide build-related info.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_failed_tasksA
Get failed tasks for a build with their available log files.
Shows only tasks that failed, along with log file names. Key logs for debugging: mock_build, mock_stderr, mock_root.
| Name | Required | Description | Default |
|---|---|---|---|
| build_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. It states the tool shows failed tasks and log file names, which implies a read-only operation, but it does not explicitly say so. It adds useful context by naming specific key logs, which helps the agent know what to expect. However, it does not mention any side effects, permissions, or limitations. For a simple get operation, this is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no redundancy. The primary purpose is front-loaded in the first sentence, and the second sentence adds a specific, useful detail about key logs. Every word earns its place, and there is no jargon or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter) and the presence of an output schema (not shown but referenced), the description is mostly complete. It explains the scope (failed tasks) and the availability of log files, which is the key output. The mention of specific log names helps the agent understand the return format. However, it does not describe how to use the log files (e.g., download them via download_log), but that is outside the tool's direct scope. Minor improvements could include clarifying that the output includes log file names for further retrieval.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one required parameter, build_id, with no description and 0% schema description coverage. The tool description does not mention build_id at all, providing no additional meaning beyond the parameter name and type. The agent is left to infer that it is the identifier for the build whose failed tasks are being retrieved. This is a significant gap given the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get failed tasks for a build with their available log files.' It specifies the resource (failed tasks) and the action (get), and clarifies that it only shows failed tasks along with log file names. This distinguishes it from siblings like list_build_logs or search_log, which are broader or different in focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to retrieve failed tasks and their logs, which is a specific debugging scenario. It even highlights 'Key logs for debugging: mock_build, mock_stderr, mock_root,' suggesting it's for debugging failed builds. However, it does not explicitly state when to use it instead of alternatives like list_build_logs or search_log, nor does it mention exclusions. The guidance is clear in context but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_flavorsA
List all available platform flavors on ALBS.
Returns flavor names and IDs, useful for verifying correct flavor names before creating builds with the flavors parameter.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that the tool returns flavor names and IDs and scopes results to 'all available' flavors, implying a safe read operation. It does not cover permissions, caching, or ordering, but for a zero-parameter list tool the behavior is reasonably self-evident.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste. The purpose is front-loaded in the first sentence, and the second sentence adds return-format and usage value without repetition. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, zero-parameter tool with an output schema present, the description is adequately complete. It states the purpose, what it returns, and why it matters. The output schema covers return values, so nothing essential is missing for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, which per the rubric establishes a baseline of 4. There is nothing for the description to supplement since the input schema is trivially complete at 100% coverage. No deduction applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (platform flavors) with explicit scope ('all available on ALBS'). It distinguishes itself from the sibling get_platforms by specifying 'platform flavors' rather than the ambiguous 'platforms', and from get_products by naming the flavor domain. An agent can tell exactly what this returns without opening anything else.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a concrete usage context: verifying correct flavor names before creating builds with the flavors parameter, which routes toward the sibling create_build workflow. It does not explicitly name alternatives or state when not to use the tool, so it stops just 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.
get_platformsA
Get all available platforms and their supported architectures from ALBS.
Returns the list of platforms with arch_list fetched dynamically from the build system.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It adds the useful detail that the list is 'fetched dynamically from the build system,' indicating potential variability. However, it does not explicitly confirm read-only behavior or discuss any side effects, errors, or authentication needs, which is acceptable for such a simple getter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no redundant language. The core purpose is front-loaded in the first sentence, and the second adds relevant context about dynamic fetching. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, has output schema), the description covers the essential points: what it returns and the dynamic nature of the data. It does not mention prerequisites or edge cases, but for a basic getter this is sufficient. The only missing element is usage differentiation, which is covered under usage guidelines.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there is nothing to clarify. The baseline for zero parameters is 4, and the description adds nothing beyond what the empty schema already conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves all available platforms and their supported architectures from ALBS, giving a specific verb and resource. However, it does not name any sibling tools to distinguish itself, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 like get_products or get_flavors. It simply states what it does without mentioning conditions or exclusions, leaving the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productsA
List all products on ALBS. No authentication required.
Returns each product's id, name, official/community flag, and the platforms it covers. Use this to pick the target product when creating a release plan with create_release_plan.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that no authentication is required and summarizes the return structure (id, name, official/community flag, platforms). This gives the agent a clear expectation of behavior without side effects or hidden constraints. It could add notes about pagination or limits, but for a simple list tool this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long with no fluff. The primary action is front-loaded, followed by the return details and a direct use-case pointer. Every sentence earns its place, and the structure is ideal for quick agent intake.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list endpoint with no parameters, this description is complete. It states the purpose, the authentication requirement, the return fields, and a concrete use case. Since an output schema exists, the description does not need to detail return types, but it already does sufficiently. No critical information is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline for this dimension is 4. The description doesn't need to explain parameters, but it does elaborate on the output fields, which adds value beyond what a parameter schema would provide. Since the schema is empty, this is effectively the only semantic content, and it's clear and helpful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all products on ALBS,' which is a specific verb and resource. It also lists the fields returned (id, name, official/community flag, platforms), making its purpose unambiguous. While it doesn't explicitly name sibling tools for contrast, the specificity of 'products' and its unique output fields effectively distinguish it from the other get_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a concrete usage scenario: 'Use this to pick the target product when creating a release plan with create_release_plan.' This tells the agent when to call this tool and links it to a specific sibling, which is helpful. However, it doesn't explicitly discuss when not to use it or name alternative tools, 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.
get_release_planA
View an existing release plan. No authentication required.
Returns the release status (scheduled/in_progress/completed/failed/ reverted), product, platform, the source packages it covers, and the target repositories.
| Name | Required | Description | Default |
|---|---|---|---|
| release_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the lack of authentication and the verb 'View' implies read-only behavior. It also lists the return content, which is useful context. No side effects or error behavior are mentioned, but for a simple read operation 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The first sentence states the purpose and a key behavioral note (no authentication), and the second lists the returned data. All information is essential and efficiently front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool, the description covers purpose, authentication, and return content. An output schema exists, so return values are already defined. It does not mention failure cases or prerequisites, but these are not critical for a straightforward view operation given the simple parameter and read-only nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, release_id, is not explicitly described beyond its name. The description implies it identifies the release plan, but does not add meaning beyond the schema's field name. With 0% schema description coverage, the description should compensate more, yet the parameter is self-explanatory, so a middle score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'View' and the resource 'an existing release plan', which is distinct from sibling tools like create_release_plan and commit_release. It also enumerates the returned fields, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'View an existing release plan' clearly indicates this is a read operation for inspection, contrasting with creation or modification tools. However, it does not explicitly mention when not to use it or name alternative tools, so the guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sign_keysA
Get available sign keys from ALBS. Requires JWT token.
Returns key ID, name, keyid (GPG fingerprint short), and associated platform IDs needed for sign_build.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 explicitly discloses the authentication requirement (JWT token) and the read-only nature of the operation ('Get', 'Returns'), and clarifies that keyid is a short GPG fingerprint. For a simple lookup tool this covers the key behavioral ground; minor gaps remain (error behavior with invalid JWT, pagination), but none are critical for a zero-parameter listing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences with no filler — purpose and auth prerequisite are front-loaded, followed by the return-field breakdown. It is efficient and every line earns its place, given there is no output schema content shown here to rely on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter lookup tool with an output schema present, the description covers purpose, source (ALBS), auth prerequisite, return fields with semantic clarification, and workflow linkage (needed for sign_build). Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing for the description to explain — the baseline of 4 applies. The description instead usefully explains what the operation returns, which contains the keyid semantics (GPG fingerprint short) that the output schema alone might not make clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb, resource, and source ('Get available sign keys from ALBS'), and enumerates the returned fields (key ID, name, keyid/GPG fingerprint, platform IDs). The tool is clearly distinguishable from siblings like get_sign_task_status (task status) and get_platforms — none of the other get_* tools retrieve signing keys.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description names a prerequisite (JWT token) and gives workflow context: the returned keys and platform IDs are 'needed for sign_build', so an agent understands this is a prerequisite step before signing. It does not explicitly contrast with alternatives or state when NOT to use it, but the sign_build tie-in provides 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.
get_sign_task_statusA
Get the status of sign tasks for a build.
Use this after sign_build to check whether signing completed or failed. Returns each sign task's ID, status (idle/in_progress/completed/failed), and sign key ID. No authentication required.
| Name | Required | Description | Default |
|---|---|---|---|
| build_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 discloses the return shape (ID, status values including idle/in_progress/completed/failed, and sign key ID) and notes that no authentication is required. For a read-only operation this is adequate, but it does not mention error conditions, potential latency, or that it is non-mutating. The description adds value beyond the schema by clarifying the auth requirement and the status enumerations, but lacks depth on failure or edge-case behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences: purpose, usage timing, and return contents. It front-loads the primary action and includes no filler. Every sentence contributes distinct information—no redundancy with the schema or title. This is an exemplar of efficient writing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only status endpoint with a single parameter and an existing output schema, the description is largely complete. It covers the purpose, usage context, return contents, and authentication. It does not detail error scenarios or pagination, but those are less critical for a simple getter. The presence of an output schema reduces the need to describe the full return structure. Missing information is minor and unlikely to cause incorrect invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter, build_id, with 0% schema description coverage. The description says 'for a build' and 'after sign_build', which implicitly identifies build_id as the build to inspect. However, it does not explicitly explain that build_id is required, its format, or that it must correspond to a previously created build. Since there is only one parameter and the name is self-explanatory, the description partially compensates for the schema gap, but it could be more explicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves the status of sign tasks for a build, using a specific verb ('Get') and resource ('sign tasks'). It also provides context that this is typically used after sign_build, which helps differentiate it from other get_* tools like get_build_info or get_products. However, it doesn't explicitly state what it is not (e.g., not for general build info), but the name and description make 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this after sign_build to check whether signing completed or failed.' This gives a clear when-to-use condition tied to the sign_build workflow. It does not explicitly mention alternatives or exclusions, but among the sibling tools, the context is enough to know this is for signing status. The directive is direct and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_build_logsC
List all available log files for a build from the server.
Shows all log and config files stored in Pulp for this build.
| Name | Required | Description | Default |
|---|---|---|---|
| build_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry behavioral transparency. It mentions 'List' implying a read-only operation, but does not disclose pagination, permission requirements, or whether the response includes only metadata. The phrase 'stored in Pulp' adds a bit of context but is insufficient to inform the agent about side effects or limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, but the second sentence largely repeats the first ('List all available log files' vs 'Shows all log and config files'). It could be condensed to a single unambiguous sentence. While it is front-loaded with the main verb and resource, the redundancy and lack of extra detail make it only moderately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with an output schema, the description gives minimal context. It does not explain what types of log files are included, how to interpret the output, or any error conditions. The mention of 'from the server' and 'stored in Pulp' provides minor environment context, but overall the tool lacks sufficient detail for an agent to anticipate results or handle edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has a single required parameter, build_id (integer), with zero description coverage. The tool description does not mention build_id at all, leaving its meaning, format, or constraints entirely to the schema. With 0% coverage, the description must compensate, but it fails to do so.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'log files for a build'. The second sentence clarifies scope by specifying 'log and config files stored in Pulp for this build'. This distinguishes it from sibling tools like download_log, read_log_tail, and search_log, which operate on content rather than simply listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives. It states what it does but not when an agent should choose it over siblings like search_log or get_build_info. No exclusions or preferred scenarios are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_log_rangeA
Read a specific range of lines from a build log.
Use this to widen the window around a line number that search_log
reported, or to inspect an earlier section. Reads forward from
start_line; a range too large for max_chars stops early and tells you
the call to continue with, so nothing is silently lost.
Each line is clipped to max_line_chars (0 = verbatim). The log is
downloaded automatically if not already on disk — no need to call
download_log first.
| Name | Required | Description | Default |
|---|---|---|---|
| build_id | Yes | ||
| end_line | Yes | ||
| filename | Yes | ||
| max_chars | No | ||
| start_line | Yes | ||
| max_line_chars | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavioral traits: it reads forward from start_line, stops early when exceeding max_chars and provides a continuation call so nothing is lost, clips lines to max_line_chars (0 = verbatim), and auto-downloads the log if missing. This is exemplary transparency for a file-read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight paragraphs, each serving a purpose: purpose, usage/behavior, and parameter details. Front-loaded with the main action, zero redundant phrasing, and every sentence adds value. Ideal structure for agent consumption.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema (which covers return details), the description covers all necessary context: usage scenarios, parameter behaviors, auto-download, early termination, and a hint about continuation. An agent has enough to invoke it correctly without ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains start_line directionality, the max_chars truncation behavior with continuation, and max_line_chars semantics (0=verbatim). It does not explicitly define end_line inclusivity or the exact format of the continuation call, but the core parameters are meaningfully clarified. Strong compensation for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb+resource pairing ('Read a specific range of lines from a build log') and immediately distinguishes its role from nearby siblings: it explicitly mentions 'search_log' and positions itself as a window-widening or earlier-section reader. This makes the intended use unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance ('Use this to widen the window around a line number that search_log reported, or to inspect an earlier section') and even excludes an alternative ('no need to call download_log first'). It does not name read_log_tail as a contrast for tail-reading, but the context of 'earlier section' implies the distinction. Slight room for more explicit alternatives, but strong overall.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_log_tailA
Read a page of a build log from the end, and page upward from there.
Good for how the build terminated (RPM build errors:, the mock
exception). To FIND a compile error, use search_log — the end of a
make -j log holds only the wrapper error.
One call returns as many lines as fit in max_chars (~10k tokens), up to
lines lines. That budget is what sizes the page: the same budget is about
165 lines of a mock_build log or 350 of a mock_root, so a fixed line count
would be wrong for one of them. The result ends with the exact call for the
page above it — before_line=<first line shown> — so walking a log bottom
to top needs no arithmetic and skips nothing.
before_line=N reads the page ending at line N-1. Each line is clipped to
max_line_chars (0 = verbatim); keep the clip on, mock_build lines can be
several KB of gcc flags. The log is downloaded automatically if not already
on disk — no need to call download_log first.
| Name | Required | Description | Default |
|---|---|---|---|
| lines | No | ||
| build_id | Yes | ||
| filename | Yes | ||
| max_chars | No | ||
| before_line | No | ||
| max_line_chars | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the burden and does so richly. It discloses the paging budget logic (max_chars/lines), the self-referencing before_line mechanism for upward traversal, clipping behavior, and automatic log download. These are non-obvious behaviors critical for correct invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense yet efficient. It front-loads the purpose, then usage guidance, then parameter mechanics, with each sentence serving a distinct purpose. The note about different line counts adds practical value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex paging tool, the description covers all necessary aspects: direction, budgets, paging technique, clipping, and auto-download. It also touches on the return format by describing the 'result ends with the exact call for the page above it', and the output schema exists to formalize the rest.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description compensates entirely. It explains max_chars as the page-sizing budget, lines as a cap, before_line as the page boundary, and max_line_chars with clipping details. build_id and filename are self-evident from context, so no additional explanation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence, 'Read a page of a build log from the end, and page upward from there', states a specific verb, resource, and direction. It also explicitly contrasts itself with search_log ('To FIND a compile error, use search_log'), making its unique purpose clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use it ('Good for how the build terminated') and when not to ('To FIND a compile error, use search_log'). It also notes the prerequisite is handled automatically ('no need to call download_log first'), covering both usage context and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_buildsA
Search builds on ALBS. Returns a page of builds.
Each build line carries its task count, failed count, and release state,
then the packages as full NVRs (mingw-glib2-2.89.2-1.el10) so a version
question can be answered without opening the build. When project is set,
the packages that matched it are listed on their own match: line — the
remaining ones are summarised and may be truncated.
Args: page: Page number (default 1). project: Filter by project/package name. is_running: Filter by running status.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| project | No | ||
| is_running | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It details the output format (task count, failed count, release state, packages as NVRs), explains behavior when `project` is set (matched packages on a `match:` line, others summarized and possibly truncated), and notes pagination. This gives a clear picture of what the tool returns and its limitations, though it does not explicitly mention read-only status or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: it opens with a clear one-line purpose, then explains the output format (useful context), and ends with a concise arg list. It is a bit detailed on output shape, but it is relevant and earns its place. The main purpose is front-loaded, and there is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 optional parameters and an output schema, the description covers the essentials: pagination, filtering, and output structure. It also anticipates follow-up questions by providing NVRs and match lines. Minor omissions like error handling or result limits do not detract significantly, making it complete for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% (no descriptions in schema). The description compensates fully with an Args section: 'page: Page number (default 1)', 'project: Filter by project/package name', and 'is_running: Filter by running status.' This adds meaning and clearly explains each parameter beyond the raw type and default, enabling correct usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Search' and the resource 'builds' on ALBS, and notes it 'Returns a page of builds.' This is specific and distinguishes it from sibling tools like get_build_info (which likely retrieves a single build) and create_build (which creates). The mention of pagination and filtering further clarifies its role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: when you need to search or filter builds. However, it does not explicitly state when to use this tool versus alternatives (e.g., when you have a specific build ID, use get_build_info). No exclusions or alternatives are named, leaving the agent to infer which tool fits a given scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_logA
Find the failure in a build log: grep it and return each hit with context.
START HERE when investigating a failed build — do not read tails first.
In a parallel make -j log the real compile error sits hundreds of lines
above the end, so the tail shows only make: *** Error 2: the symptom, not
the cause. This finds the cause in one call.
pattern is a Python regex; omit it to use the built-in build-failure
signatures (compiler/link errors, failed patch hunks, unresolved
BuildRequires, RPM packaging errors, %check failures, OOM/network trouble).
Matched lines are prefixed >>> and every line is numbered, so a hit's
number can be fed straight to read_log_range to see more.
Only the first max_matches hits are reported — the first error is the root
cause and the rest are cascades — but the header counts all of them. Lines
are clipped to max_line_chars around the match (0 = verbatim, needed when
quoting an exact multi-KB command line). The log is downloaded
automatically if not already on disk.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| before | No | ||
| pattern | No | ||
| build_id | Yes | ||
| filename | Yes | ||
| max_chars | No | ||
| max_matches | No | ||
| max_line_chars | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden of behavioral disclosure. It reveals that only the first max_matches hits are returned (while the header counts all), that lines are clipped per max_line_chars, that the log is auto-downloaded, and that a default pattern set is used when pattern is omitted. These are concrete behavioral traits beyond the schema, with no contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by a concise rationale and then parameter-specific behaviors. Every sentence contributes—whether distinguishing from siblings, explaining the root-cause logic, or detailing output formatting. There is no filler, and the structure makes scanning easy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters, no annotations, and an output schema (which shifts return-detail responsibility), the description is remarkably complete. It covers the primary use case, explains why this tool is the correct entry point, details the output format (>>> prefix and line numbers), and provides sibling routing. No critical information an agent needs to call this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains the meaning and behavior of pattern (with defaults), max_matches (first N hits only), and max_line_chars (clipping, including 0=verbatim). It implies before/after provide context but does not explicitly describe them. This leaves a small gap, but the most decision-relevant parameters are covered, and the description adds substantial value over the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Find the failure in a build log: grep it and return each hit with context.' It explicitly distinguishes itself from siblings with 'START HERE when investigating a failed build — do not read tails first' and explains why, setting it apart from read_log_tail. This is a clear, precise purpose that an agent can act on without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: 'START HERE when investigating a failed build' and advises against reading tails first. It also names the alternative tool (read_log_range) for drilling into a specific hit, and explains why this tool is the right first step. This is complete usage routing with no reliance on inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sign_buildA
Sign a build on ALBS. Requires JWT token.
Use get_sign_keys to see available sign key IDs.
Args: build_id: The build ID to sign. sign_key_id: Sign key ID (default: 4). Use get_sign_keys to list.
| Name | Required | Description | Default |
|---|---|---|---|
| build_id | Yes | ||
| sign_key_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the JWT requirement and the default sign_key_id, which is helpful. But it does not describe side effects, reversibility, or the result of signing (e.g., what occurs on the build), leaving behavioral impact ambiguous.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the core purpose, then prerequisites, then parameter details. No wasted words, though parameter explanation is a bit repetitive (mentions get_sign_keys twice). Still, structure is effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation tool with an output schema (indicated by context), the description covers essentials: purpose, auth requirement, default parameter, and a reference to a supporting tool. It does not explain the signing semantics in depth, but given the output schema exists and the tools are targeted, this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must define parameters. It explains build_id as 'the build ID to sign' and sign_key_id with its default and a pointer to get_sign_keys, adding meaning beyond the schema titles. This compensates well for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource ('Sign a build on ALBS') and mentions the JWT token requirement. It does not explicitly differentiate from siblings like get_sign_task_status or create_build, but 'sign' is a distinct action understood without opening other schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit prerequisites (JWT token required) and directs the agent to get_sign_keys for available key IDs, which is useful context. However, it does not mention when not to use this tool or how it fits with sibling actions like create_build or commit_release, so it falls short of full guidance.
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. Dates show when Glama detected each change.
19 tool updates
v0.1.0- First observed
commit_release - First observed
create_build - First observed
create_release_plan - First observed
delete_build - First observed
download_log - First observed
get_build_info - First observed
get_failed_tasks - First observed
get_flavors - First observed
get_platforms - First observed
get_products - First observed
get_release_plan - First observed
get_sign_keys - First observed
get_sign_task_status - First observed
list_build_logs - First observed
read_log_range - First observed
read_log_tail - First observed
search_builds - First observed
search_log - First observed
sign_build
TDQS
Each tool targets a distinct resource or action: get_* tools each fetch a specific entity (products, platforms, keys, flavors, release plans, build info), and log tools (download, search, tail, range) have clearly separated purposes. Even the two potentially overlapping tools (get_build_info vs get_failed_tasks) are distinct—one gives an overview, the other focuses specifically on failures. No two tools could be confused.
All tool names follow a consistent verb_noun snake_case pattern (e.g., get_build_info, create_build, read_log_tail, search_builds). Verbs are descriptive and nouns reference the subject clearly. There are no mixed conventions or vague names like 'process' or 'do_thing'.
At 19 tools, the server is on the heavier side but each tool serves a clear function within the build system domain. The count is justified by the breadth of operations (create/build, sign, release planning, log inspection, search). It does not feel bloated, though it is slightly above the typical 'sweet spot' of 10-15 tools.
The tool surface covers the full build lifecycle: creation, status retrieval, signing, failed-task inspection, log analysis, release plan creation, and search. Log tools are particularly thorough (search, tail, range, list). The only missing operation—commit_release—is explicitly blocked for safety, not an oversight. There are no dead ends; every workflow has the necessary supporting tools.
Maintenance
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
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server and CLI for iOS development — build, test, automate, and diagnose from any AI agent or terminal.1MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server for intelligent Linux kernel configuration management and building. Enables AI assistants to generate, manage, and optimize kernel configurations and build kernels with comprehensive error detection.7GPL 2.0

evergreen-mcp-serverofficial
FlicenseAqualityAmaintenanceMCP server for MongoDB's Evergreen CI/CD platform, enabling AI assistants to manage projects, analyze builds, and troubleshoot failures via natural language.83-- AlicenseAqualityDmaintenanceMCP server that bridges AI assistants with the SUSE Linux ecosystem, enabling safe access to openSUSE Wiki, OBS, and repositories for system management.221GPL 3.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AlmaLinux/albs-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server