Skip to main content
Glama
markbsigler

ISPW MCP Server

by markbsigler

ISPW MCP Server

A Model Context Protocol (MCP) server for BMC Compuware ISPW (Interactive Source Program Workbench) - a comprehensive source code management, release automation, and deployment automation tool for mainframe DevOps.

Overview

This MCP server enables LLMs to interact with ISPW through a comprehensive set of tools for:

  • Assignment Management: Create, list, and retrieve assignments (containers for development work)

  • Task Management: View tasks within assignments (individual modules/components)

  • Release Management: Create and manage releases for coordinated deployments

  • Operations: Generate, promote, and deploy code through the development lifecycle

  • Set & Package Management: List and view deployment sets and packages

Related MCP server: Lazy LLMs Project Management MCP Server

Features

  • ✅ Complete ISPW REST API coverage for core workflows

  • ✅ Token-based authentication with CES (Compuware Enterprise Services)

  • ✅ Dual output formats: Human-readable Markdown and machine-readable JSON

  • ✅ Comprehensive error handling with actionable messages

  • ✅ Pydantic validation for all inputs

  • ✅ Async/await for optimal performance

  • ✅ Support for both production and custom CES servers

Installation

Prerequisites

  • Python 3.11 or higher

  • uv for dependency management

  • Access to a BMC Compuware ISPW instance

  • Personal Access Token for CES authentication

Setup

  1. Clone the project directory:

    cd /path/to/ispw-mcp-server
  2. Create the environment and install locked dependencies:

    uv sync --locked
  3. Configure environment variables:

    cp .env.example .env

    Edit .env and set your values:

    # For custom CES server:
    CES_HOST=your-ces-host.example.com
    CES_PORT=2020
    
    # Or for production server:
    # ISPW_BASE_URL=https://ispw.api.compuware.com
    
    # Required: Your personal access token
    ISPW_API_TOKEN=your_token_here
    
    # Default SRID (optional, defaults to "ISPW")
    ISPW_DEFAULT_SRID=ISPW

Usage

Running the Server

With uv:

uv run ispw-mcp-server

Using the installed entry point directly:

.venv/bin/ispw-mcp-server

With the MCP Inspector (for testing):

npx @modelcontextprotocol/inspector uv run ispw-mcp-server

Configuration in Claude Desktop

Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "ispw": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/ispw-mcp-server",
        "run",
        "ispw-mcp-server"
      ],
      "env": {
        "ISPW_BASE_URL": "https://your-ces-host:2020",
        "ISPW_API_TOKEN": "your_token_here",
        "ISPW_DEFAULT_SRID": "ISPW"
      }
    }
  }
}

Alternatively, point command at the virtualenv entry point:

{
  "mcpServers": {
    "ispw": {
      "command": "/path/to/ispw-mcp-server/.venv/bin/ispw-mcp-server",
      "env": {
        "ISPW_BASE_URL": "https://your-ces-host:2020",
        "ISPW_API_TOKEN": "your_token_here",
        "ISPW_DEFAULT_SRID": "ISPW"
      }
    }
  }
}

Available Tools

Assignment Tools

ispw_list_assignments

List all assignments for a specific SRID, with optional filtering by level or assignment ID.

Parameters:

  • srid (str): System Resource Identifier (default: from env)

  • level (optional): Filter by level (DEV, INT, ACC, PRD)

  • assignment_id (optional): Filter by specific assignment ID

  • response_format (optional): "markdown" or "json" (default: markdown)

Example:

List all DEV level assignments for SRID ISPW

ispw_get_assignment

Get detailed information about a specific assignment.

Parameters:

  • srid (str): System Resource Identifier

  • assignment_id (str): Assignment identifier

  • response_format (optional): Output format

Example:

Get details for assignment PLAY000001 in ISPW

ispw_create_assignment

Create a new assignment.

Parameters:

  • srid (str): System Resource Identifier

  • assignment_id (str): Unique assignment identifier

  • stream (str): Stream name

  • application (str): Application name

  • description (optional): Assignment description

  • default_path (optional): Default path

  • response_format (optional): Output format

Example:

Create a new assignment PLAY000002 in ISPW for stream PLAY and application PLAY

Task Tools

ispw_list_tasks

List all tasks for a specific assignment.

Parameters:

  • srid (str): System Resource Identifier

  • assignment_id (str): Assignment identifier

  • response_format (optional): Output format

Example:

List all tasks for assignment PLAY000001

Release Tools

ispw_list_releases

List all releases for a specific SRID.

Parameters:

  • srid (str): System Resource Identifier

  • release_id (optional): Filter by specific release ID

  • response_format (optional): Output format

Example:

List all releases for ISPW

ispw_get_release

Get detailed information about a specific release.

Parameters:

  • srid (str): System Resource Identifier

  • release_id (str): Release identifier

  • response_format (optional): Output format

ispw_create_release

Create a new release.

Parameters:

  • srid (str): System Resource Identifier

  • release_id (str): Unique release identifier

  • stream (str): Stream name

  • application (str): Application name

  • description (optional): Release description

  • response_format (optional): Output format

