Skip to main content
Glama
stier-tfedorko

LicenseSpring MCP Server

LicenseSpring® MCP Server

An MCP server implementation that integrates with LicenseSpring APIs, providing comprehensive license management and customer operations capabilities.

Features

  • License Operations: Activate, check, deactivate licenses with hardware binding

  • Customer Management: Create, list, and manage customers

  • Usage Tracking: Monitor license consumption and feature usage

  • Trial Management: Generate and manage trial licenses

  • Floating Licenses: Handle floating license operations

  • Authentication Priority: LICENSE_API_KEY as primary method, LICENSE_SHARED_KEY optional for enhanced security

  • Comprehensive Testing: Full integration test suite with real API validation

Related MCP server: Civo MCP Server

Tools

License API Tools

  • activate_license - Activate a license with hardware ID binding

  • check_license - Check license status and validity

  • deactivate_license - Deactivate a license for specific hardware

  • add_consumption - Add consumption units to a license

  • get_trial_key - Generate trial license keys

  • get_product_details - Retrieve product information

  • floating_release - Release floating licenses

  • floating_borrow - Borrow floating licenses for offline use

  • change_password - Change user passwords for user-based licenses

  • get_versions - Get available software versions

  • get_installation_file - Get installation file information

  • get_sso_url - Generate Single Sign-On URLs

Management API Tools

  • list_licenses - List licenses with optional filtering

  • create_license - Create new licenses

  • update_license - Update existing licenses

  • get_license - Get detailed license information

  • delete_license - Delete licenses

  • list_customers - List customers with filtering options

  • create_customer - Create new customers

Configuration

Getting API Credentials

  1. License API Key: Log into your LicenseSpring dashboard → Settings → Keys (PRIMARY authentication method)

  2. Management API Key: Same location, copy your Management API Key

  3. Shared Key: Optional for organizations using shared API settings (provides enhanced security)

Testing

Run the comprehensive integration test to validate functionality:

# Build the project
npm run build

# Run integration tests against real LicenseSpring API
npm run test:integration

# Run unit tests
npm test

The integration test validates all 34 MCP tools against the real LicenseSpring API and verifies authentication priority works correctly. The implementation provides 100% feature parity with the LicenseSpring Postman collection.

🔧 CI/CD Integration: GitHub Actions workflows now support full integration testing with proper secret configuration.

Usage with Claude Desktop

Add this to your claude_desktop_config.json:

License API Server

{
  "mcpServers": {
    "licensespring": {
      "command": "npx",
      "args": [
        "-y",
        "@tfedorko/licensespring-mcp-server",
        "license-api"
      ],
      "env": {
        "LICENSE_API_KEY": "YOUR_LICENSE_API_KEY",
        "LICENSE_SHARED_KEY": "YOUR_SHARED_KEY_IF_USING_SHARED_API_SETTINGS"
      }
    }
  }
}

Management API Server

{
  "mcpServers": {
    "licensespring-management": {
      "command": "npx",
      "args": [
        "-y",
        "@tfedorko/licensespring-mcp-server",
        "management-api"
      ],
      "env": {
        "MANAGEMENT_API_KEY": "YOUR_MANAGEMENT_API_KEY"
      }
    }
  }
}

Docker

{
  "mcpServers": {
    "licensespring": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "LICENSE_API_KEY",
        "-e",
        "LICENSE_SHARED_KEY",
        "stiertfedorko/licensespring-mcp:latest"
      ],
      "env": {
        "LICENSE_API_KEY": "YOUR_LICENSE_API_KEY",
        "LICENSE_SHARED_KEY": "YOUR_SHARED_KEY_OR_LEAVE_EMPTY"
      }
    },
    "licensespring-management": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "MANAGEMENT_API_KEY",
        "stiertfedorko/licensespring-mcp-management:latest"
      ],
      "env": {
        "MANAGEMENT_API_KEY": "YOUR_MANAGEMENT_API_KEY"
      }
    }
  }
}

Subscription Tier Support

The server automatically adapts to your LicenseSpring subscription tier:

  • Premium/Enterprise: Full functionality with HMAC authentication

  • Basic/Standard: Limited mode with helpful upgrade guidance

  • Development: Test mode for safe development

Note: LICENSE_SHARED_KEY is optional. The server will start regardless of your subscription tier and provide appropriate guidance for API limitations.

Usage with VS Code

For quick installation, use the one-click installation buttons below:

Install with NPX in VS Code

Install with NPX in VS Code Insiders

For manual installation, add the following JSON block to your User Settings (JSON) file in VS Code:

NPX

