Skip to main content
Glama
NotHarshhaa

mainframe-mcp-server

by NotHarshhaa

An enterprise-grade Model Context Protocol (MCP) server for IBM z/OS environments. Bridges MCP-compatible AI agents with mainframe resources — jobs, datasets, USS, and operational diagnostics — using the Zowe SDK (Open Mainframe Project) as the connectivity layer.


Contents


Related MCP server: ibmi-mcp-server

What it does

mainframe-mcp-server exposes z/OS capabilities as Model Context Protocol tools. An AI agent can list jobs, read datasets, inspect USS paths, submit JCL, and run operational diagnostics — without you writing Zowe CLI commands by hand.

Connectivity is handled by the Zowe SDK (Open Mainframe Project) over z/OSMF REST. This project adds the MCP tool layer, input validation, safety limits, and AI-friendly response formatting on top.


How it's different

mainframe-mcp-server

Zowe CLI + scripts

Host IDE tooling (IDz, Z Open Editor)

Other z/OS MCP bridges

Interface

MCP tools for AI agents

Terminal commands, shell scripts

Eclipse/VS Code GUIs

MCP tools for AI agents

Output

Structured sections & tables tuned for LLM reasoning

Raw terminal text you must parse yourself

IDE views

Varies by project

Guardrails

Read-only by default, tool allow/block lists, dataset & USS boundaries, audit logging, JCL size cap

None built in — you script them

Client-side only

Varies by project

Failure knowledge

Curated abend-code reference, failing-step heuristics, risk scoring

Manual message lookup

Interactive debugging

Rare

Install

npx — no server-side footprint beyond z/OSMF access

Node + Zowe CLI + your scripts

Full IDE estate

Often heavier runtimes

Coverage

Jobs, datasets, USS, CICS, Db2, SMF/RMF, RACF audit (30+ tools)

Full Zowe command set

Edit, debug, compile

Varies

Honest positioning: the z/OS MCP ecosystem is early. IBM and community authors publish their own MCP bridges — evaluate them against your requirements. This project's differentiators are zero-dependency npm install, guardrails enforced at the server layer, and output shaped for LLM consumption rather than human eyes. It is not a replacement for Zowe CLI or IBM Z Open Editor — it is an MCP bridge over the same z/OSMF APIs.


z/OS prerequisites

The server is a pure client — nothing is installed on z/OS. It requires REST services that are enabled in standard z/OSMF estates.

z/OSMF (required — all core tools)

z/OSMF REST service

Used by

Notes

Jobs REST (/zosmf/restjobs/jobs)

list_jobs, get_job_status, get_job_output, get_job_jcl, submit_jcl, all operations & intelligence tools

List, query, spool content, JES submit

Files REST — datasets (/zosmf/restfiles/ds)

list_datasets, search_dataset, read_dataset, search_members, get_dataset_info

Catalog list, members, content read

Files REST — USS (/zosmf/restfiles/fs)

list_uss_directory, read_uss_file, search_uss_files, RACF audit source

Directory list, file read

z/OSMF info (/info)

verify_zosmf_connection

Optional; version read-out only

RMF REST (/rmf/mvs/GPO/)

get_smf_metrics

Optional; disabled with RMF_METRICS_ENABLED=false

Baseline: z/OS 2.4 LTS or later with APAR-current z/OSMF — the target the Zowe SDK (v8) is built against. Core job/dataset/USS tools are expected to work on z/OSMF levels from z/OS 2.3 onward; if you run an older or unusual level, open an issue with your results so the matrix can be updated.

CICS via CMCI (optional — list_cics_regions, get_cics_region_status, list_cics_transactions)

  • CICS TS 5.4 or later with CMCI active (a CICSPlex SM WUI region, or a single-region CMCI setup).

  • Set CMCI_CONTEXT (CICSplex name or region APPLID); optionally CMCI_HOST, CMCI_PORT (default 1490), CMCI_BASE_PATH (default /CICSSystemManagement).

  • The service account needs RACF/SAF authority to the CMCI data sets (XCSDATA/CICSPLEX resource classes as configured at your site).

Db2 REST (optional — list_db2_subsystems, search_db2_catalog)

  • Db2 12 for z/OS or later with the Db2 REST services capability exposed at DB2_HOST:DB2_PORT (default 50400, base path /dbrest) — direct DDF-served REST or fronted by your API mediation layer.

  • Set DB2_LOCATION (the subsystem location name). Tools run read-only catalog SQL against SYSIBM.SYSTABLES with literal-escaped, size-capped input.

RACF audit source (optional — query_racf_audit)

  • An existing audit extract the service account can read: a USS log file (RACF_AUDIT_USS_PATH) or a sequential dataset (RACF_AUDIT_DATASET), e.g. ADUINFOS/IRRADU00 output written to file. The server parses the text; it does not run IRRADU00 for you.

Service account

Use a dedicated z/OS user with least-privilege RACF profiles (job list/read authority, submit authority only if SECURITY_READ_ONLY=false).


Tools

Type legend: READ — reads z/OS state, never modifies anything · WRITE — submits work to JES · OFFLINE — no mainframe I/O at all.

Jobs

Tool

Type

Description

list_jobs

READ

List jobs by owner, prefix, or status

get_job_status

READ

Status and return code for a job

get_job_output

READ

Spool inventory or DD content

submit_jcl

WRITE

Submit inline JCL — governed by pre-flight scan, change ticket, change window, and optional human approval

approve_write

WRITE

Execute a pending JCL submission after human review (requires SECURITY_WRITE_APPROVAL=true)

analyze_job_failure

READ

Abend code, failing step, and suggested fix

get_job_jcl

READ

Retrieve submitted JCL from job spool

Datasets

Tool

Type

Description

list_datasets

READ

List datasets matching an HLQ pattern

read_dataset

READ

Read a sequential dataset or PDS member

search_dataset

READ

Search datasets by pattern

search_members

READ

Search or list PDS members

get_dataset_info

READ

Catalog attributes without reading content

USS

Tool

Type

Description

list_uss_directory

READ

List a USS directory

read_uss_file

READ

Read a USS file

search_uss_files

READ

Search files under a USS path

Operations

Tool

Type

Description

find_failed_jobs

READ

Failed jobs in a time window

summarize_abends

READ

Abend code breakdown across recent jobs

system_health_summary

READ

Active, queued, and failed job snapshot

investigate_incident

READ

Full incident bundle for a job

lookup_abend_code

OFFLINE

Abend reference lookup (S0C7, S806, S222, S0C4, …)

verify_zosmf_connection

READ

Test z/OSMF connectivity and auth

compare_jobs

READ

Side-by-side comparison of two jobs

get_user_jobs_summary

READ

Job counts by status for an owner

CICS

Requires optional CMCI configuration — see z/OS prerequisites.

Tool

Type

Description

list_cics_regions

READ

List CICS regions via CMCI REST

get_cics_region_status

READ

Status and attributes of a CICS region

list_cics_transactions

READ

Transaction definitions in a region

get_cics_region_stats

READ

Region statistics/attributes from the CMCI CICSRegion resource

cics_newcopy

WRITE

NEWCOPY a program via CMCI action (CICS TS 5.6+)

cics_disable_transaction

WRITE

Disable/enable a local transaction via CMCI SET action

Db2

Requires optional Db2 REST configuration — see z/OS prerequisites.

Tool

Type

Description

list_db2_subsystems

READ

List Db2 locations via Db2 REST

search_db2_catalog

READ

Read-only catalog search (tables, views, aliases)

Console & JES

Operator commands run through an extended MCS console (ZOSMF_CONSOLE_NAME); command tools are gated writes subject to read-only mode, policy roles, change tickets, and change windows.

Tool

Type

Description

issue_console_command

WRITE

MVS commands (D A,L, D GRS,RES=…) with follow-up message collection

get_console_messages

READ

Operations-log tail (SYSLOG-style console feed)

hold_job / release_job

WRITE

JES2 $HJ / $OJ job hold and release

cancel_job

WRITE

Cancel a job via the z/OSMF jobs API

get_wlm_status

WRITE

D WLM display (service policy / resources)

ims_command

WRITE

IMS commands via the system console (/DIS ACTIVE, /DIS TRAN …)

get_hsm_activity

READ

DFSMShsm recall/migration activity from the operations log

analyze_logrec

WRITE

Submit an EREP report against LOGREC and summarize error records

Schedulers

Tool

Type

Description

scheduler_job_status

READ

Control-M / CA 7 / IBM WLS job status via their REST APIs (SCHEDULER_ADAPTERS)

job_dependencies

READ

JCL dataset-flow analysis — inputs, outputs, updates, PROCs (predecessor/successor material)

Messaging (IBM MQ)

Requires MQ_REST_HOST (mqweb server) and optional MQ_REST_PORT/_USER/_PASSWORD.

Tool

Type

Description

mq_queue_status

READ

Queue curdepth vs maxdepth with high-water warnings

mq_channel_status

READ

Channel status (RUNNING/RETRYING/STOPPED) and connection counts

Storage & Capacity

Tool

Type

Description

get_volume_space

READ

DASD volume space via z/OSMF SMI, with low-space alerts (STORAGE_FREE_THRESHOLD)

get_job_capacity

READ

Per-step and total CPU from JESMSGLG (IEF374I/IEF376I) + MSU estimate (CAPACITY_MSU_RATING)

estimate_mlc_cost

OFFLINE

MLC cost attribution from CPU/MSU (MLC_MSU_MONTHLY_PRICE)

Dumps

Tool

Type

Description

summarize_dump

READ

CEEDUMP / SYSMDUMP / SYSUDUMP digest — completion codes, failing module, LE conditions

SMF / Security

Tool

Type

Description

get_smf_metrics

READ

SMF/RMF performance metrics snapshot

query_racf_audit

READ

Query RACF audit records from a log source

security_posture_summary

OFFLINE

Report active security controls and recommendations

Intelligence

Built in — see How the intelligence tools work.

Tool

Type

Description

analyze_root_cause

READ

Deep root-cause analysis with correlation and action items

predict_batch_failures

READ

Predictive risk scoring for recurring batch failures

Governance

Tool

Type

Description

list_environments

OFFLINE

Named z/OS environments (DEV/TEST/UAT/PROD, LPARs) with per-environment read-only and role policy

whoami

OFFLINE

Acting identity, resolved role, permission summary, active environment, data-protection status

Incident management

Optional — file tickets from investigation bundles. Configure one provider with the INCIDENT_* variables (see Incident management & runbooks); the tool registers only when a provider is set.

Tool

Type

Description

create_incident_ticket

WRITE

Rebuild the investigate_incident bundle for a job and file it as a ServiceNow incident, Jira issue, or PagerDuty incident

Internal documentation (RAG)

Optional — retrieval over your own runbooks and playbooks. Point DOCS_SOURCES at local .md/.txt files; the tool registers only when sources are set.

Tool

Type

Description

search_internal_docs

OFFLINE

Retrieve the most relevant excerpts from internal documentation, with file and heading attribution

See docs/tools-reference.md for full input/output details.


Prompts & resources (MCP-native surface)

Beyond tools, the server exposes the full MCP surface so clients can offer reusable playbooks and address mainframe data directly:

Prompts — guided, multi-step playbooks your client surfaces like slash commands:

Prompt

Purpose

triage_failed_job

Triage one failed job (or every failure in a window) end-to-end: investigate, check runbooks and internal docs, optionally file a ticket

morning_batch_health_check

Overnight health check for the morning standup: system health, failures, abend trends, prediction, capacity and storage

investigate_abend

Deep-dive one abend code: reference entry, internal docs, recent occurrences, remediation plan

Resources — addressable read-only URIs (gated, masked, and audited exactly like the equivalent tools):

URI

Returns

mainframe://jobs/{jobId}/spool

Spool file (DD) inventory for a job

mainframe://jobs/{jobId}/spool/{ddName}

Content of one spool DD

mainframe://datasets/{dsn}

Member listing of a PDS/PDSE

mainframe://datasets/{dsn}/members/{member}

Content of one member

mainframe://reference/abend-codes

The built-in abend reference catalog

Tool annotations — every tool advertises readOnlyHint, destructiveHint, idempotentHint, and a human-readable title, derived from the same write-tool registry the server enforces. Clients that confirm based on hints (reactive confirmations, plan approval, etc.) agree with the server's own gates: reads are readOnlyHint: true; submit_jcl, cancel_job, issue_console_command, and the other destructive operations are flagged destructiveHint: true.


Packaging & supply chain

Everything a security team asks for on day one is built into the release pipeline (see docs/deployment.md — Supply-chain assurance):

Artifact

Where

Assurance

npm package

@notharshhaa/mainframe-mcp-server

Published with SLSA provenance (GitHub Actions OIDC) — npm audit signatures

Official image

ghcr.io/notharshhaa/mainframe-mcp-server (version / minor / SHA tags)

Non-root, signed with Sigstore keyless cosign, BuildKit provenance mode=max + SBOM attestations

SBOMs

GitHub release assets

SPDX and CycloneDX for both the package and the image

Checksums

sha256sums.txt on the release

Signed with cosign (sha256sums.txt.sig)

Helm chart

helm/mainframe-mcp-server/

Non-root + read-only rootfs + dropped caps by default; policy file and SIEM sinks wired via values

Verify the image before you run it:

cosign verify ghcr.io/notharshhaa/mainframe-mcp-server:3.0.0 \
  --certificate-identity-regexp 'https://github.com/NotHarshhaa/mainframe-mcp-server/\.github/workflows/release\.yml@refs/tags/v' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com

The docker-compose file and the Helm chart ship hardened defaults (read_only, cap_drop: ALL, no-new-privileges, seccomp RuntimeDefault, non-root uid 1000).


Enterprise security

Security is enforced at the MCP server layer, in addition to RACF/z/OSMF permissions on the mainframe itself. Every control below is enabled through environment variables:

Control

Env variable

Purpose

Read-only mode

SECURITY_READ_ONLY

Default true: submit_jcl, approve_write, and write operations are blocked unless you explicitly opt in

Tool allowlist

SECURITY_ALLOWED_TOOLS

Only permit specific tools (least privilege)

Tool blocklist

SECURITY_BLOCKED_TOOLS

Explicitly deny dangerous tools

Dataset boundaries

SECURITY_ALLOWED_DATASET_PATTERNS

Restrict dataset access by HLQ pattern

USS boundaries

SECURITY_ALLOWED_USS_PATHS

Restrict USS paths by prefix

Audit logging

SECURITY_AUDIT_LOGGING=true

Log every tool call (credentials redacted)

JCL size limit

SECURITY_MAX_JCL_BYTES

Cap inline JCL submit size

TLS verification

ZOSMF_REJECT_UNAUTHORIZED=true

Enforce certificate validation (default true)

Enterprise features

Four scale-up capabilities build on these controls — see docs/enterprise.md for the full guide and config/policy.example.yaml for a worked policy:

  • Multi-environment support — name several systems (DEV/TEST/UAT/PROD, multiple LPARs) via a policy file or ZOSMF_ENVIRONMENTS; every tool takes an environment argument; each environment carries its own credentials and policy, e.g. readOnly: true on PROD.

  • Policy-as-code & RBAC — one YAML file (SECURITY_POLICY_FILE) maps roles to tool allow/deny lists, dataset/USS globs, change-ticket rules, and users to roles per environment; ${env:VAR} keeps credentials out of the file; unknown users fail closed.

  • Audit & SIEM — structured JSON audit records with correlation ids (user, MCP client, tool, redacted arguments, outcome, duration, result size), exported to a file, Splunk HEC, any HTTP webhook (ELK/syslog bridges), or OpenTelemetry. Records are SHA-256 hash-chained (tamper-evident); verify with npm run verify:audit.

  • Data protection — PII, credit-card numbers (Luhn-validated), SSNs, embedded secrets, JWTs, and private keys are masked in job output and dataset/USS reads by default; policy classifications add per-resource redaction rules, line caps, head/tail sampling, and role-gated access.


Per-user identity & SSO

By default the server authenticates to z/OSMF with one configured credential. Enterprise deployments usually need RACF to see who asked, not "the MCP service account". Four mechanisms are built in:

PassTicket identity propagation — the strongest fit for shared deployments:

ZOSMF_USER_ID=PAYUSR            # the end user RACF should see
ZOSMF_PASSTICKET_APP=ZOSMF      # PTKTDATA application (RDEFINE PTKTDATA ZOSMF ...)

The server authenticates with the service credential, calls the z/OSMF Generate PassTicket API for PAYUSR, and issues every z/OSMF call under a PassTicket-authenticated session as that user. PassTickets are cached for 8 minutes and regenerated transparently; CICS/Db2 REST calls keep the service identity. Requires the service account to be permitted to generate PassTickets for the target user.

