Skip to main content
Glama

mcp-beaker

PyPI Version PyPI Downloads CI License Python

MCP server for Beaker lab automation -- system provisioning, job management, distro discovery, and failure diagnosis.

Works with any Beaker server instance. Built on FastMCP v3 and designed for use with AI coding assistants (Cursor, Claude Desktop, etc.).

Features

  • 27 tools covering the full Beaker lifecycle: systems, jobs, distros, tasks

  • Hostname filter: list or search systems by FQDN substring (e.g. ampere-mtsnow), combined with availability presets (free/available/all)

  • Beaker Py3 compatible: works with both legacy and modernized Beaker REST APIs

  • Flexible auth: Kerberos (native GSSAPI/SPNEGO or bkr CLI fallback) and password (XML-RPC)

  • Job XML validation: auto-fills missing fields, infers distro families

  • Failure diagnosis: deep analysis with auto-retry on correctable failures

  • 10 documentation topics exposed as MCP resources

  • 2 workflow prompts for common tasks (reserve system, diagnose job)

  • Generic: works with any Beaker URL, configurable SSL/CA settings

Related MCP server: zuul-mcp

Installation

The container image bundles everything -- no host dependencies beyond podman (or docker). Kerberos authentication happens inside the container via KRB5_PRINCIPAL and KRB5_PASSWORD environment variables.

# Pull the pre-built image from GHCR
podman pull ghcr.io/faizbawa/mcp-beaker:latest

# Or build locally from the repo
podman build -t mcp-beaker:latest -f Containerfile .

Pip / uvx

# Using uv (recommended)
pip install uv
uvx mcp-beaker

# Using pip
pip install mcp-beaker
mcp-beaker

# With native Kerberos support (no bkr CLI needed -- requires krb5-devel on host)
pip install mcp-beaker[kerberos]

# Local development
uv run --directory /path/to/mcp-beaker mcp-beaker

Configuration

Cursor / VS Code

Add to your .cursor/mcp.json (or .vscode/mcp.json):

{
  "mcpServers": {
    "beaker": {
      "command": "podman",
      "args": [
        "run", "--rm", "-i", "--network=host",
        "-e", "BEAKER_URL=https://beaker.example.com",
        "-e", "KRB5_PRINCIPAL=your-user@YOUR.REALM",
        "-e", "KRB5_PASSWORD=your-kerberos-password",
        "ghcr.io/faizbawa/mcp-beaker:latest"
      ]
    }
  }
}

The container runs kinit internally -- no volume mounts, no host dependencies. Use --network=host so the container can reach your Kerberos KDC and Beaker server (especially over VPN).

Container with mounted ticket cache (no password in config)

Instead of storing your Kerberos password in mcp.json, you can mount a pre-existing ticket cache from the host:

Step 1 -- Create a file-based ticket on the host:

kinit -c FILE:/tmp/krb5cc_beaker your-user@YOUR.REALM

Re-run this whenever the ticket expires (typically every 10 hours).

Step 2 -- Mount the ticket into the container:

{
  "mcpServers": {
    "beaker": {
      "command": "podman",
      "args": [
        "run", "--rm", "-i", "--network=host",
        "-v", "/tmp/krb5cc_beaker:/tmp/krb5cc_0:ro,Z",
        "-e", "BEAKER_URL=https://beaker.example.com",
        "ghcr.io/faizbawa/mcp-beaker:latest"
      ]
    }
  }
}

The container detects the valid ticket and skips kinit entirely. No KRB5_PRINCIPAL or KRB5_PASSWORD needed. The :ro,Z mount flags ensure read-only access with proper SELinux labeling.

Note: The host typically uses KCM (D-Bus) for credential storage, which containers cannot access. That's why you need kinit -c FILE:... to create a file-based cache that can be bind-mounted.

SSL certificates: Many Beaker servers use internal CA certificates that are not in the container's default trust store. You have three options:

  1. Disable verification (simplest, fine on a trusted corporate network):

"-e", "BEAKER_SSL_VERIFY=false",
  1. Pass CA cert inline via BEAKER_CA_CERT_DATA (no volume mount needed):

"-e", "BEAKER_CA_CERT_DATA=-----BEGIN CERTIFICATE-----\nMIID...your-ca-cert...\n-----END CERTIFICATE-----",
  1. Mount a CA bundle (single file):

"-v", "/path/to/ca-bundle.crt:/tmp/ca-bundle.crt:ro",
"-e", "BEAKER_CA_CERT=/tmp/ca-bundle.crt",

Pip / uvx

{
  "mcpServers": {
    "beaker": {
      "command": "uvx",
      "args": ["mcp-beaker[kerberos]"],
      "env": {
        "BEAKER_URL": "https://beaker.example.com",
        "BEAKER_AUTH_METHOD": "kerberos",
        "BEAKER_KERBEROS_BACKEND": "http"
      }
    }
  }
}

Streamable HTTP mode

uvx mcp-beaker --transport streamable-http --port 8000
{
  "mcpServers": {
    "beaker": {
      "url": "http://localhost:8000/mcp",
      "type": "streamableHttp"
    }
  }
}

Environment Variables

Variable

Required

Default

Description

BEAKER_URL

Yes

--

Base URL of your Beaker server

BEAKER_AUTH_METHOD

No

kerberos

kerberos or password

BEAKER_KERBEROS_BACKEND

No

http

http (native SPNEGO) or bkr (bkr CLI)

BEAKER_USERNAME

For password auth

--

Beaker username

BEAKER_PASSWORD

For password auth

--

Beaker password

BEAKER_OWNER

No

$USER

Default owner for job queries

BEAKER_SSL_VERIFY

No

true

Verify SSL certificates

BEAKER_CA_CERT

No

--

Path to CA certificate bundle

KRB5_PRINCIPAL

Container only

--

Kerberos principal for kinit inside container

KRB5_PASSWORD

Container only

--

Kerberos password for kinit inside container

BEAKER_CA_CERT_DATA

Container only

--

PEM-encoded CA certificate written to file at startup

CLI Options

mcp-beaker [OPTIONS]

Options:
  --transport [stdio|sse|streamable-http]  Transport type (default: stdio)
  --port INTEGER                           Port for HTTP transports (default: 8000)
  --host TEXT                              Host for HTTP transports (default: 0.0.0.0)
  --path TEXT                              Path for streamable-http (default: /mcp)
  --beaker-url TEXT                        Beaker server URL
  --ssl-verify / --no-ssl-verify           Verify SSL certs (default: verify)
  --ca-cert TEXT                           CA certificate bundle path
  --auth-method [kerberos|password]        Authentication method
  --kerberos-backend [http|bkr]            Kerberos backend (default: http)
  --read-only                              Disable all write tools
  --enabled-tools TEXT                     Comma-separated tools to enable
  -v, --verbose                            Increase verbosity (-v info, -vv debug)
  --version                                Show version
  --help                                   Show this message

Tools

Read Tools (15)

Tool

Description

list_systems

List systems by availability (all/available/free) and optional hostname substring

search_systems

Search systems by hostname, CPU, architecture, memory, pool, and other hardware attributes

get_system_details

Hardware specs, CPU info, pool membership, ownership, status for a system

get_system_status

Current condition, reservation, and loan status for a system

get_system_history

Activity history for a system

get_system_arches

Supported OS families and architectures

list_jobs

Filter jobs by owner, status, whiteboard

get_job_status

Job status with failure diagnosis

get_job_results_xml

Export job results as XML

get_job_logs

List log files for a job/recipe/task

list_distro_trees

Search distros by name, family, arch, tags

list_os_families

List all known OS families

whoami

Show authenticated user info

list_lab_controllers

List all lab controllers

search_tasks

Search the task library

Write Tools (12)

Tool

Description

submit_job

Submit a job from XML (with validation and auto-fill)

clone_job

Clone and resubmit an existing job

cancel_job

Cancel a running/queued job

watch_job

Poll until completion with failure analysis and auto-retry

reserve_system

Manually reserve a system

release_system

Release a manually reserved system

loan_system

Grant a loan for a system to a user

return_loan

Return a current system loan

power_system

Power on/off/reboot a system

provision_system

Provision a reserved system with a distro

extend_watchdog

Extend a running task's watchdog timer

set_job_response

Ack/nak (waive) a recipe set result

Authentication

Ensure you have a valid ticket:

kinit your-username@YOUR.REALM

The server supports two Kerberos backends, controlled by BEAKER_KERBEROS_BACKEND:

Value

Backend

Install

http (default)

Native GSSAPI/SPNEGO -- lightweight, pip-installable

pip install mcp-beaker[kerberos]

bkr

bkr CLI subprocesses -- traditional, requires RPM

yum install beaker-client

Both backends use the same Kerberos ticket from kinit.

Password

Set BEAKER_AUTH_METHOD=password along with BEAKER_USERNAME and BEAKER_PASSWORD. The server authenticates via the XML-RPC auth.login_password() method. Note: this requires server-side LDAP to be enabled.

Architecture

src/mcp_beaker/
  __init__.py           # Click CLI entry point
  config.py             # BeakerConfig dataclass
  exceptions.py         # Custom exceptions
  client.py             # BeakerClient (XML-RPC + REST)
  models/               # Pydantic response models
  servers/
    __init__.py         # FastMCP server, lifespan, DI helper
    systems.py          # System tools (6 read + 6 write)
    jobs.py             # Job tools (4 read + 6 write)
    distros.py          # Distro tools (2 read)
    tasks.py            # Task tools (1 read)
    general.py          # General tools (2 read)
    prompts.py          # Workflow prompt templates
    resources.py        # Beaker documentation resources
  utils/
    xml_validation.py   # Job XML validation/auto-fill
    diagnosis.py        # Failure analysis engine
    formatting.py       # Human-readable formatters
    bkr_cli.py          # bkr CLI helpers
    parsing.py          # ID parsing utilities

Development

cd mcp-beaker
uv sync --dev
uv run pytest
uv run ruff check src/

License

MIT

Available Tools

27 tools
cancel_jobCancel JobA

Cancel a running or queued Beaker job.

Note: cancelling any part of a job (recipe, recipe set) cancels the entire job. The reason is recorded in the job history.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoReason for cancellation.Cancelled via MCP
task_idYesTask ID to cancel (e.g. 'J:12345', 'RS:4321'). Cancelling any part cancels the entire job.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations indicate a mutating operation (readOnlyHint=false). The description adds valuable context: cancelling any part cancels the entire job, and the reason is recorded in job history. This goes beyond annotations and helps the agent understand the tool's impact.

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

Conciseness5/5

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

The description is very concise: two sentences plus a note. It front-loads the main purpose and includes only essential behavioral information without any wasted words.

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

Completeness4/5

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

Given the presence of an output schema and the simplicity of the tool, the description covers the key aspects: what it cancels, the cascading effect, and logging of the reason. It could mention error handling or prerequisites, but is largely complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters. The description does not add new information about parameters beyond what is in the schema, meeting the baseline but not exceeding it.

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

Purpose5/5

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

The description clearly states the tool cancels a running or queued Beaker job. The verb 'cancel' and resource 'Beaker job' are specific, and it distinguishes itself from siblings like clone_job or submit_job by the destructive action.

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

Usage Guidelines3/5

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

The description says when to use (cancel a running/queued job) and adds a caution about the side-effect (cancelling any part cancels the entire job). However, it does not explicitly state when not to use or mention alternatives, leaving some ambiguity for edge cases.

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

clone_jobClone JobA

Clone (re-submit) an existing Beaker job.

Fetches the original job's XML in clone mode, then submits it as a new job. Useful for retrying failed jobs or running the same test again.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesJob ID to clone (e.g. 'J:12345' or '12345').

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false, consistent with the description that creates a new job. The description adds behavioral details (fetches XML in clone mode, submits as new job) beyond annotations, but does not disclose all side effects (e.g., whether it modifies original).

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

Conciseness5/5

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

The description is three sentences with no redundancy. It efficiently covers what the tool does, how it works, and its use cases.

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

Completeness5/5

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

For a tool with one required parameter and an output schema, the description fully covers the tool's purpose and behavior. No additional details are needed for correct invocation.

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

Parameters4/5

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

Schema coverage is 100% with a description for job_id. The description adds an example format ('J:12345' or '12345'), providing additional context beyond the schema.

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

Purpose5/5

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

The description clearly states the tool clones (re-submits) an existing Beaker job, explaining the process of fetching the original XML and submitting it as a new job. It distinguishes from siblings like 'submit_job' by focusing on cloning an existing job.

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

Usage Guidelines4/5

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

The description explicitly mentions it's useful for retrying failed jobs or running the same test again, giving clear context for when to use. However, it does not explicitly mention when not to use or provide alternatives, though the purpose is implied.

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

extend_watchdogExtend WatchdogA

Extend the watchdog timer for a running Beaker task.

Use this to extend a Beaker reservation and prevent the system from being reclaimed. Beaker's watchdog automatically aborts recipes that exceed their timeout — this tool pushes that deadline forward.