Operation Tools

ispw_generate_assignment

Generate code for an assignment (compile and prepare).

Parameters:

  • srid (str): System Resource Identifier

  • assignment_id (str): Assignment identifier

  • level (optional): Target level for generation

  • runtime_configuration (optional): Runtime configuration

  • response_format (optional): Output format

Example:

Generate assignment PLAY000001 for level DEV

ispw_promote_assignment

Promote an assignment to the next level.

Parameters:

  • srid (str): System Resource Identifier

  • assignment_id (str): Assignment identifier

  • level (optional): Target level for promotion

  • change_type (optional): S (Standard), I (Incidental), E (Emergency)

  • execution_status (optional): Execution status

  • response_format (optional): Output format

Example:

Promote assignment PLAY000001 to INT level with Standard change type

ispw_deploy

Deploy an assignment, release, or set to target environment.

⚠️ CAUTION: This is a destructive operation that affects production or target environments.

Parameters:

  • srid (str): System Resource Identifier

  • target_id (str): Assignment, release, or set identifier

  • target_type (str): "assignment", "release", or "set"

  • level (optional): Target level for deployment

  • deploy_implementation_time (optional): Scheduled time (ISO 8601)

  • deploy_active (optional): Deploy to active libraries (boolean)

  • response_format (optional): Output format

Examples:

Deploy assignment PLAY000001 to production
Deploy release REL001 to PRD level
Schedule deployment of assignment PLAY000001 for 2026-01-15T10:00:00Z

Set and Package Tools

ispw_list_sets

List all sets for a specific SRID.

Parameters:

  • srid (str): System Resource Identifier

  • set_id (optional): Filter by specific set ID

  • response_format (optional): Output format

ispw_list_packages

List all packages for a specific SRID.

Parameters:

  • srid (str): System Resource Identifier

  • package_id (optional): Filter by specific package ID

  • response_format (optional): Output format

ispw_get_package

Get detailed information about a specific package.

Parameters:

  • srid (str): System Resource Identifier

  • package_id (str): Package identifier

  • response_format (optional): Output format

Architecture

Key Design Decisions

  1. Comprehensive API Coverage: Implements all major ISPW REST API endpoints for complete workflow support

  2. Dual Format Responses: Markdown for human readability, JSON for programmatic processing

  3. Shared Utilities: DRY principle with reusable API client, error handling, and formatting functions

  4. Strong Validation: Pydantic models ensure all inputs are validated before API calls

  5. Async Design: All I/O operations use async/await for optimal performance

  6. Flexible Configuration: Support for both production and custom CES servers

Project Structure

ispw-mcp-server/
├── src/ispw_mcp_server/
│   ├── __init__.py          # Package metadata and exports
│   └── server.py            # Main server implementation
├── tests/                   # pytest suite
├── ispw_openapi_spec.json   # OpenAPI specification (reference)
├── pyproject.toml           # Dependencies + tool configuration
├── uv.lock                  # Committed lockfile
├── Makefile                 # Development commands
├── .env.example             # Environment template
├── .env                     # Your configuration (not in git)
├── .gitignore               # Git ignore rules
└── README.md                # This file

Development

Running Tests

make test        # pytest with coverage

Code Quality

The project uses Ruff and mypy (strict):

make check       # lint + format check + typecheck + test
make fmt         # auto-fix and format

Adding New Tools

When adding new ISPW API endpoints:

  1. Define Pydantic input model with validation

  2. Create tool function with @mcp.tool() decorator

  3. Add proper annotations (readOnlyHint, destructiveHint, etc.)

  4. Implement using shared _make_api_request() utility

  5. Handle errors with _handle_api_error()

  6. Support both markdown and JSON output formats

  7. Update this README with tool documentation

Troubleshooting

Authentication Errors

Problem: "Error: Authentication failed. Check your ISPW_API_TOKEN is valid."

Solution:

  • Verify your Personal Access Token is correct

  • Ensure the token has appropriate permissions in CES

  • Check token hasn't expired

Connection Errors

Problem: "Error: Request timed out. The ISPW server may be slow or unavailable."

Solution:

  • Verify CES_HOST and CES_PORT are correct

  • Check network connectivity to the CES server

  • Increase ISPW_TIMEOUT if operations are legitimately slow

SSL Certificate Issues

Problem: SSL certificate verification fails for custom CES server

Solution: The server currently disables SSL verification for custom CES servers. For production use, configure proper SSL certificates.

Security Considerations

  1. Token Management: Store ISPW_API_TOKEN securely, never commit to version control

  2. SSL Verification: Consider enabling SSL verification for production deployments

  3. Access Control: Tokens should have minimal required permissions

  4. Audit Logging: ISPW maintains audit logs of all operations

Contributing

When contributing:

  1. Follow Python best practices and PEP 8

  2. Use type hints throughout

  3. Add comprehensive docstrings

  4. Include parameter validation

  5. Test with both markdown and JSON formats

  6. Update README documentation

License

Apache License 2.0. See LICENSE.md.

Support

For ISPW API issues, consult:

For MCP server issues:

  • Check server logs

  • Test with MCP Inspector

  • Review environment configuration

Changelog

Version 1.0.0 (2026-01-08)

Initial release with:

  • Complete assignment lifecycle management

  • Task viewing capabilities

  • Release creation and management

  • Generate, promote, and deploy operations

  • Set and package listing

  • Dual output formats (Markdown/JSON)

  • Comprehensive error handling

  • Full Pydantic validation

Available Tools

13 tools
ispw_create_assignmentA

Create a new ISPW assignment.

Creates a new assignment container for grouping related development work. The assignment must have a unique ID within the SRID.

Args: params (CreateAssignmentInput): Validated input parameters containing: - srid (str): System Resource Identifier - assignment_id (str): Unique assignment identifier - stream (str): Stream name for the assignment - application (str): Application name for the assignment - description (Optional[str]): Assignment description - default_path (Optional[str]): Default path for the assignment - response_format (ResponseFormat): Output format (default: markdown)

Returns: str: Created assignment details or error message

Examples: - Create assignment: srid="ISPW", assignment_id="PLAY000002", stream="PLAY", application="PLAY", description="New feature work"

NameRequiredDescriptionDefault
paramsYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already disclose that this is a non-readonly, non-idempotent, non-destructive, closed-world operation. The description adds useful context by stating the uniqueness constraint on assignment_id and that the tool returns created details or an error message, but it does not cover permissions, duplicate-handling specifics, or broader side effects.

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

Conciseness4/5

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

The description is well structured with Args, Returns, and Examples sections, and the key purpose is front-loaded. It contains some redundancy between the first two sentences, but overall it is appropriately sized for a create tool.

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

Completeness4/5

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

Given that annotations cover the safety profile and an output schema exists, the description provides sufficient information about required inputs and the uniqueness constraint. It could be more complete around failure modes or permissions, but nothing critical is missing for basic invocation.

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

Parameters4/5

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

Although the top-level schema description coverage is low, the description enumerates all nested input fields, including optional fields and the default response format, and provides a concrete example. It largely mirrors the nested schema descriptions rather than adding deep semantics, but it does compensate for the top-level gap.

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: creating a new ISPW assignment container for grouping related development work. It is clear what the tool does, though it does not explicitly distinguish the tool from siblings such as ispw_generate_assignment or ispw_create_release.

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 describing the assignment as a container for related development work and by noting that the assignment ID must be unique within the SRID. However, there is no explicit guidance on when to use this tool versus alternatives, nor any when-not-use conditions.

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

ispw_create_releaseA

Create a new ISPW release.

Creates a new release container for coordinating deployment of multiple assignments. The release must have a unique ID within the SRID.

Args: params (CreateReleaseInput): Validated input parameters containing: - srid (str): System Resource Identifier - release_id (str): Unique release identifier - stream (str): Stream name for the release - application (str): Application name for the release - description (Optional[str]): Release description - response_format (ResponseFormat): Output format (default: markdown)

Returns: str: Created release details or error message

Examples: - Create release: srid="ISPW", release_id="REL002", stream="PLAY", application="PLAY", description="Q1 2026 Release"

NameRequiredDescriptionDefault
paramsYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, so the safety profile is covered. The description adds the conceptual role (release container coordinating assignments) and a uniqueness constraint that also appears in the schema; it says nothing about permissions, idempotency across retries, or error conditions beyond a generic 'error message'.

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

Conciseness3/5

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

Purpose statement is front-loaded and the example is useful, but the Args block is a near-verbatim restatement of the input schema and the Returns section duplicates information already carried by the output schema. Meaningful trimming is possible without losing information.

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

Completeness4/5

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

With an output schema present, the description needn't explain return values, and annotations cover the safety profile; what remains (unique ID constraint, coordinating assignments, default response format) is present. Only the absence of permission/error context keeps it from a 5.

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

Parameters4/5

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

Reported schema description coverage is 0%, so the description must compensate and it does: every field (srid, release_id, stream, application, description, response_format) is listed with meaning, and a worked example supplies concrete values. It stops short of explaining value formats or valid stream/application references, keeping it at 4 rather than 5.

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 ('Create a new ISPW release') and adds scope: a container for coordinating deployment of multiple assignments. The verb alone distinguishes it from the ispw_get_release / ispw_list_releases siblings, though it never names them 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 uniqueness constraint on release_id within the SRID implies when creation will fail, but there is no explicit guidance on when to use this versus ispw_create_assignment or other siblings, and no prerequisites are stated. Usage is inferable from the verb only.

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

ispw_deployA
Destructive

Deploy an ISPW assignment, release, or set to target environment.

Deploys code to the target environment. This is typically the final step in the deployment pipeline. Can deploy immediately or schedule for a future time.

CAUTION: This is a destructive operation that affects production or target environments.