mTLS client certificates:

ZOSMF_CERT=/pki/client.pem
ZOSMF_CERT_KEY=/pki/client.key

Certificate authentication takes precedence over token/basic. Combine with a RACF IDID mapping (certificate → user) for certificate-based identity.

JWT / APIML tokens (SSO):

ZOSMF_TOKEN=$JWT
ZOSMF_TOKEN_TYPE=APIML     # or JWT — both travel as Authorization: Bearer
ZOSMF_BASE_PATH=/api/v1    # APIML gateway prefix

ZOSMF_TOKEN_TYPE=LTPA2 (default) keeps classic z/OSMF session-token behavior. Full OIDC/SSO flows run in your IdP/gateway — inject the issued JWT via ZOSMF_TOKEN_FILE so a vault or credential-helper agent can refresh it without touching the config file.

Zowe team config import — reuse existing Zowe connection settings:

ZOWE_TEAM_CONFIG=/root/.zowe/zowe.config.json
ZOSMF_PROFILE=lpar1.zosmf    # default: defaults.zosmf

Any z/OSMF setting (host, port, base path, credentials, rejectUnauthorized) not set via environment variables is filled from the profile. Values marked @secure are honored when stored in the config file itself; secrets held by an OS-keychain credential manager are not readable by this process and are skipped. Environment variables always win.


Governed writes

submit_jcl is the only way an agent can mutate anything on z/OS — so it runs through a governance pipeline before JES ever sees the job. Every layer is independent; enable what your change process requires.

Gate

Env variable

Default

Pre-flight JCL scan

SECURITY_JCL_SCAN

on

Strict scan mode (WARN blocks)

SECURITY_JCL_SCAN_STRICT

off

Blocked utilities

SECURITY_BLOCKED_PROGRAMS

ADRDSSU, ICKDSF, IEHINITT

Restricted job classes

SECURITY_BLOCKED_JOB_CLASSES

none

Change-ticket requirement

SECURITY_CHANGE_TICKET_PATTERN

off

Change window

SECURITY_WRITE_WINDOW / SECURITY_WRITE_DAYS / SECURITY_WRITE_WINDOW_TZ

off / every day / UTC

Human-in-the-loop approval

SECURITY_WRITE_APPROVAL

off

The pre-flight scan blocks, with rule name and JCL line number:

  • IDCAMS DELETE in SYSIN instream data (IDCAMS ALTER is a WARN; blocks in strict mode)

  • IEFBR14 steps that delete datasets via DISP=(,DELETE) / DISP=(MOD,DELETE)

  • Blocked utilities — destructive storage programs by default (ADRDSSU, ICKDSF, IEHINITT), extendable with SECURITY_BLOCKED_PROGRAMS

  • Restricted JES job classes via CLASS=

Change tickets: with SECURITY_CHANGE_TICKET_PATTERN=CHG[0-9]{6}, every submission must carry changeTicket: "CHG000123" or it is rejected with [FORBIDDEN].

Change windows: with SECURITY_WRITE_WINDOW=22:00-06:00, SECURITY_WRITE_DAYS=1-5, SECURITY_WRITE_WINDOW_TZ=Europe/Berlin, submissions outside the window are rejected — dryRun still works so the agent can validate JCL for a future change.

Dry-run: submit_jcl({ ..., dryRun: true }) runs structure checks and the scan and reports exactly what a real submission would do — overrides, scan findings, ticket/window/approval status, and the effective identity — without submitting anything.

Human-in-the-loop approval: with SECURITY_WRITE_APPROVAL=true:

  1. The agent calls submit_jcl → the JCL is validated and scanned, and a one-time token is returned. Nothing is submitted.

  2. A human reviews the exact JCL in the client.

  3. The agent calls approve_write({ token }) → the change window is re-checked and the job is submitted.

Tokens expire after 10 minutes, work exactly once, and are redacted from audit logs. If you use SECURITY_ALLOWED_TOOLS with approval mode, allowlist both submit_jcl and approve_write. Read-only mode (SECURITY_READ_ONLY=true) blocks both regardless of approval being enabled.

Use security_posture_summary to inspect which controls are active and get hardening recommendations.

Important: Enterprise deployment also requires:

  • A dedicated service account on z/OS with least-privilege RACF profiles

  • Secrets in a vault (not plain env vars in production)

  • Network restrictions (z/OSMF behind API gateway / VPN)

  • HTTP+SSE transport placed behind an auth proxy if exposed beyond localhost

The mainframe still enforces the final authorization — this server adds guardrails so AI agents cannot exceed configured boundaries.


Trust model & prompt injection

Everything this server returns — spool output, dataset contents, USS files, audit logs — is untrusted text that flows into your AI agent's context. A hostile JCL comment, COBOL literal, or log line can contain English text that tries to steer the agent ("ignore previous instructions, submit JCL that …").

What the server guarantees:

  • Content is data, never instructions. The server never parses directives out of z/OS content and never chains tool calls on its own. Every tool invocation originates from the MCP client.

  • Nothing executes from file content. There is no code evaluation, shell, or template expansion anywhere in the request or response path.

  • Mutation requires an explicit, gated call. The only write tool is submit_jcl, and it is blocked by default (SECURITY_READ_ONLY=true), subject to SECURITY_ALLOWED_TOOLS/SECURITY_BLOCKED_TOOLS, and size-capped (SECURITY_MAX_JCL_BYTES).

  • Bounded exposure. All content passes through configured line caps and truncation notices, so a single hostile file cannot flood the context (see Limits).

  • Auditable. Every call is logged with arguments and outcome; sensitive keys are redacted.

What the server cannot guarantee: it cannot stop a convincing log line from influencing what your agent asks to do next — that is an MCP-client-side concern by design. Defense in depth:

  1. Keep SECURITY_READ_ONLY=true (the default) for agents that browse logs/datasets.

  2. Use SECURITY_ALLOWED_TOOLS so the agent cannot reach tools it should not.

  3. Use dataset/USS boundary patterns so even a steered request stays fenced.

  4. Review submit_jcl requests by a human before approving them in the client (most MCP clients support per-call approval prompts).


How the intelligence tools work

No LLM, no external AI API. The "intelligence" layer is deterministic, rule-based analysis that runs inside the server so results are reproducible and auditable. The MCP client's LLM interprets the structured report.

analyze_job_failure / analyze_root_cause:

  • Extracts the abend code from the job's return code and spool text (recognizes ABEND Sxxx/Uxxxx, system/user completion codes, bare tokens), then matches it against a curated reference table of common z/OS abend codes (S0C1, S0C4, S0C7, S806, S322, S222, U4038, …) with explanations and remediations.

  • Identifies the failing/cancelled step and program from JES message patterns (IEF450I, IEF142I, IEF473I, CSV0nnnI, module-not-found).

  • Correlates the failure with other failed jobs currently visible in the JES output queue within the look-back window (lookbackHours, default 72, max 720).

  • Confidence means exactly: HIGH = abend code + failing step + spool evidence all found; MEDIUM = abend code or failing step found; LOW = neither — treat the report as a starting point.

  • Health score (0–100) = 100 − 8 × similar incidents (max −40) − 5 × correlated abend types (max −30), with a confidence-based floor. It is a trend indicator, not an SLA metric.

predict_batch_failures:

  • Groups recent failed jobs by job name and scores each with a recency-weighted count: every failure contributes 3 if it happened in the newest quarter of the window, 2 in the newest half, 1 otherwise; +10 when a known abend code is involved; scaled and capped at 100.

  • Risk levels: CRITICAL ≥ 75, HIGH ≥ 50, MEDIUM ≥ 25, else LOW.

  • Trend compares failure counts in the newest vs oldest third of the window (INCREASING / STABLE / DECREASING).

Known limitation (important for reviewers): JES only exposes jobs still in the system. "History" means failures currently listed in the OUTPUT queue (capped at MAX_FAILED_JOB_RESULTS), not a query of SMF archives. For long-horizon analytics, feed SMF data into a real analytics platform — this tool answers "what is failing right now, repeatedly?"


Incident management & runbooks

Bridge investigations into your ITSM flow. Configure one provider and create_incident_ticket registers automatically; without configuration the server behaves exactly as before.

// ServiceNow — Table API with basic auth
"INCIDENT_PROVIDER": "servicenow",
"INCIDENT_BASE_URL": "https://acme.service-now.com",
"INCIDENT_USER": "svc-mcp",
"INCIDENT_TOKEN": "<password or OAuth token>",
"INCIDENT_SERVICENOW_TABLE": "incident",          // default
"INCIDENT_SERVICENOW_CALLER_ID": "<sys_id>",       // optional

// Jira — REST API v3, basic auth with account email + API token
"INCIDENT_PROVIDER": "jira",
"INCIDENT_BASE_URL": "https://acme.atlassian.net",
"INCIDENT_USER": "mcp-bot@acme.com",
"INCIDENT_TOKEN": "<API token>",
"INCIDENT_JIRA_PROJECT": "OPS",
"INCIDENT_JIRA_ISSUE_TYPE": "Bug",                 // default

// PagerDuty — Events API v2 (routing-key auth, dedup per job)
"INCIDENT_PROVIDER": "pagerduty",
"INCIDENT_PAGERDUTY_ROUTING_KEY": "<routing key>"

Shared settings: INCIDENT_SEVERITY (default error), INCIDENT_LABELS (comma-separated; applied to ServiceNow comments and Jira labels), and INCIDENT_RUNBOOKS — a JSON map linking abend codes to your own runbooks:

"INCIDENT_RUNBOOKS": "{\"S0C7\": \"https://wiki.acme.com/runbooks/s0c7\", \"S2*\": \"https://wiki.acme.com/runbooks/jes-timeouts\", \"U*\": \"https://wiki.acme.com/runbooks/user-abends\"}"

Exact codes win over patterns; matches attach to lookup_abend_code output, investigate_incident bundles, and every created ticket. Creating a ticket is a governed write: blocked by SECURITY_READ_ONLY, subject to policy RBAC, and audited like every other tool call. The ticket embeds the full incident bundle — failure analysis, abend reference, runbook link, internal-doc excerpts, spool inventory, and diagnostic excerpts.

RAG over internal documentation

Point DOCS_SOURCES at comma-separated local .md/.txt files or directories (walked recursively; node_modules and dot-directories are skipped):

"DOCS_SOURCES": "/opt/mcp-docs/runbooks,/opt/mcp-docs/playbooks",
"DOCS_MAX_RESULTS": "3",        // excerpts per search / bundle
"DOCS_MAX_EXCERPT_CHARS": "1200",
"DOCS_REFRESH_SECONDS": "300"   // re-index TTL (0 = index once at startup)

Retrieval is local TF-IDF — zero dependencies, no external embedding API, and document contents never leave the host. Excerpts (with file and heading attribution) attach automatically to incident bundles and abend lookups next to the built-in reference, and search_internal_docs queries them directly.


Quick start

Requirements: Node.js 18+, a reachable z/OSMF endpoint, and valid z/OS credentials (see z/OS prerequisites).

Install via npm

npx -y @notharshhaa/mainframe-mcp-server

When you add this server in your IDE (Cursor, VS Code, Claude Desktop, etc.), the installer prompts for connection settings (driven by server.json). Those values are stored in your MCP config file — not in a .env file.

Example MCP config — token auth, the recommended setup. Source the token from your vault or the IDE's secret storage rather than hardcoding it (see also config/mcp-client.example.json):

{
  "mcpServers": {
    "mainframe": {
      "command": "npx",
      "args": ["-y", "@notharshhaa/mainframe-mcp-server"],
      "env": {
        "ZOSMF_HOST": "your-zosmf-host.internal",
        "ZOSMF_PORT": "443",
        "ZOSMF_TOKEN": "your-zosmf-token",
        "ZOSMF_TOKEN_TYPE": "LTPA2"
      }
    }
  }
}

Basic auth (ZOSMF_USER + ZOSMF_PASSWORD) is also supported — if you use it, inject the values from a vault or secret manager instead of pasting them into the config file.

Run from source

git clone https://github.com/NotHarshhaa/mainframe-mcp-server.git
cd mainframe-mcp-server
npm install
npm run build

Point your IDE at dist/index.js and set env in MCP config (copy from config/mcp-client.example.json), or export variables in your shell before npm start.

Environment variables

Variable

Required

Description

ZOSMF_HOST

yes

z/OSMF hostname

ZOSMF_TOKEN

yes*

Token auth — recommended over basic credentials

ZOSMF_TOKEN_TYPE

no

Token type (default LTPA2)

ZOSMF_USER / ZOSMF_PASSWORD

yes*

Basic auth — alternative to token auth

ZOSMF_PORT

no

HTTPS port (default 443)

ZOSMF_REJECT_UNAUTHORIZED

no

TLS verification (default true)

* Provide either a token or user/password.

Full configuration reference: docs/configuration.md

Tested clients

Any MCP client that launches stdio servers works. Known-good setups:

Client

Config location

Claude Desktop

claude_desktop_config.json → mcpServers

Cursor

~/.cursor/mcp.json (or project .cursor/mcp.json)

VS Code (Copilot / MCP)

user or workspace MCP settings

Claude Code / other CLIs

standard mcpServers block


Transports

Two MCP transports are supported, selected with MCP_TRANSPORT:

Transport

How to enable

Use when

stdio (default)

Omit MCP_TRANSPORT

IDE / desktop MCP clients (Cursor, VS Code, Claude Desktop). Logs go to stderr only.

HTTP+SSE

MCP_TRANSPORT=sse

Containerized or shared deployments. Endpoints: GET /sse (open stream), POST /messages?sessionId=…, GET /health. Place it behind an auth proxy if exposed beyond localhost.

Streamable HTTP is not supported yet. The MCP spec has moved from HTTP+SSE to Streamable HTTP, and this server still implements the legacy HTTP+SSE transport. Clients that only speak Streamable HTTP should launch the server over stdio (or front it with a transport shim). See docs/deployment.md.


Limits & timeouts

Output is truncated, never paginated — every cap emits an explicit [truncated N of M lines] notice plus guidance to narrow filters.

Limit

Env variable

Default

Applies to

Spool DD lines

MAX_JOB_OUTPUT_LINES

5000

One spool DD (get_job_output, JCL)

File lines

MAX_DATASET_READ_LINES

2000

One dataset / PDS member / USS file read

Diagnostic DDs

MAX_JES_SPOOL_FILES

20

Spool files fetched per failure analysis

Audit lines

MAX_AUDIT_LINES

500

RACF audit text parsed per query

Job list results

MAX_JOB_LIST_RESULTS

500

list_jobs before agent-side filters

Failed-job results

MAX_FAILED_JOB_RESULTS

100

find_failed_jobs, intelligence correlation

JCL payload

SECURITY_MAX_JCL_BYTES

65536

submit_jcl input size

Timeouts & concurrency:

  • submit_jcl wait=true polls JES every 2 s for up to timeout seconds (default 30, max 300).

  • REST calls use the Zowe SDK / Node defaults — there is no client-side retry loop; transient failures surface as [CONNECTION_ERROR] results the agent can retry.

  • One shared z/OSMF session; requests are executed as the MCP client dispatches them, with no client-side rate limiter. z/OSMF's own server-side concurrency limits apply — heavy parallel tool use should be throttled by the client or the gateway.


Troubleshooting & FAQ

All tool errors come back as [ERROR_CODE]: message — codes are stable and listed in docs/tools-reference.md.

[CONNECTION_ERROR] — z/OSMF authentication failed (401/403) Credentials rejected by z/OSMF. Check: user/password or token validity; ZOSMF_TOKEN_TYPE matches how the token was issued (LTPA2 vs JWT); the account is not revoked. An expired TSO password also surfaces here — log on via TSO once to reset it, then retry.

[CONNECTION_ERROR] — certificate / TLS errors Self-signed or private-CA z/OSMF certificate. Preferred fix: trust the CA chain, e.g. NODE_EXTRA_CA_CERTS=/path/to/ca.pem. For throwaway dev only: ZOSMF_REJECT_UNAUTHORIZED=false (logs a warning; never in production).

[CONNECTION_ERROR] — unable to reach z/OSMF (ENOTFOUND / ECONNREFUSED / ETIMEDOUT) Host/port wrong, VPN not connected, or you are behind an API mediation layer — set ZOSMF_BASE_PATH to your gateway prefix.

[CONFIG_ERROR] — CICS/Db2/RACF tools refuse to run Those tools need optional setup: CMCI_CONTEXT, DB2_LOCATION, or RACF_AUDIT_USS_PATH/RACF_AUDIT_DATASET. See z/OS prerequisites. The error message names the exact variable.