Provide either a task_id directly, or a job_id and the tool will find the currently running task for you.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idNoJob ID (e.g. 'J:12345' or '12345'). If provided, the tool finds the running task automatically.
secondsYesNumber of seconds to extend by.
task_idNoNumeric task ID (e.g. 12345). Provide this OR job_id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false, and the description confirms mutation by stating it extends the timer and pushes the deadline. Adds behavioral detail beyond annotations (e.g., prevents reclaim, aborts recipes). 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.

Conciseness5/5

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

Three short paragraphs, no wasted words. Front-loaded with core purpose. Each sentence adds essential information. Perfectly structured for quick comprehension.

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

Completeness5/5

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

Given the tool's simplicity (3 params, clear purpose, output schema exists), the description covers all needed context: what it does, when to use it, and how to specify the target. No missing information for a typical use case.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by clarifying the relationship between job_id and task_id (provide either), and the automatic task finding when job_id is given. This improves understanding beyond the schema alone.

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

Purpose5/5

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

Clearly states it extends the watchdog timer for a Beaker task. Uses specific verb+resource ('extend watchdog timer') and explains the effect (prevents reclaim, pushes deadline). No sibling tool does this, so differentiation is inherent.

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

Usage Guidelines4/5

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

Explicitly tells when to use: to extend a reservation and prevent system reclaim. Provides context about Beaker's watchdog behavior. Does not explicitly list alternatives or when not to use, but given the tool is unique among siblings, this is sufficient.

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

get_job_logsGet Job LogsA
Read-only

List all log files for a Beaker job, recipe, or task.

Returns URLs to log files including console.log, anaconda logs, and task output. Critical for debugging installation failures.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesBeaker task ID (e.g. 'J:12345', 'R:99999', 'T:88888'). Returns log files for this component and its descendants.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, and the description aligns by describing a read-only listing operation. It adds value by specifying the types of logs returned (console.log, anaconda logs, task output), providing behavioral context beyond the annotation.

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

Conciseness5/5

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

The description is two sentences long, with the first sentence stating the core purpose and the second adding detail and a use case. Every word is meaningful, and it is front-loaded for quick understanding.

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

Completeness5/5

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

Given the presence of an output schema, the description need not detail return values. It covers the essential aspects: what logs are listed, for what entities (job/recipe/task), and the primary use case (debugging). This is sufficient for an agent to invoke the tool correctly.

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

Parameters3/5

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

The input schema has 100% coverage for the single parameter, including an example and explanation that it returns logs for descendants. The description does not add additional parameter-level information beyond what the schema already provides, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool lists log files for Beaker jobs, recipes, or tasks, with specific examples like console.log and anaconda logs. This distinguishes it from sibling tools such as get_job_status or watch_job.

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

Usage Guidelines4/5

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

The description provides clear usage context by stating it's 'critical for debugging installation failures.' While it doesn't explicitly list alternatives, the purpose is distinct enough that an agent can infer when to use it over siblings.

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

get_job_results_xmlGet Job Results XMLA
Read-only

Export Beaker job results as XML.

Returns the XML representation of a job component including its current state. Use clone=true to get XML suitable for resubmission.

ParametersJSON Schema
NameRequiredDescriptionDefault
cloneNoReturn XML suitable for resubmission (no results). Default: false.
task_idYesBeaker task ID (e.g. 'J:12345', 'RS:4321', 'R:99999'). Determines the scope of results returned.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Beyond the readOnlyHint annotation, the description discloses the return format (XML) and the clone parameter's effect on output (suitable for resubmission). No contradictions. This adds useful behavioral context.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the primary purpose, and every sentence adds value. No wasted words.

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

Completeness4/5

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

The description covers purpose and clone usage. With an output schema present and readOnlyHint annotation, it is largely complete. However, it lacks explicit differentiation from get_job_logs and get_job_status, which slightly reduces completeness.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds no new meaning beyond the schema's parameter descriptions, which already explain clone and task_id. The mention of clone in the description is redundant with the schema.

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

Purpose5/5

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

The description clearly states the tool exports Beaker job results as XML, using a specific verb and resource. It differentiates from siblings like get_job_status by specifying the output format.

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

Usage Guidelines3/5

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

The description mentions using clone=true for resubmission, providing a usage hint. However, it lacks explicit guidance on when to choose this tool over alternatives like get_job_status or get_job_logs, leaving context implied.

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

get_job_statusGet Job StatusA
Read-only

Check the status of a Beaker job and diagnose any failures.

Fetches detailed job information including recipe sets, recipes, and tasks, then highlights any problems found with failure analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesBeaker job ID. Accepts 'J:12345' or '12345'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true. The description adds value by describing the analysis and highlighting of problems, which goes beyond mere read behavior. 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.

Conciseness5/5

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

Two sentences succinctly convey primary purpose and additional detail. No waste, front-loaded with key action.

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

Completeness5/5

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

With a single parameter, an output schema (implied), and the description covering what the tool returns (detailed info, recipe sets, recipes, tasks, failure analysis), it is complete.

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

Parameters3/5

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

Schema coverage is 100%, and the schema already describes the job_id parameter with format. The tool description does not add additional semantics beyond what the schema provides, so baseline 3 applies.

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

Purpose5/5

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

The description uses specific verbs 'check status' and 'diagnose failures' with a clear resource 'Beaker job'. It distinguishes from siblings like get_job_logs and get_job_results_xml by focusing on overall status and failure analysis.

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

Usage Guidelines4/5

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

The description clearly states when to use: to check job status and diagnose failures. It does not explicitly mention when not to use or point to alternatives, but the context of siblings helps infer.

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

get_system_archesGet System ArchitecturesA
Read-only

Get supported OS families and architectures for a Beaker system.

Returns a mapping of distro family names to their supported architecture list for the given system.

ParametersJSON Schema
NameRequiredDescriptionDefault
fqdnYesFully qualified domain name of the system.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the description's value is in explaining the return structure: 'Returns a mapping of distro family names to their supported architecture list.' This adds useful context beyond the annotation, though the output schema may provide similar detail.

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

Conciseness5/5

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

Two sentences: the first clearly states the purpose, the second explains the return format. No unnecessary words, well front-loaded. Every sentence earns its place.

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

Completeness5/5

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

The tool has one required parameter and an output schema (context signal). The description succinctly covers the purpose and return structure, which is sufficient given the schema documents the output format. No apparent gaps.

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

Parameters3/5

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