Args: params (DeployInput): Validated input parameters containing: - srid (str): System Resource Identifier - target_id (str): Assignment, release, or set identifier - target_type (str): Type - 'assignment', 'release', or 'set' - level (Optional[str]): Target level for deployment - deploy_implementation_time (Optional[str]): Scheduled time (ISO 8601) - deploy_active (Optional[bool]): Deploy to active libraries - response_format (ResponseFormat): Output format (default: markdown)

Returns: str: Operation status including operation ID and status URL, or error message

Examples: - Deploy assignment: srid="ISPW", target_id="PLAY000001", target_type="assignment" - Deploy release: srid="ISPW", target_id="REL001", target_type="release", level="PRD" - Scheduled deploy: srid="ISPW", target_id="PLAY000001", target_type="assignment", deploy_implementation_time="2026-01-15T10:00:00Z"

NameRequiredDescriptionDefault
paramsYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

The annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered. The description adds real value beyond them: it warns that production/target environments are affected and reveals that the call returns an operation ID and status URL, implying an asynchronous job rather than a synchronous mutation.

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

Conciseness3/5

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

The purpose and safety warning are front-loaded well, and the examples section earns its space. However, the opening two sentences restate the same idea ('Deploy ... to target environment' / 'Deploys code to the target environment'), and the Args block largely duplicates descriptions already present 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?

An output schema exists, so return values need not be documented, yet the description still mentions operation ID and status URL helpfully. Examples cover the three target types and the scheduling path. What is missing is the async/polling contract and what happens to artifacts already in the target environment, which matters given the destructive hint.

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

Parameters4/5

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

Schema description coverage is reported at 0%, so the description must carry the parameter burden, and it does enumerate every field with types and optionality (srid, target_id, target_type, level, deploy_implementation_time, deploy_active, response_format). The worked examples concretely show correct value shapes, notably target_type='assignment' with a PLAY ID and level='PRD' for releases, which the schema alone does not convey.

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 names a specific verb (Deploy) and resource (ISPW assignment, release, or set) plus the destination environment, which is far more precise than a bare 'deploy'. It does not, however, distinguish this from the sibling ispw_promote_assignment, which an agent could reasonably consider an alternative for moving code forward.

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?

'This is typically the final step in the deployment pipeline' and 'Can deploy immediately or schedule for a future time' give useful situational context. There is no explicit 'use this instead of X' routing against ispw_promote_assignment, and no stated prerequisites or conditions under which deployment should be avoided beyond a generic caution.

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

ispw_generate_assignmentA

Generate code for an ISPW assignment.

Initiates the generation process which compiles and prepares code within an assignment. This is typically the first step after code changes before promoting to higher environments.

Args: params (GenerateAssignmentInput): Validated input parameters containing: - srid (str): System Resource Identifier - assignment_id (str): Assignment identifier - level (Optional[str]): Target level for generation - runtime_configuration (Optional[str]): Runtime configuration - response_format (ResponseFormat): Output format (default: markdown)

Returns: str: Operation status including operation ID and status URL, or error message

Examples: - Generate assignment: srid="ISPW", assignment_id="PLAY000001" - Generate with level: srid="ISPW", assignment_id="PLAY000001", level="DEV"

NameRequiredDescriptionDefault
paramsYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare non-read-only, non-idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds genuinely new signals: the operation is asynchronous and returns an operation ID plus a status URL for polling — an important behavioral detail absent from annotations. It does not say whether generation can fail mid-run or what happens to prior generated output.

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

Conciseness3/5

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

The prose lead and the Returns/Examples blocks earn their place, but the Args section duplicates the schema field-for-field with identical wording, spending a third of the description on zero-information repetition. The useful content is front-loaded, so the structural ordering is sound.

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

Completeness4/5

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

With an output schema present, the return description is a bonus rather than a necessity, and the async status-URL note is the key missing-from-schema fact an agent needs. Coverage of the workflow position and example invocations rounds it out; the gap is that the ambiguous optional parameters (level, runtime_configuration) remain unexplained.

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

Parameters2/5

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

Schema description coverage is 0% and the description merely restates the schema verbatim ("srid: System Resource Identifier", "level: Target level for generation"), adding no meaning — it never explains what an SRID value looks like or what a "level" such as DEV implies. The examples contribute the only real value by showing concrete values (srid="ISPW", level="DEV"), which is useful but thin compensation for a 0% coverage gap.

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 ("Generate code for an ISPW assignment") and expands it into concrete mechanics: compiles and prepares code within an assignment. It also places the action in the workflow — first step after code changes, before promoting to higher environments — which implicitly separates it from ispw_promote_assignment and ispw_deploy.

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?

"This is typically the first step after code changes before promoting to higher environments" gives a clear when-to-use context and names the subsequent step, letting an agent infer that promote/deploy are downstream. It stops short of explicit exclusions or prerequisites (e.g., what states an assignment must be in to be generated).

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

ispw_get_assignmentA
Read-onlyIdempotent

Get detailed information about a specific ISPW assignment.

Retrieves complete details for an assignment including owner, stream, application, level, status, and timestamps.

