Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ZUUL_URL | Yes | Zuul base URL (e.g. https://softwarefactory-project.io/zuul) | |
| ZUUL_TIMEOUT | No | HTTP timeout in seconds | 30 |
| ZUUL_AUTH_TOKEN | No | Bearer token for authenticated instances | |
| ZUUL_VERIFY_SSL | No | SSL certificate verification | true |
| ZUUL_USE_KERBEROS | No | Enable Kerberos/SPNEGO authentication | false |
| ZUUL_DEFAULT_TENANT | No | Default tenant (saves passing tenant on every call) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_tenants | List all Zuul tenants with project and queue counts. |
| get_status | Live pipeline status showing what's currently queued/running. Args: tenant: Tenant name (uses default if empty) pipeline: Filter to a specific pipeline name project: Filter to a specific project active_only: Only show pipelines with active items (default true) |
| get_change_status | Pipeline status for a specific Gerrit change or GitHub/GitLab PR/MR. When the change is in the pipeline, returns live status with jobs,
elapsed times, and buildset UUID. When not in pipeline, automatically
fetches the latest completed buildset with all build results — no
extra Args: change: Change number (e.g. "12345"), GitHub ref ("refs/pull/123/head"), or GitLab ref ("refs/merge-requests/123/head") tenant: Tenant name (uses default if empty) |
| list_builds | Search builds with filters. Returns compact build summaries. Args: tenant: Tenant name (uses default if empty) project: Filter by project name pipeline: Filter by pipeline name job_name: Filter by job name change: Filter by change number branch: Filter by branch name patchset: Filter by patchset ref: Filter by git ref result: Filter by result (SUCCESS, FAILURE, TIMED_OUT, SKIPPED, etc.) limit: Max results, 1-100 (default 20) skip: Offset for pagination (default 0) |
| get_build | Get full build details — log URL, nodeset, artifacts, timing, error detail. Args: uuid: Build UUID (full or prefix from list_builds) tenant: Tenant name (uses default if empty) |
| get_build_failures | Analyze a failed build — returns exactly which task failed, on which host, with error message and return code. Parses Zuul's structured job-output.json for precise failure data. Start here when investigating build failures — much more accurate than log parsing. Args: uuid: Build UUID tenant: Tenant name (uses default if empty) |
| get_build_log | Read, search, and navigate build log files with grep, line ranges, and error summary. Args: uuid: Build UUID tenant: Tenant name (uses default if empty) log_name: Log file to read (default "job-output.txt"). For other files, use the path relative to the build's log_url, e.g. "logs/controller/ci-framework-data/logs/ci_script_008_run.log" mode: "summary" (default: tail + error lines) or "full" (paginated chunks) lines: For summary: tail line count (default 100). For full: offset start line. start_line: Read from this line number (1-based). If set with end_line, returns exactly that range (overrides mode). end_line: Read up to this line number (1-based, inclusive). grep: Python regex pattern to filter log lines (overrides mode). Use | for OR: "error|failed|timeout". Do NOT use backslash-pipe. context: Lines of context before/after each grep match (default 0, max 10) |
| browse_build_logs | Browse or fetch files from a build's log directory. Without path: lists the top-level log directory. With path ending in '/': lists that subdirectory. With path to a file: fetches and returns the file content (max 512KB). Args: uuid: Build UUID tenant: Tenant name (uses default if empty) path: Relative path within the log dir (e.g. "logs/controller/", "zuul-info/inventory.yaml", "logs/hypervisor/ci-framework-data/artifacts/") |
| list_buildsets | Search buildsets (groups of builds triggered by a single event). Args: tenant: Tenant name (uses default if empty) project: Filter by project pipeline: Filter by pipeline name change: Filter by change number branch: Filter by branch name ref: Filter by git ref result: Filter by result limit: Max results, 1-100 (default 20) skip: Offset for pagination include_builds: Fetch full details (builds, events) for each buildset. Saves a separate get_buildset call per result, but slower for large result sets. Best with limit <= 5. |
| get_buildset | Get full buildset details — all builds, results, events, and timing. Args: uuid: Buildset UUID tenant: Tenant name (uses default if empty) |
| list_jobs | List all jobs in a tenant. Optionally filter by name substring. Args: tenant: Tenant name (uses default if empty) filter: Case-insensitive substring to filter job names |
| get_job | Get job configuration — parent, nodeset, timeout, branches, and all variants. Args: name: Job name tenant: Tenant name (uses default if empty) |
| get_project | Get project configuration — which pipelines and jobs are configured. Args: name: Project name (e.g. "openstack-k8s-operators/openstack-operator") tenant: Tenant name (uses default if empty) |
| list_pipelines | List all pipelines with their trigger types. Args: tenant: Tenant name (uses default if empty) |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |