mcp-beaker
This server provides MCP tools to interact with a Beaker lab automation system, covering the full lifecycle of system provisioning, job management, distro discovery, and failure diagnosis.
System management: List, search, and get details/status/history/architectures of systems.
System lifecycle actions: Reserve, release, loan, return loan, power on/off/reboot, and provision systems.
Job management: List, check status, export results XML, get logs, submit, clone, cancel, watch with auto-retry, extend watchdog, and set job responses (ack/nak).
Distro/task discovery: Search distro trees, list OS families, search task library, list lab controllers.
User and authentication info: View current authenticated user (whoami).
Documentation resources and workflow prompts: Exposes documentation topics and prompts for reserving systems and diagnosing jobs (as mentioned in README).
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-beakerreserve a system for Fedora 38"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-beaker
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
bkrCLI 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
Container (recommended)
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-beakerConfiguration
Cursor / VS Code
Add to your .cursor/mcp.json (or .vscode/mcp.json):
Container (recommended)
{
"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.REALMRe-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:
Disable verification (simplest, fine on a trusted corporate network):
"-e", "BEAKER_SSL_VERIFY=false",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-----",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 |
| Yes | -- | Base URL of your Beaker server |
| No |
|
|
| No |
|
|
| For password auth | -- | Beaker username |
| For password auth | -- | Beaker password |
| No |
| Default owner for job queries |
| No |
| Verify SSL certificates |
| No | -- | Path to CA certificate bundle |
| Container only | -- | Kerberos principal for |
| Container only | -- | Kerberos password for |
| 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 messageTools
Read Tools (15)
Tool | Description |
| List systems by availability (all/available/free) and optional hostname substring |
| Search systems by hostname, CPU, architecture, memory, pool, and other hardware attributes |
| Hardware specs, CPU info, pool membership, ownership, status for a system |
| Current condition, reservation, and loan status for a system |
| Activity history for a system |
| Supported OS families and architectures |
| Filter jobs by owner, status, whiteboard |
| Job status with failure diagnosis |
| Export job results as XML |
| List log files for a job/recipe/task |
| Search distros by name, family, arch, tags |
| List all known OS families |
| Show authenticated user info |
| List all lab controllers |
| Search the task library |
Write Tools (12)
Tool | Description |
| Submit a job from XML (with validation and auto-fill) |
| Clone and resubmit an existing job |
| Cancel a running/queued job |
| Poll until completion with failure analysis and auto-retry |
| Manually reserve a system |
| Release a manually reserved system |
| Grant a loan for a system to a user |
| Return a current system loan |
| Power on/off/reboot a system |
| Provision a reserved system with a distro |
| Extend a running task's watchdog timer |
| Ack/nak (waive) a recipe set result |
Authentication
Kerberos (recommended)
Ensure you have a valid ticket:
kinit your-username@YOUR.REALMThe server supports two Kerberos backends, controlled by BEAKER_KERBEROS_BACKEND:
Value | Backend | Install |
| Native GSSAPI/SPNEGO -- lightweight, pip-installable |
|
|
|
|
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 utilitiesDevelopment
cd mcp-beaker
uv sync --dev
uv run pytest
uv run ruff check src/License
MIT
Available Tools
27 toolscancel_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.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Reason for cancellation. | Cancelled via MCP |
| task_id | Yes | Task ID to cancel (e.g. 'J:12345', 'RS:4321'). Cancelling any part cancels the entire job. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | Job ID to clone (e.g. 'J:12345' or '12345'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | No | Job ID (e.g. 'J:12345' or '12345'). If provided, the tool finds the running task automatically. | |
| seconds | Yes | Number of seconds to extend by. | |
| task_id | No | Numeric task ID (e.g. 12345). Provide this OR job_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 LogsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Beaker task ID (e.g. 'J:12345', 'R:99999', 'T:88888'). Returns log files for this component and its descendants. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 XMLARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| clone | No | Return XML suitable for resubmission (no results). Default: false. | |
| task_id | Yes | Beaker task ID (e.g. 'J:12345', 'RS:4321', 'R:99999'). Determines the scope of results returned. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 StatusARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | Beaker job ID. Accepts 'J:12345' or '12345'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ArchitecturesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| fqdn | Yes | Fully qualified domain name of the system. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 DetailsARead-only
Get detailed information about a specific Beaker system.
Returns hardware specs, ownership, status, architectures, and lab controller assignment for the given system FQDN.
| Name | Required | Description | Default |
|---|---|---|---|
| fqdn | Yes | Fully qualified domain name of the system. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 HistoryBRead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| fqdn | Yes | Fully qualified domain name of the system. | |
| since | No | ISO timestamp to fetch history from. Omit for last 24 hours. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 StatusARead-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).
| Name | Required | Description | Default |
|---|---|---|---|
| fqdn | Yes | Fully qualified domain name of the system. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 TreesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| arch | No | Architecture, e.g. 'x86_64', 'aarch64', 's390x'. | |
| name | No | Distro name pattern (SQL wildcards, e.g. 'RHEL-10.2%'). | |
| tags | No | Comma-separated distro tags, e.g. 'STABLE,RELEASED'. All must match. | |
| limit | No | Max results. Default: 10. | |
| family | No | Exact distro family, e.g. 'RedHatEnterpriseLinux10'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 JobsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max jobs to return. Default: 50. | |
| owner | No | Filter by job owner username. Defaults to BEAKER_OWNER env var. | |
| max_id | No | Maximum job ID. 0 to ignore. | |
| min_id | No | Minimum job ID. 0 to ignore. | |
| finished | No | 'true' for finished only, 'false' for unfinished, empty for all. | |
| whiteboard | No | Substring match on job whiteboard. | |
| fetch_details | No | Fetch full details for each job. Default: true. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ControllersARead-only
List all lab controllers attached to the Beaker server.
Lab controllers manage system provisioning in specific labs. Useful for troubleshooting distro availability issues.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
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.
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.
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.
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.
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.
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 FamiliesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Optional comma-separated tags to filter by (e.g. 'STABLE'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 SystemsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of systems to return. Use 0 for all. Default: 20. | |
| hostname | No | Hostname/FQDN substring to match, e.g. 'ampere-mtsnow' or 'nvidia-grace-hopper%'. Always a contains match. Empty means any host. | |
| filter_type | No | System filter: 'all', 'available', or 'free'. Default: 'available'. | available |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| fqdn | Yes | FQDN of the system to loan. | |
| comment | No | Reason or purpose for the loan. | |
| recipient | No | Username of the loan recipient. If empty, loans to the current user. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| fqdn | Yes | FQDN of the system to power control. | |
| force | No | Override safety check if system is in use. Default: false. | |
| action | Yes | Power action: 'on', 'off', or 'reboot'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| fqdn | Yes | FQDN of the system to provision. | |
| reboot | No | Reboot system after provisioning. Default: true. | |
| ks_meta | No | Kickstart metadata variables. | |
| kickstart | No | Complete custom kickstart content. | |
| distro_tree_id | Yes | Numeric distro tree ID (from list_distro_trees results). | |
| kernel_options | No | Kernel options for installation. | |
| kernel_options_post | No | Kernel options for the installed system. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| fqdn | Yes | FQDN of the system to release. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| fqdn | Yes | FQDN of the system to reserve. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| fqdn | Yes | FQDN of the system whose loan to return. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 SystemsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| arch | No | Architecture filter: 'x86_64', 'aarch64', 's390x', 'ppc64le'. | |
| pool | No | Beaker pool name, e.g. 'rhelvirt-gating'. | |
| user | No | Current user (reserved by) username to filter by. Shows systems currently reserved by this user. | |
| limit | No | Maximum number of systems to return. Default: 10. | |
| owner | No | Owner username to filter by, e.g. 'tasharma'. Exact match. | |
| memory | No | Memory in MiB. Prefix with >= or <= for range, e.g. '>=131072' for 128GB+. | |
| status | No | System status: 'Automated', 'Manual', 'Broken', or '' for any. Default: 'Automated'. | Automated |
| hostname | No | Hostname/FQDN substring to match, e.g. 'ampere-mtsnow' or 'nvidia-grace-hopper%'. Always a contains match. | |
| cpu_cores | No | CPU core count. Prefix with >= or <= for range, e.g. '>=64'. | |
| cpu_model | No | CPU 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_to | No | Username the system is loaned to. Shows systems currently loaned to this user. | |
| cpu_family | No | CPU family number. Intel=6, AMD Zen3/4=25, AMD Zen1/2=23, AMD Zen5=26. | |
| cpu_vendor | No | CPU vendor string, e.g. 'GenuineIntel', 'AuthenticAMD', 'Ampere(R)'. | |
| cpu_model_name | No | CPU model name substring to match, e.g. 'Xeon Gold'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 TasksARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| types | No | Comma-separated task types to include. | |
| osmajor | No | OS family, e.g. 'RedHatEnterpriseLinux10'. Limits to compatible tasks. | |
| packages | No | Comma-separated package names. Find tasks with matching Run-For. | |
| distro_name | No | Distro name. Limits to compatible tasks. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task ID for the recipe set or job (e.g. 'RS:4321' or 'J:12345'). | |
| response | Yes | Response to set: 'ack' or 'nak' (nak is an alias for waiving). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Skip mandatory-field warnings and submit as-is. Default: false. | |
| job_xml | Yes | Complete Beaker job XML string defining the job to submit. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | Beaker job ID (e.g. 'J:12345' or '12345'). | |
| max_retries | No | Max auto-correct-and-resubmit cycles. Default: 2. | |
| poll_interval | No | Seconds between status polls. Default: 30. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 IARead-only
Show the currently authenticated Beaker user.
Verifies that credentials are working and returns the username and email associated with the current session.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
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.
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.
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.
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.
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.
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
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.
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.
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.
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
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for building and testing AI agents with multi-model experimentation and insights.
8 MCP servers, 104+ tools: memory, social, PDF, email, images, calendar, scheduler, files.
MCP Server for an Agent Task Marketplace
Related MCP Servers
- FlicenseCqualityDmaintenanceMCP server that enables deployment and management of MCP servers through a simple configuration-based interface.1
- AlicenseNot gradedqualityBmaintenanceMCP 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
- FlicenseNot gradedqualityDmaintenanceA highly configurable, deployment-ready MCP server with modular architecture for dynamic tool loading and external package support.1
- FlicenseNot gradedqualityDmaintenanceMCP 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/faizbawa/mcp-beaker'
If you have feedback or need assistance with the MCP directory API, please join our Discord server