Args: params (GetAssignmentInput): Validated input parameters containing: - srid (str): System Resource Identifier - assignment_id (str): Assignment identifier to retrieve - response_format (ResponseFormat): Output format (default: markdown)

Returns: str: Formatted assignment details or error message

Examples: - Get assignment: srid="ISPW", assignment_id="PLAY000001"

NameRequiredDescriptionDefault
paramsYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/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=false. The description adds useful behavioral context by naming the returned fields and noting that failures return an error message, though it does not discuss permissions 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.

Conciseness4/5

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

It is front-loaded with the purpose and returned details, followed by standard Args/Returns/Examples sections. Some Args content repeats the schema, but the overall structure is efficient and readable.

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

Completeness4/5

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

Given rich annotations and an output schema, the description is largely complete for a simple getter. The main remaining gap is that it does not tell an agent how to obtain the required assignment_id when it is unknown.

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

Parameters3/5

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

The description lists srid, assignment_id, and response_format with brief meanings plus one example. However, with low schema description coverage, it only partially compensates: it does not explain assignment_id format constraints or how callers should discover an assignment_id.

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: get detailed information about a specific ISPW assignment. It distinguishes a single-assignment retrieval from list-style siblings by emphasizing 'specific', though it does not explicitly name ispw_list_assignments as the discovery 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?

Usage is implied by 'specific ISPW assignment' and the example call, but there is no explicit when-to-use guidance, no when-not conditions, and no mention of using ispw_list_assignments to find an assignment_id. It is adequate but leaves routing to inference.

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

ispw_get_packageA
Read-onlyIdempotent

Get detailed information about a specific ISPW package.

Retrieves complete details for a package including owner, application, status, and creation timestamp.

Args: params (GetPackageInput): Validated input parameters containing: - srid (str): System Resource Identifier - package_id (str): Package identifier to retrieve - response_format (ResponseFormat): Output format (default: markdown)

Returns: str: Formatted package details or error message

Examples: - Get package: srid="ISPW", package_id="PKG001"

NameRequiredDescriptionDefault
paramsYes

Output Schema

NameRequiredDescription
resultYes

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=false, so the safety profile is clear. The description adds useful context about the returned details and error behavior, but does not discuss authorization, rate limits, or other operational constraints.

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?

The description is front-loaded with the purpose and then uses structured Args, Returns, and Examples sections. It is somewhat verbose and repeats the retrieval idea across the opening sentences, but the example 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 simple read-only lookup tool, the description plus rich annotations and an output schema provide enough context to call the tool correctly. The main remaining gap is explicit routing guidance versus sibling package tools.

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

Parameters4/5

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

Schema description coverage is reported as 0% at the top level, so the description carries the burden of documenting the nested inputs. It enumerates srid, package_id, and response_format with meanings and the default output format, which is enough to invoke the tool correctly.

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: retrieve detailed information about a specific ISPW package. It clearly implies differentiation from list-style siblings such as ispw_list_packages by emphasizing a specific package, but it does not explicitly name the 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?

Usage is implied by 'specific ISPW package' and the example, which suggests retrieving one known package rather than listing packages. However, there is no explicit when-to-use guidance, no exclusions, and no named alternative such as ispw_list_packages.

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

ispw_get_releaseA
Read-onlyIdempotent

Get detailed information about a specific ISPW release.

Retrieves complete details for a release including owner, stream, application, status, and timestamps.

Args: params (GetReleaseInput): Validated input parameters containing: - srid (str): System Resource Identifier - release_id (str): Release identifier to retrieve - response_format (ResponseFormat): Output format (default: markdown)

Returns: str: Formatted release details or error message

Examples: - Get release: srid="ISPW", release_id="REL001"

NameRequiredDescriptionDefault
paramsYes

Output Schema

NameRequiredDescription
resultYes

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, non-destructive and closed-world, so the safety profile is fully covered. The description adds that it returns 'owner, stream, application, status, and timestamps' and can return an error message, but that field list largely duplicates the output schema rather than disclosing new behavioral traits.

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?

Front-loaded with the purpose in the first sentence, followed by detail, args, returns, and a short example. The Args/Returns blocks restate schema content and could be trimmed, but overall it is compact and well-ordered.

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 single-object read tool with an output schema and rich annotations, the description covers purpose, inputs, default format, error behavior, and includes an example. Nothing essential for correct invocation is missing, aside from guidance on how to obtain a valid release_id.

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

Parameters4/5

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

Schema description coverage is reported at 0% for the top-level 'params' wrapper, so the description carries weight here: it names srid, release_id, and response_format (with its markdown default) and gives a concrete example value pairing. That compensates for the coverage gap, though it adds no format/validation detail for release_id.

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?

First sentence uses a specific verb ('Get') plus resource ('a specific ISPW release'), and the word 'specific' implicitly distinguishes it from ispw_list_releases. It doesn't explicitly name the sibling, but an agent can tell it retrieves one release rather than a collection.

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 example ('Get release: srid="ISPW", release_id="REL001"') and the phrase 'release_id: Release identifier to retrieve' suggest you must already know the ID. No when-to-use/when-not guidance or explicit routing to ispw_list_releases for discovery is provided.

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