[NOT_FOUND] — job/dataset not found Job ids are JES-qualified (JOB01234, STC00012, TSU00123) and jobs vanish when purged from the OUTPUT queue. For datasets, check the HLQ and that the name is cataloged (migrated/HSM datasets may still resolve but show MIGRATED).

[FORBIDDEN] — tool blocked or write rejected Read-only mode (the default) blocks submit_jcl and approve_write; an allowlist/blocklist rule matched; the pre-flight scan found a destructive construct; the change ticket was missing or malformed; or the submission is outside the change window. The error message names the specific gate — each one is an operator decision (env variables), not something the agent can turn off.

The client doesn't show any tools Check stderr for the startup log (mainframe-mcp-server connected over stdio). Invalid config aborts with a variable-by-variable message. Set LOG_LEVEL=debug for per-call tracing. Requires Node 18+.

HTTP+SSE returns 400 Unknown or missing sessionId The SSE session was restarted; reconnect GET /sse and use the fresh sessionId.


Examples

Why did a job fail?

User:  Why did PAYJOB01 fail?
Agent: analyze_job_failure({ jobId: "JOB01234" })
Job:     PAYJOB01 (JOB01234)
Status:  ABEND S806
Step:    STEP030 - LOADPGM
Reason:  Program load failure — module PAYRPTX not found
Fix:     Verify PAYRPTX is compiled and linked into the correct load library.

Failed jobs in the last 24 hours

User:  Show me all failed jobs from the last 24 hours
Agent: find_failed_jobs({ hours: 24 })

Read a dataset member

User:  Show me SYS1.PROCLIB(IKJEFT01)
Agent: read_dataset({ dsn: "SYS1.PROCLIB", member: "IKJEFT01" })

What does abend S0C7 mean?

User:  What is abend S0C7?
Agent: lookup_abend_code({ code: "S0C7" })

Predict which batch jobs might fail next

User:  Which batch jobs are at risk of failing?
Agent: predict_batch_failures({ hours: 168 })

Project & community


License

MIT — see LICENSE


Trademarks

Not affiliated with IBM or the Open Mainframe Project. IBM, z/OS, CICS, Db2 and RACF are trademarks of IBM.

Available Tools

55 tools
analyze_job_failureA
Read-onlyIdempotent

Analyze a failed job: identify the abend code, failing/cancelled step, program, and a suggested fix. Produces a rich 3-section report.

NameRequiredDescriptionDefault
jobIdYesJES job id of the failed job, e.g. "JOB01234".
spoolDdNoForce analysis to read a specific DD instead of the auto-priority list (e.g. "JESYSMSG").
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.
includeEvidenceNoInclude supporting spool evidence lines in the output (default: true).

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful output shape ("rich 3-section report") and discloses that it extracts step/program/fix, but says nothing about behavior on edge cases — a job that succeeded, an unknown jobId, or spool-unavailable conditions — nor about cost or latency of the multi-step analysis.

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

Conciseness4/5

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

Two short sentences, front-loaded with the action and immediately followed by the concrete outputs. "Rich" is slightly promotional filler, but the rest of the text is dense and earns its place.

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

Completeness4/5

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

With no output schema, the description usefully compensates by naming the report contents and its three-section structure, which tells the agent what to expect back. What's missing is routing context within a large sibling set and any statement of prerequisites (e.g., needing a failed jobId first).

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

Parameters3/5

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

Schema description coverage is 100%, with jobId, spoolDd, environment, and includeEvidence all documented in-schema, so baseline is 3. The description adds no parameter-level meaning, such as when to override spoolDd or how environment resolution interacts with list_environments.

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

Purpose4/5

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

States a specific verb and resource ("Analyze a failed job") and enumerates the concrete artifacts produced (abend code, failing/cancelled step, program, suggested fix). It does not differentiate itself from closely related siblings such as find_failed_jobs, summarize_abends, lookup_abend_code, or analyze_root_cause, so an agent must infer which one fits.

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

Usage Guidelines3/5

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

Usage is implied by "a failed job" — the agent can infer this is the deep-dive after a failure is identified — but there is no explicit when-to-use framing, no pointer to find_failed_jobs as the discovery step, and no exclusions against summarize_abends or analyze_root_cause.

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

analyze_logrecA

Submit an EREP (IFCEREP) report job against the LOGREC dataset, wait for completion, and summarize hardware/software error records (gated write: submits a batch job).

NameRequiredDescriptionDefault
reportNoEREP report type (default SUMMARY).
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.
waitSecondsNoHow long to wait for the EREP job (default 60s).
logrecDatasetNoLOGREC dataset (default LOGREC_DATASET, typically SYS1.LOGREC).

TDQS

A4/5.0
Behavior4/5

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

Adds real context beyond the annotations: the call actually submits a batch job and blocks waiting for it, and the parenthetical 'gated write' warns that write semantics apply even though destructiveHint is false. It does not explain what the gate requires (e.g., approve_write) or what happens if the wait times out, which keeps it below 5.

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

Conciseness5/5

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

A single front-loaded sentence covering action, resource, wait behavior, and output, with the write caveat tucked in parentheses. Nothing is redundant.

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

Completeness4/5

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

For a 4-parameter, zero-required tool with annotations and no output schema, the description covers action, blocking behavior, write gating, and the kind of records returned. What's missing is the approval workflow precondition and timeout/failure behavior, which an agent would need before invoking.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (report enum, environment, waitSeconds, logrecDataset) are already documented with defaults and bounds. The description only echoes the LOGREC dataset target and adds no format or interaction details beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb chain (submit an EREP/IFCEREP report job, wait, summarize) against a named resource (the LOGREC dataset) and names the output domain (hardware/software error records). That is clearly distinct from siblings such as summarize_abends, analyze_job_failure, or read_dataset, which operate on different data sources.

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

Usage Guidelines3/5

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

Usage is only implied: the mention of a 'gated write' hints that approval is involved, and 'wait for completion' implies a blocking call, but the description never says when to choose this over analyze_root_cause, summarize_abends, or investigate_incident, nor when not to use it.

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

analyze_root_causeB
Read-onlyIdempotent

Deep AI-assisted root-cause analysis: full failure details, abend reference, similar-incident correlation, correlated abends, health score, and prioritized action items.

NameRequiredDescriptionDefault
jobIdYesJES job id of the failed job to analyze, e.g. "JOB01234".
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.
lookbackHoursNoHours of history for correlation. Defaults to 72 (3 days), max 720 (30 days).

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds that the analysis is 'deep' and 'AI-assisted' and enumerates the deliverables, but gives no sense of latency, cost, or data scope for what is presumably a heavyweight call, and there is no output schema to fall back on.

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

Conciseness4/5

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

A single front-loaded sentence with no filler; every clause names a distinct output the agent will receive. Slightly list-like but efficient for the amount of information conveyed.

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

Completeness3/5

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

Because no output schema exists, the enumeration of returned artifacts is genuinely useful. But for an AI-driven analysis call sitting among several overlapping analysis siblings, the definition leaves the agent without selection criteria or any hint of cost/duration, so it is only adequate, not complete.

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

Parameters3/5

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

Schema description coverage is 100%: jobId format, environment lookup via list_environments, and lookbackHours default/max are all documented in the schema. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Deep AI-assisted root-cause analysis') and enumerates what it produces: failure details, abend reference, incident correlation, health score, action items. However, it draws no boundary against the near-identical siblings analyze_job_failure and investigate_incident, so an agent cannot tell from the description which analysis tool to pick.

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

Usage Guidelines2/5

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

There is no when-to-use guidance at all. With three overlapping failure-analysis siblings in the toolset, the absence of any routing rule or prerequisite (e.g., 'run after get_job_status confirms failure') is a meaningful gap; only the required jobId parameter implicitly signals it applies to a failed job.

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

approve_writeA
Destructive

Approve and execute a pending JCL submission (human-in-the-loop). Requires the one-time token from submit_jcl; active only when SECURITY_WRITE_APPROVAL=true.

NameRequiredDescriptionDefault
tokenYesOne-time approval token returned by submit_jcl when write approval is enforced.
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the risk profile is covered. The description adds genuinely new context: the human-in-the-loop gate, the one-time token, and the SECURITY_WRITE_APPROVAL environment condition. It stops short of describing what happens on token expiry or failure, hence not a 5.

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

Conciseness5/5

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

Two compact sentences with zero filler; the core action is front-loaded and the prerequisite/environment gate follows immediately. Every clause earns its place.

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

Completeness4/5

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

For a 2-parameter mutation with no output schema and annotations covering the risk profile, the description supplies the essential gate conditions and token origin. It could say more about failure modes (invalid/expired token) but is otherwise sufficient to invoke correctly.

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

Parameters3/5

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

Schema coverage is 100% and both parameters (token, environment) are documented in the schema, so the schema carries the load. The description only reinforces that the token originates from submit_jcl, adding marginal value beyond the existing field description. Baseline 3.

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

Purpose5/5

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

States a specific verb+resource ('Approve and execute a pending JCL submission') and adds the human-in-the-loop qualifier that distinguishes it from submit_jcl and the many read-oriented siblings. An agent can separate it from submit_jcl without opening either schema.

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

Usage Guidelines5/5

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

Explicitly names the prerequisite ('Requires the one-time token from submit_jcl') and the activation condition ('active only when SECURITY_WRITE_APPROVAL=true'). This routes the agent to submit_jcl first and tells it when this tool is available at all.

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

cancel_jobA
Destructive

Cancel a running or queued job via the z/OSMF jobs API (gated write).

NameRequiredDescriptionDefault
jobIdYesJES job id, e.g. "JOB01234".
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description adds 'gated write,' which usefully signals that approval or gating may be required. However, it does not explain what happens to the job, whether cancellation is reversible, or how gating works in practice.

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

Conciseness5/5

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

A single front-loaded sentence with no wasted words. The core action and scope are immediately clear.

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

Completeness3/5

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

The tool is simple with two parameters covered by the schema and safety traits covered by annotations. The description is adequate but leaves gaps around gating mechanics and post-cancellation behavior, which matter for a destructive write operation.

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

Parameters3/5

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

Schema description coverage is 100%, and both parameters are fully documented in the schema. The description adds no parameter-specific meaning beyond the schema, which is the baseline case for full coverage.

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

Purpose4/5

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

States a specific verb and resource: cancel a running or queued job. The scope (running or queued) is clear. It does not explicitly differentiate itself from sibling lifecycle tools like hold_job or release_job, so it stops short of a 5.

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

Usage Guidelines3/5

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

The phrase 'running or queued job' implies when the tool applies, but there is no explicit when-not guidance or named alternative. An agent can infer usage from the verb and resource, but the routing guidance is only implied.

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

cics_disable_transactionA
Destructive

Disable a CICS local transaction via a CMCI SET action (ENABLESTATUS=DISABLED) — gated write. New work is refused; in-flight tasks finish.

NameRequiredDescriptionDefault
enableNotrue = ENABLE the transaction instead (default false = disable).
regionYesCICS region APPLID.
contextNoCMCI context. Defaults to CMCI_CONTEXT.
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.
transactionYesTransaction id (1–4 chars).

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false; the description adds genuinely new semantics — that this is a gated write and that in-flight tasks are allowed to complete rather than being killed. It does not explain what the gate is (e.g. whether approve_write must be called first) or what the response contains, so it stops short of full disclosure.

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

Conciseness5/5

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

One compact sentence with the verb and resource front-loaded, followed by the scope note and the in-flight-tasks caveat. No filler, and the most decision-relevant facts come first.

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

Completeness4/5

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

Adequate for a 5-parameter mutation tool: annotations carry the destructive/idempotent profile, the schema documents every parameter, and there is no output schema to explain. The only real omission is the unresolved meaning of 'gated write' and what the tool returns on success.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters, including the enable-inversion behavior, are already documented in structured form. The description restates the ENABLESTATUS mapping without adding format or constraint detail beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

A specific verb and resource — 'Disable a CICS local transaction' — plus the exact CMCI mechanism (SET with ENABLESTATUS=DISABLED). The schema's enable flag is echoed, so an agent can tell this apart from list_cics_transactions or cics_newcopy immediately.

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

Usage Guidelines3/5

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

'New work is refused; in-flight tasks finish' implies the operational reason to use it (quiescing a transaction) but never states when to choose it over alternatives or when not to use it. 'Gated write' hints at a prerequisite step without naming it, leaving the agent to infer how the gate is satisfied.

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

cics_newcopyA

NEWCOPY a CICS program (phased-in fresh copy) via a CMCI resource action — gated write. Requires CMCI with actions enabled (CICS TS 5.6+).

NameRequiredDescriptionDefault
regionYesCICS region APPLID.
contextNoCMCI context. Defaults to CMCI_CONTEXT.
programYesProgram name (1–8 chars).
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare a non-read-only, non-idempotent, non-destructive write, so the bar is lower. The description still adds non-obvious context: that the write is gated (needs approval), and that it requires CMCI actions support on CICS TS 5.6+, which an agent cannot infer from the schema. It does not say what happens to in-flight tasks during the phase-in, which is the main remaining behavioral gap.

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

Conciseness5/5

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

A single front-loaded sentence carrying the action, its semantics, the mechanism, and the prerequisite, with no filler. Every clause earns its place.

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

Completeness3/5

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

No output schema exists, and while parameters and safety hints are covered, the description leaves the 'gated write' mechanic unresolved: it never says whether the agent must first obtain approval (e.g., via approve_write) or what a successful NEWCOPY reports back. For a write action that affects a running production region, that is a material omission.

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

Parameters3/5

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

Schema coverage is 100% across all four parameters, including the environment pointer back to list_environments, so the schema already does the work. The description contributes no additional parameter meaning, which is the expected baseline when coverage is complete.

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

Purpose4/5

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

States a specific verb (NEWCOPY) and resource (a CICS program), and parenthetically defines the jargon as a 'phased-in fresh copy', which is genuinely useful. It also notes the mechanism (CMCI resource action), distinguishing it from console-driven or transaction-level siblings like cics_disable_transaction, though it never names a sibling explicitly.

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

Usage Guidelines3/5

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

Gives a real prerequisite ('Requires CMCI with actions enabled (CICS TS 5.6+)') and flags it as a 'gated write', implying the approval flow, but never states when to choose this versus other remediation actions or what the gating step actually is. Usage is implied rather than spelled out.

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

compare_jobsA
Read-onlyIdempotent

Compare status, return code, and failure indicators for two jobs side by side.

NameRequiredDescriptionDefault
jobId1YesFirst JES job id.
jobId2YesSecond JES job id.
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety and idempotency profile is fully covered. The description adds the scope of what is compared (status, return code, failure indicators), but says nothing about behavior for missing jobs, mixed-environment comparison, or environment defaulting. Adequate but not rich, given annotations carry the main burden.

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

Conciseness5/5

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

A single front-loaded sentence with the compared fields enumerated immediately and no filler. Every clause earns its place.

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

Completeness4/5

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

For a read-only comparison tool with a fully-documented schema and annotations covering safety and idempotency, the description says enough to call it correctly: which two IDs, optional environment, and what is compared. The only minor gap is how it behaves with invalid or cross-environment job IDs, which is not stated.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters (jobId1, jobId2, environment) are already documented in the schema, including the pointer to list_environments for the environment parameter. The description adds no format or syntax detail beyond the schema, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb (compare) and resource (two jobs) plus the exact fields it reports on: status, return code, and failure indicators. This is clearly distinguishable from get_job_status or analyze_job_failure, which handle one job or failure analysis, not side-by-side diffing.

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

Usage Guidelines2/5

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

The phrase 'side by side' implies the comparison use case, but there is no explicit guidance on when to prefer this over calling get_job_status twice, nor any mention of prerequisites or when not to use it. Usage must be inferred from the name and description alone.

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

estimate_mlc_costA
Read-onlyIdempotent

Estimate MLC cost attribution from CPU seconds or MSU consumption. Pricing assumptions come from CAPACITY_MSU_RATING and MLC_MSU_MONTHLY_PRICE.

NameRequiredDescriptionDefault
jobIdNoJES job id — CPU is read from its JESMSGLG (mutually exclusive with the numeric inputs).
cpuSecondsNoExplicit CPU seconds to attribute.
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.
msuConsumedNoExplicit MSU consumption (skips the capacity conversion).

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/non-destructive, so the safety bar is low, and the description adds real context by disclosing that prices derive from the CAPACITY_MSU_RATING and MLC_MSU_MONTHLY_PRICE configuration values — telling the agent results are config-dependent. It stops short of saying what happens when those configs are unset or what the returned estimate looks like.

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

Conciseness5/5

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

Two tight sentences: the capability is front-loaded and the pricing-source caveat follows as supporting context. Nothing is redundant with the name or title.

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

Completeness3/5

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

With no output schema, the description carries the burden of describing the return, and it never says whether the result is a dollar figure, a cost breakdown, or an MSU-to-cost mapping. It also leaves the all-parameters-optional situation (nothing can be estimated without jobId, cpuSeconds, or msuConsumed) unaddressed, though annotations and the rich schema cover most of the rest.

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

Parameters3/5

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

Schema coverage is 100%, so all four parameters are already fully documented, and the description does not elaborate beyond the schema. It implies the CPU-vs-MSU choice but adds no format, unit, or precedence detail for the mutually exclusive inputs, nor mentions the optional `environment` parameter. Baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb and resource ("Estimate MLC cost attribution") and names the two measurement bases it accepts (CPU seconds or MSU consumption), which maps directly onto the schema's numeric inputs. It is immediately distinguishable from the job/CICS/DB2 siblings, none of which deal with cost, though it does not explicitly say so.

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

Usage Guidelines3/5

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

Usage is implied by the two input modes, and the schema documents that jobId is mutually exclusive with the numeric inputs, but the description itself offers no when-to-use guidance, no prerequisites, and no routing to any alternative sibling.

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

find_failed_jobsB
Read-onlyIdempotent

Find all failed jobs within a recent time window and summarize their abend/step.

NameRequiredDescriptionDefault
hoursNoLook-back window in hours. Defaults to 24.
ownerNoOwner filter. Defaults to "*" (all owners).
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already establish readOnly, idempotent, non-destructive, open-world behavior. The description adds one useful behavioral fact beyond that: results are summarized by abend/step rather than returned as raw job records. It still says nothing about result limits, grouping, or whether the summary is aggregated counts or per-job lines.

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

Conciseness5/5

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

A single front-loaded sentence with no filler; the scope (recent window) and the output shape (abend/step summary) both land immediately.

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

Completeness3/5

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

With all parameters optional and no output schema, the description could clarify what the summary looks like (grouped counts vs. per-job entries) and whether there are result caps. Annotations cover safety, so this is adequate but not complete for a summarization tool whose return shape is unspecified.

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

Parameters3/5

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

Schema description coverage is 100% – hours, owner, and environment all have descriptions including defaults and the list_environments pointer. The description adds no parameter meaning beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('find all failed jobs') plus an output behavior ('summarize their abend/step'), and the time-window scoping is clear. It does not explicitly differentiate from close siblings like analyze_job_failure or summarize_abends, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no when-to-use / when-not-to-use guidance and no named alternative. An agent must infer that this is the bulk-failure lookup versus per-job tools like get_job_status or analyze_job_failure.

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

get_cics_region_statsB
Read-onlyIdempotent

Statistics and attributes of a CICS region from the CMCI CICSRegion resource (uptime, task counts, and other region-level fields your CMCI release provides).

NameRequiredDescriptionDefault
regionYesCICS region APPLID.
contextNoCMCI context (CICSplex or APPLID). Defaults to CMCI_CONTEXT.
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds real value by noting fields are release-dependent ('your CMCI release provides'), which warns the agent not to assume a fixed field set. It says nothing about size of response, error behavior when the region is unknown, or CMCI connectivity requirements.

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

Conciseness5/5

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

A single front-loaded sentence with a useful parenthetical; no boilerplate, no repetition of the tool name, nothing that could be cut.

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

Completeness3/5

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

For a three-parameter read tool with no output schema, the description hints at return contents (uptime, task counts) but explicitly declines to pin them down, leaving the agent unable to predict the response shape. The more serious omission is disambiguation from get_cics_region_status, which is the main correctness risk here.

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

Parameters3/5

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

Schema coverage is 100% and all three parameters carry inline descriptions (APPLID, CMCI context, named environment), so the schema does the heavy lifting. The description adds no meaning beyond the schema — it does not clarify how 'context' interacts with 'environment' or what happens when both are supplied.

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

Purpose4/5

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

Names a specific resource and source (CICS region statistics from the CMCI CICSRegion resource) and enumerates representative fields (uptime, task counts). However, it does not distinguish itself from the near-identically named sibling get_cics_region_status, so an agent cannot tell from the description alone which to call.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool, when not to, or how it relates to get_cics_region_status, list_cics_regions, or list_environments. The only hint is the 'environment' parameter's parenthetical pointing at list_environments, which is schema text, not description guidance.

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

get_cics_region_statusA
Read-onlyIdempotent

Get the current status, version, and attributes of a CICS region via CMCI.

NameRequiredDescriptionDefault
regionYesCICS region APPLID, e.g. "CICSPAY1" (max 8 chars).
contextNoCMCI context. Defaults to CMCI_CONTEXT env var.
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already cover read-only, idempotent, non-destructive, and open-world behavior, so the safety profile is clear. The description adds that data is fetched via CMCI and names the returned fields, but does not disclose failure behavior, authentication needs, or rate limits.

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

Conciseness5/5

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

A single efficient sentence front-loads the action and resource with no filler. Every part of the sentence contributes to identifying the operation.

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

Completeness4/5

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

For a low-complexity read tool with fully documented parameters and rich annotations, the description is almost complete. It names the returned fields, though it could say more about output shape or error conditions since no output schema exists.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented in the schema. The description only refers generally to a 'CICS region' and adds no syntax or semantics beyond the schema.

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

Purpose4/5

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

The description states a specific verb and resource: retrieving current status, version, and attributes of a CICS region. It is clearly distinct from list-oriented siblings, though it does not explicitly contrast itself with get_cics_region_stats or list_cics_regions.

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

Usage Guidelines3/5

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

Usage is implied by 'current status, version, and attributes of a CICS region via CMCI,' but the description never states when to use this over list_cics_regions or get_cics_region_stats. There are no explicit alternatives or exclusions.

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

get_console_messagesA
Read-onlyIdempotent

Read the operations-log tail: recent unsolicited console messages (SYSLOG-style feed) from an extended MCS console.

NameRequiredDescriptionDefault
maxLinesNoMaximum lines to return (default 200).
consoleNameNoConsole name; defaults to ZOSMF_CONSOLE_NAME.
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is covered. The description adds useful behavioral context with 'operations-log tail,' 'unsolicited,' and 'SYSLOG-style feed,' but it does not describe return format, rate limits, or pagination behavior.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. It states the core operation and the data source efficiently.

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

Completeness4/5

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

For a simple read-only tool with three fully documented optional parameters and complete safety annotations, the description is nearly sufficient. It identifies the feed type and tail semantics, though it leaves usage routing and return shape implicit.

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

Parameters3/5

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

Schema description coverage is 100%, so maxLines, consoleName, and environment are already documented in the schema. The description does not add parameter-level meaning beyond what the schema provides, so the baseline 3 is appropriate.

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

Purpose4/5

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

The description gives a specific verb and resource: 'Read the operations-log tail' and 'recent unsolicited console messages ... from an extended MCS console.' It is clearly a read-only console-feed operation, which distinguishes it in practice from issue_console_command, but it does not explicitly name that sibling alternative.

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

Usage Guidelines3/5

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

The purpose implies when the tool is useful: when an agent needs recent unsolicited console messages. However, the description gives no explicit when-to-use guidance, no exclusions, and no named alternatives among the many sibling diagnostic tools.

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

get_dataset_infoA
Read-onlyIdempotent

Get catalog attributes (DSORG, type, RECFM, LRECL, BLKSIZE, volume) for a dataset without reading its content. Optionally includes member summary for PDS/PDSE.

NameRequiredDescriptionDefault
dsnYesFully-qualified dataset name, e.g. "SYS1.PROCLIB".
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.
includeMembersNoFor PDS/PDSE: also retrieve member count and the 5 most-recently-modified members.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, so the safety profile is covered; the description adds the meaningful behavioral fact that no records are read and that member summary is an optional extra limited to PDS/PDSE. It does not describe failure behavior for a missing dataset or RACF authorization errors, which would be the next useful detail.

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

Conciseness5/5

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

Two sentences, zero filler, with the core purpose and the returned attribute list front-loaded. Every clause carries information the agent needs.

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

Completeness4/5

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

There is no output schema, yet the description compensates by naming the catalog attributes returned, which is exactly what an agent needs to decide between this and read_dataset. Minor gap: no mention of error/not-found handling or that some attributes are blank for non-VSAM datasets.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented, and the description's mention of the optional member summary largely restates includeMembers' schema text. Baseline 3 applies since there is no added syntax or format guidance beyond the schema.

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

Purpose5/5

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

Specific verb (Get) plus resource (catalog attributes for a dataset) and an explicit enumeration of returned fields (DSORG, RECFM, LRECL, BLKSIZE, volume). The phrase 'without reading its content' cleanly separates it from read_dataset in the sibling list.

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

Usage Guidelines4/5

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

The 'without reading its content' clause implicitly routes the agent here when only metadata is needed rather than a full read, and the PDS/PDSE qualifier scopes includeMembers. It stops short of explicitly naming read_dataset/search_dataset as the alternative for content or name lookups, and states no prerequisites for dataset access.

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

get_hsm_activityA
Read-onlyIdempotent

Recent DFSMShsm activity (recalls, migrations, backups) filtered from the operations-log tail.

NameRequiredDescriptionDefault
maxLinesNoMaximum HSM lines to return (default 50).
consoleNameNoConsole name; defaults to ZOSMF_CONSOLE_NAME.
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so safety is covered. The description adds genuinely useful context that results are 'filtered from the operations-log tail', implying a limited recent window rather than full history, but it never defines 'recent' or says whether older activity is reachable.

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

Conciseness5/5

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

A single front-loaded sentence with no filler; the resource and its scoping constraint come first and nothing is redundant.

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

Completeness4/5

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

For a zero-required-parameter read tool with full schema coverage and rich annotations, this is nearly sufficient: the agent knows the source (log tail), the content (HSM events), and the volume control (maxLines). A note on return format or the effective time window would close the last gap.

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

Parameters3/5

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

Schema description coverage is 100% — maxLines, consoleName, and environment are all documented in-schema, including the default and env-var fallback. The description adds nothing about parameters, so baseline 3 applies.

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

Purpose4/5

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

Names the specific resource (DFSMShsm activity) and enumerates the activity subtypes (recalls, migrations, backups), plus the source (operations-log tail). This clearly separates it from generic log/console siblings like get_console_messages or analyze_logrec, though it never names an alternative explicitly.

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

Usage Guidelines3/5

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

The use case is implied by the subject matter — reach for this when you need HSM-specific events rather than raw console traffic — but the description never states when to prefer it over get_console_messages, analyze_logrec, or system_health_summary, nor any prerequisites.

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

get_job_capacityA
Read-onlyIdempotent

CPU consumption of a job — per step and total from JESMSGLG (IEF374I/IEF376I), with an MSU estimate when CAPACITY_MSU_RATING is configured.

NameRequiredDescriptionDefault
jobIdYesJES job id, e.g. "JOB01234".
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent and non-destructive semantics, and the description adds real value on top: it discloses the data source (JESMSGLG, IEF374I/IEF376I) and the fact that MSU figures only appear when CAPACITY_MSU_RATING is configured. It stops short of saying what happens when those log records are missing or the job's JESMSGLG has been purged.

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

Conciseness5/5

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

A single front-loaded sentence that carries the source, the specific message IDs and the conditional behaviour with no filler. Every clause is load-bearing.

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

Completeness4/5

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

With only two parameters, full schema coverage and no output schema, the description does a fair amount of return-value work by previewing the shape (per step, total, optional MSU estimate). A note on behaviour when the log records are absent is the main remaining gap.

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

Parameters3/5

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

Schema description coverage is 100% — jobId and environment are both documented inline, including the pointer to list_environments. The description adds nothing about either parameter, so this sits at the baseline where the schema does all the work.

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

Purpose4/5

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

Names a specific resource (CPU consumption of a job) and scopes it precisely to per-step and total figures, plus a conditional MSU estimate. It is distinctive enough that an agent can separate it from get_job_status or get_job_output, though it never explicitly names those siblings as alternatives.

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

Usage Guidelines2/5

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

There is no when-to-use, when-not-to-use, or alternative-naming guidance. The description never tells the agent to prefer estimate_mlc_cost for cost figures or get_job_output for raw log text, so routing must be inferred from the noun phrase alone.

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

get_job_jclA
Read-onlyIdempotent

Retrieve the JCL that was submitted for a job (from JESJCLIN / JESJCL / JCL spool DDs). Supports custom line limit.

NameRequiredDescriptionDefault
jobIdYesJES job id, e.g. "JOB01234".
maxLinesNoMaximum lines to return (caps at server configuration maximum).
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds the spool-source detail (JESJCLIN/JESJCL/JCL DDs), which is genuinely useful context, but says nothing about truncation behavior, missing/purged JCL, or permissions.

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

Conciseness4/5

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

Two short sentences, front-loaded with the purpose before the caveat. The trailing 'Supports custom line limit' is largely redundant with the schema, keeping it just below a 5.

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

Completeness4/5

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

For a simple, read-only, 3-parameter tool with annotations covering safety, this is nearly complete. The remaining gap is that no output schema exists and the description doesn't say what the return looks like (raw JCL lines vs. array) or what happens when JCL is unavailable.

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

Parameters3/5

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

Schema description coverage is 100%, so jobId, maxLines and environment are already documented, including the server-configuration cap. The description's 'Supports custom line limit' only restates what the schema says, adding no new semantics; baseline 3 applies.

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

Purpose4/5

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

States a specific verb (Retrieve) and resource (the JCL submitted for a job), and even names the spool data sets it reads from (JESJCLIN / JESJCL). It is clearly distinct from get_job_output, though it does not explicitly say so.

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

Usage Guidelines3/5

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

Usage is implied — an agent would infer 'call this when you need the submitted JCL rather than job output' — but there is no explicit when-to-use, no exclusion, and no pointer to get_job_output or get_job_status as alternatives.

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

get_job_outputA
Read-onlyIdempotent

Retrieve spool output for a job. Lists spool files (with optional step filter), or returns one DD content (with optional text grep and line cap).

NameRequiredDescriptionDefault
jobIdYesJES job id, e.g. "JOB01234".
ddNameNoDD name (e.g. "JESMSGLG"). Omit to list available spool files.
maxLinesNoMaximum output lines returned (caps at server configuration maximum).
stepNameNoFilter spool inventory to files produced by this step name. Only used when ddName is omitted.
searchTextNoWhen reading a DD, return only lines containing this text (case-insensitive grep). Applied before line capping.
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, openWorld behavior, so safety is covered. The description adds real behavioral detail beyond that: two distinct return shapes, step filtering only in list mode, and that grep is applied before line capping — an ordering nuance that affects results.

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

Conciseness5/5

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

Two sentences, front-loaded with the core verb and resource, then the dual-mode breakdown. No filler and nothing redundant given the schema.

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

Completeness4/5

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

With no output schema, the description does cover return shape at a high level (spool file list vs. DD content). It could say more about pagination/truncation signals when maxLines caps output, but it is sufficient to call the tool correctly.

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

Parameters3/5

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

Schema coverage is 100%, so all six parameters already carry descriptions including the grep-before-cap ordering and the stepName-only-when-ddName-omitted rule. The description restates these semantics rather than adding new meaning, so the baseline 3 applies.

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

Purpose5/5

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

The description states a specific verb (Retrieve) and resource (spool output for a job) and clearly enumerates the two operating modes: listing spool files vs. returning one DD's content. An agent can distinguish this from siblings like get_job_jcl or read_dataset without opening the schema.

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

Usage Guidelines4/5

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

The mode selection is clear: omit ddName to list spool files, supply ddName to read one DD, with stepName only applying in listing mode. It doesn't name alternative tools (e.g., compare against get_job_jcl) or state when-not-to-use, so it falls just short of 5.

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

get_job_statusA
Read-onlyIdempotent

Get the current status, return code, and failure indicator for a specific job. Optionally includes spool file inventory.

NameRequiredDescriptionDefault
jobIdYesJES job id, e.g. "JOB01234".
jobNameNoOptional job name for confirmation/disambiguation (max 8 chars).
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.
includeSpoolSummaryNoWhen true, also list the spool DD inventory below the status block.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds useful content beyond that: it specifies the exact return payload and that spool inventory is opt-in, which tells the agent the call is cheap by default.

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

Conciseness5/5

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

Two short sentences with the primary payload front-loaded and the optional behavior trailing. Nothing is wasted and nothing important is buried.

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

Completeness4/5

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

With no output schema, the description carries the burden of describing return values, and it does so by enumerating status, return code, failure indicator, and optional spool inventory. It stops short of noting not-found behavior or how the failure indicator should be interpreted, which keeps it off a 5.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The phrase 'optionally includes spool file inventory' loosely restates the includeSpoolSummary schema text but adds no format or interaction detail beyond it, and jobName/environment are untouched in the description.

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

Purpose4/5

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

The description uses a specific verb (get) plus resource (job status) and names the concrete fields returned: status, return code, failure indicator. This differentiates it implicitly from siblings like get_job_output or list_jobs, though it never names an alternative explicitly.

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

Usage Guidelines3/5

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

Naming 'a specific job' implies this is the per-job lookup rather than a listing, so usage is inferable. But there is no statement of when to prefer this over get_job_output or analyze_job_failure, and no prerequisites mentioned.

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

get_smf_metricsB
Read-onlyIdempotent

Retrieve SMF/RMF performance metrics from z/OSMF RMF and/or a configured SMF summary dataset. Supports category filtering.

NameRequiredDescriptionDefault
categoryNoFilter metrics by category: "cpu", "io", "memory", "performance", "counter", or a custom keyword matching metric names.
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context by disclosing the dual data sources (live z/OSMF RMF and/or a configured SMF summary dataset), implying fallback behavior, but says nothing about result volume, pagination, or what happens if neither source is available.

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

Conciseness4/5

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

Two short sentences, front-loaded with the core action and resource, with the filtering note appended. No filler, though it is on the terse side for a tool with multiple data sources.

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

Completeness3/5

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

With no output schema, the description does not indicate what the returned metrics look like (structure, units, volume), and it omits any mention of the need for a configured SMF dataset or a working z/OSMF connection. Adequate to select the tool, but thin for invoking it confidently.

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

Parameters3/5

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

Schema coverage is 100% and both parameters carry self-explanatory descriptions, so the baseline is 3. The description's 'Supports category filtering' only restates the category parameter without adding format or default details beyond the schema.

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

Purpose4/5

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

Specific verb (Retrieve) plus resource (SMF/RMF performance metrics) and the data sources (z/OSMF RMF and/or SMF summary dataset). It is clearly distinct from every sibling tool, which are job/CICS/DB2/dataset oriented, though it does not explicitly name a sibling to contrast with.

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

Usage Guidelines2/5

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

No statement of when to use this instead of alternatives such as system_health_summary or get_wlm_status, and no prerequisites mentioned (e.g. z/OSMF connection, dataset configuration). The only guidance is the passing note about category filtering.

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

get_user_jobs_summaryB
Read-onlyIdempotent

Summarize job counts by status for a specific owner (active, queued, failed, completed).

NameRequiredDescriptionDefault
ownerYesUser id (owner) to summarize, e.g. "PAYUSR".
prefixNoOptional job name prefix filter. Defaults to "*".
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety behavior is covered. The description adds the status categories included in the summary, but it does not describe return shape, aggregation semantics, or how the optional prefix/environment filters affect the counts.

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

Conciseness5/5

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

A single front-loaded sentence with zero waste. It states the action, scope, and included statuses without boilerplate.

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

Completeness4/5

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

For a simple read-only summary tool with full schema descriptions and safety annotations, the description is largely complete. It could add a little about what the summary returns, but the core behavior is clear enough to invoke correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents owner, prefix, and environment fully. The description reinforces the owner scoping and status categories but adds no syntax or behavior beyond the schema baseline.

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

Purpose4/5

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

States a specific verb (summarize) and resource (job counts by status) scoped to a specific owner. It is clear enough to distinguish from listing or status-detail tools, though it does not explicitly name sibling alternatives.

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

Usage Guidelines2/5

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

The description provides no when-to-use guidance, no exclusions, and no alternative tools such as list_jobs or get_job_status. An agent must infer that this tool is for aggregate counts rather than job details.

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

get_volume_spaceA
Read-onlyIdempotent

DASD volume space inventory via z/OSMF Storage Management Interface. Flags volumes below the free-space threshold (STORAGE_FREE_THRESHOLD, default 10%).

NameRequiredDescriptionDefault
volserNoVolume serial to inspect (default: all volumes).
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the read-only, idempotent, non-destructive safety profile. The description adds useful behavioral context by naming the z/OSMF Storage Management Interface and disclosing the STORAGE_FREE_THRESHOLD default of 10%.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core purpose and then the threshold behavior. There is no redundant or wasted text.

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

Completeness4/5

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

The description is mostly complete for a simple two-parameter read-only inventory tool, especially because annotations cover safety and the schema covers inputs. It could be slightly stronger by explicitly noting that the result is a per-volume space inventory, but the core behavior is clear.

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

Parameters3/5

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

Schema description coverage is 100%, and both parameters are already well documented in the schema. The description does not add parameter-specific meaning beyond that, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description states a specific resource and action: DASD volume space inventory, with the added behavior of flagging volumes below a free-space threshold. It is clearly distinguishable from sibling tools such as dataset, job, and CICS operations.

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

Usage Guidelines4/5

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

The use case is clear from 'DASD volume space inventory' and the low-free-space flagging behavior. However, it does not explicitly state when to use this versus alternatives or any when-not conditions.

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

get_wlm_statusA

Display Workload Manager state via an MVS "D WLM" console command (gated write: a console command is issued).

NameRequiredDescriptionDefault
commandNoWLM display command (default "D WLM"). Examples: "D WLM", "D WLM,SYSTEMS", "D WLM,RESOURCE=CPU".
consoleNameNoConsole name; defaults to ZOSMF_CONSOLE_NAME.
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A3.8/5.0
Behavior4/5

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

The annotations already flag readOnlyHint=false and openWorldHint=true; the description adds the missing explanation of why — a real console command is issued and the path is a "gated write", which tells the agent to expect approval/side-effect semantics. It stops short of saying whether approval is required (e.g. via approve_write) or what happens to the target system.

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

Conciseness5/5

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

A single dense sentence that front-loads the action, the resource, and the execution mechanism, with the side-effect caveat parenthetically attached. Nothing redundant.

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

Completeness4/5

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

For a 3-param, no-required-argument tool with full schema coverage and annotations covering the safety profile, the description supplies enough to call it correctly. The only gap is that with no output schema, the agent is not told that the result is raw console output text for the WLM display.

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

Parameters3/5

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

Schema description coverage is 100% — every parameter (command, consoleName, environment) is documented with defaults and examples. The description adds only the default "D WLM" shape already present in the schema, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb (Display) and resource (Workload Manager state) plus the exact mechanism (MVS "D WLM" console command), so the agent knows precisely what it retrieves. It does not explicitly differentiate itself from the generic issue_console_command sibling, which would be the natural alternative for this same request.

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

Usage Guidelines3/5

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

The phrase "gated write: a console command is issued" hints at why this exists separately from raw console commands, but there is no explicit when-to-use/when-not guidance and no named alternative (e.g. issue_console_command for arbitrary commands). Usage must be inferred from the description of the operation.

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

hold_jobA

Hold a batch job via the JES2 "$HJ" command (gated write). The job stops at the next step boundary.

NameRequiredDescriptionDefault
jobIdYesJES job id, e.g. "JOB01234".
consoleNameNoConsole used to issue the JES2 command.
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare a non-read-only, non-idempotent, non-destructive, open-world operation. The description adds useful behavioral detail beyond that: the operation uses the JES2 $HJ command, is a gated write, and takes effect at the next step boundary.

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

Conciseness5/5

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

Two tightly written sentences with no waste. The core action and command are front-loaded, followed immediately by the timing behavior.

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

Completeness4/5

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

For a simple action tool with full schema coverage and meaningful annotations, the description is nearly complete. It covers the action, command, gated nature, and effect timing; it could go slightly further in explaining what the gate entails or linking to approve_write.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters (jobId, consoleName, environment) are already documented in the schema. The description does not add parameter-specific semantics beyond what the schema provides, so the baseline of 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource (hold a batch job) and identifies the underlying JES2 $HJ command. It is clearly distinguishable from siblings like release_job, cancel_job, and submit_jcl.

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

Usage Guidelines3/5

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

The description implies when to use the tool by saying it holds a job and stops at the next step boundary, but it does not explicitly contrast this with release_job or cancel_job. 'Gated write' hints at an approval requirement without explaining when that gate applies.

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

ims_commandB
Destructive

Issue an IMS command through the z/OS system console (gated write). Commands are prefixed with "/", e.g. "/DIS ACTIVE", "/DIS TRAN TRAN1", "/DIS PROG PGM1".

NameRequiredDescriptionDefault
commandYesIMS command, e.g. "/DIS TRAN TRAN1" or "DIS A" (slash added if missing).
collectKeyNoResponse key from a previous call — collects follow-up messages.
consoleNameNoConsole name; defaults to ZOSMF_CONSOLE_NAME.
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, openWorldHint=true and non-idempotency, so the safety profile is covered. The description does add one genuinely new behavioral fact — that writes are 'gated' — but it never explains how the gate works (is approve_write required first? what happens on rejection?), nor what the command can affect on a live IMS system.

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

Conciseness4/5

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

Two short sentences, front-loaded with the action and the console routing, with no filler. The three example commands are mildly redundant with the schema example but serve as a quick syntax anchor, so the cost is small.

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

Completeness3/5

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

For a destructive, open-world write tool with no output schema this is thin: it never says what an agent must do to satisfy the 'gated' requirement, what a rejection looks like, or how follow-up messages relate to collectKey. Parameter documentation is fully handled by the schema, but the operational flow around the gate is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters are already documented, including the slash-normalization rule and the collectKey follow-up mechanism. The description's command examples and slash prefix note largely restate the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource (issue an IMS command) and the channel it flows through (z/OS system console), which is more than the bare name conveys. It does not distinguish itself from the sibling issue_console_command, so an agent cannot tell from this text alone which console-facing tool to pick.

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

Usage Guidelines3/5

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

The parenthetical '(gated write)' implies the tool is behind an approval flow, and the three example commands sketch the intended use. But there is no explicit when-to-use / when-not-to-use guidance and no pointer to the alternative issue_console_command or to approve_write, leaving the choice to inference.

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

investigate_incidentA
Read-onlyIdempotent

Assemble a full incident bundle for a job: status, root-cause analysis (with abend reference and runbook link), internal-doc excerpts (RAG), complete spool inventory, and diagnostic excerpts from all relevant DDs.

NameRequiredDescriptionDefault
jobIdYesJES job id to investigate, e.g. "JOB01234".
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.
maxExcerptLinesNoMaximum lines to include from each diagnostic spool excerpt. Defaults to 80. Increase for a deeper view.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so safety is covered; the description adds concrete value by disclosing the composite output (RCA with abend reference and runbook link, RAG doc excerpts, full spool inventory, per-DD diagnostic excerpts). It does not warn that this is a heavyweight multi-source call, which is the main remaining gap.

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

Conciseness5/5

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

A single front-loaded sentence that names the action, the scope and the bundle contents with zero filler. The parenthetical additions (abend reference, runbook link, RAG) are informative rather than repetitive.

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

Completeness4/5

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

With no output schema, the description carries the burden of describing the return surface and does so by enumerating every bundle section. Adequate for a 3-parameter read-only tool, though it omits any note about latency/cost of gathering all sources or the excerpt-size default.

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

Parameters3/5

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

Schema description coverage is 100%, so jobId, environment and maxExcerptLines are fully documented in the schema. The description adds nothing parameter-specific (e.g. that omitting environment targets the server default, or that maxExcerptLines bounds each excerpt), so baseline 3 applies.

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

Purpose4/5

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

Specific verb ('Assemble') plus resource ('full incident bundle for a job') with an enumerated inventory of what the bundle contains (status, RCA, RAG excerpts, spool inventory, DD excerpts). It reads as an aggregator, but the description never contrasts it with the overlapping siblings analyze_job_failure and analyze_root_cause, so an agent must infer the boundary.

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

Usage Guidelines3/5

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

Usage is only implied by the word 'full' and 'Assemble' – the description suggests a deep, one-shot investigation, yet it gives no explicit when-to-use/when-not and names no alternatives among the many diagnostics siblings. Minimum viable routing guidance.

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

issue_console_commandA
Destructive

Issue an MVS system/operator command through an extended MCS console (gated write). Examples: "D A,L", "D GRS,RES=(*,SYS1.PROCLIB)", "D WLM".

NameRequiredDescriptionDefault
commandYesMVS command text, e.g. "D A,L" or "D GRS,RES=(*,SYS1.PROCLIB)".
collectKeyNoResponse key from a previous call — collects follow-up messages for that command.
consoleNameNoExtended MCS console name (1–8 chars). Defaults to ZOSMF_CONSOLE_NAME.
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, openWorldHint=true, idempotentHint=false, so the risk profile is known. '(gated write)' adds real context about the approval gate, but the description does not say what an arbitrary operator command can affect or how responses are collected if collectKey is omitted. Notably, all three examples are display ('D ...') commands, which can understate the destructive capability the annotations flag.

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

Conciseness5/5

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

Two sentences, front-loaded with the verb and resource, with the examples trailing as supporting detail. No wasted words.

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

Completeness3/5

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

For a 4-parameter destructive tool with no output schema, the description covers purpose and the gating concept but not the response-collection workflow (collectKey) or the MVS-vs-IMS vs get_console_messages routing. Adequate but with clear gaps an agent would have to resolve from the schema alone.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter (including collectKey, consoleName, environment) is already documented in the schema. The description's examples coincide with the schema's own example for `command` and add no new semantics. Baseline 3 applies.

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

Purpose5/5

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

States a specific verb ('Issue'), a specific resource ('MVS system/operator command'), and the mechanism ('extended MCS console'), plus three concrete command examples. An agent can distinguish this from get_console_messages (read) and ims_command (IMS) without opening a schema.

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

Usage Guidelines3/5

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

The command examples imply when this is appropriate, and '(gated write)' hints at an approval prerequisite, but the description never names an alternative (e.g., get_console_messages for reading, ims_command for IMS) or states exclusions. Usage guidance is suggested rather than stated.

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

job_dependenciesA
Read-onlyIdempotent

Analyze a job's JCL for batch dependencies: dataset inputs, outputs, updates per step, and PROCs invoked — the basis for predecessor/successor analysis.

NameRequiredDescriptionDefault
jclNoInline JCL text to analyze (mutually exclusive with "jobId").
jobIdNoJES job id — the JCL is pulled from spool (mutually exclusive with "jcl").
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds what the analysis operates on (datasets and PROCs per step) but says nothing about the spool-read behavior when a jobId is used, latency, or failure modes for malformed JCL — context the annotations do not supply.

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

Conciseness5/5

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

A single sentence, front-loaded with the verb and resource, with every clause (inputs, outputs, updates per step, PROCs) contributing distinct information. No filler or restatement of the name.

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

Completeness4/5

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

No output schema exists, but the description effectively pre-announces the return content by listing the dependency categories that will be reported. With all three parameters optional and a well-covered schema, this is nearly complete; only the response shape (per-step nesting, empty-result behavior) is left unstated.

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

Parameters3/5

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

Schema description coverage is 100%, with mutual exclusivity of 'jcl' and 'jobId' and the purpose of 'environment' already documented in the schema. The description adds no syntax, format, or defaulting detail beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

Names a specific verb (analyze) and resource (a job's JCL) and enumerates exactly what is extracted: dataset inputs, outputs, updates per step, and PROCs invoked. That enumeration separates it from siblings like get_job_jcl (raw retrieval) or analyze_job_failure (failure diagnosis), though it never names those alternatives explicitly.

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

Usage Guidelines3/5

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

The trailing clause 'the basis for predecessor/successor analysis' implies the downstream use case, but there is no explicit when-to-use, when-not-to-use, or alternative named among the many job-related siblings. The agent must infer that this is the pre-analysis step before prediction/scheduling work.

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

list_cics_regionsB
Read-onlyIdempotent

List CICS regions in a CMCI context. Supports status filter and result capping.

NameRequiredDescriptionDefault
statusNoFilter by region status, e.g. "ACTIVE", "INACTIVE". Case-insensitive.
contextNoCMCI context (CICSplex name or region APPLID). Defaults to CMCI_CONTEXT env var.
maxResultsNoMaximum number of regions to return after filtering.
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=true), so the bar is lower. The description adds that filtering and capping are supported, but says nothing about whether results span one context or all environments, how capping interacts with filtering, or what happens when the context is omitted.

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

Conciseness4/5

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

Two short sentences, front-loaded with the resource and scope, and each sentence carries information. It is efficient, though the terseness leaves real behavioral questions unanswered rather than deliberately trimmed.

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

Completeness3/5

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

All four parameters are optional and fully documented in the schema, and there is no output schema to explain. Still, for a tool whose environment/context parameters can materially change which regions are returned, the description omits how those defaults resolve and what the listing looks like.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description echoes the status filter and maxResults cap but adds no syntax, defaults, or interaction detail beyond the schema, and does not touch the context or environment parameters at all.

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