{
  "mcp": {
    "inputs": [
      {
        "type": "promptString",
        "id": "license_api_key",
        "description": "LicenseSpring License API Key",
        "password": true
      },
      {
        "type": "promptString",
        "id": "license_shared_key",
        "description": "LicenseSpring Shared Key (optional for Basic/Standard tiers)",
        "password": true
      }
    ],
    "servers": {
      "licensespring": {
        "command": "npx",
        "args": ["-y", "@tfedorko/licensespring-mcp-server", "license-api"],
        "env": {
          "LICENSE_API_KEY": "${input:license_api_key}",
          "LICENSE_SHARED_KEY": "${input:license_shared_key}"
        }
      }
    }
  }
}

Troubleshooting

Common Issues

Error: "npm error could not determine executable to run"

  • Solution: Update to version 1.0.1 or later: npx @tfedorko/licensespring-mcp-server@latest

  • Cause: Fixed in v1.0.1 - improved binary configuration and startup process

Error: "MCP error -1: Connection closed"

  • Solution: Update to version 1.0.2 or later: npx @tfedorko/licensespring-mcp-server@latest

  • Cause: Fixed in v1.0.2 - server now defaults to license-api mode for Claude Desktop compatibility

Error: "LICENSE_API_KEY is required"

  • Solution: Set your environment variables in .env file or Claude Desktop config

  • Check: Copy .env.example to .env and fill in your API credentials

Error: "Authentication failed"

  • Solution: Verify your API keys in the LicenseSpring dashboard

  • Note: LICENSE_SHARED_KEY is optional for Basic/Standard subscription tiers

Server starts but API calls fail

  • Check: Your LicenseSpring subscription tier and available API features

  • Solution: The server provides helpful guidance for subscription limitations

Getting Help

  1. Check the error messages - they provide specific guidance

  2. Verify your LicenseSpring subscription tier and API access

  3. Review the Advanced Documentation below

  4. Open an issue on GitHub with error details

Release Automation

This project includes comprehensive automated release versioning and NPM distribution:

Quick Release Commands

npm run release          # Patch release (1.0.0 -> 1.0.1)
npm run release:minor    # Minor release (1.0.0 -> 1.1.0)
npm run release:major    # Major release (1.0.0 -> 2.0.0)

Preview Changes

npm run version:dry      # Preview version bump
npm run publish:dry      # Preview NPM publish

Automated GitHub Releases

  • Commit triggers: Use [release] in commit messages

  • Manual dispatch: GitHub Actions workflow

  • Semantic release: Conventional commit messages

For complete automation documentation, see Release Automation Guide.

Advanced Documentation

For comprehensive guides and advanced configuration:

Installation

NPM Package

npm install -g @tfedorko/licensespring-mcp-server

Note: Requires Node.js 20.x or higher for optimal compatibility.

Docker Images

# License API Server
docker pull stiertfedorko/licensespring-mcp:latest

# Management API Server
docker pull stiertfedorko/licensespring-mcp-management:latest

Build

Docker build:

docker build -t licensespring-mcp:latest -f Dockerfile .
docker build -t licensespring-mcp-management:latest -f Dockerfile.management .

License

This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

Trademark Notice

This project uses the LicenseSpring® name under permission from Cense Data Inc. See the TRADEMARK file for details.

Available Tools

18 tools
activate_licenseActivate LicenseC

Activate a license with hardware ID and product code

ParametersJSON Schema
NameRequiredDescriptionDefault
hardware_idYes
license_keyYes
productYes
quantityNo

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states this is an activation operation but provides no information about permissions required, whether this is a read or write operation, what happens on success/failure, or any side effects. For a tool that likely modifies license state, this is insufficient.

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, efficient sentence that gets straight to the point. Every word contributes to understanding the tool's purpose without any wasted text.

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

Completeness2/5

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

For a 4-parameter licensing activation tool with no annotations and no output schema, the description is inadequate. It doesn't explain what 'activation' entails, what format parameters should be in, what happens on success, or how this differs from similar tools. The context demands more comprehensive guidance.

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 mentions 'hardware ID and product code' which correspond to two of the four parameters. With 0% schema description coverage, this provides some semantic context but doesn't cover 'license_key' or 'quantity' parameters. The baseline would be lower given the coverage gap, but the description adds partial value.

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 clearly states the action ('Activate') and resource ('a license'), and specifies two key parameters (hardware ID and product code). However, it doesn't distinguish this tool from sibling tools like 'activate_offline' or 'check_license', which likely have similar licensing-related purposes.

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 guidance is provided about when to use this tool versus alternatives like 'activate_offline' or 'deactivate_license'. The description only states what the tool does, not when it should be selected over other licensing tools in the server.

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

activate_offlineActivate License OfflineC