Schema description coverage is 100% with the single parameter fqdn having a clear description. The tool description does not add any additional parameter semantics beyond what the schema already provides, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'Get supported OS families and architectures for a Beaker system.' This is a specific verb-resource combination that distinguishes it from sibling tools like get_system_details (general details) and list_os_families (all families, not per system).

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

Usage Guidelines3/5

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

The description implies usage for a specific system (via fqdn) but does not explicitly state when to use this tool over siblings, nor does it provide context for when not to use it. It is adequate but lacks comparative guidance.

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

get_system_detailsGet System DetailsA
Read-only

Get detailed information about a specific Beaker system.

Returns hardware specs, ownership, status, architectures, and lab controller assignment for the given system FQDN.

ParametersJSON Schema
NameRequiredDescriptionDefault
fqdnYesFully qualified domain name of the system.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=true, so the agent knows it is a safe read operation. The description adds value by detailing what is returned (hardware specs, ownership, etc.). No additional behavioral traits beyond the annotation are needed.

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

Conciseness5/5

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

The description is two sentences long, directly front-loading the purpose and the returned data categories. Every sentence earns its place with no redundancy.

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

Completeness5/5

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

Given the simplicity of the tool (one required parameter, existing output schema), the description sufficiently covers what the tool does and what it returns. No additional context is necessary for an agent to use it correctly.

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

Parameters3/5

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

The input schema fully describes the single parameter `fqdn` with a clear description. The description does not add new information about the parameter beyond restating that it is the system FQDN. With 100% schema coverage, baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states it gets detailed information about a specific Beaker system, listing the categories of returned data (hardware specs, ownership, status, architectures, lab controller). This distinguishes it from siblings like list_systems and get_system_history, which have different scopes.

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

Usage Guidelines4/5

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

The description provides clear context: use with a system FQDN to retrieve full details. It does not explicitly exclude cases or name alternatives, but the use case is obvious given the required input and the scope of returned data.

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

get_system_historyGet System HistoryB
Read-only

Get activity history for a Beaker system.

Shows who used the system, what changed, and when. Useful for investigating system state changes and usage patterns.

ParametersJSON Schema
NameRequiredDescriptionDefault
fqdnYesFully qualified domain name of the system.
sinceNoISO timestamp to fetch history from. Omit for last 24 hours.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

The readOnlyHint annotation already signals a safe read operation. The description adds context on the type of data (activity history) but does not disclose other behavioral traits like pagination, rate limits, or data retention. Beyond the annotation, it offers moderate value.

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

Conciseness4/5

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

Two short sentences that are front-loaded and free of fluff. The first sentence states the core purpose, the second adds detail and usage context. Could be slightly more structured (e.g., a note on default time range) but remains efficient.

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

Completeness3/5

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

An output schema exists (not shown but indicated), so description does not need to explain return values. However, it lacks information on history limitations (e.g., retention period, event types) and pagination. For a history tool, these gaps affect completeness.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters (fqdn, since) well. The description adds no additional meaning or usage context for the parameters, meeting the baseline expectation.

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

Purpose4/5

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

Clearly states the verb 'get' and resource 'activity history' for a Beaker system. Describes what data is shown (who, what, when). Distinguishes itself from siblings like get_system_details (current state) and list_systems (list of systems) implicitly, but could be more explicit about the historical scope.

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

Usage Guidelines3/5

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

Says 'Useful for investigating system state changes and usage patterns,' which gives a context for when to use it. However, it does not explicitly state when not to use or provide alternatives among siblings. Guidelines are implied but not directly actionable.

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

get_system_statusGet System StatusA
Read-only

Get the current status of a Beaker system: who has it loaned and who is using it.

Returns the system condition (Automated/Manual/Broken/Removed), current loan details (recipient and comment), and current reservation details (user and recipe).

ParametersJSON Schema
NameRequiredDescriptionDefault
fqdnYesFully qualified domain name of the system.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=true, and the description confirms this by describing a read operation. It adds value by detailing the specific fields returned (condition, loan, reservation), which is behavioral context beyond the annotation.

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

Conciseness5/5

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

The description is concise with two short paragraphs totaling three sentences. It front-loads the purpose and then lists the outputs without verbosity. Every sentence adds value.

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

Completeness5/5

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

Given the tool's simplicity, the output schema exists (relieving need to describe return values), and the single parameter is fully covered in the schema. The description sufficiently covers the tool's behavior and outputs, making it complete.

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

Parameters3/5

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

Schema coverage is 100% for the single parameter 'fqdn', which already has a clear description in the schema. The tool description does not add additional meaning beyond what the schema provides, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Get the current status of a Beaker system'. It specifies the exact information returned (system condition, loan details, reservation details), distinguishing it from siblings like get_system_arches or get_system_history.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives. While the purpose is clear, there is no guidance on context, prerequisites, or when not to use it. Usage is implied but not fortified.

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

list_distro_treesList Distro TreesA
Read-only

Search available distro trees on the Beaker server.

Query the distro library to discover which distros are available before submitting a job. At least one search criterion is required.

ParametersJSON Schema
NameRequiredDescriptionDefault
archNoArchitecture, e.g. 'x86_64', 'aarch64', 's390x'.
nameNoDistro name pattern (SQL wildcards, e.g. 'RHEL-10.2%').
tagsNoComma-separated distro tags, e.g. 'STABLE,RELEASED'. All must match.
limitNoMax results. Default: 10.
familyNoExact distro family, e.g. 'RedHatEnterpriseLinux10'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the description's burden is light. It adds the constraint that at least one search criterion is needed, and does not contradict annotations.

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

Conciseness5/5

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

Two sentences, no wasted words. Front-loaded with the purpose, then adds context and constraint. Extremely concise.

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

Completeness4/5

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

The description is complete enough for a read-only search tool with a full output schema. It gives context about when to use (before submitting a job) and a constraint. Could mention pagination but not necessary.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description mentions the requirement of at least one criterion but does not add deeper semantics beyond the schema's parameter descriptions.

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

Purpose5/5

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

The description uses the specific verb 'Search' and resource 'distro trees', clearly stating the tool's purpose. It distinguishes itself from sibling tools, none of which list distro trees.

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

Usage Guidelines4/5

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

It provides context by stating 'before submitting a job' and mentions 'at least one search criterion is required', which gives guidance on when to use. However, it does not explicitly contrast with alternatives or specify when not to use.

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

list_jobsList JobsA
Read-only

List Beaker jobs filtered by owner and other criteria.