Purpose4/5

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

States a specific verb and resource ("List CICS regions") plus scope ("in a CMCI context"), which is unambiguous. However it does not distinguish itself from close siblings like get_cics_region_status, get_cics_region_stats, or list_cics_transactions, so an agent gets the what but not the why-this-one.

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

Usage Guidelines3/5

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

Usage is only implied by the mention of a status filter and result capping; there is no explicit when-to-use, when-not-to-use, or named alternative such as get_cics_region_status for a single region or list_environments for target selection. The agent must infer routing from tool names alone.

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

list_cics_transactionsA
Read-onlyIdempotent

List CICS transaction definitions installed in a region via CMCI. Supports prefix/status filters and result capping.

NameRequiredDescriptionDefault
regionYesCICS region APPLID to query transactions for (max 8 chars).
statusNoFilter by transaction status, e.g. "ACTIVE", "INACTIVE".
contextNoCMCI context. Defaults to CMCI_CONTEXT env var.
maxResultsNoMaximum number of transactions to return after filtering.
tranPrefixNoFilter to transactions starting with this prefix (e.g. "PAY"). Case-insensitive.
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds that results come from CMCI and can be capped, but says nothing about pagination, truncation warnings, or the shape of a transaction entry.

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

Conciseness4/5

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

A single well-formed sentence with the core action front-loaded and zero filler. It is efficient, though it stops short of any routing or constraint information that would make it exemplary.

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

Completeness4/5

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

For a read-only filtered list with full schema descriptions, complete annotation coverage and no output schema, the description supplies the essential mechanism (CMCI) and filter/cap behavior. Nothing critical is missing for correct invocation.

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

Parameters3/5

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

Schema coverage is 100%, with each of the 6 parameters documented including examples and env-var fallback. The description only gestures at 'prefix/status filters and result capping', which maps to tranPrefix, status and maxResults but adds no syntax or behavior beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('List CICS transaction definitions') plus the retrieval mechanism and scope ('installed in a region via CMCI'). It is clearly distinguishable from siblings like get_cics_region_status or cics_disable_transaction, though it never names an alternative explicitly.

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

Usage Guidelines3/5

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

The mention of 'prefix/status filters and result capping' implies when the filters are useful, but there is no explicit when-to-use guidance, no exclusions, and no reference to sibling tools such as list_cics_regions or get_cics_region_stats.

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

list_datasetsB
Read-onlyIdempotent

List catalog datasets matching a high-level qualifier (and optional pattern). Supports filtering by DSORG and capping result count.

NameRequiredDescriptionDefault
hlqYesHigh-level qualifier, e.g. "SYS1".
dsorgNoFilter by dataset organisation: PO (PDS/PDSE), PS (sequential), DA (direct access).
patternNoOptional lower-qualifier pattern appended to the HLQ, e.g. "PROC*".
maxResultsNoMaximum number of datasets to return (default: all matched up to server limit).
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so safety is covered. The description adds only that filtering and count-capping are supported, and it does not explain what the result set looks like (names only? with attributes?) or how the 'server limit' truncation manifests.

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

Conciseness4/5

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

Two short sentences, front-loaded with the resource and the qualifier scoping, then the optional capabilities. Nothing is redundant, though the second sentence is a feature list rather than guidance.

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

Completeness3/5

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

With no output schema, the description should say what a returned dataset entry contains and how truncation/pagination surfaces, and it doesn't. It says enough to invoke the tool but leaves the result shape and any limit behavior implicit.

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

Parameters3/5

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

Schema description coverage is 100%, and every parameter the description mentions (hlq, pattern, dsorg, maxResults) is documented in more detail in the schema, including the enum meanings. The description adds no syntax or interaction detail beyond that baseline.

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

Purpose4/5

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

States a specific verb+resource (list catalog datasets) and the scoping mechanism (high-level qualifier plus optional pattern), which is more concrete than the bare name. It does not, however, distinguish itself from the sibling search_dataset, so an agent can't tell from the description which of the two to pick.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus search_dataset, search_members, or get_dataset_info, and no prerequisites or exclusions. The only hint is that it enumerates by qualifier, which the reader must infer is the difference from the search tools.

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

list_db2_subsystemsA
Read-onlyIdempotent

List Db2 subsystems (locations) available via Db2 REST (requires DB2_LOCATION).

NameRequiredDescriptionDefault
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds one genuinely useful behavioral fact — the DB2_LOCATION prerequisite — but says nothing about the open-world nature of the call (live subsystem discovery) or failure behavior when DB2_LOCATION is unset.

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

Conciseness4/5

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

One short sentence, front-loaded with the purpose and ending with the key prerequisite. No waste, though 'requires DB2_LOCATION' is terse enough to be slightly cryptic about what the variable controls.

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

Completeness4/5

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

For a simple, annotation-covered read-only lister with a single fully described optional parameter, the description plus structured fields are sufficient to call it correctly. Only the shape of a returned subsystem/location entry is left implicit, which is acceptable for a list tool with no output schema.

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

Parameters3/5

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

Schema description coverage is 100% and the single optional 'environment' parameter is fully documented in the schema, so the baseline is 3. The description does not reference the environment parameter at all, adding no meaning beyond the schema.

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

Purpose4/5

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

The description gives a specific verb and resource — 'List Db2 subsystems (locations)' — and scopes it to 'available via Db2 REST', which distinguishes it from sibling listers like list_cics_regions or list_environments. It stops short of explicitly naming the sibling it is not.

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

Usage Guidelines3/5

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

Usage is only implied: the tool is for enumerating Db2 subsystems and the parenthetical 'requires DB2_LOCATION' signals a prerequisite. There is no statement of when to choose this over search_db2_catalog or list_environments, and no exclusion guidance.

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

list_environmentsA
Read-onlyIdempotent

List the named z/OS environments this server can reach (DEV/TEST/UAT/PROD, LPARs), with read-only and role policy per environment.

NameRequiredDescriptionDefault
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely new context: each listed environment carries its own read-only and role policy, which tells the agent this call doubles as a permissions probe before attempting writes.

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

Conciseness4/5

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

A single dense sentence with the resource and scope front-loaded and zero filler. It is compact, though the parenthetical example list and policy clause pack in enough that it borders on compressed rather than structured.

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

Completeness4/5

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

There is no output schema, so the description carries the burden of signaling return content, and it does so by naming both the environment identifiers and the per-environment read-only/role policy. The remaining gap is the optional filter parameter's effect, which the schema covers but the description does not reinforce.

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

Parameters3/5

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

Schema description coverage is 100% and there is only one optional parameter, which itself documents the allowed values and the omit-for-default behavior. The description contributes nothing about the environment filter and arguably reads as if it always lists all environments, leaving the filtering behavior entirely to the schema.

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

Purpose4/5

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

Specific verb+resource ("List the named z/OS environments") with concrete examples (DEV/TEST/UAT/PROD, LPARs) and a stated scope ("this server can reach"). No sibling tool overlaps this discovery role, so explicit differentiation is less critical, but the description never turns that absence into an explicit positioning statement.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: the description tells you it enumerates reachable environments and their policies, which suggests calling it before targeting an environment, and the schema cross-references "see list_environments" in other tools' params. It never says when not to call it or what to do with the result, and does not explain the interaction with its own optional environment filter.

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

list_jobsB
Read-onlyIdempotent

List z/OS batch jobs filtered by owner, name prefix, status, or return code. Supports result capping.

NameRequiredDescriptionDefault
ownerNoOwner (user id) filter (max 8 chars). Use "*" for all. Defaults to "*".
prefixNoJob name prefix filter, wildcards allowed (e.g. "PAY*"). Defaults to "*".
statusNoOptional lifecycle status filter applied after retrieval.
maxResultsNoMaximum number of jobs to return (default: server configured maxJobListResults).
returnCodeNoOptional return-code prefix filter (case-insensitive), e.g. "ABEND", "JCL ERROR", "CC 00".
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds the fact that results can be capped, but says nothing about what happens when the cap is hit (silent truncation vs. a truncation notice), result ordering, or whether filtering is server-side versus applied client-side after retrieval.

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

Conciseness4/5

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

Two short sentences, zero preamble, purpose front-loaded before the cap note. Slightly thin rather than bloated; the only weak element is the unqualified "supports result capping" phrase, which could be replaced with something load-bearing.

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

Completeness3/5

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

Six optional parameters at full schema coverage and no output schema means the definition is minimally sufficient to invoke. But for a listing tool it omits things an agent needs to reason about results: default cap value, result ordering, and truncation behavior, which the sibling-heavy context makes more consequential.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter including the environment pointer and returnCode formats is already documented in the schema. The description's filter list duplicates that rather than adding semantics (e.g., how filters combine, whether status filtering is post-retrieval). Baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ("List z/OS batch jobs") and enumerates the filter axes, which maps cleanly to the schema. It does not, however, distinguish itself from close siblings like find_failed_jobs or get_user_jobs_summary, which an agent would plausibly confuse it with.

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

Usage Guidelines2/5

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

There is no when-to-use / when-not-to-use guidance and no named alternative, despite the sibling set containing several overlapping job-listing tools (find_failed_jobs, get_user_jobs_summary, scheduler_job_status). "Supports result capping" is a capability note, not usage guidance.

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

list_uss_directoryB
Read-onlyIdempotent

List the contents of a USS (Unix System Services) directory. Supports type filter, sort order, and result capping.

NameRequiredDescriptionDefault
pathYesAbsolute USS directory path, e.g. "/u/payroll".
typeNoFilter results to only entries of this type.
sortByNoSort order: "name" (default, alpha), "size" (largest first), "modified" (newest first), "type" (dirs first).
maxResultsNoMaximum number of entries to return after filtering and sorting.
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered structurally. The description adds that result capping is applied after filtering and sorting, which is useful, but says nothing about environment targeting behavior, error cases for non-existent paths, or whether entries are recursive (they presumably are not).

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

Conciseness4/5

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

Two short sentences with no filler, purpose front-loaded before the capability summary. Slightly thin rather than bloated, so not a 5 on the 'every sentence earns its place' scale but close.

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

Completeness3/5

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

With no output schema, the description should say what an entry looks like (name, type, size, modified time) or that results are non-recursive. Those gaps remain, though the rich annotations and fully documented schema cover most of what an agent needs to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, with enum values documented inline (sort order semantics, type filter, maxResults). The description merely restates those capabilities, so baseline 3 is appropriate; it adds no format or default details beyond the schema.

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

Purpose4/5

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

States a specific verb and resource ("List the contents of a USS directory") and names the supported refinements, so the agent knows exactly what the tool returns. It does not explicitly contrast with siblings like search_uss_files or read_uss_file, leaving that differentiation to inference.

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

Usage Guidelines3/5

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

The phrase "Supports type filter, sort order, and result capping" is a feature list rather than guidance on when to call this versus search_uss_files or read_uss_file. Usage is implied by the name (browse a directory) but no exclusions or alternatives are given.

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

lookup_abend_codeA
Read-onlyIdempotent

Look up z/OS abend codes (S0C7, S806, S0C4, S322, S0CB, U4038, etc.) with explanations, common causes, and remediation steps. Supports catalog search and category filter.

NameRequiredDescriptionDefault
codeNoAbend code to look up, e.g. "S806", "0C7", "S0C7", or "U0100". Omit to list or search the full catalog.
searchNoFilter the catalog by code, title, explanation, or common-cause text (case-insensitive).
categoryNoRestrict results to "system" (Sxxx) or "user" (Uxxxx) codes. Omit to include both categories.
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish readOnly/idempotent/non-destructive behavior, so the bar is lower. The description usefully discloses the content returned (explanations, common causes, remediation steps), which goes beyond the annotations. It does not mention result size, pagination, or ordering, so it is not fully rich.

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

Conciseness5/5

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

Two tight sentences, front-loaded with the primary purpose and examples, then the secondary catalog/search mode. No wasted words.

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

Completeness4/5

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

With four optional parameters at full schema coverage and safety annotations present, the description needs only to convey returned content, which it does (explanations, causes, remediation). Lacking an output schema, it could still say more about result shape, but overall it is complete enough to call correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters are fully documented in the schema. The description adds only a general mention of catalog search and category filtering, which mirrors what the schema already says; no extra syntax or format detail is provided beyond that baseline.

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

Purpose4/5

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

States a specific verb ("look up") and resource ("z/OS abend codes") with concrete examples (S0C7, S806, etc.), so the agent knows exactly what it retrieves. It does not differentiate from the sibling summarize_abends, which also concerns abends, so it falls short of the 5 bar.

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

Usage Guidelines3/5

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

The phrase "Supports catalog search and category filter" implies that omitting a code lists/searches the catalog, and the schema confirms "Omit to list or search the full catalog." However, there is no explicit when-to-use guidance, no named alternative (e.g., summarize_abends for aggregate views), and no statement of when not to use this tool.

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

mq_channel_statusA
Read-onlyIdempotent

Channel status (RUNNING/RETRYING/STOPPED, connection counts) for a queue manager via MQ REST. Omit the channel name to list all.

NameRequiredDescriptionDefault
qmgrYesQueue manager name, e.g. "QM01".
channelNoChannel name filter (default: all channels).
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description adds the useful fact that results carry RUNNING/RETRYING/STOPPED states and connection counts, but doesn't cover connectivity/permission prerequisites or failure behavior for an openWorld tool.

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

Conciseness5/5

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

Two compact clauses with zero filler, and the resource/scope statement is front-loaded ahead of the listing hint.

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

Completeness4/5

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

With no output schema, the description does the right job of naming the returned status values and the connection counts, and the schema carries all parameter detail. It is nearly complete; only execution prerequisites for the openWorld MQ REST call are unstated.

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

Parameters3/5

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

Schema description coverage is 100% and every parameter (qmgr, channel, environment) is documented in the schema, including the 'default: all channels' behavior. The description's 'omit the channel name to list all' merely restates the channel parameter's schema text, adding no syntax or format detail.

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

Purpose4/5

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

States a specific verb+resource: returns channel status (RUNNING/RETRYING/STOPPED plus connection counts) for a queue manager over MQ REST. It is clearly distinct from the sibling mq_queue_status by resource type, though the description never names that sibling explicitly.

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

Usage Guidelines3/5

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

The clause 'Omit the channel name to list all' gives a concrete usage hint, but nothing states when to prefer this over mq_queue_status or other MQ-related siblings, and there are no exclusion conditions.

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

mq_queue_statusA
Read-onlyIdempotent

Current depth of MQ queues (curdepth vs maxdepth, percent full) via MQ REST. Comma-separated names query several queues at once.

NameRequiredDescriptionDefault
qmgrYesQueue manager name, e.g. "QM01".
queuesYesQueue name(s), comma-separated, e.g. "PAYROLL.IN, PAYROLL.DLQ".
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds only the transport note ('via MQ REST') and the metric semantics, but says nothing about behavior on nonexistent queue names, partial failures in a comma-separated list, or permission requirements on the queue manager.

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

Conciseness5/5

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

Two short sentences, front-loaded with the core capability and the unit of measurement. Nothing is redundant or padded.

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

Completeness4/5

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

With no output schema, the description usefully names the returned fields (curdepth, maxdepth, percent full). Annotations cover the safety profile and the schema covers all inputs. Only failure/edge-case behavior is missing, which is minor for a read-only status probe.

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

Parameters3/5

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

Schema coverage is 100%: qmgr, queues and environment are each fully documented in the schema, including the comma-separated queue syntax and the list_environments pointer. The description's comma-separated note merely repeats what the schema already states, so baseline 3 applies.

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

Purpose4/5

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

States a specific resource (MQ queues) and a specific payload (curdepth vs maxdepth, percent full), which tells an agent exactly what it gets back. It is implicitly differentiated from the sibling mq_channel_status (queues vs channels), but no explicit contrast is drawn.

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

Usage Guidelines3/5

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

Usage is only implied: an agent can infer this is for checking queue depth/backlog. There is no explicit statement of when to use it versus mq_channel_status or the CICS/DB2 status siblings, and no prerequisites or exclusions.

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

predict_batch_failuresA
Read-onlyIdempotent

Predict batch failure risk by scoring job names with recurring failures using a recency-weighted algorithm. Returns risk levels (LOW/MEDIUM/HIGH/CRITICAL), failure trends, and top abend codes.

NameRequiredDescriptionDefault
hoursNoHistorical look-back window in hours. Defaults to 168 (7 days), max 720 (30 days).
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.
minFailuresNoMinimum number of failures a job must have in the window to appear in the report. Defaults to 1.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and open-world, so safety is covered. The description adds real value beyond that: it discloses the scoring approach (recency-weighted), the risk-level scale (LOW/MEDIUM/HIGH/CRITICAL), and that trends and top abend codes come back. It does not mention cost or runtime, which for a 30-day look-back scan would be useful.

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