Activate a license for offline use with hardware ID and product code

ParametersJSON Schema
NameRequiredDescriptionDefault
hardware_idYes
license_keyYes
productYes
quantityNo

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states what the tool does, not how it behaves. It doesn't disclose whether this is a mutating operation, what permissions are required, what happens on success/failure, rate limits, or side effects. For a license activation tool with zero annotation coverage, this is insufficient.

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?

Single sentence that efficiently conveys the core purpose with zero wasted words. The description is appropriately sized and front-loaded with the essential information.

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

Completeness2/5

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

For a license activation tool with 4 parameters, 0% schema coverage, no annotations, and no output schema, the description is incomplete. It doesn't explain what the tool returns, error handling, or important behavioral aspects. The context signals indicate significant complexity that the description doesn't adequately address.

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 0%, so the description must compensate. It mentions 'hardware ID and product code' which maps to 2 of the 4 parameters (hardware_id and product), but doesn't explain 'license_key' or 'quantity'. The description adds some meaning but doesn't fully compensate for the schema coverage gap, especially for the required 'license_key' parameter.

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 clearly states the action ('activate') and resource ('license for offline use') with specific parameters mentioned (hardware ID and product code). It distinguishes from siblings like 'activate_license' by specifying 'offline use', but doesn't fully explain how it differs from 'deactivate_offline' or other license-related tools.

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 explicit guidance on when to use this tool versus alternatives like 'activate_license' or 'deactivate_offline'. The description implies it's for offline activation but doesn't specify prerequisites, error conditions, or when to choose this over other license management tools in the sibling list.

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

add_consumptionAdd ConsumptionC

Add consumption units to a license

ParametersJSON Schema
NameRequiredDescriptionDefault
allow_overagesNo
consumptionsYes
hardware_idYes
license_keyYes
max_overagesNo
productYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a write operation ('Add'), but doesn't specify permissions required, whether changes are reversible, rate limits, or what happens on success/failure. This leaves critical behavioral traits undocumented for a mutation 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?

The description is a single, efficient sentence with no wasted words, making it easy to parse. It's appropriately sized for conveying the core purpose without unnecessary elaboration.

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

Completeness2/5

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

For a mutation tool with 6 parameters, 0% schema coverage, no annotations, and no output schema, the description is inadequate. It lacks details on behavior, parameters, and expected outcomes, leaving significant gaps for an agent to operate effectively.

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%, so the description must compensate by explaining parameters, but it adds no semantic information beyond the tool name. Parameters like 'allow_overages' and 'max_overages' remain unexplained, leaving the agent to guess their purpose and usage.

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 clearly states the action ('Add') and resource ('consumption units to a license'), making the purpose understandable. However, it doesn't distinguish this tool from sibling tools like 'add_feature_consumption', which might handle similar operations with different scopes or targets.

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 guidance on when to use this tool versus alternatives, such as 'activate_license' or 'add_feature_consumption', nor does it mention prerequisites like license activation status. Without this context, an agent might struggle to select the correct tool in a workflow.

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

add_feature_consumptionAdd Feature ConsumptionC

Add consumption units to a specific feature

ParametersJSON Schema
NameRequiredDescriptionDefault
consumptionsYes
featureYes
hardware_idYes
license_keyYes
productYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. 'Add consumption units' implies a write/mutation operation, but the description doesn't address permission requirements, whether this operation is reversible, rate limits, or what happens on success/failure. It provides minimal behavioral context beyond the basic action.

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 extremely concise at just 6 words, front-loading the core purpose without any wasted words. Every word contributes directly to communicating the tool's function.

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

Completeness2/5

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

For a 5-parameter mutation tool with no annotations and no output schema, the description is inadequate. It doesn't explain parameter relationships, expected outcomes, error conditions, or how this tool differs from similar sibling tools. The agent would struggle to use this tool correctly without additional context.

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?

With 0% schema description coverage for 5 required parameters, the description provides no information about parameter meanings or usage. 'Add consumption units to a specific feature' gives high-level context but doesn't explain what 'consumptions', 'feature', 'hardware_id', 'license_key', or 'product' parameters represent or how they should be used together.

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 clearly states the action ('Add consumption units') and target ('to a specific feature'), which provides a specific verb+resource combination. However, it doesn't distinguish this tool from the sibling 'add_consumption' tool, which appears to be a very similar operation based on naming alone.

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 guidance on when to use this tool versus alternatives. With sibling tools like 'add_consumption' (likely similar functionality) and various license management tools, there's no indication of appropriate contexts, prerequisites, or exclusions for this specific tool.

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

change_passwordChange PasswordC

Change password for a user-based license