Uses XML-RPC jobs.filter() to find matching job IDs, then optionally fetches full details for each via the REST API.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax jobs to return. Default: 50.
ownerNoFilter by job owner username. Defaults to BEAKER_OWNER env var.
max_idNoMaximum job ID. 0 to ignore.
min_idNoMinimum job ID. 0 to ignore.
finishedNo'true' for finished only, 'false' for unfinished, empty for all.
whiteboardNoSubstring match on job whiteboard.
fetch_detailsNoFetch full details for each job. Default: true.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

The description discloses the two-step internal process (XML-RPC jobs.filter() then REST API for details) and the optional detail fetching. The annotation readOnlyHint: true confirms read-only, and there is no contradiction. This adds useful behavioral context beyond annotations.

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

Conciseness5/5

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

The description is concise with two sentences: first states purpose, second gives implementation detail. No extraneous words. Front-loaded effectively.

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

Completeness4/5

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

Given the tool's complexity (7 parameters, output schema present), the description sufficiently covers the operational flow and filtering capability. The existence of an output schema relieves the description from explaining return values, making it reasonably complete.

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

Parameters3/5

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

The input schema has 100% coverage with detailed descriptions for each parameter. The description adds general filtering mention but no additional semantic details for parameters. Baseline 3 is appropriate as the schema already does the heavy lifting.

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

Purpose4/5

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

The description clearly states it lists Beaker jobs filtered by owner and other criteria. It is specific with verb 'list' and resource 'Beaker jobs', and implicitly distinguishes from sibling tools like get_job_logs and get_job_status which focus on individual jobs.

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

Usage Guidelines3/5

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

The description does not provide explicit guidance on when to use this tool versus alternatives. While the purpose is clear, it lacks direct contrast with siblings or scenarios for exclusion. A score of 3 is appropriate for this gap.

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

list_lab_controllersList Lab ControllersA
Read-only

List all lab controllers attached to the Beaker server.

Lab controllers manage system provisioning in specific labs. Useful for troubleshooting distro availability issues.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description adds context about lab controllers managing provisioning and being attached to the server. It does not contradict annotations and provides helpful behavioral context beyond the structured fields.

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

Conciseness5/5

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

The description is three concise sentences: first stating the action, second explaining the role, third providing a use case. Every sentence adds value, and it is appropriately front-loaded.

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

Completeness5/5

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

With zero parameters and an existing output schema, the description fully covers the tool's purpose, context, and use case. No additional information is needed for an AI agent to select or invoke it correctly.

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

Parameters4/5

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

There are no parameters (schema coverage 100%), so the description need not explain parameters. The baseline expectation is met as no parameter information is missing.

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

Purpose5/5

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

The description clearly states 'List all lab controllers attached to the Beaker server' with a specific verb and resource. It further explains their role and use case, distinguishing it from sibling tools that focus on jobs, systems, etc.

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

Usage Guidelines4/5

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

The description explicitly notes it is 'useful for troubleshooting distro availability issues,' providing context for when to use. It does not mention alternatives or when not to use, but given its unique function among siblings, no exclusion is necessary.

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

list_os_familiesList OS FamiliesA
Read-only

List all distro families (OS major versions) known to Beaker.

Returns family names like 'RedHatEnterpriseLinux10', 'Fedora41', etc. Optionally filter to families that have distros with specific tags.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoOptional comma-separated tags to filter by (e.g. 'STABLE').

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true. Description adds that it returns family names and optionally filters, which is consistent and adds value.

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

Conciseness5/5

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

Two sentences, efficient and front-loaded with purpose. No wasted words.

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

Completeness5/5

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

Given the output schema covers return structure, the description adequately explains the tool's function, including optional filtering. Complete for a list tool.

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. Description explains the effect of the 'tags' parameter (filter to families with distros having specific tags), adding meaning beyond the schema.

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

Purpose5/5

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

Clearly states it lists distro families (OS major versions) and provides concrete examples. Distinguishes from siblings like list_distro_trees (more granular) and list_systems.

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

Usage Guidelines4/5

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

Describes optional filtering by tags, giving clear context for when to use the parameter. No explicit when-not-to-use, but it is the only tool for this purpose.

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

list_systemsList SystemsA
Read-only

List Beaker systems matching the filter criteria.

Returns a list of system FQDNs filtered by availability status and optional hostname substring. Use 'available' for systems you can reserve, 'free' for idle ones, or 'all' for the complete inventory.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of systems to return. Use 0 for all. Default: 20.
hostnameNoHostname/FQDN substring to match, e.g. 'ampere-mtsnow' or 'nvidia-grace-hopper%'. Always a contains match. Empty means any host.
filter_typeNoSystem filter: 'all', 'available', or 'free'. Default: 'available'.available

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With readOnlyHint annotation provided, the description adds value by specifying the return type (list of FQDNs) and the effect of filter_type. It does not contradict annotations and provides additional detail on output behavior, though it omits potential nuances like pagination or authentication requirements.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core purpose, and each sentence adds valuable information without redundancy. It is appropriately sized for the tool's simplicity.

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

Completeness5/5

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

Given the three parameters are fully described in the schema and the description clarifies filter semantics, the tool is well-specified. The return format is mentioned, and no critical information seems missing for a list operation.

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

Parameters4/5

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

Schema coverage is 100%, so parameters are already described, but the description enhances filter_type semantics (available vs free vs all) and hostname matching (contains match). This adds meaning beyond the schema's reference to defaults and matching rules.

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

Purpose5/5

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

The description clearly states the tool lists Beaker systems with filtering capabilities, using a specific verb and resource. It differentiates from search_systems by focusing on list operations with filter criteria like availability and hostname substring.

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

Usage Guidelines4/5

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

The description provides clear context on filter usage (available, free, all) and explains their semantics, but does not explicitly mention when to use this tool over alternatives like search_systems. It lacks exclusionary guidance but gives enough context for typical use cases.

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

loan_systemLoan SystemA

Grant a loan for a Beaker system.

The loan recipient gets full permissions to reserve, provision, and schedule jobs on the system. While loaned, only the recipient and the system owner can use it. You must have permission to loan the system (typically the owner or an admin).

ParametersJSON Schema
NameRequiredDescriptionDefault
fqdnYesFQDN of the system to loan.
commentNoReason or purpose for the loan.
recipientNoUsername of the loan recipient. If empty, loans to the current user.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations indicate write operation (readOnlyHint=false). The description adds behavioral details: recipient gets full permissions, only recipient and owner can use the system while loaned, and permission is required. It does not cover all side effects (e.g., impact on existing reservations) but is transparent enough for typical use.

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

Conciseness5/5

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