Conciseness5/5

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

Two sentences, front-loaded with the purpose, then the return contract. No filler, no repetition of parameter details already in the schema.

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

Completeness4/5

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

With no output schema, the description correctly enumerates what comes back (risk levels, trends, top abend codes), and the three optional parameters are fully documented in-schema. The only real gap is routing guidance against the several failure-analysis siblings, which the description leaves unaddressed.

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

Parameters3/5

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

Schema coverage is 100% and each of the three parameters carries its own default and bounds documentation, so the schema does the heavy lifting. The description only indirectly touches semantics via "recurring failures," which loosely maps to minFailures but adds no new syntax or interpretation. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ("Predict batch failure risk") and scopes it to job names with recurring failures, distinguishing it implicitly from retrospective siblings like find_failed_jobs and analyze_job_failure. It also names the mechanism (recency-weighted scoring) and the outputs, so an agent knows what it produces. No sibling is named explicitly, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no explicit statement of when to use this versus find_failed_jobs (historical failures) or analyze_job_failure (single-job deep dive), nor any prerequisites, cadence, or exclusion. The phrase "job names with recurring failures" implies a proactive-risk use case, but the agent must infer it.

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

query_racf_auditA
Read-onlyIdempotent

Query RACF security audit records from a configured USS path or dataset. Supports user, resource, event, result, class, and time-window filters.

NameRequiredDescriptionDefault
userNoFilter by user id (substring match, case-insensitive).
classNoFilter by RACF resource class, e.g. "DATASET", "FACILITY", "PROGRAM".
eventNoFilter by event/access type, e.g. "READ", "UPDATE", "DELETE". Substring match.
hoursNoLook-back window in hours (best-effort when timestamps are present).
resultNoFilter by result/outcome, e.g. "SUCCESS", "FAIL", "0". Substring match.
resourceNoFilter by resource name (substring match, case-insensitive).
maxResultsNoMaximum number of audit records to return (default 100, capped server-side).
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A3.5/5.0
Behavior3/5

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

The annotations already establish read-only, idempotent, non-destructive, open-world behavior. The description adds source context (configured USS path or dataset) and filter coverage, but it does not disclose return format, authorization requirements, or how errors or missing audit data are handled.

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

Conciseness5/5

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

The description is two compact sentences with the purpose front-loaded and no wasted wording. The filter list is secondary and supports quick scanning without overwhelming the reader.

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

Completeness3/5

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

For an eight-parameter read-only query with full schema coverage and rich annotations, the definition is adequate to invoke the tool. Still, with no output schema it does not describe what an audit record contains, and it does not connect the environment parameter to list_environments in prose.

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

Parameters3/5

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

Schema description coverage is 100%, so parameter semantics are already well documented in the schema. The description names most filter categories, but it adds no syntax or behavioral detail beyond the schema and omits maxResults and environment from the prose.

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

Purpose4/5

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

The description gives a specific verb and resource: query RACF security audit records, and clarifies the source is a configured USS path or dataset. It is clear what the tool does, but it does not explicitly differentiate itself from nearby security/log-analysis siblings such as security_posture_summary or analyze_logrec.

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

Usage Guidelines3/5

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

The description states that audit records can be queried and lists supported filters, which implies when the tool is useful. However, it gives no explicit when-to-use/when-not-to-use guidance and does not name alternatives for related security posture or log analysis tasks.

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

read_datasetA
Read-onlyIdempotent

Read the content of a sequential dataset or a PDS member (output is line-capped). Supports custom line limits and EBCDIC encoding hints.

NameRequiredDescriptionDefault
dsnYesDataset name, e.g. "SYS1.PROCLIB".
memberNoPDS member name (1–8 chars). Omit for a sequential dataset.
encodingNoText encoding hint. Use "ibm1047" for EBCDIC datasets that the Zowe SDK may not auto-convert.
maxLinesNoMaximum lines to return (caps at server configuration maximum).
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description contributes beyond that with the line-capped output constraint and the EBCDIC conversion caveat, which are real operational traits an agent would not otherwise know.

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

Conciseness5/5

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

Two short sentences, with the primary action and scope front-loaded and the notable behaviors (line cap, encoding) second. No filler or repetition.

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

Completeness4/5

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

For a five-parameter read tool with full schema coverage and annotations, the description covers mode selection, output size, and encoding well. It is slightly incomplete in not mentioning error behavior (e.g., missing dataset or member) or how the line cap interacts with the server maximum, but these are minor.

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

Parameters3/5

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

Schema description coverage is 100%, so dsn, member, encoding, maxLines, and environment are already documented, including the ibm1047 example and the server-configuration cap. The description restates 'custom line limits' and 'EBCDIC encoding hints' without adding format or limit semantics, so the baseline 3 applies.

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

Purpose5/5

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

The description names a specific verb (read) and resource (sequential dataset or PDS member) and scopes the result ('output is line-capped'). This clearly separates it from siblings such as list_datasets, search_dataset, and get_dataset_info, which enumerate or describe rather than return content.

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

Usage Guidelines3/5

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

Usage is only implied: 'Omit for a sequential dataset' tells the agent how to pick between two modes, but nothing says when to prefer this over search_dataset (to locate content) or get_dataset_info (to inspect metadata) first. The agent can infer the workflow but is not guided.

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

read_uss_fileB
Read-onlyIdempotent

Read the contents of a USS file. Supports custom line limits and text grep filtering.

NameRequiredDescriptionDefault
pathYesAbsolute USS file path, e.g. "/u/payroll/run.log".
maxLinesNoMaximum lines to return (caps at server configuration maximum).
searchTextNoReturn only lines containing this text (case-insensitive). Applied before line capping.
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, covering the safety profile. The description adds that custom line limits and text grep filtering are supported, but does not discuss errors, truncation behavior, or output format. This is adequate but not rich given the annotations already present.

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

Conciseness5/5

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

The description is two short sentences, front-loaded with the core action and followed by capability details. Every sentence carries useful information with no waste.

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

Completeness4/5

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

For a simple read-only file-reading tool with complete schema descriptions and annotations covering safety, the description is nearly sufficient. It could say more about binary files, encoding, or truncation handling, but no output schema exists and the essential behavior is conveyed.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters are fully documented in the input schema. The description mentions line limits and grep filtering at a high level, which maps to maxLines and searchText, but adds no syntax or behavioral detail beyond the schema. The baseline of 3 is appropriate.

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

Purpose4/5

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

The description uses a specific verb and resource: 'Read the contents of a USS file.' It is clear what the tool does, but it does not explicitly distinguish itself from sibling tools like search_uss_files or list_uss_directory.

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool versus alternatives. It mentions line limits and grep filtering but does not say when to choose read_uss_file over search_uss_files, list_uss_directory, or similar tools.

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

release_jobA

Release a held batch job via the JES2 "$OJ" command (gated write).

NameRequiredDescriptionDefault
jobIdYesJES job id, e.g. "JOB01234".
consoleNameNoConsole used to issue the JES2 command.
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A3.5/5.0
Behavior3/5

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

The annotations already declare a non-read-only, open-world, non-idempotent write. The description adds that this is a "gated write" via a specific JES2 command, which is useful context beyond annotations. However, it does not explain what "gated" requires, what side effects releasing a job has, or what approval path may be involved.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no wasted words. It puts the action, target, and command mechanism first.

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

Completeness3/5

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

The schema is fully described and annotations cover safety traits, so an agent has enough to invoke the tool. Still, the description leaves important mutation context unstated, especially what "gated write" means in practice and whether a separate approval step is required.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents jobId, consoleName, and environment. The description adds no parameter-specific meaning beyond what is already in the structured schema, which is the baseline for full schema coverage.

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

Purpose4/5

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

The description states a specific verb and resource: release a held batch job. It also names the underlying JES2 "$OJ" command, making the operation concrete. It does not explicitly distinguish itself from siblings such as hold_job or cancel_job, so it falls short of a 5.

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

Usage Guidelines3/5

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

The phrase "held batch job" implies the condition for use, but the description gives no explicit when-not guidance and does not name alternatives like hold_job, cancel_job, or approve_write. Usage is therefore implied rather than fully directed.

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

scheduler_job_statusB
Read-onlyIdempotent

Query an external batch scheduler (Control-M, CA 7, IBM Workload Automation) for job status via its REST API. Schedulers are configured with SCHEDULER_ADAPTERS.

NameRequiredDescriptionDefault
jobNameYesScheduler job name, e.g. "PAYROLL_DAILY".
schedulerNoScheduler name from SCHEDULER_ADAPTERS. Required when several are configured.
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds genuinely useful context that the call crosses a network boundary to a third-party REST API and depends on adapters being configured. It does not mention what happens when a scheduler is unreachable or unconfigured, which matters for an open-world tool.

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

Conciseness4/5

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

Two short sentences with no filler, and the identifying detail (external scheduler + REST) is front-loaded. The second sentence is slightly fragmentary but carries a real prerequisite, so it earns its place.

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

Completeness4/5

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

For a three-parameter, fully documented read-only lookup with annotations covering safety and openness, the description covers purpose, target systems, and configuration dependency. Return shape is not described, but no output schema exists; still, the gaps around error/timeout behavior and the sibling disambiguation keep it below 5.

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

Parameters3/5

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

Schema coverage is 100%, with each parameter documented in the schema itself (including the 'required when several are configured' nuance for scheduler and the list_environments pointer for environment). The description only echoes the SCHEDULER_ADAPTERS concept, adding no new syntax or format detail, so the baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb and resource ('Query ... job status') and adds a meaningful qualifier: it targets an external batch scheduler (Control-M, CA 7, IBM Workload Automation) over REST. That said, it does not distinguish itself from the very similar sibling get_job_status, leaving the agent to guess which one applies to a given job.

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

Usage Guidelines2/5

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

It mentions the configuration prerequisite ('Schedulers are configured with SCHEDULER_ADAPTERS') but gives no when-to-use rule: nothing says to pick this over get_job_status, list_jobs, or find_failed_jobs, nor when an external scheduler lookup is the right escalation. The agent must infer the externality distinction from the product names alone.

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

search_datasetB
Read-onlyIdempotent

Search the catalog for datasets matching a wildcard pattern. Supports DSORG filter and result capping.

NameRequiredDescriptionDefault
dsorgNoFilter by dataset organisation: PO (PDS/PDSE), PS (sequential), DA (direct access).
patternYesDataset name pattern with wildcards, e.g. "PROD.**.LOADLIB". Must contain at least one "." or "*".
maxResultsNoMaximum number of datasets to return (default: all matched up to server limit).
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered. The description adds only the DSORG filter and result capping, both of which restate schema content; it says nothing about catalog scope, latency, or what happens when no datasets match.

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

Conciseness4/5

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

Two tight sentences with no filler, and the core action is front-loaded. It is appropriately sized, though the second sentence is largely redundant with the schema.

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

Completeness3/5

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

With 4 fully documented parameters and no output schema, the description should still convey what a result looks like (dataset names vs. full attributes) and how capping behaves. It hints at capping but leaves the return shape and empty-result behavior unstated, so the agent is left with a gap.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters are documented in the schema with examples and an enum. The description restates the wildcard and DSORG concepts without adding syntax or format detail beyond what the schema already provides, so the baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb (Search) and resource (catalog for datasets) plus the matching mechanism (wildcard pattern). It is clear what the tool does, but it does not distinguish itself from adjacent siblings like list_datasets, get_dataset_info, or search_members, leaving the agent to infer the boundary.

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

Usage Guidelines3/5

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

Usage is only implied by 'Search the catalog ... matching a wildcard pattern' and 'Supports DSORG filter'. There is no explicit when-to-use guidance, no mention of alternatives like list_datasets, and no stated prerequisites (e.g., environment must exist).

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

search_db2_catalogA
Read-onlyIdempotent

Search the Db2 catalog for tables, views, or aliases matching a name pattern. Includes row count, creation date, and remarks.

NameRequiredDescriptionDefault
typeNoObject type filter: "TABLE", "VIEW", "ALIAS", "MATERIALIZED QUERY TABLE". Case-insensitive.
schemaNoOptional schema/creator filter (exact match), e.g. "PAYROLL".
patternYesTable/view name pattern with wildcards (*, ?), e.g. "PAY*".
maxResultsNoMaximum number of catalog objects to return (default 50, max 200).
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered. The description adds one piece of non-schema information — the returned fields (row count, creation date, remarks) — but says nothing about truncation at maxResults, ordering, or how the environment default is resolved.

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

Conciseness5/5

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

Two sentences, zero filler, and the core action is front-loaded ahead of the supplementary return-field note. Nothing repeats the schema or the annotations.

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

Completeness3/5

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

For a low-complexity read-only search with full schema coverage and annotations, this is close to adequate, and mentioning return fields partially compensates for the absent output schema. It still leaves the agent without any sense of result ordering, truncation signaling, or whether 'row count' is live or from catalog statistics — a real ambiguity for Db2.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema documents wildcards, the type enum values, the schema/creator exact-match filter, the 50/200 result cap and the environment parameter in more detail than the description does. The description only echoes 'name pattern', so baseline 3 applies.

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

Purpose4/5

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

States a specific verb (search) plus the resource (Db2 catalog) and the object kinds it returns (tables, views, aliases) and the matching mode (name pattern). That is enough to distinguish it from search_dataset, search_members and search_uss_files, which target different resources, though no sibling is named explicitly.

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

Usage Guidelines3/5

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

The 'matching a name pattern' phrasing implies you call it when you know part of an object name, but there is no explicit when-to-use, no when-not-to-use, and no mention of the alternative (list_db2_subsystems for exploring subsystems, or exact-name lookup paths). Usage is inferable but not guided.

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

search_membersB
Read-onlyIdempotent

Search for members in a PDS, optionally filtered by wildcard pattern. Supports extended stats, result capping, and sorting.

NameRequiredDescriptionDefault
dsnYesPDS dataset name, e.g. "SYS1.PROCLIB".
sortByNoSort order for results: "name" (default), "modified" (newest first), or "size" (largest first).
patternNoMember name pattern with "*"/"?" wildcards, e.g. "IKJ*". Omit to list all.
maxResultsNoMaximum number of members to return after filtering.
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.
includeStatsNoFetch extended member statistics: last-modifier userid, record count, and changed time.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered. The description adds only that stats, capping, and sorting are available — essentially a restatement of parameters — and says nothing about result-size behavior, cost of includeStats, or environment resolution. Adequate but not additive.

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

Conciseness4/5

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

Two short sentences, front-loaded with the core action and scope. The second sentence is close to redundant with the schema, but it is brief enough to not be wasteful.

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

Completeness4/5

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

For a read-only, idempotent search tool with 100% schema coverage and comprehensive annotations, the description covers what the tool does and its optional capabilities. No output schema exists, but for a search tool the return shape is largely implied and the safety/mutation semantics are already settled by annotations.

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

Parameters3/5

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

Schema description coverage is 100%, so all six parameters (dsn, pattern, sortBy, maxResults, includeStats, environment) are fully documented in the schema. The description's mention of 'extended stats, result capping, and sorting' merely echoes those fields without adding syntax or interaction detail, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Search for members in a PDS') plus a scope qualifier (wildcard pattern), which is enough to separate it from the dataset-level siblings like search_dataset and list_datasets. It never names those siblings explicitly, so the differentiation is implied rather than stated.

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

Usage Guidelines2/5

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

There is no guidance on when to prefer this over search_dataset, read_dataset, or list_datasets, nor any when-not conditions. The phrase 'optionally filtered by wildcard pattern' hints at usage but the reader must infer the selection criteria from the sibling names.

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

search_uss_filesA
Read-onlyIdempotent

Search for files/directories in a USS directory matching a wildcard name pattern. Supports type filter, sort, and result capping.

NameRequiredDescriptionDefault
pathYesAbsolute USS directory path to search within.
typeNoRestrict matches to entries of this type only.
sortByNoSort matched results: "name" (default), "size" (largest first), "modified" (newest first), "type" (dirs first).
patternYesFile/directory name pattern with "*"/"?" wildcards, e.g. "*.log" or "pay*".
maxResultsNoMaximum number of matched entries to return.
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety behavior is covered. The description adds only the existence of result capping; it does not explain capping defaults, recursion scope, or the environment default behavior, so incremental value is modest.

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

Conciseness4/5

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

Two sentences, front-loaded with the core action and scope, with zero filler. Slightly terse rather than bloated.

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

Completeness4/5

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