ispw_list_assignmentsA
Read-onlyIdempotent

List ISPW assignments for a specific SRID.

Retrieves all assignments or filters by level or assignment ID. Assignments are containers for related development work in ISPW, grouping related changes together.

Args: params (ListAssignmentsInput): Validated input parameters containing: - srid (str): System Resource Identifier (default: from ISPW_DEFAULT_SRID env var) - level (Optional[AssignmentLevel]): Filter by assignment level (DEV, INT, ACC, PRD) - assignment_id (Optional[str]): Filter by specific assignment ID - response_format (ResponseFormat): Output format (default: markdown)

Returns: str: Formatted list of assignments or error message

Examples: - List all assignments: srid="ISPW" - List DEV assignments: srid="ISPW", level="DEV" - Find specific assignment: srid="ISPW", assignment_id="PLAY000001"

NameRequiredDescriptionDefault
paramsYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

The annotations already establish that this is a read-only, idempotent, non-destructive, closed-world operation. The description adds useful behavioral context by noting the default SRID source, the response formats, and that it returns a formatted list or error message.

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 front-loaded with the core purpose, then uses clear Args, Returns, and Examples sections. It is appropriately sized and each section contributes useful invocation guidance without excessive prose.

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

Completeness5/5

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

Given the presence of annotations and an output schema, the description provides more than enough context: it covers purpose, all input fields, defaults, filtering modes, output format, and examples. An agent has everything needed to select and invoke the tool correctly.

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

Parameters5/5

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

Although the context reports 0% schema description coverage, the description documents every nested parameter: srid with its env-var default, level with allowed DEV/INT/ACC/PRD values, assignment_id filtering, and response_format defaults. The examples further clarify how these parameters are combined in practice.

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 and resource: 'List ISPW assignments for a specific SRID.' It also clarifies the domain concept by explaining that assignments are containers grouping related changes, which helps distinguish this listing tool from sibling getters and creators.

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

Usage Guidelines4/5

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

The description clearly explains that the tool retrieves all assignments or filters by level or assignment ID, and provides concrete examples for each mode. It does not explicitly contrast this with siblings such as ispw_get_assignment, so it stops short of full when-to-use/when-not-to-use guidance.

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

ispw_list_packagesA
Read-onlyIdempotent

List ISPW packages for a specific SRID.

Retrieves all packages or filters by package ID. Packages are deployment units that contain the actual components ready for deployment.

Args: params (ListPackagesInput): Validated input parameters containing: - srid (str): System Resource Identifier - package_id (Optional[str]): Filter by specific package ID - response_format (ResponseFormat): Output format (default: markdown)

Returns: str: Formatted list of packages or error message

Examples: - List all packages: srid="ISPW" - Find specific package: srid="ISPW", package_id="PKG001"

NameRequiredDescriptionDefault
paramsYes

Output Schema

NameRequiredDescription
resultYes

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=false, so the safety profile is clear. The description adds context that packages are deployment units and that the return is a formatted list or error message. It does not disclose any additional behavioral traits like pagination, permissions, 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.

Conciseness4/5

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

The description is front-loaded with the core purpose and then organized into Args, Returns, and Examples sections. The additional detail is useful given the low schema coverage, but some repetition of schema field definitions could be trimmed. Overall it is appropriately sized and easy to scan.

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 list tool with read-only annotations and an output schema, the description covers the purpose, all parameters, and usage examples. It does not mention pagination or sorting, which could matter for large result sets, but the output schema handles return values. It is nearly complete for the expected agent needs.

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

Parameters4/5

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

The schema description coverage is reported as 0%, so the description must compensate, and it does: it names srid, package_id, and response_format, explains their meanings, and gives concrete examples. This adds meaning beyond the raw schema, though it largely repeats the field descriptions present in the $defs.

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: 'List ISPW packages for a specific SRID.' It also clarifies the scope by noting that it retrieves all packages or filters by package ID. It does not explicitly contrast with siblings like ispw_get_package, but the list-vs-get distinction is inherent in the verb.

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

Usage Guidelines3/5

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

The description provides examples for listing all packages and filtering by package ID, which implies the primary use case. However, it does not state when to use this tool versus alternatives such as ispw_get_package or ispw_list_sets. Usage is implied rather than explicitly guided.

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

ispw_list_releasesA
Read-onlyIdempotent

List ISPW releases for a specific SRID.

Retrieves all releases or filters by release ID. Releases are collections of assignments for coordinated deployment to production or other environments.

Args: params (ListReleasesInput): Validated input parameters containing: - srid (str): System Resource Identifier - release_id (Optional[str]): Filter by specific release ID - response_format (ResponseFormat): Output format (default: markdown)

Returns: str: Formatted list of releases or error message

Examples: - List all releases: srid="ISPW" - Find specific release: srid="ISPW", release_id="REL001"