ParametersJSON Schema
NameRequiredDescriptionDefault
new_passwordYes
passwordYes
usernameYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Change password') but lacks details on permissions required, whether it's reversible, rate limits, or error conditions. This is a significant gap for a mutation tool with security implications.

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, efficient sentence with no wasted words. It's front-loaded with the core purpose, making it easy to parse quickly.

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

Completeness2/5

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

Given the complexity (a password change operation with security implications), no annotations, no output schema, and 0% schema coverage, the description is inadequate. It doesn't cover behavioral aspects, parameter details, or expected outcomes, leaving critical gaps for safe and effective tool 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?

The schema description coverage is 0%, so the description must compensate, but it doesn't explain any parameters. It implies 'username', 'password', and 'new_password' through context, but doesn't add meaning beyond what the schema's property names suggest. Baseline is adjusted to 3 due to the coverage 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 clearly states the action ('Change password') and the target ('for a user-based license'), which is specific and unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'activate_license' or 'deactivate_license', which might involve user management but don't focus on password changes.

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 guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an active license), exclusions (e.g., not for admin accounts), or related tools in the sibling list, leaving the agent to infer usage context.

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

check_licenseCheck LicenseC

Check license status and validity

ParametersJSON Schema
NameRequiredDescriptionDefault
hardware_idYes
license_keyYes
productYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates a read operation ('check'), but does not specify if it requires authentication, rate limits, or what happens on invalid inputs. It lacks details on return values or error handling, which is insufficient for a tool with no structured behavioral 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 extremely concise with a single phrase, 'Check license status and validity', which is front-loaded and wastes no words. However, this conciseness comes at the cost of completeness, as it omits necessary details for effective tool use.

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

Completeness2/5

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

Given the tool's complexity (3 required parameters, no output schema, no annotations), the description is incomplete. It does not explain parameters, return values, or behavioral traits, making it inadequate for an agent to reliably invoke the tool without additional context or trial-and-error.

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%, so the description must compensate by explaining parameters. It does not mention any parameters (hardware_id, license_key, product) or their purposes, leaving them undocumented. This fails to add meaning beyond the bare schema, resulting in poor parameter guidance.

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

Purpose3/5

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

The description 'Check license status and validity' states the verb ('check') and resource ('license'), but it is vague as it does not specify what aspects of status or validity are checked (e.g., expiration, features, activation). It distinguishes from siblings like 'activate_license' by implying a read operation, but lacks specificity.

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 explicit guidance on when to use this tool versus alternatives, such as 'activate_license' or 'deactivate_license'. It implies usage for verification purposes, but does not mention prerequisites, context, or exclusions, leaving the agent to infer based on tool names alone.

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

deactivate_licenseDeactivate LicenseC

Deactivate a license for a specific hardware ID

ParametersJSON Schema
NameRequiredDescriptionDefault
hardware_idYes
license_keyYes
productYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the action but doesn't describe what 'deactivate' means operationally - whether it's reversible, what permissions are required, whether it affects billing, or what happens to the hardware ID. For a mutation tool with zero annotation coverage, this leaves critical behavioral questions unanswered.

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, efficient sentence that gets straight to the point with no wasted words. It's appropriately sized for the tool's apparent complexity and front-loads the essential information.

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

Completeness2/5

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

For a mutation tool with 3 required parameters, 0% schema coverage, no annotations, and no output schema, the description is insufficient. It states what the tool does at a high level but provides none of the operational details needed to use it effectively, especially given the complex licensing context suggested by the sibling tools.

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?

With 0% schema description coverage and 3 required parameters, the description provides no information about what 'hardware_id', 'license_key', or 'product' mean or how they should be formatted. The description doesn't compensate for the complete lack of parameter documentation in the schema, leaving all parameters semantically undefined.

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 clearly states the verb 'deactivate' and the resource 'license for a specific hardware ID', making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'deactivate_offline' or explain what distinguishes deactivating a license from other license operations.

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 guidance on when to use this tool versus alternatives. With multiple sibling tools like 'activate_license', 'deactivate_offline', and 'check_license', there's no indication of prerequisites, appropriate contexts, or when this specific deactivation method should be chosen over others.

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

deactivate_offlineDeactivate License OfflineC

Deactivate a license for offline use with hardware ID and product code

ParametersJSON Schema
NameRequiredDescriptionDefault
hardware_idYes
license_keyYes
productYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It implies a mutation ('deactivate') but doesn't specify whether this is reversible, requires specific permissions, has side effects, or returns any confirmation. For a mutation tool with zero annotation coverage, this leaves significant behavioral gaps.

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, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized for a tool with three parameters and no complex behavioral nuances to explain.

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