Three well-structured sentences: first states action, second explains privileges, third sets permission context. No redundant words; all information is essential and front-loaded.

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

Completeness4/5

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

Given the tool's complexity (mutation with 3 parameters, output schema) and the presence of sibling tools, the description covers purpose, access control, and effect. It lacks explicit error conditions or prerequisites but is sufficient for an agent to use it correctly.

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

Parameters4/5

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

Schema descriptions cover all three parameters with 100% coverage. The description adds value by explaining the overall loan behavior and implying that recipient defaults to current user and comment is a reason, but does not add new per-parameter semantics beyond the schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Grant a loan for a Beaker system.' It elaborates on what the loan entails (full permissions) and distinguishes from sibling tools like reserve_system and return_loan by specifying exclusive usage and permission requirements.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool and explicitly states the required permission ('You must have permission to loan the system (typically the owner or an admin)'). However, it does not explicitly list alternatives or scenarios when not to use it.

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

power_systemPower SystemA

Control power for a Beaker system (on, off, or reboot).

Power control is not normally permitted when the system is in use by someone else. Use force=true to override this safety check.

ParametersJSON Schema
NameRequiredDescriptionDefault
fqdnYesFQDN of the system to power control.
forceNoOverride safety check if system is in use. Default: false.
actionYesPower action: 'on', 'off', or 'reboot'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false, consistent with the mutating nature of power control. The description adds details about a safety check and the force parameter, disclosing behavioral traits beyond annotations. It does not mention failure modes or permissions, but overall it is transparent.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the action, and contains no redundant information. Every sentence adds value.

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

Completeness4/5

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

Given that an output schema exists, the description does not need to explain return values. It covers the main behavior and key parameter (force), but could mention any additional side effects or prerequisites for completeness.

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

Parameters4/5

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

The input schema has 100% coverage with descriptions for all three parameters. The description adds context by integrating the force parameter with usage guidelines, enhancing understanding beyond the schema definitions.

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

Purpose5/5

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

The description clearly states 'Control power for a Beaker system (on, off, or reboot).' This is a specific verb and resource, and it distinguishes the tool from sibling tools that deal with jobs, systems listing, etc.

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

Usage Guidelines3/5

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

The description provides guidance on when to use the force parameter ('Power control is not normally permitted when the system is in use...'), but does not explicitly state when to use this tool over alternatives among siblings, leaving some ambiguity.

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

provision_systemProvision SystemA

Provision a reserved Beaker system with a specific distro.

The system must be in 'Manual' condition and already reserved by you. Use list_distro_trees to find the distro_tree_id first.

ParametersJSON Schema
NameRequiredDescriptionDefault
fqdnYesFQDN of the system to provision.
rebootNoReboot system after provisioning. Default: true.
ks_metaNoKickstart metadata variables.
kickstartNoComplete custom kickstart content.
distro_tree_idYesNumeric distro tree ID (from list_distro_trees results).
kernel_optionsNoKernel options for installation.
kernel_options_postNoKernel options for the installed system.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

The description adds behavioral context beyond annotations by specifying that the system must be in 'Manual' condition and already reserved. This is helpful for understanding prerequisites, though it does not detail other side effects.

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

Conciseness5/5

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

The description is three sentences, front-loaded with the primary purpose, and contains no superfluous information. Every sentence earns its place.

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

Completeness5/5

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

Given the presence of an output schema and full parameter descriptions, the description covers prerequisites, usage order, and core functionality, making it complete for a mutation tool.

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

Parameters4/5

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

With 100% schema coverage, parameters are already described. The description adds value by advising to use list_distro_trees for the distro_tree_id, improving semantic understanding.

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

Purpose5/5

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

The description clearly states that the tool provisions a reserved Beaker system with a specific distro, using a specific verb and resource. It distinguishes from siblings like reserve_system and list_distro_trees by outlining prerequisites.

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

Usage Guidelines5/5

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

The description explicitly says when to use the tool: after reserving a system and having a distro_tree_id. It instructs to use list_distro_trees first, providing clear usage context.

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

release_systemRelease SystemA

Release a manually reserved Beaker system.

You must be the current user of the system (i.e. you reserved it).

ParametersJSON Schema
NameRequiredDescriptionDefault
fqdnYesFQDN of the system to release.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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

Annotations indicate write operation but description adds minimal behavior beyond 'release'. It does not disclose side effects (e.g., impact on running jobs, system state after release).

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

Conciseness4/5

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

Two sentences, action-front-loaded. Could be more concise by merging the condition into the first sentence, but overall efficient.

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

Completeness4/5

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

With an output schema present, return values are handled. The description covers the main action and a key prerequisite, but lacks details on system state requirements or post-release behavior.

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

Parameters3/5

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

Schema covers 100% of parameter details. The description adds no extra meaning to the 'fqdn' parameter beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the action ('Release') and the resource ('manually reserved Beaker system'), distinguishing it from sibling tools like 'reserve_system' or 'return_loan'.

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

Usage Guidelines4/5

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

It specifies a prerequisite condition ('You must be the current user of the system'), indicating when the tool is applicable. However, it does not explicitly exclude cases like loaned systems or mention alternatives.

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

reserve_systemReserve SystemA

Manually reserve a Beaker system.

The system must be in 'Manual' condition and not currently in use. You must have permission to use the system. After reserving, you can provision it at will.

ParametersJSON Schema
NameRequiredDescriptionDefault
fqdnYesFQDN of the system to reserve.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

No annotation contradiction; description adds context about Manual condition and permission requirements beyond the readOnlyHint=false annotation.

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

Conciseness5/5

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

Three concise sentences with no wasted words; front-loaded with the action and resource.

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

Completeness5/5

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

Given the simplicity of the tool (1 param, output schema exists), the description covers purpose, preconditions, and postcondition, making it fully adequate.

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

Parameters3/5

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

Schema coverage is 100% with a description for 'fqdn'. The tool description does not add further parameter details, so baseline score of 3 applies.

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

Purpose5/5

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

The description explicitly states 'Manually reserve a Beaker system.' with a specific verb and resource, clearly distinguishing it from siblings like 'loan_system' and 'release_system'.

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

Usage Guidelines4/5

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

Provides clear preconditions: 'system must be in Manual condition and not currently in use' and 'you must have permission'. Implies when to use (when conditions met) but does not explicitly state alternatives.

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

return_loanReturn System LoanA

Return a current loan on a Beaker system.

Either the loan recipient or a user with permission to loan the system can return it. The system reverts to its normal access policy.