For a read-only search tool with full schema coverage and no output schema, the description plus annotations and schema provide enough to call it correctly. Only the environment parameter and capping defaults are left to the schema, which handles them.

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

Parameters3/5

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

Schema coverage is 100% and each parameter is well documented there. The description mirrors the same facts (wildcard pattern, type filter, sort, capping) without adding syntax or edge-case detail, so it sits at the baseline.

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

Purpose4/5

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

States a specific verb (search) and resource (files/directories in a USS directory) and adds the wildcard-matching scope. It implicitly distinguishes itself from list_uss_directory and read_uss_file by the 'search matching pattern' framing, though it never names a sibling explicitly.

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

Usage Guidelines3/5

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

The description says what it supports (type filter, sort, capping) but gives no when-to-use guidance and no explicit contrast with list_uss_directory or search_members. The agent must infer selection from the verb alone.

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

security_posture_summaryA
Read-onlyIdempotent

Report the server security posture: terms acknowledgement, read-only mode, tool allowlists, TLS, audit logging, resource boundaries, and tiered security recommendations.

NameRequiredDescriptionDefault
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish that this is a safe, read-only, idempotent operation. The description adds useful behavioral context by naming the security domains included in the report and noting tiered security recommendations, though it does not describe output shape or any caveats.

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

Conciseness5/5

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

The description is a single front-loaded sentence that lists the covered areas without filler. Every phrase earns its place by clarifying report scope.

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

Completeness4/5

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

For a read-only summary tool with one fully described optional parameter and no output schema, the description is largely complete because it enumerates the security posture aspects returned. A minor gap is that it does not describe the output structure or how recommendations are tiered.

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

Parameters3/5

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

Schema description coverage is 100%, and the single optional environment parameter is fully documented in the schema, including reference to list_environments. The tool description itself adds no parameter-specific meaning, so the baseline 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb, 'Report', and a specific resource, 'server security posture', then enumerates the exact security areas covered. This makes it clearly distinguishable from siblings like system_health_summary or query_racf_audit.

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

Usage Guidelines3/5

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

Usage is implied by the content, but there is no explicit statement of when to use this tool instead of alternatives such as system_health_summary, whoami, or query_racf_audit. No exclusions or prerequisites are stated.

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

submit_jclA
Destructive

Submit inline JCL to JES for execution. Governed: pre-flight scan, change ticket, change window, optional dry-run and human approval (SECURITY_* settings).

NameRequiredDescriptionDefault
jclYesThe complete inline JCL to submit (including the //JOB card).
waitNoWhether to wait for the job to complete execution before returning.
dryRunNoValidate and report without submitting. Runs the same structure checks, JCL scan, and governance report as a real submission.
notifyNoOverride the NOTIFY= parameter on the JOB card (TSO user id, max 8 chars).
timeoutNoMaximum time to wait in seconds (defaults to 30, max 300). Only used when wait=true.
jobClassNoOverride the CLASS= parameter on the JOB card (single char, A-Z or 0-9).
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.
changeTicketNoChange/ticket ID for governed writes. Required when SECURITY_CHANGE_TICKET_PATTERN is configured.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, openWorldHint=true and non-idempotent, so the risk class is known. The description goes beyond that by disclosing the governance gates a call passes through (pre-flight scan, change ticket, change window, optional human approval governed by SECURITY_* settings), which materially affects whether a call will be blocked or held. It stops short of explaining failure modes or what a call returns.

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

Conciseness4/5

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

Two sentences, no filler, with the verb and resource front-loaded before the governance caveat. The parenthetical "(SECURITY_* settings)" is terse to the point of being cryptic, slightly reducing clarity in exchange for brevity.

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

Completeness3/5

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

For an 8-parameter mutation tool with no output schema, the description covers preconditions but says nothing about the return value (job ID, submission status, wait/timeout behavior) or what happens when governance rejects the submission. Annotations carry the risk profile, which keeps this at minimum-viable rather than inadequate.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter including jcl, wait, dryRun, timeout and changeTicket is already documented in the schema, and the description adds no syntax or format detail beyond it. The mention of "dry-run" echoes the schema's dryRun rather than extending it, so the baseline 3 applies.

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

Purpose4/5

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

The first sentence gives a specific verb and resource ("Submit inline JCL to JES for execution"), which clearly separates it from read-oriented siblings such as get_job_jcl or get_job_status. It does not explicitly name the sibling a caller should prefer for adjacent operations, but the action is unambiguous.

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

Usage Guidelines3/5

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

"Governed: pre-flight scan, change ticket, change window, optional dry-run and human approval" signals the prerequisites and the existence of a safe non-submitting mode, which is real usage context. However, it never states when to choose this over alternatives (e.g. dryRun before a real submit, or list_environments to pick a target) and no when-not guidance is given.

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

summarize_abendsA
Read-onlyIdempotent

Aggregate abend codes across recent failed jobs, with counts and a short description.

NameRequiredDescriptionDefault
hoursNoLook-back window in hours. Defaults to 24.
ownerNoOwner filter. Defaults to "*" (all owners).
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds only that results are aggregated with counts and descriptions; it says nothing about cost, rate limits, or whether the window is bounded.

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

Conciseness4/5

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

A single front-loaded sentence that states the aggregation, the scope, and the output shape with no filler. Slightly terse given the tool's triage role, but every clause earns its place.

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

Completeness4/5

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

With no output schema, the description carries the burden of describing returns and does so at a high level ('counts and a short description'). Combined with fully documented parameters and rich annotations, an agent has enough to call it correctly; only the relationship to lookup_abend_code for drill-down is unstated.

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

Parameters3/5

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

Schema description coverage is 100% and all three parameters (hours, owner, environment) are documented in-schema with defaults. The description contributes no additional parameter meaning, so baseline 3 applies.

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

Purpose4/5

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

Specific verb and resource: 'Aggregate abend codes across recent failed jobs' with the output shape ('counts and a short description') stated. It is clearly distinguishable from lookup_abend_code (single-code lookup) and find_failed_jobs (raw job list), though it never names those siblings explicitly.

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

Usage Guidelines3/5

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

The phrase 'across recent failed jobs' implies the triage scenario where this tool belongs, but there is no explicit when-to-use statement and no guidance on choosing it over find_failed_jobs or lookup_abend_code. Usage is inferred rather than stated.

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

summarize_dumpA
Read-onlyIdempotent

Summarize an abend dump (CEEDUMP, SYSMDUMP, SYSUDUMP): completion codes, failing module/offset, LE conditions, and section inventory — from spool DD or dataset.

NameRequiredDescriptionDefault
dsnNoDataset containing the dump (alternative to jobId).
jobIdNoJES job id when the dump is in spool, e.g. "JOB01234".
ddNameNoSpool DD holding the dump, e.g. "SYSUDUMP", "SYSMDUMP", "CEEDUMP" (default: first of those found).
memberNoPDS member name when dsn is a library.
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds useful context by naming what the summary will contain and that the dump may come from spool or a dataset, which is real behavioral content beyond the annotations; it stops short of covering limits, permissions, or failure behavior.

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

Conciseness5/5

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

A single compact sentence with the core action front-loaded and the qualifying source modes at the end. No wasted text.

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

Completeness4/5

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

With annotations covering safety and a fully described schema, the remaining burden is explaining what the tool produces, which the description does by listing completion codes, failing module/offset, LE conditions, and section inventory. The missing piece is sibling differentiation from summarize_abends, but otherwise it is complete for a read-only dump summarizer.

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

Parameters3/5

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

Schema description coverage is 100%, so dsn, jobId, ddName, member, and environment are already documented. The description's 'spool DD or dataset' phrasing reinforces the two input modes but adds no syntax, default, or precedence detail beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb (Summarize) and a precise resource (abend dump: CEEDUMP, SYSMDUMP, SYSUDUMP), and enumerates the extracted content (completion codes, module/offset, LE conditions, section inventory). It is clearly a dump-analysis tool, though it does not explicitly distinguish itself from the similar sibling summarize_abends.

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

Usage Guidelines2/5

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

It mentions the two input sources ('from spool DD or dataset') but never says when to choose this over summarize_abends, analyze_job_failure, or lookup_abend_code. No exclusions or prerequisites are given, so the agent must infer the selection criteria.

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

system_health_summaryA
Read-onlyIdempotent

Produce a high-level operational health snapshot: overall status (HEALTHY/DEGRADED/CRITICAL), active and queued jobs, recent failure count, top abend codes with descriptions, and per-owner failure breakdown.

NameRequiredDescriptionDefault
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.
lookbackHoursNoScope the failed-job analysis to jobs that ended within this many hours. When omitted, all OUTPUT-status jobs with failure return codes are counted (no time filter). Set this to e.g. 24 to see only failures in the last day.

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, open-world, and non-destructive behavior. The description adds meaningful context beyond annotations by specifying the aggregate status categories and returned breakdowns, though it does not define status thresholds or clarify how 'recent' failures are scoped.

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

Conciseness5/5

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

It is a single front-loaded sentence with a colon-delimited list of output components. Every clause names a specific element of the health snapshot, with no filler or repetition.

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

Completeness4/5

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

Because there is no output schema, the description usefully enumerates what the snapshot returns, and annotations cover the safety profile. It still leaves modest gaps around when to prefer this overview over sibling diagnostics and how status thresholds or failure recency are determined.

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

Parameters3/5

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

Schema description coverage is 100%, and both parameters (environment, lookbackHours) are fully documented in the schema. The description does not add parameter-level meaning; it only refers generally to 'recent failure count' without explaining the environment or lookback behavior.

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

Purpose5/5

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

It uses a specific verb ('Produce') and resource ('high-level operational health snapshot') and enumerates the returned components: overall status, active/queued jobs, recent failures, top abend codes, and per-owner failure breakdown. This clearly distinguishes it from more granular siblings such as find_failed_jobs and summarize_abends.

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

Usage Guidelines3/5

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

The description implies this is for a broad health check rather than detailed investigation, but it never explicitly says when to use it instead of siblings like find_failed_jobs, get_wlm_status, or analyze_root_cause. There are no stated exclusions or prerequisites.

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

verify_zosmf_connectionB
Read-onlyIdempotent

Verify z/OSMF connectivity, authentication, and basic API availability.

NameRequiredDescriptionDefault
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds that authentication and basic API availability are checked, but it does not explain what the verification actually exercises, whether credentials are required, or what kind of result indicates success or failure.

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

Conciseness5/5

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

A single, front-loaded sentence that states the tool's purpose without filler or redundant restatement of the title.

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

Completeness4/5

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

For a simple, single-optional-parameter verification tool with no output schema, the description is mostly sufficient: it identifies what is verified and is safe to invoke repeatedly. The only minor gap is that it does not characterize the result or response shape, but the low complexity keeps this from being a significant omission.

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

Parameters3/5

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

There is only one optional parameter, and the schema description coverage is 100%, including a reference to list_environments and the default behavior. The description adds no parameter detail beyond the schema, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description gives a specific verb, 'Verify', and names the resource and checks: z/OSMF connectivity, authentication, and basic API availability. It is clearly distinct from siblings like system_health_summary or whoami, though it does not explicitly call out those distinctions.

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

Usage Guidelines2/5

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

It does not state when to use this tool versus alternatives, nor does it describe prerequisites, exclusions, or common workflows such as running it before submitting JCL. Usage is only implied by the word 'Verify'.

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

whoamiA
Read-onlyIdempotent

Show the acting identity for this session: user, mapped role, permissions summary, active environment, and data-protection status.

NameRequiredDescriptionDefault
environmentNoNamed target environment (see list_environments), e.g. "dev", "prod". Omit to use the server default.

TDQS

A4/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds useful behavioral context by declaring exactly what identity-related data is surfaced, including a permissions summary and data-protection status, which helps an agent understand the response content beyond mere safety hints.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that enumerates the returned identity facets without any filler. Every phrase contributes directly to understanding what the tool reports.

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

Completeness4/5

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

There is no output schema, but the description effectively serves as a return-value summary by naming the identity facets it reports. Combined with full schema coverage for the only parameter and strong annotations, the definition is nearly complete, though it could explicitly mention the optional environment parameter's effect.

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

Parameters3/5

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

Schema description coverage is 100%, and the single optional environment parameter is well documented in the schema itself. The description mentions 'active environment' as part of the output but does not add semantics about the environment parameter (such as default behavior or naming), so it meets the baseline without adding value beyond the schema.

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

Purpose5/5

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

The description uses a specific verb ('Show') and precisely names the resource: the acting identity for this session. It further enumerates the exact facets returned (user, role, permissions, environment, data-protection status), so an agent can instantly distinguish it from sibling tools like security_posture_summary or verify_zosmf_connection.

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

Usage Guidelines3/5

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

The phrase 'for this session' implies usage context, but the description gives no explicit when-to-use guidance, no exclusions, and no alternatives. An agent can infer that this is the tool for identity introspection, but the definition does not route it against any sibling.

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.

  1. 55 tool updatesv3.0.0
    • First observedanalyze_job_failure
    • First observedanalyze_logrec
    • First observedanalyze_root_cause
    • First observedapprove_write
    • First observedcancel_job
    • First observedcics_disable_transaction
    • First observedcics_newcopy
    • First observedcompare_jobs
    • First observedestimate_mlc_cost
    • First observedfind_failed_jobs
    • First observedget_cics_region_stats
    • First observedget_cics_region_status
    • First observedget_console_messages
    • First observedget_dataset_info
    • First observedget_hsm_activity
    • First observedget_job_capacity
    • First observedget_job_jcl
    • First observedget_job_output
    • First observedget_job_status
    • First observedget_smf_metrics
    • First observedget_user_jobs_summary
    • First observedget_volume_space
    • First observedget_wlm_status
    • First observedhold_job
    • First observedims_command
    • First observedinvestigate_incident
    • First observedissue_console_command
    • First observedjob_dependencies
    • First observedlist_cics_regions
    • First observedlist_cics_transactions
    • First observedlist_datasets
    • First observedlist_db2_subsystems
    • First observedlist_environments
    • First observedlist_jobs
    • First observedlist_uss_directory
    • First observedlookup_abend_code
    • First observedmq_channel_status
    • First observedmq_queue_status
    • First observedpredict_batch_failures
    • First observedquery_racf_audit
    • First observedread_dataset
    • First observedread_uss_file
    • First observedrelease_job
    • First observedscheduler_job_status
    • First observedsearch_dataset
    • First observedsearch_db2_catalog
    • First observedsearch_members
    • First observedsearch_uss_files
    • First observedsecurity_posture_summary
    • First observedsubmit_jcl
    • First observedsummarize_abends
    • First observedsummarize_dump
    • First observedsystem_health_summary
    • First observedverify_zosmf_connection
    • First observedwhoami

TDQS

B3.3/5.0

Scored across 55 tools

Disambiguation3/5

Most tools target distinct resources or actions, but the failure/diagnosis cluster is crowded: find_failed_jobs, analyze_job_failure, investigate_incident, analyze_root_cause, summarize_abends, system_health_summary, and predict_batch_failures can be hard to choose between without careful reading. Similar overlap exists between list_datasets and search_dataset, and between list_uss_directory and search_uss_files, though descriptions generally clarify intent.

Naming Consistency4/5

The set is predominantly snake_case with a verb-first pattern such as get_job_status, list_jobs, read_dataset, and submit_jcl. There are readable deviations including resource-first or noun-first names like cics_newcopy, cics_disable_transaction, mq_queue_status, scheduler_job_status, system_health_summary, and whoami, but overall the convention is mostly predictable.

Tool Count2/5

At 55 tools, the surface is very large and imposes a significant selection burden on an agent even for a broad mainframe operations domain. While many tools are purpose-specific, the count goes well beyond the well-scoped 3-15 range and includes many niche diagnostics that could be consolidated.

Completeness3/5

The server has broad read coverage across JES, datasets, USS, CICS, Db2, RACF, SMF, console, MQ, storage, scheduling, and capacity. However, lifecycle coverage is uneven: dataset and USS operations lack create/update/delete, Db2 has catalog search but no query execution, and CICS has disable but no enable, creating notable gaps for a full mainframe operations surface.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides safe, structured access to an IBM z/OS mainframe through natural language in Claude Code, enabling screen reading, dataset browsing, code editing, job submission, and regression testing.
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to interact with IBM i (AS/400) systems for RPA automation via 37 tools for 5250 navigation, CL commands, DB2 queries, and system management.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to interact with a classic MVS 3.8j system running under Hercules through mvsMF's z/OSMF-compatible REST API. Supports dataset listing/reading, member access, job submission, and job status/file retrieval via MCP tools.
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables LLMs to explore legacy COBOL mainframe codebases through MCP tools for call graphs, copybook usage, DB2 tables, and impact analysis.
    -