Completeness2/5

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

For a mutation tool with no annotations, no output schema, and 0% schema description coverage, the description is incomplete. It doesn't explain what happens after deactivation, error conditions, or how this differs from other deactivation methods. The agent lacks sufficient context to use this tool 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?

The description mentions 'hardware ID and product code' which partially maps to two of the three parameters (hardware_id and product), but doesn't mention 'license_key'. With 0% schema description coverage and three required parameters, the description adds some value but doesn't fully compensate for the coverage gap, especially since license_key remains undocumented.

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 clearly states the action ('deactivate') and resource ('a license for offline use'), making the purpose understandable. It distinguishes from sibling tools like 'deactivate_license' by specifying 'offline' context. However, it doesn't explicitly contrast with 'activate_offline' or other siblings beyond the verb difference.

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 guidance on when to use this tool versus alternatives like 'deactivate_license' or 'activate_offline'. It mentions 'offline use' but doesn't explain scenarios where offline deactivation is preferred over online methods or prerequisites for using this tool.

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

floating_borrowBorrow Floating LicenseC

Borrow a floating license for offline use

ParametersJSON Schema
NameRequiredDescriptionDefault
borrowed_untilYes
hardware_idYes
license_keyYes
productYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It mentions the purpose ('for offline use') but doesn't disclose critical behaviors like whether this consumes license seats, requires specific permissions, has time limits beyond the 'borrowed_until' parameter, or what happens on failure. The mutation nature ('Borrow') implies a state change but isn't elaborated.

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, efficient sentence with zero wasted words. It's appropriately sized for a simple tool and front-loads the core purpose without unnecessary elaboration.

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

Completeness2/5

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

For a 4-parameter mutation tool with no annotations and no output schema, the description is inadequate. It lacks parameter explanations, behavioral details, error handling, and output expectations. While concise, it doesn't provide enough context for safe and effective use given the tool's complexity and lack of structured documentation.

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%, so the description must compensate but adds no parameter information. It doesn't explain what 'license_key', 'hardware_id', 'product', or 'borrowed_until' represent, their formats, or relationships. This leaves all 4 required parameters undocumented beyond their names 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?

The description clearly states the action ('Borrow') and resource ('a floating license') with a specific purpose ('for offline use'). It distinguishes from obvious siblings like 'floating_release' but doesn't explicitly differentiate from other license management tools like 'activate_offline' or 'deactivate_offline'.

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 implies usage context ('for offline use') but provides no explicit guidance on when to use this tool versus alternatives like 'activate_offline' or 'deactivate_offline'. There's no mention of prerequisites, constraints, or typical scenarios for borrowing versus other license operations.

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

floating_releaseRelease Floating LicenseD

Release a floating license

ParametersJSON Schema
NameRequiredDescriptionDefault
hardware_idYes
license_keyYes
productYes

TDQS

D1.9/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Release a floating license' implies a mutation operation but does not disclose critical traits: whether it requires authentication, has side effects like freeing up licenses for other users, involves rate limits, or returns confirmation data. The description is too sparse to inform the agent about behavioral risks or outcomes, making it inadequate for a tool with potential system impacts.

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 extremely concise with a single sentence, 'Release a floating license,' which is front-loaded and wastes no words. However, this brevity borders on under-specification, as it omits necessary details for clarity and usage. While efficient, it sacrifices completeness for conciseness, earning a high score for structure but not full marks due to the trade-off.

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

Completeness1/5

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

Given the tool's complexity (involving license management with 3 parameters), lack of annotations, no output schema, and 0% schema description coverage, the description is incomplete. It does not cover behavioral aspects, parameter meanings, usage scenarios, or expected outcomes, failing to provide the context needed for an agent to operate the tool effectively. This makes it inadequate for the tool's requirements.

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?

The input schema has 3 required parameters (hardware_id, license_key, product) with 0% description coverage, meaning no schema documentation exists. The description adds no parameter semantics, failing to explain what these parameters represent (e.g., hardware_id as device identifier, license_key as specific license, product as software name) or their roles in the release process. This lack of compensation for the schema gap leaves parameters largely unexplained.

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

Purpose2/5

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

The description 'Release a floating license' restates the tool name and title with minimal elaboration, making it tautological. It specifies the verb ('release') and resource ('floating license') but lacks detail on what 'release' entails operationally, such as freeing up a license for others or ending a borrowing session. While it distinguishes from siblings like 'activate_license' or 'floating_borrow' by implying a reverse action, the purpose remains vague without context on the licensing system.

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 guidance on when to use this tool versus alternatives. It does not mention prerequisites, such as needing an active borrowed license, or exclusions, like not using it for non-floating licenses. Sibling tools like 'floating_borrow' suggest a related operation, but the description fails to clarify the relationship or specify appropriate contexts, leaving usage ambiguous.

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

get_customer_license_usersGet Customer License UsersC

Get customer license users for a specific license

ParametersJSON Schema
NameRequiredDescriptionDefault
customerYes
productYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states a read operation ('Get'), implying it's likely non-destructive, but doesn't cover critical aspects like authentication needs, rate limits, error handling, or response format. This is a significant gap for a tool with zero annotation coverage.

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, efficient sentence that directly states the tool's purpose without any fluff or redundancy. It's appropriately sized and front-loaded, making it easy to parse quickly.

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

Completeness2/5

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

Given the tool has 2 parameters, no annotations, no output schema, and 0% schema coverage, the description is incomplete. It lacks details on parameter usage, behavioral traits, and expected outputs, making it inadequate for an agent to reliably invoke the tool without additional context or trial-and-error.

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%, so the schema provides no parameter details. The description mentions 'for a specific license' but doesn't explain what 'customer' and 'product' parameters represent, their expected formats, or how they relate to the license. It adds minimal value beyond the schema, failing to compensate for the coverage 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 clearly states the action ('Get') and resource ('customer license users') with the scope 'for a specific license', making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_product_details' or 'get_versions', which also retrieve information but for different resources, so it misses full sibling distinction.

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 guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context, or exclusions, such as whether it's for active licenses only or how it differs from other 'get' tools in the sibling list, leaving the agent with no usage direction.

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

get_device_variablesGet Device VariablesC

Get tracked variables for a device

ParametersJSON Schema
NameRequiredDescriptionDefault
hardware_idYes
license_keyYes
productYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states a read operation ('Get'), implying it's likely non-destructive, but does not cover aspects like authentication needs, rate limits, or response format, which are critical for a tool with 3 required parameters.

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, efficient sentence with no wasted words, making it appropriately sized and front-loaded for quick understanding.

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

Completeness2/5

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

Given the complexity of 3 required parameters, no annotations, and no output schema, the description is incomplete. It lacks details on behavioral traits, parameter meanings, and expected return values, which are necessary for effective tool use.

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%, meaning parameters are undocumented in the schema. The description does not add any meaning beyond the parameter names, failing to explain what 'hardware_id', 'license_key', or 'product' represent or how they affect the output.

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 clearly states the verb 'Get' and the resource 'tracked variables for a device', making the purpose understandable. However, it does not differentiate from sibling tools like 'track_device_variables', which might have overlapping functionality, so it misses the highest score.

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 guidance is provided on when to use this tool versus alternatives, such as 'track_device_variables' or other sibling tools. The description lacks context or exclusions, leaving usage unclear.

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

get_installation_fileGet Installation FileC

Get installation file download information

ParametersJSON Schema
NameRequiredDescriptionDefault
hardware_idYes
license_keyYes
productYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. 'Get installation file download information' implies a read-only operation but doesn't specify what format the download information comes in, whether it includes URLs, file sizes, checksums, or other metadata. It also doesn't mention any authentication requirements, rate limits, or error conditions.

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 extremely concise at just 5 words with no wasted language. It's front-loaded with the core purpose and doesn't contain any unnecessary elaboration or repetition.

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

Completeness2/5

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

For a tool with 3 required parameters, 0% schema coverage, no annotations, and no output schema, the description is inadequate. It doesn't compensate for the missing structured information about parameters, behavior, or return values. The agent would struggle to use this tool effectively without guessing parameter meanings and expected outputs.

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?

With 0% schema description coverage for all 3 required parameters (hardware_id, license_key, product), the description provides no additional meaning about what these parameters represent. The description doesn't explain what hardware_id refers to, what format license_key should be in, or what product values are valid.

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

Purpose3/5

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

The description 'Get installation file download information' clearly states the action (get) and resource (installation file download information), but it's somewhat vague about what exactly 'download information' entails. It doesn't distinguish this tool from potential siblings like 'get_versions' or 'get_product_details' that might also provide file-related information.

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 guidance on when to use this tool versus alternatives. Given the sibling tools include various license and product information tools, there's no indication of when this specific file download information tool is appropriate versus other get_* tools.

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

get_product_detailsGet Product DetailsC

Get detailed information about a product

ParametersJSON Schema
NameRequiredDescriptionDefault
productYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states it 'gets' information, implying a read-only operation, but doesn't cover aspects like authentication needs, rate limits, error handling, or response format. For a tool with zero annotation coverage, this leaves significant gaps in understanding its 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 description is a single, efficient sentence with no wasted words, making it appropriately concise. However, it's front-loaded only in the sense that it's brief, but it lacks structure that could enhance clarity, such as separating purpose from usage notes.

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