ParametersJSON Schema
NameRequiredDescriptionDefault
fqdnYesFQDN of the system whose loan to return.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false, and the description adds context that the system reverts to its normal access policy, enhancing understanding beyond the annotation.

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

Conciseness5/5

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

The description is concise with two sentences, front-loading the core action and including necessary behavioral details without redundancy.

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

Completeness5/5

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

The tool is simple with one required parameter, and the description covers who can use it and the outcome; output schema exists but is not needed for completeness here.

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

Parameters3/5

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

Schema coverage is 100% with a clear description for the fqdn parameter; the tool description does not add additional parameter semantics beyond the schema.

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

Purpose5/5

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

The description clearly states 'Return a current loan on a Beaker system' with a specific verb and resource, distinguishing it from sibling tools like loan_system.

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

Usage Guidelines4/5

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

The description indicates who can use the tool (loan recipient or authorized user) and the effect (system reverts to normal policy), providing clear context but no explicit alternatives.

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

search_systemsSearch SystemsA
Read-only

Search Beaker systems by hardware attributes and ownership.

Find systems matching hostname, CPU, architecture, memory, pool, owner, and other criteria. All filters are combined with AND logic.

ParametersJSON Schema
NameRequiredDescriptionDefault
archNoArchitecture filter: 'x86_64', 'aarch64', 's390x', 'ppc64le'.
poolNoBeaker pool name, e.g. 'rhelvirt-gating'.
userNoCurrent user (reserved by) username to filter by. Shows systems currently reserved by this user.
limitNoMaximum number of systems to return. Default: 10.
ownerNoOwner username to filter by, e.g. 'tasharma'. Exact match.
memoryNoMemory in MiB. Prefix with >= or <= for range, e.g. '>=131072' for 128GB+.
statusNoSystem status: 'Automated', 'Manual', 'Broken', or '' for any. Default: 'Automated'.Automated
hostnameNoHostname/FQDN substring to match, e.g. 'ampere-mtsnow' or 'nvidia-grace-hopper%'. Always a contains match.
cpu_coresNoCPU core count. Prefix with >= or <= for range, e.g. '>=64'.
cpu_modelNoCPU model number identifying microarchitecture. Intel family 6: 207=Emerald Rapids, 175=Sierra Forest, 173=Granite Rapids, 143=Sapphire Rapids, 106=Ice Lake, 85=Skylake/Cascade Lake, 79=Broadwell, 63=Haswell, 165=Comet Lake. AMD family 25: 17=Genoa, 1=Milan. AMD family 23: 49=Rome, 1=Naples. AMD family 26: Turin.
loaned_toNoUsername the system is loaned to. Shows systems currently loaned to this user.
cpu_familyNoCPU family number. Intel=6, AMD Zen3/4=25, AMD Zen1/2=23, AMD Zen5=26.
cpu_vendorNoCPU vendor string, e.g. 'GenuineIntel', 'AuthenticAMD', 'Ampere(R)'.
cpu_model_nameNoCPU model name substring to match, e.g. 'Xeon Gold'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With readOnlyHint:true in annotations, the description does not need to restate safety. It adds valuable behavior: 'All filters are combined with AND logic,' which clarifies how multiple parameters interact. It also provides example values and filter semantics, going beyond the annotation without contradicting it.

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

Conciseness5/5

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

The description is two short sentences that lead with the core purpose ('Search Beaker systems...') and follow with a concise expansion of criteria and filter behavior. Every word earns its place, with no redundancy or fluff. Ideal front-loading for quick scanning.

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

Completeness4/5

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

The description covers what the tool does, the types of filters, and the AND logic, which is sufficient for a search tool. However, it does not mention behavior when no filters are provided (e.g., returns first N systems based on limit), though this is partially addressed by the schema's default limit. An output schema exists, so return values need no explanation. Sparse but adequate.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description lists some parameter names (hostname, CPU, architecture, memory, pool, owner) but does not add new syntax or format details that are absent from the schema. It adds no extra semantic value beyond what the parameter descriptions already provide, so a 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Search Beaker systems by hardware attributes and ownership.' It lists specific criteria (hostname, CPU, architecture, memory, pool, owner) and distinguishes itself from siblings like list_systems (which likely lists all) and get_system_details (which fetches a single system). The intent is unmistakable and well-scoped.

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

Usage Guidelines3/5

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

The description implies usage: use this when you need to search systems by attributes, but it does not explicitly compare to alternatives like list_systems or get_system_details, nor does it state when not to use it. There are no when-to-use or when-not-to-use instructions beyond the obvious, so the usage 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.

search_tasksSearch TasksA
Read-only

Search the Beaker task library for available test tasks.

Find tasks compatible with a given OS, distro, or package list. Returns task names and their excluded architectures.

ParametersJSON Schema
NameRequiredDescriptionDefault
typesNoComma-separated task types to include.
osmajorNoOS family, e.g. 'RedHatEnterpriseLinux10'. Limits to compatible tasks.
packagesNoComma-separated package names. Find tasks with matching Run-For.
distro_nameNoDistro name. Limits to compatible tasks.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true. The description adds that the tool returns task names and excluded architectures, which is valuable behavioral context beyond the annotation. 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.

Conciseness5/5

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

The description is extremely concise and front-loaded, with two sentences that cover the main purpose and return value. Every sentence is earned.

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

Completeness5/5

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

With all parameters optional, schema descriptions present, and an output schema defined, the description sufficiently covers the tool's functionality. It states the return type (task names and excluded architectures) without needing to detail output schema contents.

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

Parameters4/5

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

All 4 parameters are already well-described in the schema (100% coverage). The description summarizes their combined purpose ('Find tasks compatible with a given OS, distro, or package list'), adding meaning beyond individual schema descriptions.

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

Purpose5/5

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

The description clearly states the tool searches the Beaker task library for test tasks, with a specific verb and resource. It distinguishes from sibling tools like search_systems by explicitly focusing on tasks.

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

Usage Guidelines4/5

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

The description implies when to use the tool (to find tasks compatible with OS, distro, or packages) but does not explicitly state when not to use it or provide direct alternatives among siblings. The context is clear enough for an agent to infer usage.

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

set_job_responseSet Job ResponseA

Set the response (ack/nak) for a Beaker recipe set or job.

Used to acknowledge or waive recipe set results. Setting 'nak' is equivalent to waiving the result.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID for the recipe set or job (e.g. 'RS:4321' or 'J:12345').
responseYesResponse to set: 'ack' or 'nak' (nak is an alias for waiving).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false, and the description confirms a write operation. The added detail that 'nak' is equivalent to waiving results provides extra behavioral transparency beyond annotations.

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

Conciseness5/5

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

The description is two sentences with no wasted words. It immediately states the core purpose and then adds a crucial usage detail, front-loading the most important information.

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

Completeness4/5

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

With full schema coverage, annotations, and an output schema, the description covers the main behavioral aspect. Minor gaps like prerequisites or side effects are absent but not critical given the tool's simplicity.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by explaining that 'nak' is an alias for waiving, improving understanding beyond the schema.

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

Purpose5/5

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

The description uses a specific verb 'set' with a clear resource 'response for a Beaker recipe set or job', and it distinguishes itself effectively from sibling tools like cancel_job or submit_job.

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

Usage Guidelines4/5

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

The explicit statement 'Used to acknowledge or waive recipe set results' provides clear context, and the note on 'nak' as equivalent to waiving adds guidance. However, it lacks explicit when-not-to-use or alternative comparisons.

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

submit_jobSubmit JobA

Submit a Beaker job from a complete job XML document.

The XML is validated before submission. Missing optional fields are auto-filled with sensible defaults. Uses Kerberos auth via the bkr CLI if available, otherwise falls back to XML-RPC password auth.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoSkip mandatory-field warnings and submit as-is. Default: false.
job_xmlYesComplete Beaker job XML string defining the job to submit.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations indicate readOnlyHint=false, so it is a mutation tool. The description adds behavioral details: validation, auto-fill of missing fields, and authentication fallback. No contradiction.

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

Conciseness5/5

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

The description is concise with four sentences, each providing essential information. Front-loaded purpose, no unnecessary words.

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

Completeness5/5

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

The definition includes output schema, so return format is not required. The description covers validation, defaulting, and authentication, which is sufficient for a mutation tool with two parameters.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents both parameters. The description does not add significant meaning beyond stating that job_xml must be a 'complete' XML string.

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

Purpose5/5

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

The description uses a specific verb 'Submit' and clearly identifies the resource as 'a Beaker job from a complete job XML document.' This distinguishes it from sibling tools like cancel_job or clone_job.

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

Usage Guidelines4/5

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

The description mentions XML validation and auto-filling of optional fields, giving context for when to use it. However, it does not explicitly state when NOT to use it or compare with alternatives like clone_job.

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

watch_jobWatch JobA

Watch a Beaker job until completion, with failure analysis and auto-retry.

Polls the job continuously. On success, returns a report. On failure, performs deep analysis (failure reasons, constraints, suggestions) and can auto-generate a corrected XML and resubmit up to max_retries times. Also works on already-finished jobs for post-mortem analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesBeaker job ID (e.g. 'J:12345' or '12345').
max_retriesNoMax auto-correct-and-resubmit cycles. Default: 2.
poll_intervalNoSeconds between status polls. Default: 30.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

The description adds extensive behavioral context beyond the annotations (which only indicate not read-only). It details continuous polling, deep failure analysis, auto-correction, and resubmission up to max_retries times. No contradiction with annotations.

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

Conciseness5/5

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

The description is concise (two short paragraphs) with a front-loaded main purpose. Every sentence adds value, and the structure logically flows from overview to failure handling to additional use case.

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

Completeness5/5

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

Given the tool's moderate complexity (3 parameters, output schema present), the description is fully adequate. It explains the overall workflow, failure handling, and additional use cases without needing to detail return values since an output schema exists.

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

Parameters4/5

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

The input schema has 100% description coverage, so the baseline is 3. The description adds value by linking parameters to behavior: 'polls continuously' for poll_interval, 'auto-correct-and-resubmit cycles' for max_retries. This enhances understanding beyond the schema.

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

Purpose5/5

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

The description uses a specific verb ('Watch') and resource ('Beaker job'), clearly stating the tool's role: monitoring until completion with failure analysis and auto-retry. It implicitly distinguishes from siblings like get_job_status (which just polls without analysis) and submit_job (which submits without watching).

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

Usage Guidelines4/5

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

The description explicitly states when to use the tool ('Watch a Beaker job until completion') and mentions additional use cases ('works on already-finished jobs for post-mortem analysis'). It does not explicitly state when not to use it (e.g., for one-time status checks), but the context is clear enough.

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

whoamiWho Am IA
Read-only

Show the currently authenticated Beaker user.

Verifies that credentials are working and returns the username and email associated with the current session.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true. Description adds that it returns username and email and verifies credentials, providing useful behavioral context beyond annotations.

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

Conciseness5/5

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

Two concise sentences, no wasted words. Perfectly sized for the information conveyed.

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

Completeness5/5

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

Tool is simple with 0 parameters and an output schema. Description fully covers purpose and return values (username, email). No gaps.

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

Parameters4/5

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

No parameters, so schema coverage is 100%. Description does not need to add parameter info; baseline 4 is appropriate.

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

Purpose5/5

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

Description clearly states it shows the currently authenticated user, verifies credentials, and returns username and email. This distinguishes it from all sibling tools which are about jobs, systems, etc.

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

Usage Guidelines4/5

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

States it 'verifies that credentials are working', implying use when checking authentication or getting current user info. No explicit when-not but context is clear given the simple query nature.

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

TDQS

A3.8/5.0
Disambiguation3/5

Most tools are clearly distinct, but list_systems/search_systems, get_system_details/get_system_status, and get_job_status/watch_job have overlapping functionality that could cause misselection. The thorough descriptions mitigate this, but the boundaries are not always crisp.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern (submit_job, clone_job, provision_system, etc.), with only whoami as a minor outlier. This makes the API predictable and easy to navigate.

Tool Count2/5

27 tools exceeds the 25 threshold for 'too many' by the calibration rubric. The broad scope covering jobs, systems, and distro discovery justifies the count, but it still feels heavy and could potentially be consolidated.

Completeness4/5

The tool set covers the full job lifecycle (submit, list, status, cancel, clone, watch, logs, results, ack/nak) and the system management lifecycle (reserve, release, provision, power, loan, system queries). Distro and task discovery are also covered. Minor gaps include no direct job deletion or system modification, but these are not core to Beaker's purpose.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for Zuul CI/CD with 25 tools for builds, pipelines, queue management (enqueue/dequeue/promote), infrastructure visibility, and autohold management. Supports stdio, HTTP, and SSE transports.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server for infrastructure discovery and remote management, enabling SSH command execution, file transfer, log tailing, and machine/service inventory with a companion web dashboard.
    2

Latest Blog Posts

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/faizbawa/mcp-beaker'

If you have feedback or need assistance with the MCP directory API, please join our Discord server