jankins
Provides tools for interacting with Jenkins, allowing AI agents to manage jobs, builds, logs, and perform failure triage.
Click on "Deploy 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., "@jankinsget the last build log for my-pipeline"
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.
jankins
Token-optimized Jenkins MCP server with smart log handling and failure triage
jankins provides MCP-compliant access to Jenkins with features designed for AI coding assistants:
🎯 Token-aware formatting: Summary/full/diff output modes minimize context usage
📊 Smart log truncation: Progressive retrieval with byte offsets, regex filtering, and ANSI cleanup
🔍 Failure triage: Automated root cause analysis with hypotheses and next steps
⚡ Efficient by default: Returns compact summaries unless full detail is requested
🛡️ Better error handling: Structured errors with remediation hints and correlation IDs
📝 Built-in prompts: Pre-built workflows for common CI/CD tasks
Quick Start
Installation
pip install -e .Basic Usage
# Set environment variables
export JENKINS_URL=https://jenkins.example.com
export JENKINS_USER=myuser
export JENKINS_API_TOKEN=11234567890abcdef1234567890abcdef
# Start the server
jankins
# Or use CLI flags
jankins --jenkins-url https://jenkins.example.com \
--jenkins-user myuser \
--jenkins-token $TOKEN \
--bind 0.0.0.0:8080Generate Jenkins API Token
Log in to Jenkins
Click your username (top right) → Configure
Scroll to "API Token" section
Click "Add new Token"
Give it a name and click "Generate"
Copy the token (you won't see it again!)
Related MCP server: Jenkins AI Optimizer
Configuration
Configuration via environment variables or CLI flags. CLI flags take precedence.
CLI Flag | Env Variable | Default | Description |
|
| required | Jenkins server URL |
|
| required | Jenkins username |
|
| required | Jenkins API token |
|
|
| MCP transport ( |
|
|
| Server bind address (http/sse only) |
|
|
| Enforce Origin header validation |
|
|
| Expected Origin value |
|
|
| Log level (DEBUG/INFO/WARNING/ERROR) |
|
|
| Use JSON structured logging |
|
|
| Log Jenkins HTTP requests |
|
|
| Default max log lines |
|
|
| Default max log bytes (256KB) |
|
|
| Jenkins request timeout (seconds) |
MCP Tools
jankins provides 25+ MCP tools organized by category:
Jobs
list_jobs: List jobs with prefix filtering and paginationget_job: Get detailed job informationtrigger_build: Trigger a new build with parametersenable_job/disable_job: Enable or disable a job
Builds
get_build: Get build information (supportsnumberor"last")get_build_changes: Get SCM changes/commits for a buildget_build_artifacts: List build artifacts
Logs
get_build_log: Get logs with smart truncation and filteringSupports:
filter_regex,redact,startbyte offset,max_bytesReturns summary by default with error counts and failing stages
search_log: Search logs for pattern with context window
SCM & Pipeline
get_job_scm: Get job SCM configurationget_build_scm: Get SCM info (commit, branch) for a build
Health & System
whoami: Get current user info and permissionsget_status: Jenkins version and queue depthsummarize_queue: Compact build queue summary
Advanced Analysis
triage_failure: Analyze failed builds with:Root cause hypotheses
Top error messages
Failing stages
Suspect commits
Recommended next steps
compare_runs: Compare two builds for:Duration differences
Result changes
Stage-level diffs (with Blue Ocean)
get_pipeline_graph: Get pipeline visualization with stages, parallel execution, and timing (Blue Ocean)analyze_build_log: Analyze logs with build tool-specific parsers (Maven, Gradle, NPM) for detailed error analysis and recommendationsretry_flaky_build: Retry flaky builds with configurable attempts and delays
Test Results
get_test_report: Get test results summary (JUnit, pytest, etc.)get_failed_tests: List failed tests with error details and stack tracescompare_test_results: Compare test results between builds for regression detectiondetect_flaky_tests: Identify flaky tests across multiple builds
Logs (Enhanced)
tail_log_live: Poll-based live log tailing with progressive byte offsets
Output Formats
All tools support format parameter:
summary(default): Compact, token-efficient viewfull: Complete data with all fieldsdiff: Differences only (for comparisons)ids: IDs and URLs only
Example:
{
"name": "list_jobs",
"arguments": {
"format": "summary",
"page_size": 20
}
}Built-in Prompts
jankins includes pre-built prompts for common workflows:
investigate_failure: Full failure investigation workflowtail_errors: Show only warnings and errors from a buildcompare_builds: Compare two builds to find differencescheck_job_health: Check overall job health and stabilitytrigger_with_params: Trigger parameterized build with guidancesearch_logs: Search logs for specific patterns
Client Examples
Claude Desktop (stdio mode - recommended)
Add to your MCP settings:
{
"mcpServers": {
"jankins": {
"command": "jankins",
"env": {
"JENKINS_URL": "https://jenkins.example.com",
"JENKINS_USER": "myuser",
"JENKINS_API_TOKEN": "your-token-here"
}
}
}
}The default stdio transport communicates via stdin/stdout, which is the standard for MCP clients like Claude Desktop.
HTTP Mode (for HTTP-based MCP clients)
If your client requires HTTP transport:
{
"mcp": {
"servers": {
"jankins": {
"url": "http://localhost:8080/mcp",
"headers": {
"Content-Type": "application/json"
}
}
}
}
}Direct HTTP Request
Start in HTTP mode:
jankins --transport httpThen make requests:
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_build",
"arguments": {
"name": "my-job",
"number": "last",
"format": "summary"
}
}
}'Example Workflows
Investigate a Failing Build
Use the "investigate_failure" prompt with job "backend-api"This will:
Get build status
Retrieve error summary from logs
Perform failure triage
Show suspect commits
Provide recommended next steps
Compare Two Builds
{
"name": "compare_runs",
"arguments": {
"name": "backend-api",
"base": "100",
"head": "101"
}
}Search Logs for Error Pattern
{
"name": "search_log",
"arguments": {
"name": "backend-api",
"pattern": "OutOfMemoryError",
"window_lines": 10
}
}Get Only Errors from Last Build
{
"name": "get_build_log",
"arguments": {
"name": "backend-api",
"number": "last",
"filter_regex": "ERROR|FATAL",
"redact": true,
"format": "summary"
}
}Error Handling
jankins provides structured errors with:
Error code: JSON-RPC compliant error codes
Correlation ID: Track requests across logs
Hint: Human-readable remediation hint
Next actions: Specific steps to resolve the issue
Docs URL: Link to troubleshooting guide
Error taxonomy:
InvalidParams(-32602): Invalid tool parametersUnauthorized(-32001): Authentication failedForbidden(-32002): Insufficient permissionsNotFound(-32003): Resource not foundTimeout(-32007): Request timed outUpstreamError(-32006): Jenkins server error
Token Optimization
jankins minimizes token usage through:
Default summaries: Summary format by default, full on request
Field limiting: Only essential fields in summary mode
Smart truncation: Progressive log retrieval with byte limits
Token estimation: Responses include estimated token count
Structured data: Compact tables and lists over verbose text
Metadata separation: Performance data in
_metasection
Example response structure:
{
"build_number": 42,
"result": "FAILURE",
"duration": "2m 15s",
"_meta": {
"correlation_id": "abc-123",
"took_ms": 250,
"format": "summary",
"token_estimate": 180
}
}Security
Explicit configuration: Uses env vars or CLI flags (ignores .env files in working directory)
Basic auth: Uses Jenkins API tokens (never passwords)
Optional Origin validation: Enforce allowed origins
No secret logging: Credentials are redacted in logs
Secret masking: Jenkins secret masks are preserved/redacted
Note: jankins ignores any .env files in your working directory and only reads the specific environment variables it needs (JENKINS_*, MCP_*, etc.). This prevents conflicts with project .env files.
Generate API tokens:
Jenkins → User → Configure → API Token → Add new TokenHealth Checks
GET /_health: Basic health checkGET /_ready: Readiness check (verifies Jenkins connectivity)GET /_metrics: Placeholder for Prometheus metrics
Development
Run from Source
# Install with dev dependencies
pip install -e ".[dev]"
# Run server
python -m jankins --jenkins-url $URL --jenkins-user $USER --jenkins-token $TOKEN
# With debug logging
python -m jankins --log-level DEBUG --debug-httpTesting
pytest tests/Docker
See docker-compose.yml for local Jenkins + jankins setup.
docker-compose upThis starts:
Jenkins LTS on port 8081
jankins MCP server on port 8080
Feature Comparison
Feature | jankins | Official Plugin | Community Servers |
MCP Protocol | ✅ 2025-06-18 | ✅ | ⚠️ Varies |
Token optimization | ✅ | ❌ | ❌ |
Progressive logs | ✅ | ⚠️ Limited | ❌ |
Failure triage | ✅ | ❌ | ❌ |
Build comparison | ✅ | ❌ | ❌ |
Structured errors | ✅ | ⚠️ Basic | ❌ |
Built-in prompts | ✅ | ❌ | ❌ |
Format modes | ✅ | ❌ | ❌ |
Origin validation | ✅ | ✅ | ⚠️ Varies |
Troubleshooting
"Unauthorized" Error
Verify
JENKINS_USERandJENKINS_API_TOKENare correctRegenerate API token from Jenkins user settings
Check Jenkins server is accessible
"Timeout" Error
Increase
--timeoutvalueCheck Jenkins server responsiveness
Verify network connectivity
"Tool not found" Error
Ensure server started successfully
Check MCP client configuration
Verify tool name spelling
Large Logs Timing Out
Use
max_bytesparameter to limit retrievalUse
filter_regexto reduce log sizeUse
format=summaryfor overview first
License
MIT
Contributing
Contributions welcome! Please:
Add tests for new features
Follow existing code style
Update documentation
Add type hints
Acknowledgments
Built on:
python-jenkins for Jenkins API
Starlette for transport layer
Available Tools
25 toolsanalyze_build_logB
Analyze build logs with build tool-specific parsers (Maven, Gradle, NPM) for detailed error analysis
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full job name | |
| number | No | Build number or 'last' | last |
| build_tool | No | Build tool (maven, gradle, npm) or auto-detect | |
| max_bytes | No | Maximum log bytes to analyze | |
| format | No | Output format | summary |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It mentions using parsers but does not disclose whether the tool is read-only, requires authentication, or has any side effects. The behavior beyond parsing is opaque.
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?
Single sentence, efficient and front-loaded. No unnecessary words, every part contributes to the core purpose.
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 no output schema, the description is moderately complete. It conveys the main action but does not explain what the output looks like or how to interpret results, which is important for an analysis 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%, so parameters are already described. The description adds context that the build_tool parameter uses specific parsers, which adds slight value but does not significantly enhance schema 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 the tool analyzes build logs using build tool-specific parsers (Maven, Gradle, NPM) for detailed error analysis. It distinguishes from siblings like get_build_log (retrieval only) and search_log (search), making the purpose specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., get_build_log, search_log). The description implies it's for detailed error analysis, but lacks 'when to use' or 'when not to use' instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_runsA
Compare two builds to identify differences in duration, stages, and results
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full job name | |
| base | Yes | Base build number | |
| head | Yes | Head build number to compare | |
| format | No | Output format | diff |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It mentions what is compared (duration, stages, results) but does not disclose whether the operation is read-only, what happens on missing builds, or any 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?
Single sentence that is front-loaded with the main action. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description does not explain the return format or what 'results' specifically means. It adequately covers the basic purpose but lacks details needed for full understanding.
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 the comparison aspects (duration, stages, results), which goes beyond the 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 clearly states the tool compares two builds to identify differences in duration, stages, and results. It uses a specific verb and resource, and distinguishes itself from sibling tools like compare_test_results which focuses on tests.
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?
No explicit guidance on when to use this tool versus alternatives like compare_test_results or analyze_build_log. Usage is implied but not elaborated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_test_resultsB
Compare test results between two builds to identify new failures and regressions
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full job name | |
| base | Yes | Base build number | |
| head | Yes | Head build number to compare | |
| format | No | Output format | diff |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose whether the tool is read-only, requires permissions, or has side effects. The description only hints at a comparison operation, leaving behavioral traits unclear.
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 a single sentence that front-loads the purpose without wasted words. It is efficient and to the point.
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 4 parameters, no output schema, and no annotations, the description is too minimal. It does not explain the return format, how to interpret results, or how it differs from similar tools like 'compare_runs'. More context is needed for an agent to use it effectively.
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 covers all 4 parameters with descriptions, achieving 100% coverage. The description adds no additional meaning beyond what the schema already provides. Baseline 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 uses specific verbs ('compare') and resources ('test results between two builds'), and clearly states the outcome ('identify new failures and regressions'). It distinguishes from siblings like 'compare_runs' by focusing on test results and regressions.
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 comparing test results but provides no explicit guidance on when to use this tool versus alternatives such as 'compare_runs' or 'get_test_report'. No when-not-to-use or context exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_flaky_testsB
Identify flaky tests (inconsistent pass/fail) across recent builds
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full job name | |
| build_count | No | Number of recent builds to analyze | |
| format | No | Output format | summary |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the function but does not mention whether the tool is read-only, requires specific permissions, or what side effects (if any) occur. It lacks depth for a safety-critical assessment.
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 a single, front-loaded sentence with no unnecessary words. It conveys the core purpose efficiently, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the schema covering parameters, the description does not indicate what the tool returns (e.g., a list of flaky tests with metrics), nor does it address context like build history dependency or output format variations. This leaves the agent with incomplete expectations.
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 does not add meaning beyond the schema; it merely repeats the concept of analyzing builds. No additional semantics or parameter-specific guidance are provided.
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 'identify' and resource 'flaky tests' with the qualifier 'across recent builds', clearly differentiating from sibling tools like get_failed_tests or compare_runs that serve different purposes.
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 (to find flaky tests) but does not explicitly state when not to use it or mention alternatives among the 22 sibling tools. No exclusions or context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disable_jobB
Disable a Jenkins job to prevent builds
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full job name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavioral traits. It states the outcome (prevent builds) but omits effects on running builds, reversibility, required permissions, or side effects of disabling.
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 a single, front-loaded sentence with no wasted words. However, it could be more informative without losing conciseness (e.g., mentioning it's safe or reversible).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers basic purpose. But it lacks usage context, return value indication, and any caveats, making it minimally 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% (single 'name' parameter with description). The description adds no additional meaning beyond the schema; 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 clearly states the action ('Disable'), the resource ('a Jenkins job'), and the purpose ('to prevent builds'). It directly distinguishes from the sibling tool 'enable_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 implies when to use (to disable a job) but provides no explicit guidance, alternatives, or conditions. Sibling tools like 'enable_job' suggest the opposite, but no 'when-not-to-use' info.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enable_jobB
Enable a Jenkins job to allow builds
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full job name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must bear the full burden. It discloses the action but fails to mention side effects, prerequisites (e.g., job must exist), or state change details (e.g., from disabled to enabled).
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 a single, efficient sentence. It is appropriately concise for a simple tool, though it could add more context without becoming verbose.
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 (one parameter, no output schema), the description is minimally adequate. However, it misses context like prerequisites or what happens if the job is already enabled.
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 covers 100% of parameters, and the description adds no extra meaning beyond the schema description. 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 verb 'Enable' and the resource 'a Jenkins job', with the purpose 'to allow builds'. It is distinct from sibling tools like 'disable_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 implies when to use (to enable a job) but lacks explicit guidance on when not to use or alternatives. The sibling tool 'disable_job' provides implicit contrast.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_buildC
Get information about a specific build or the last build
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full job name | |
| number | No | Build number or 'last' | last |
| format | No | Output format | summary |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It only says 'Get information' without specifying what information (e.g., status, parameters) or disclosing side effects like read-only behavior. The format parameter suggests output options but is not elaborated.
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?
Single sentence, no fluff. Every word is functional. Highly 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?
For a tool with 3 parameters and no output schema, the description is too minimal. It should at least hint at typical fields returned (e.g., build status, duration). The current description leaves the agent underinformed.
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 all parameters. The description adds no extra meaning beyond the schema (e.g., no explanation of what 'ids' vs 'summary' entails). 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 verb 'Get information' and the resource 'specific build or the last build'. It is straightforward but does not differentiate from sibling tools like get_build_artifacts or get_build_log.
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?
No guidance on when to use this tool versus alternatives. Despite many siblings (e.g., get_build_artifacts, get_build_log), the description provides no context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_build_artifactsC
Get artifacts produced by a build
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full job name | |
| number | No | Build number or 'last' | last |
| format | No | Output format | summary |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description must carry full burden. It only says 'get artifacts' without disclosing what 'get' means (list? download?), any required permissions, or behavior for incomplete builds. The parameter 'format' hints at output format but is not explained.
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?
Description is one short phrase, which is concise but lacks structure. It does not front-load key information beyond the bare purpose. A slightly expanded description could improve clarity without adding verbosity.
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 3 parameters and no output schema, the description is too minimal. It does not explain what the returned artifacts look like, any limitations (e.g., only from successful builds), or how to interpret the 'format' parameter. The tool's behavior is underspecified.
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 clear descriptions for all 3 parameters. The description adds no extra semantics beyond the schema. 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?
Description clearly states the verb 'Get' and resource 'artifacts produced by a build'. It distinguishes from sibling tools like 'get_build' which fetches build metadata, or 'get_build_log' which fetches logs.
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?
No explicit guidance on when to use this tool versus alternatives. The sibling tool list includes many get_* tools, but the description does not help the agent differentiate. It is implied that one uses this for artifacts, but no when-not or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_build_changesB
Get SCM changes (commits) for a build
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full job name | |
| number | No | Build number or 'last' | last |
| format | No | Output format | summary |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description only states the action. It does not disclose behavior for edge cases (e.g., build not found), authentication requirements, or rate limits. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no superfluous words. Information is front-loaded and 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?
Despite low parameter count and no output schema, the description lacks context about return format, pagination, or error handling. It feels incomplete for a tool that retrieves a list of commits.
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 all parameters. The description adds no additional meaning; it does not explain the distinction between 'summary' and 'full' formats. 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?
Description clearly states it retrieves SCM changes (commits) for a build, specifying the resource and scope. It distinguishes from siblings like get_build_scm (which may focus on SCM configuration) and get_build (general build info).
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?
No guidance on when to use this tool versus alternatives like get_build_scm. The description does not provide context for selection or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_build_logA
Get build log with smart truncation and filtering. Returns summary by default, full text on request.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full job name | |
| number | No | Build number or 'last' | last |
| start | No | Starting byte offset | |
| max_bytes | No | Maximum bytes to retrieve | |
| filter_regex | No | Regex pattern to filter log lines | |
| redact | No | Remove ANSI codes and secret masks | |
| format | No | Output format | summary |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The tool has no annotations, placing full burden on the description. It mentions two output modes (summary/full) and smart truncation but lacks details on side effects, required permissions, or what constitutes 'smart' behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no wasted words, efficiently conveying the core functionality.
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 number of parameters and lack of output schema, the description adequately covers the tool's behavior (summary vs full, filtering). However, it could hint at the output format (e.g., raw text).
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 provides parameter details. The description adds no extra meaning beyond mentioning format defaults, which are also in 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 retrieves a build log with smart truncation and filtering, distinguishing it from sibling tools like search_log or analyze_build_log.
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?
No explicit guidance on when to use this tool versus alternatives like search_log or tail_log_live. The description only implies usage through the tool's name and basic functionality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_build_scmA
Get SCM information (git commit, branch, etc.) for a build
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full job name | |
| number | No | Build number or 'last' | last |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states the tool 'gets' information, lacking details on failure modes, permissions, or behavior for missing builds.
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 a single, front-loaded sentence that communicates the core functionality without 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?
Given the tool's simplicity (2 parameters, no output schema), the description is adequately complete for a lookup operation, though it could mention the default value for 'number'.
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?
Both parameters are fully described in the input schema (100% coverage), so the baseline is 3. The description does not add additional meaning beyond what the schema already 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 tool retrieves SCM information for a build, specifying content like git commit and branch. It distinguishes itself from siblings like 'get_build' and 'get_job_scm' by targeting build-level SCM.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for retrieving SCM data for a specific build, but it does not explicitly state when to use this versus alternatives like 'get_job_scm' or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_failed_testsC
Get list of failed tests from a build with error details
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full job name | |
| number | No | Build number or 'last' | last |
| limit | No | Maximum number of failed tests to return | |
| format | No | Output format | summary |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states 'get list of failed tests with error details' but does not disclose whether this is a read-only operation, any potential side effects, or other behavioral traits like rate limits or data freshness. The read-only nature is implied but not explicitly stated.
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 a single, short sentence that is to the point and front-loaded. It wastes no words, though it could be slightly more structured with the inclusion of parameter defaults or output format hints.
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 no output schema and no annotations, the description is insufficiently complete. It does not explain the difference between 'summary' and 'full' formats, how errors are ordered or truncated, or behavior on empty results. The tool deals with lists, so pagination or limit details would be helpful.
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 adds the phrase 'with error details', which hints at the output but does not add significant semantics beyond what the schema already provides for parameters. Each parameter is well-described in 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 retrieves a list of failed tests with error details from a build. It uses a specific verb and resource, and indirectly distinguishes from sibling tools like get_test_report or compare_test_results by focusing on failed tests and error details.
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?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, context, or scenarios where other tools would be more appropriate. The description is purely declarative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_jobB
Get detailed information about a specific Jenkins job
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full job name (e.g., 'folder/subfolder/job') | |
| format | No | Output format | summary |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the action without mentioning side effects, permissions, or performance implications. For a read operation, this is minimal disclosure.
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 a single, clear sentence with no unnecessary words. It is front-loaded and efficient, earning 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 two simple parameters and no output schema, the description is largely complete for a basic retrieval tool. However, it could mention that the output includes job configuration or status details, but the current text is 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% and parameter descriptions in the schema are detailed (including examples and enums). The description adds no extra meaning beyond the schema, meeting the baseline of 3.
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 ('Get') and resource ('detailed information about a specific Jenkins job'), clearly indicating the tool's functionality. It distinguishes from sibling tools like get_build or get_status by specifying it targets job-level information.
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?
No explicit guidance on when to use this tool versus alternatives. Given many sibling tools (e.g., get_status, get_build), the description does not explain context or exclusions, leaving the agent without usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_job_scmB
Get SCM configuration for a job
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full job name | |
| format | No | Output format | summary |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states the basic purpose without disclosing behavioral traits like read-only nature, error handling, authentication needs, or rate limits. The description does not add value beyond the obvious.
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 a single concise sentence with no fluff. It front-loads the purpose and wastes no 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?
For a simple two-parameter tool with no output schema, the description is minimally adequate but lacks behavioral context or usage notes. It meets the baseline but does not exceed expectations.
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 input schema already documents both parameters. The description adds no additional meaning beyond what is in the schema (e.g., format enum values, required name). 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 states 'Get SCM configuration for a job' which clearly identifies the verb (get), resource (SCM configuration), and scope (for a job). It distinguishes from siblings like get_build_scm by specifying 'job', but does not explicitly differentiate from other job-level tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as get_build_scm or get_job. There is no mention of prerequisites, context, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pipeline_graphA
Get pipeline execution graph with stages, parallel branches, and timing (requires Blue Ocean plugin)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full job name | |
| number | No | Build number or 'last' | last |
| format | No | Output format | summary |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the plugin requirement but does not detail auth needs, side effects, or output structure. For a read-only graph retrieval, this is acceptable but leaves gaps.
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?
Single sentence, directly communicates the tool's purpose and a key prerequisite without extraneous words. Highly 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?
No output schema exists, so the description should compensate. It names the graph components but does not specify the return format (e.g., JSON, diagram) or pagination. Adequate but not fully 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%, so the schema already documents parameters. The description adds context but no extra semantics beyond the schema. 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 clearly states the tool retrieves a pipeline execution graph with specific components (stages, parallel branches, timing) and notes a dependency (Blue Ocean plugin). It differentiates from sibling tools like get_build or get_job which focus on different aspects.
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 a prerequisite (Blue Ocean plugin) but does not provide explicit guidance on when to use this tool versus alternatives like get_build or analyze_build_log. Usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statusA
Get Jenkins server status and queue depth
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but offers minimal behavioral detail. It does not explain what 'status' includes (e.g., online/offline, uptime, executor count) or the return format. The operation is likely read-only, but this is not stated.
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 a single sentence that conveys the tool's purpose efficiently with no unnecessary words or details. It is perfectly concise 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 zero parameters, no output schema, and no annotations, the description is minimal but works for a simple health check tool. However, it could be improved by specifying the nature of the status output (e.g., JSON object with fields like 'online', 'queueDepth') to prepare the agent for parsing the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, and schema coverage is 100%. Per guidelines, baseline is 4. The description adds nothing about parameters since none exist, but it also does not mislead. It is adequate given zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'Jenkins server status and queue depth', which is distinct from sibling tools that focus on specific builds, jobs, or logs. It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For instance, it does not suggest using get_job for job-specific info or warn against redundant calls. The description implicitly indicates it is for overall health, but lacks explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_test_reportB
Get test results summary from a build (JUnit, pytest, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full job name | |
| number | No | Build number or 'last' | last |
| detailed | No | Include detailed test suites | |
| format | No | Output format | summary |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only says 'Get test results summary' without details on safety, side effects, or return structure. The agent lacks information about permissions or performance.
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 a single, efficient sentence that includes examples (JUnit, pytest). It front-loads the core action and resource, with minimal 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?
Despite 4 parameters with good schema descriptions and no output schema, the description fails to explain the output format or the difference between 'summary' and 'full' options. Given the rich sibling context, more guidance on when to use this tool is needed.
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%; each parameter has a description in the schema. The tool description adds no additional meaning or examples beyond 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 retrieves test results summaries from builds and mentions common frameworks (JUnit, pytest). This distinct purpose is well-identified among siblings like get_failed_tests and compare_test_results.
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?
No explicit guidance on when to use this tool versus alternatives such as get_failed_tests or compare_test_results. The description does not mention context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_jobsA
List Jenkins jobs with optional prefix filtering and pagination
| Name | Required | Description | Default |
|---|---|---|---|
| prefix | No | Job name prefix filter | |
| page | No | Page number (1-indexed) | |
| page_size | No | Items per page | |
| format | No | Output format | summary |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. The word 'List' implies a read-only operation and no destructive behavior, but it does not disclose pagination behavior, rate limits, or any potential side effects. It is minimal but not misleading.
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 a single, front-loaded sentence of 8 words with no filler. Every word is necessary and contributes to clarity.
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 absence of an output schema and moderate complexity (4 parameters with defaults and enum), the description is adequate but lacks details on return format and pagination behavior. Schema coverage helps, but the description does not fully compensate for missing output schema.
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 adds no additional meaning beyond what is already in the schema (prefix filtering, pagination), which is already documented. No value added beyond 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 specifies the verb (List), resource (Jenkins jobs), and key features (optional prefix filtering and pagination). It effectively distinguishes from sibling tools which focus on builds, tests, and individual job operations.
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 listing jobs with optional filters but provides no explicit guidance on when not to use it or how it compares to alternatives like get_job. The context of sibling tools suggests differentiation, but it is not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retry_flaky_buildB
Retry a flaky build multiple times until it succeeds or max retries reached
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full job name | |
| max_retries | No | Maximum retry attempts | |
| delay_seconds | No | Delay between retries in seconds | |
| parameters | No | Build parameters | |
| format | No | Output format | summary |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must fully disclose behavior. It mentions retry loop but lacks details on prerequisites (e.g., requires a previous build), side effects (triggers multiple builds), or what 'flaky build' means concretely.
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?
Single concise sentence with no waste, but could benefit from additional context about behavior or parameter usage while remaining 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?
Given the tool has 5 parameters, nested objects, no output schema, and no annotations, the description covers core functionality but omits details on parameter interaction, return format specifics, and how it differs from similar sibling tools.
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 descriptions for all 5 parameters. The description adds no extra meaning beyond the schema, earning the baseline score.
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 retries a flaky build until success or max retries, using specific verbs and distinguishing it from sibling tools like 'trigger_build' and 'detect_flaky_tests'.
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?
Usage is implied (for flaky builds) but no explicit when-to-use or when-not-to-use guidance, nor mention of alternatives like 'trigger_build'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_logB
Search build log for pattern and return matching lines with context
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full job name | |
| number | No | Build number or 'last' | last |
| pattern | Yes | Regex pattern to search for | |
| window_lines | No | Lines of context before/after match | |
| max_bytes | No | Maximum bytes to search |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry transparency burden. It implies a read operation but does not detail behavior like error handling, auth needs, or performance implications. Adequate but not thorough.
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?
Single, focused sentence that immediately conveys the core action and result. No fluff or redundant 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 5 parameters and no output schema or annotations, the description is too minimal. It does not explain the return structure, what 'context' means, or limitations like max_bytes. Sibling tools suggest more tailored alternatives exist.
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 baseline is 3. The description adds no extra parameter insights beyond what's in the schema, such as format of regex or meaning of 'context'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Search', the resource 'build log', and the result 'matching lines with context'. It distinguishes from siblings like get_build_log (full log) and tail_log_live (tail).
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?
No guidance on when to use this tool vs. alternatives like get_build_log or tail_log_live. The description does not mention prerequisites, limitations, or 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.
summarize_queueC
Get compact summary of Jenkins build queue
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full transparency weight. It only says 'compact summary' without explaining what the summary includes, whether it's read-only (likely), or any other behavioral traits. This leaves the agent uncertain about side effects and return content.
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 a single, concise sentence that is front-loaded with the key action and resource. 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?
Despite being a simple tool with no parameters, the description lacks crucial context. There is no output schema, and the description does not describe the return format (e.g., JSON, text) or the depth of the summary. An agent may not know what to expect as output.
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 no parameters and is fully covered (100%), so the baseline is 3. The description adds no parameter information, but none is needed. Score is at baseline.
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 ('Get compact summary') and the resource ('Jenkins build queue'), effectively communicating the tool's purpose. It distinguishes itself from sibling tools like 'get_status' which may provide broader status information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. For example, it doesn't mention that it's read-only or that it's suitable for quick overviews.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tail_log_liveA
Get log chunk for live tailing (poll repeatedly with next_byte for streaming effect)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full job name | |
| build_number | Yes | Build number | |
| start_byte | No | Starting byte offset | |
| max_bytes | No | Maximum bytes per chunk |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It discloses the polling behavior for streaming, which is important. However, it lacks details on rate limits, authentication, or what happens on incomplete polls, and there is a minor inconsistency between 'next_byte' (mentioned) and the actual parameter 'start_byte'.
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 a single sentence of 13 words, front-loaded with the purpose, and contains no filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 4 parameters and no output schema, the description does not explain the return format or how 'next_byte' is provided in responses. For a streaming/polling tool, this leaves a significant gap in 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 each parameter is already documented. The description adds context about repeated polling with 'next_byte' which relates to start_byte and max_bytes, but does not provide new semantic 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?
The description uses a specific verb ('Get') and resource ('log chunk') and clearly states the purpose is for live tailing by polling repeatedly. It distinguishes itself from siblings like get_build_log (full log) and search_log (search) via the streaming implication.
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 the polling pattern with multiple calls and the 'next_byte' concept, giving clear usage context. However, it does not provide explicit when-not-to-use guidance or alternative tools, though the streaming hint differentiates it from one-shot log fetches.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triage_failureC
Analyze a failed build and provide root cause hypotheses and next steps
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full job name | |
| number | No | Build number or 'last' | last |
| max_bytes | No | Maximum log bytes to analyze | |
| format | No | Output format | summary |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the tool provides 'root cause hypotheses and next steps', but does not disclose how the analysis is performed, what data it uses, any limitations, or whether it has side effects. This is insufficient behavioral disclosure for a diagnostic tool.
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 a single concise sentence that covers the main action and output. It is front-loaded with the primary purpose. However, it could be slightly more structured if it included bullet points or separate lines for usage and behavior.
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 4 parameters, no output schema, and no annotations, the description is too minimal. It does not explain the output format, how to interpret the hypotheses, or any prerequisites (e.g., build must have failed). This leaves significant gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add any additional semantics beyond what the schema already provides. The parameter names and schema descriptions are clear, but the tool description is not leveraged to add context.
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: 'Analyze a failed build and provide root cause hypotheses and next steps'. It specifies the resource (failed build) and the action (analyze and provide hypotheses). This distinguishes it somewhat from siblings like analyze_build_log and get_failed_tests, but could be more specific about the type of 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 does not provide any guidance on when to use this tool versus alternatives. Given the presence of sibling tools like analyze_build_log, compare_runs, and detect_flaky_tests, the lack of usage context forces the agent to infer independently.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trigger_buildC
Trigger a new build for a Jenkins job with optional parameters
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full job name | |
| parameters | No | Build parameters as key-value pairs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description lacks behavioral details that annotations would typically provide. It does not disclose whether the build is triggered synchronously or asynchronously, what happens on failure, authentication requirements, or rate limits. For a mutation tool, this is insufficient transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that captures the core functionality without extraneous words. Every word earns its place, and the structure is 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 no output schema and no annotations, the description should provide more context about what the tool returns (e.g., build ID, status), error behavior, or side effects. The current description omits these essential details, making it incomplete for an agent to use effectively.
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?
Both parameters (name and parameters) are fully described in the input schema with 100% coverage. The description adds minimal value beyond the schema, merely noting that parameters are optional. The semantics are clear from the schema, 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 action (trigger), the resource (a new build), and the context (Jenkins job with optional parameters). It distinguishes the primary function from sibling tools that analyze, retrieve, or retry builds, though it does not explicitly differentiate itself.
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?
No guidance is provided on when to use this tool versus alternatives like retry_flaky_build or get_build. There are no conditions, prerequisites, or exclusions mentioned, leaving the agent without context for appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whoamiA
Get current authenticated user information
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description should carry the full burden of behavioral disclosure. It states the tool gets user info but does not mention that it requires authentication, that it is read-only with no side effects, or any other behavioral traits. While the simple action implies safety, more explicit disclosure would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the core purpose. Every word earns its place, with no unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description is largely complete. It could optionally mention that the return value is the user object, but that is not essential. The description is adequate for an agent to understand the tool's functionality.
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 zero parameters, so the description cannot add value beyond what the schema provides (which is empty). Schema coverage is 100% trivially. The description appropriately says nothing about parameters because there is nothing to describe.
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 ('get') and the resource ('current authenticated user information'). It distinctly sets this tool apart from all sibling tools, which deal with builds, jobs, tests, and logs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for retrieving the current user's identity, and given the sibling tools are all about CI/CD pipeline operations, there is no ambiguous alternative. However, no explicit 'when to use' or 'when not to use' guidance is provided, but the context makes it clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
25 tool updates
v1.2.4- First observed
analyze_build_log - First observed
compare_runs - First observed
compare_test_results - First observed
detect_flaky_tests - First observed
disable_job - First observed
enable_job - First observed
get_build - First observed
get_build_artifacts - First observed
get_build_changes - First observed
get_build_log - First observed
get_build_scm - First observed
get_failed_tests - First observed
get_job - First observed
get_job_scm - First observed
get_pipeline_graph - First observed
get_status - First observed
get_test_report - First observed
list_jobs - First observed
retry_flaky_build - First observed
search_log - First observed
summarize_queue - First observed
tail_log_live - First observed
triage_failure - First observed
trigger_build - First observed
whoami
TDQS
Scored across 25 tools
Most tools have distinct purposes (job management, build inspection, test analysis, pipeline, queue, user info). Some overlap exists between log-related tools (analyze_build_log vs search_log vs tail_log_live) but descriptions clarify their unique functions. SCM tools (get_build_scm vs get_build_changes) are also clearly separated.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., analyze_build_log, compare_runs, disable_job). No mixed conventions or inconsistent naming styles are observed.
25 tools is slightly above the ideal range (3-15) but is reasonable for a comprehensive Jenkins integration covering jobs, builds, tests, pipelines, queue, and user info. The count is earned given the breadth of functionality.
The tool set covers major CI/CD workflows: job management (list, get, enable/disable, trigger), build inspection (logs, artifacts, SCM, comparisons), test analysis, pipeline visualization, queue, and user info. Missing: job creation/deletion, build cancellation, and configuration editing, but core troubleshooting and monitoring are well-represented.
Maintenance
Related MCP Connectors
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Devopness MCP server for DevOps happiness! Empower AI Agents to deploy apps and infra, to any cloud.
Related MCP Servers
- AlicenseBqualityCmaintenanceA Model Context Protocol server that enables AI assistants to interact with Jenkins CI/CD servers, providing tools to check build statuses, trigger builds, and retrieve build logs.315MIT
- AlicenseNot gradedqualityDmaintenanceEnterprise-grade MCP server for Jenkins CI/CD integration that enables AI assistants to diagnose build failures, analyze pipelines, and search logs through natural conversation.6GPL 3.0
- AlicenseNot gradedqualityCmaintenanceA Jenkins MCP server for multi-instance build management, log inspection, failure diagnostics, and optional vector search.30GPL 3.0
- AlicenseNot gradedqualityCmaintenanceRead-only MCP server for Jenkins CI, enabling AI agents to securely query job/build status, logs, artifacts, and generate verification reports for loop workflows.17ISC