Completeness2/5

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

Given the tool's complexity (a read operation with 1 parameter), no annotations, no output schema, and low schema coverage, the description is incomplete. It doesn't explain what information is returned, how to interpret the 'product' input, or behavioral traits, making it inadequate for effective agent use without additional context.

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?

The input schema has 1 parameter with 0% description coverage, and the tool description adds no information about the 'product' parameter. It doesn't explain what 'product' refers to (e.g., product ID, name, or type), expected format, or examples. With low schema coverage, the description fails to compensate, leaving the parameter's meaning unclear.

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

Purpose3/5

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

The description states the verb ('Get') and resource ('detailed information about a product'), which is clear but vague. It doesn't specify what constitutes 'detailed information' or differentiate from potential sibling tools like 'get_versions' or 'get_customer_license_users', which might also retrieve product-related data. The purpose is understandable but lacks specificity.

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 guidance on when to use this tool versus alternatives. With siblings like 'get_versions' or 'get_device_variables' that might retrieve different product details, there's no indication of context, prerequisites, or exclusions. Usage is implied only by the tool name, not explained.

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

get_sso_urlGet SSO URLC

Get Single Sign-On URL for customer portal access

ParametersJSON Schema
NameRequiredDescriptionDefault
customer_account_codeYes
productYes
response_typeNotoken

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states what the tool does, not how it behaves. It lacks details on authentication needs, rate limits, response format, or potential side effects, which are critical for a tool that likely generates access URLs.

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, efficient sentence with no wasted words. It's front-loaded with the core purpose and appropriately sized for the tool's apparent complexity.

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

Completeness2/5

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

Given no annotations, 0% schema coverage, and no output schema, the description is incomplete. It doesn't cover behavioral aspects, parameter meanings, or return values, making it inadequate for a tool with 3 parameters that likely involves authentication flows.

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%, so the description must compensate but adds no parameter information. It doesn't explain what 'customer_account_code', 'product', or 'response_type' mean, their formats, or how they affect the SSO URL generation, leaving parameters largely undocumented.

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 clearly states the verb 'Get' and the resource 'Single Sign-On URL', specifying it's for 'customer portal access'. This provides a specific purpose, though it doesn't explicitly differentiate from sibling tools like 'get_product_details' or 'get_versions' that also retrieve information.

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 offers no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context, or exclusions, leaving the agent to infer usage from the purpose alone without explicit direction.

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

get_trial_keyGet Trial KeyC

Generate a trial license key for a product

ParametersJSON Schema
NameRequiredDescriptionDefault
hardware_idYes
productYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Generate a trial license key', implying a creation or write operation, but doesn't cover critical aspects like whether this requires authentication, has rate limits, is idempotent, or what the output format might be. This leaves significant gaps for a tool that likely involves system changes.

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, efficient sentence that directly states the tool's purpose without any fluff. It is appropriately sized and front-loaded, making it easy to parse quickly.

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

Completeness2/5

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

Given the complexity of generating a license key (likely a write operation), no annotations, no output schema, and two undocumented parameters, the description is incomplete. It fails to address behavioral traits, parameter meanings, or return values, leaving the agent under-informed for proper tool invocation.

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?

The description adds no meaning beyond the input schema, which has 0% description coverage. It doesn't explain what 'hardware_id' or 'product' represent, their expected formats, or how they influence key generation. With two required parameters and no schema descriptions, this is inadequate compensation.

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 clearly states the action ('Generate') and resource ('trial license key for a product'), making the purpose specific and understandable. However, it doesn't differentiate from sibling tools like 'activate_license' or 'check_license', which might involve similar license-related operations, so it doesn't reach the highest score.

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 guidance on when to use this tool versus alternatives, such as 'activate_license' or 'check_license'. It lacks context on prerequisites, exclusions, or specific scenarios, leaving the agent with minimal usage direction.

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

get_versionsGet Software VersionsC

Get available software versions for a product

ParametersJSON Schema
NameRequiredDescriptionDefault
hardware_idYes
license_keyYes
productYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves versions but does not describe what 'available' means (e.g., all versions, only compatible ones), whether it requires authentication (implied by license_key but not stated), or any rate limits or error conditions. This leaves significant gaps in understanding the tool's 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, clear sentence with no unnecessary words. It is front-loaded with the core purpose, making it easy to scan and understand quickly. Every part of the sentence earns its place by conveying essential information without redundancy.

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

Completeness2/5

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