NameRequiredDescriptionDefault
paramsYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/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=false, so the safety profile is covered. The description adds value beyond that by explaining the domain semantics of a release ('collections of assignments for coordinated deployment') and by stating that the result is either a formatted list or an error message. Nothing contradicts the annotations.

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?

The purpose sentence is front-loaded and the release definition follows as useful context. The Google-style 'Args:'/'Returns:' scaffolding restates container details ('Validated input parameters containing:') that add little, but the examples earn their space, so waste is minor.

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?

An output schema exists, so the description is not obliged to enumerate return fields, and it appropriately just notes 'formatted list or error message.' With one required wrapper object containing three documented fields, the description covers everything needed to call the tool correctly; only the meaning of SRID remains thin.

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

Parameters4/5

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

Measured schema coverage is 0%, so the description carries the burden, and it does document all three fields (srid, release_id, response_format) with defaults and worked examples. The weak spot is that 'srid' is only glossed as 'System Resource Identifier' — the acronym expanded but not explained — and the markdown/json choice is only noted for its default, not its effect on output shape.

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 opening line states a specific verb and resource ('List ISPW releases') plus the scoping key (SRID), so intent is unambiguous. It also defines what a release is, which helps disambiguate from siblings like ispw_list_assignments. It stops short of explicitly contrasting with ispw_get_release (single-release retrieval), which would have earned 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 Guidelines4/5

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

Two concrete call patterns are given ('List all releases: srid="ISPW"' and 'Find specific release: srid="ISPW", release_id="REL001"'), making the when-to-use condition between full listing and filtering explicit. There is no exclusion guidance such as 'use ispw_get_release when you need details of one release,' so the alternative-routing bar for a 5 is not met.

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

ispw_list_setsA
Read-onlyIdempotent

List ISPW sets for a specific SRID.

Retrieves all sets or filters by set ID. Sets are collections of components for deployment, providing another grouping mechanism for deployment units.

Args: params (ListSetsInput): Validated input parameters containing: - srid (str): System Resource Identifier - set_id (Optional[str]): Filter by specific set ID - response_format (ResponseFormat): Output format (default: markdown)

Returns: str: Formatted list of sets or error message

Examples: - List all sets: srid="ISPW" - Find specific set: srid="ISPW", set_id="SET001"

NameRequiredDescriptionDefault
paramsYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/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 closed-world behavior, so the safety profile is covered. The description adds that filtering is optional and that errors are returned as messages, but gives no detail on result size, ordering, or pagination that would help the agent reason about behavior.

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?

Front-loads the core action in the first line, then uses short labeled Args/Returns/Examples sections. The Args block partially duplicates the schema, which is mild waste, but nothing is 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?

An output schema exists so return values need not be described, and the tool has one nested params object with three simple fields. Purpose, filtering behavior, and examples together give an agent enough to call it correctly; only sibling differentiation is absent.

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?

Reported schema description coverage is 0%, so the description must carry the parameter burden; its Args block and the two examples supply meanings and concrete sample values (srid='ISPW', set_id='SET001'). However, it merely restates the parameter names without adding type constraints, defaults for response_format, or the markdown/json distinction present in 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 ISPW sets for a specific SRID') and clarifies the scope by noting it can return all sets or filter by set ID. It also explains what a set is ('collections of components for deployment'), which distinguishes it conceptually from assignment/package siblings, though it never names an alternative tool 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?

Usage is only implied: the examples show 'list all' vs 'find specific set' by omitting or supplying set_id. There is no explicit statement of when to prefer this tool over siblings like ispw_list_packages or ispw_list_assignments, nor any prerequisites or exclusions.

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

ispw_list_tasksA
Read-onlyIdempotent

List all tasks for a specific ISPW assignment.

Retrieves all tasks (individual work items) within an assignment. Tasks represent individual modules or components being worked on (e.g., COBOL programs, JCL, copybooks).

Args: params (ListTasksInput): Validated input parameters containing: - srid (str): System Resource Identifier - assignment_id (str): Assignment identifier - response_format (ResponseFormat): Output format (default: markdown)

Returns: str: Formatted list of tasks or error message

Examples: - List tasks: srid="ISPW", assignment_id="PLAY000001"

NameRequiredDescriptionDefault
paramsYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already establish that this is a read-only, idempotent, non-destructive, closed-world operation. The description adds useful context that tasks represent modules or components such as COBOL programs, JCL, and copybooks, and that errors may be returned, but it does not disclose pagination, permissions, or response-shaping behavior.

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?

The definition is front-loaded with the purpose and then structured into Args, Returns, and Examples sections. It is somewhat repetitive because 'List all tasks' and 'Retrieves all tasks' restate the same action, but the overall size is reasonable for a simple list tool.

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 list operation with rich annotations and an output schema, the description covers the core purpose, parameters, return type, and an example. It is largely complete, though it could say more about pagination or whether all tasks are always returned.

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

Parameters3/5

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