Given the tool's complexity (3 required parameters, no annotations, no output schema), the description is incomplete. It does not explain the parameters' meanings, the tool's behavior beyond retrieval, or what the output looks like (e.g., list of versions, compatibility info). For a tool that likely interacts with licensing or product systems, more context is needed to use it effectively.

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?

The input schema has 3 required parameters with 0% description coverage, so the schema provides no semantic information. The description does not explain what 'hardware_id', 'license_key', or 'product' represent or how they affect the output. For example, it does not clarify if 'product' refers to a software name or ID, or if 'hardware_id' is needed for compatibility checks. This fails to compensate for the low 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 clearly states the tool's purpose as 'Get available software versions for a product', which includes a specific verb ('Get') and resource ('software versions'). However, it does not explicitly differentiate from sibling tools like 'get_product_details' or 'get_installation_file', which might also retrieve product-related information, leaving some ambiguity about its unique role.

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 guidance on when to use this tool versus alternatives. It does not mention prerequisites, such as needing a license key or hardware ID, or specify scenarios where this tool is preferred over siblings like 'get_product_details'. This lack of context makes it difficult for an agent to decide when to invoke it.

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

track_device_variablesTrack Device VariablesC

Track custom variables for a device

ParametersJSON Schema
NameRequiredDescriptionDefault
hardware_idYes
license_keyYes
productYes
variablesYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the action vaguely. It doesn't disclose if this is a read/write operation, requires authentication (implied by parameters like 'license_key'), has side effects, rate limits, or error handling. This leaves significant behavioral gaps for a tool with 4 required parameters and potential mutations.

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 extremely concise with a single sentence, front-loaded and free of unnecessary words. It efficiently states the core action without redundancy, making it easy to parse despite its informational gaps.

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

Completeness2/5

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

Given the complexity (4 required parameters, nested 'variables' object, no annotations, no output schema), the description is incomplete. It doesn't explain the tool's behavior, parameter roles, or expected outcomes, making it inadequate for an agent to reliably invoke this tool without additional context or trial-and-error.

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%, so the schema provides no parameter details. The description adds minimal meaning, mentioning 'custom variables' which loosely relates to the 'variables' parameter but doesn't explain the purpose of 'hardware_id', 'license_key', or 'product', or how variables are structured. It fails to compensate for the low coverage, leaving parameters largely undocumented.

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

Purpose3/5

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

The description states the action ('track') and resource ('custom variables for a device'), which provides a basic purpose. However, it's vague about what 'track' means operationally (e.g., create, update, or monitor variables) and doesn't distinguish it from sibling tools like 'get_device_variables' or 'add_consumption', leaving ambiguity in its specific function.

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 guidance is provided on when to use this tool versus alternatives. For example, it doesn't clarify if this is for setting variables (vs. 'get_device_variables' for reading) or how it relates to tools like 'add_consumption'. The description lacks context, prerequisites, or exclusions, offering minimal usage direction.

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

TDQS

B3/5.0
Disambiguation4/5

Most tools have distinct purposes targeting specific license management operations, but there is some potential confusion between activate_license/activate_offline and deactivate_license/deactivate_offline pairs where the offline variants might not be immediately distinguishable from the regular ones without careful reading of descriptions. The consumption tools (add_consumption vs add_feature_consumption) also have some overlap but are reasonably differentiated.

Naming Consistency5/5

All 18 tools follow a consistent verb_noun naming pattern with snake_case throughout. The naming convention is highly predictable with clear action-object relationships (e.g., activate_license, check_license, get_product_details, track_device_variables). No mixing of naming styles or inconsistent verb usage is present.

Tool Count4/5

With 18 tools, this is slightly on the higher side but reasonable for a comprehensive license management system covering activation, deactivation, consumption tracking, floating licenses, customer management, and device variables. The count feels appropriate for the domain scope, though it might be borderline heavy for some agent workflows.

Completeness5/5

The tool set provides excellent coverage of license management workflows including core operations (activate, check, deactivate), consumption management, floating license handling, customer/user management, product information access, trial key generation, and device variable tracking. There are no obvious gaps for the stated domain, with tools supporting both online and offline scenarios.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A server implementation of the Model Context Protocol (MCP) that provides REST API endpoints for managing and interacting with MCP resources.
  • A
    license
    A
    quality
    D
    maintenance
    An MCP server implementation that integrates with the Civo cloud platform API, providing capabilities to manage cloud instances, networks, and Kubernetes clusters.
    19
    17
    3
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    This MCP server provides comprehensive access to the Mews hospitality platform API, covering customer and company management, reservation operations, financial transactions, account management, configuration settings, and services inventory. It implements the core functionality needed for hospitalit
    53
    137
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/stier-tfedorko/licensespring-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server