The schema description coverage is reported as 0%, so the description must carry more of the parameter burden. It does list the three nested parameters and gives an example using srid and assignment_id, but the explanations largely restate the parameter names and do not add much format or validation detail beyond the schema's own descriptions.

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

Purpose5/5

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

The description gives a specific verb and resource: 'List all tasks for a specific ISPW assignment.' It also clarifies that tasks are individual work items within an assignment, distinguishing this tool from sibling tools that operate on assignments, releases, sets, or packages.

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 purpose: it retrieves tasks inside a given assignment. However, the description does not explicitly say when to use this instead of ispw_get_assignment, ispw_list_assignments, or other sibling tools, and it offers no exclusions or alternative-selection guidance.

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

ispw_promote_assignmentA

Promote an ISPW assignment to the next level.

Moves an assignment (and its tasks) through the development lifecycle to a higher level (e.g., from DEV to INT, INT to ACC, or ACC to PRD). Typically done after successful generation and testing.

Args: params (PromoteAssignmentInput): Validated input parameters containing: - srid (str): System Resource Identifier - assignment_id (str): Assignment identifier - level (Optional[str]): Target level for promotion - change_type (Optional[ChangeType]): S (Standard), I (Incidental), E (Emergency) - execution_status (Optional[str]): Execution status - response_format (ResponseFormat): Output format (default: markdown)

Returns: str: Operation status including operation ID and status URL, or error message

Examples: - Promote assignment: srid="ISPW", assignment_id="PLAY000001" - Promote to specific level: srid="ISPW", assignment_id="PLAY000001", level="INT", change_type="S"

NameRequiredDescriptionDefault
paramsYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the description does not need to re-state the safety profile. It does add genuine context beyond annotations: promotion mutates the assignment AND all of its tasks, and the return value is an operation ID plus a status URL, implying an asynchronous operation the agent must poll. It does not say what happens on failure or whether a promotion can be reversed.

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?

Purpose is front-loaded in the first line, followed by lifecycle context, then Args/Returns/Examples. The structure is skimmable and every section serves a purpose. There is some redundancy in re-listing parameters already present in the schema, and 'Returns' largely duplicates what the output schema covers, but neither is wasteful enough to hurt.

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 mutating, non-idempotent lifecycle tool with an output schema, the description covers purpose, timing, all inputs, and the shape of the response. Minor gaps remain: no statement about error/failure behavior, permissions, or whether the call is blocking versus poll-based, which matter given the operation-ID/status-URL return.

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

Parameters4/5

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

Although schema description coverage is 0% by the metric, the Args block restates and enriches every parameter: srid, assignment_id, the target level, change_type with its S/I/E meanings, execution_status, and response_format. The one soft spot is 'execution_status', which is repeated verbatim without any explanation of valid values or effect, and target levels are only implied via the body examples rather than listed as accepted values.

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 first sentence gives a specific verb + resource ('Promote an ISPW assignment'), and the second pins down the exact effect: moving the assignment and its tasks from DEV to INT, INT to ACC, or ACC to PRD. This clearly distinguishes it from siblings like ispw_generate_assignment, ispw_deploy, and ispw_create_assignment, which do different lifecycle steps.

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?

'Typically done after successful generation and testing' gives a real precondition for calling this tool, and the lifecycle examples imply when in the workflow promotion applies. However, it never explicitly names alternatives (e.g., 'use ispw_deploy for the final move to production') or states when not to promote, so it falls short of full alternative routing.

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. 13 tool updatesv1.0.0
    • First observedispw_create_assignment
    • First observedispw_create_release
    • First observedispw_deploy
    • First observedispw_generate_assignment
    • First observedispw_get_assignment
    • First observedispw_get_package
    • First observedispw_get_release
    • First observedispw_list_assignments
    • First observedispw_list_packages
    • First observedispw_list_releases
    • First observedispw_list_sets
    • First observedispw_list_tasks
    • First observedispw_promote_assignment

TDQS

A3.9/5.0

Scored across 13 tools

Disambiguation4/5

Most tools pair a distinct resource with a distinct action (list/get/create assignment, release, package), so an agent can select correctly. Minor overlap remains: ispw_list_assignments can filter by assignment_id like ispw_get_assignment, ispw_deploy accepts assignment/release/set targets that overlap conceptually with ispw_promote_assignment, and sets vs packages are both described as 'collections of components for deployment'.

Naming Consistency5/5

Every tool uses the same ispw_ prefix followed by a verb_noun pattern in snake_case (ispw_list_tasks, ispw_create_release, ispw_promote_assignment). No camelCase or style mixing, and verbs are used consistently for the same semantic actions.

Tool Count5/5

13 tools is squarely in the well-scoped range and each one maps to a distinct ISPW lifecycle step (list/get/create containers, generate, promote, deploy). No obviously redundant or filler tools.

Completeness3/5

The generate/promote/deploy lifecycle and read paths are covered, but there is no update or delete for assignments, releases, or packages, and lists (tasks, sets) have no corresponding get/detail operations. Agents also cannot add/remove components or assignments from a release/set, which are common workflow steps in this domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers