Skip to main content
Glama
Labs64

Labs64/NetLicensing-MCP

by Labs64

NetLicensing MCP Server

CI PyPI GHCR Docker Hub MCP Registry Python 3.12+ License

The official Labs64 NetLicensing MCP Server β€” a natural language interface that lets AI agents manage software licenses, customers, and entitlements through conversational commands.

Works with Claude Desktop, GitHub Copilot (Agent mode), VS Code, JetBrains / IntelliJ IDEA, and any other MCP-compatible client.


Why use this?

  • Natural Language Licensing β€” Ask your AI assistant to create products, issue licenses, validate entitlements, and generate shop URLs without touching the NetLicensing UI or writing API calls.

  • Full API coverage β€” Various tools spanning the entire NetLicensing REST API: products, modules, templates, licensees, licenses, bundles, tokens, transactions, and payment methods.

  • Built-in audit prompts β€” Five ready-to-run prompt templates for account audits, expiry sweeps, anomaly detection, and cleanup workflows.

  • Safe by default β€” All delete operations expose a force_cascade option; nothing is silently cascaded.

  • Zero-dependency quick start β€” Run with uvx or Docker without a local Python install.


Related MCP server: Enterprise License Manager API

What can you ask?

Once connected, you can talk to NetLicensing in plain language:

  • "List all products in my NetLicensing account."

  • "Create a new licensee for customer@example.com under product PTEST."

  • "Validate the license for licensee L001 β€” does it pass?"

  • "Generate a shop URL for licensee L001 so they can self-serve their renewal."

  • "Which licenses are expiring in the next 30 days?"

  • "Find any licensees with no active licenses β€” flag them for cleanup."

  • "Transfer all licenses from licensee L001 to L002."

  • "Create an API key token scoped to read-only access."

  • "Show me all transactions from the last month."


Features

Area

Tools

Products

list, get, create, update, delete

Product Modules

list, get, create, update, delete

License Templates

list, get, create, update, delete

Licensees

list, get, create, update, delete, validate, transfer

Licenses

list, get, create, update (activate/deactivate), delete

Bundles

list, get, create, update, delete, obtain

Tokens

list, get, create shop URL, create API token, revoke

Transactions

list, get, create, update

Payment Methods

list, get, update

Utilities

list licensing models, list license types

Audit Prompts

full account, single customer, expiry sweep, cleanup, anomaly detection

Delete Safety

force_cascade option on all delete tools

Redaction

secrets (apiKey, licenseeSecret, nodeSecret, …) masked in all responses and logs


Security defaults

The server is designed to be safe by default:

  • No silent credential fallback β€” if NETLICENSING_API_KEY is not set and NETLICENSING_ALLOW_DEMO is not explicitly enabled, the server refuses to start (stdio) or returns 503 (HTTP) rather than silently using demo credentials.

  • Redaction layer β€” every tool response passes through a redaction filter. Sensitive fields (apiKey, licenseeSecret, nodeSecret, password, secret) are masked to a partial form (e.g. s3c****ecret). The set is extendable via MCP_REDACT_FIELDS.

  • One-time credentials β€” create_api_token and create_shop_token tag their response with "shown_once": true so clients know the credential will not be visible in full again. Subsequent get_token / list_tokens calls return masked values.

  • Delete confirmation β€” all destructive operations require a two-step confirmation token flow; nothing is silently cascaded.


Quick Start

Option A β€” uvx (no install required)

NETLICENSING_API_KEY=your_key uvx netlicensing-mcp

Option B β€” pip

pip install netlicensing-mcp
NETLICENSING_API_KEY=your_key netlicensing-mcp

Option C β€” Docker

stdio (default) β€” for Claude Desktop / VS Code

docker run -i --rm \
  -e NETLICENSING_API_KEY=your_key \
  ghcr.io/labs64/netlicensing-mcp:latest

HTTP mode β€” for remote/shared deployments

docker run -d -p 8000:8000 \
  -e NETLICENSING_API_KEY=your_key \
  ghcr.io/labs64/netlicensing-mcp:latest http

Verbose logging (any mode)

# CLI flag
docker run -i --rm \
  -e NETLICENSING_API_KEY=your_key \
  ghcr.io/labs64/netlicensing-mcp:latest -v

# Or via env var
docker run -i --rm \
  -e NETLICENSING_API_KEY=your_key \
  -e MCP_VERBOSE=true \
  ghcr.io/labs64/netlicensing-mcp:latest

Demo / sandbox mode (no API key)

docker run -i --rm \
  -e NETLICENSING_ALLOW_DEMO=true \
  ghcr.io/labs64/netlicensing-mcp:latest

No API key? Set NETLICENSING_ALLOW_DEMO=true to run against NetLicensing's built-in sandbox with demo credentials β€” no account required. The server will tag every response with "demo_mode": true and emit a periodic warning so it is always clear you are not using a real account.


Configuration

Environment Variables

Variable

Required

Default

Description

NETLICENSING_API_KEY

Yes*

β€”

NetLicensing API key. Required unless NETLICENSING_ALLOW_DEMO=true is set.

NETLICENSING_ALLOW_DEMO

No

false

Set to true to explicitly opt in to sandbox demo mode when no API key is configured. Every tool response is tagged with "demo_mode": true and a warning is logged every 60 seconds. Never set this in production.

NETLICENSING_BASE_URL

No

https://go.netlicensing.io/core/v2/rest

Override the NetLicensing REST API base URL (e.g. for on-prem deployments).

MCP_TRANSPORT

No

stdio

Transport mode: stdio (default) or http. Can also be passed as a CLI argument.

MCP_HOST

No

127.0.0.1

Host address to bind the HTTP server (HTTP mode only).

MCP_PORT

No

8000

Port to bind the HTTP server (HTTP mode only).

MCP_VERBOSE

No

false

Enable verbose debug logging (true, 1, or yes). Logs raw API requests/responses with sensitive fields automatically redacted. Can also be set via -v CLI flag.

MCP_REDACT_FIELDS

No

β€”

Comma-separated list of additional field names to redact from all tool responses and log output (e.g. MCP_REDACT_FIELDS=ssn,phone). Extends the built-in default set: apiKey, licenseeSecret, nodeSecret, password, secret.

* NETLICENSING_API_KEY and demo mode: If neither NETLICENSING_API_KEY nor NETLICENSING_ALLOW_DEMO=true is set, the server will refuse to start (stdio mode) or return 503 Service Unavailable for all tool calls (HTTP mode). This prevents accidental use of demo credentials in production.

Note on HTTP deployments (e.g. AWS): When running in HTTP mode over a network, you can skip setting NETLICENSING_API_KEY on the server. The MCP server will automatically extract the key per-request if the connecting client provides it via the X-NetLicensing-API-Key HTTP header, Authorization: Bearer <key> header, or ?apikey=<key> query parameter.


Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "netlicensing": {
      "command": "uvx",
      "args": ["netlicensing-mcp"],
      "env": {
        "NETLICENSING_API_KEY": "your_key_here"
      }
    }
  }
}

Or use the official Docker image:

stdio (default) β€” for Claude Desktop / VS Code

{
  "mcpServers": {
    "netlicensing": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "NETLICENSING_API_KEY=your_key_here",
        "ghcr.io/labs64/netlicensing-mcp:latest"
      ]
    }
  }
}

HTTP mode β€” for remote/shared deployments

{
  "mcpServers": {
    "netlicensing": {
      "command": "docker",
      "args": [
        "run", "-d",
        "-p", "8000:8000",
        "-e", "NETLICENSING_API_KEY=your_key_here",
        "ghcr.io/labs64/netlicensing-mcp:latest",
        "http"
      ]
    }
  }
}

VS Code / GitHub Copilot

The repo ships a .vscode/mcp.json that auto-configures Copilot Agent mode. Set NETLICENSING_API_KEY in your shell environment or a .env file, then click Start in the editor banner that appears above mcp.json.

JetBrains / IntelliJ IDEA

In Copilot Chat β†’ Agent mode β†’ Tools icon β†’ Add More Tools… β€” paste the same JSON block shown in the Claude Desktop section above.


Audit Prompt Templates

Five built-in prompts accessible in Copilot Agent and Claude Desktop:

Prompt

Purpose

audit_full

End-to-end account audit for a product

audit_customer

Deep-dive on a single licensee

audit_expiry

Find licenses expiring within N days and generate renewal URLs

audit_cleanup

Identify inactive / orphaned licenses for cleanup

audit_anomaly

Detect unusual usage patterns across all customers


Troubleshooting

Check MCP server logs

# macOS / Claude Desktop
tail -f ~/Library/Logs/Claude/mcp-server-netlicensing.log
 
# Windows
Get-Content "$env:APPDATA\Claude\Logs\mcp-server-netlicensing.log" -Wait

Run the MCP Inspector (browser UI at http://localhost:5173)

mcp dev src/netlicensing_mcp/server.py

Common issues

Symptom

Likely cause

Fix

401 Unauthorized responses

Invalid or expired API key

Regenerate your key at ui.netlicensing.io

Server not listed in Claude

Config file JSON syntax error

Validate with python -m json.tool claude_desktop_config.json

uvx: command not found

uv not installed

pip install uv or see docs.astral.sh/uv

Server exits immediately / 503 on all calls

NETLICENSING_API_KEY not set and demo mode not enabled

Set NETLICENSING_API_KEY, or set NETLICENSING_ALLOW_DEMO=true for sandbox testing

Demo data instead of live data

NETLICENSING_API_KEY not set; NETLICENSING_ALLOW_DEMO=true active

Ensure NETLICENSING_API_KEY is exported in the shell that starts the client and unset NETLICENSING_ALLOW_DEMO


Development

git clone https://github.com/Labs64/NetLicensing-MCP
cd NetLicensing-MCP

# Create a virtual environment
python -m venv .venv
source .venv/bin/activate       # Windows: .venv\Scripts\activate

# ... and install dependencies
pip install -e ".[dev]"
pip install hatch hatch-vcs

# Add your API key to a .env file (or export it in your shell)
cp .env.example .env
 
# Run the MCP Inspector
mcp dev src/netlicensing_mcp/server.py
 
# Run tests
pytest tests/ -v

# Clean previous builds
rm -rf dist/

# Build a wheel for local testing
hatch build --target wheel

# Build the Docker image locally
docker build -t ghcr.io/labs64/netlicensing-mcp:latest .

HTTP mode (for remote / shared deployments)

python -m netlicensing_mcp.server http
# Server listens on MCP_HOST:MCP_PORT (default: 127.0.0.1:8000)

Use ngrok or a reverse proxy to expose the HTTP endpoint to remote MCP clients:

ngrok http 8000
# Then point your client at the generated HTTPS URL

Cloud Deployment (AWS)

Deploy the MCP server to AWS for a public HTTPS endpoint that remote AI agents can connect to:

Option

Best for

Scale-to-zero

Setup

ECS Fargate

Production, consistent traffic

No

ALB + Fargate

App Runner

Low-traffic, development

βœ… Yes

Auto-provisioned HTTPS

Quick deploy with the helper script

cd deploy/aws

# Option A β€” ECS Fargate
# Deploy (with optional HTTPS via ACM certificate)
./deploy.sh fargate \
    --certificate-arn arn:aws:acm:us-east-1:123456789:certificate/your-cert-id

# Option B β€” App Runner (mirror image to ECR first)
./deploy.sh mirror --ecr-repo 123456789.dkr.ecr.us-east-1.amazonaws.com/netlicensing-mcp
./deploy.sh apprunner \
    --ecr-image 123456789.dkr.ecr.us-east-1.amazonaws.com/netlicensing-mcp:latest

Connect MCP clients to the public URL

To use a shared, remote deployment, do not bake the NETLICENSING_API_KEY into the remote server settings. Instead, pass the API key from the client side using query parameters or HTTP headers.

For example, using the URL configuration in your MCP client with a query parameter:

{
  "mcpServers": {
    "netlicensing": {
      "url": "https://your-endpoint.us-east-1.elb.amazonaws.com/mcp?apikey=YOUR_API_KEY"
    }
  }
}

If you use a client or tool that supports passing HTTP headers directly, you can alternatively provide the key via X-NetLicensing-API-Key: YOUR_API_KEY or Authorization: Bearer YOUR_API_KEY.

πŸ“– Full instructions, architecture diagrams, and cost estimates: deploy/aws/README.md


Contributing

Contributions are welcome! Please open an issue or pull request on GitHub.

For significant changes, open an issue first to discuss the approach.


License

Apache 2.0 β€” see LICENSE


NetLicensing-MCP MCP server

Available Tools

48 tools
netlicensing_create_api_tokenA

Create a scoped API token.

Args: api_key_role: ROLE_APIKEY_LICENSEE | ROLE_APIKEY_ANALYTICS | ROLE_APIKEY_OPERATION | ROLE_APIKEY_MAINTENANCE | ROLE_APIKEY_ADMIN licensee_number: Optional β€” scope token to a specific licensee

ParametersJSON Schema
NameRequiredDescriptionDefault
api_key_roleNoROLE_APIKEY_LICENSEE
licensee_numberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations exist, so description must carry the burden. It mentions 'scoped' and lists role options and optional licensee scoping, adding some context beyond the bare schema. However, it does not disclose permissions needed, side effects, or token management (e.g., revocability).

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 short and front-loaded with purpose, followed by a clean args list. No redundant sentences, but the args formatting could be more structured with distinct sections.

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 2-parameter creation tool with an output schema, the description covers the core purpose and parameter semantics adequately. No missing critical information given the context.

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 has 0% description coverage; the description lists the two parameters, provides possible values for api_key_role, and explains licensee_number's purpose ('scope token to a specific licensee'), adding meaning beyond the schema. Missing explanations of each role's effect.

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 clearly states 'Create a scoped API token' with the verb 'Create' and resource 'API token', distinguishing it from sibling tools that create other entities (license, bundle, etc.).

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 on when to use this tool versus other create tools (e.g., netlicensing_create_shop_token), nor any conditions or scenarios for using it.

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

netlicensing_create_bundleA

Create a new bundle grouping one or more license templates.

Args: number: Unique bundle number (e.g. 'B001') name: Human-readable bundle name license_template_numbers: List of license template numbers included in the bundle active: Whether the bundle is active price: Optional bundle price currency: ISO 4217 currency code (e.g. EUR, USD β€” leave empty for account default) description: Optional bundle description

ParametersJSON Schema
NameRequiredDescriptionDefault
numberYes
nameYes
license_template_numbersYes
activeNo
priceNo
currencyNo
descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/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 full burden. It does not disclose behavioral traits such as side effects, authorization needs, or behavior if the bundle already exists. Only parameter descriptions are given.

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 concise, using a clear heading and a bullet-like list for parameters. Every sentence adds value, and it is front-loaded with the purpose. No unnecessary words.

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

Completeness3/5

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

While parameter semantics are covered, the description lacks behavioral transparency and usage context. For a create tool with 7 parameters and an output schema, it adequately explains what each parameter does but does not address when to use or potential side effects.

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 description adds significant meaning beyond the input schema for each parameter, including examples ('B001'), constraints ('ISO 4217 currency code'), and defaults ('leave empty for account default'). This compensates for the 0% schema description coverage.

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 clearly states 'Create a new bundle grouping one or more license templates,' specifying the verb 'create' and the resource 'bundle' with its grouping purpose. This distinguishes it from sibling tools that create other entities like license, licensee, etc.

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 does not provide explicit guidance on when to use this tool versus alternatives. It implies usage for creating bundles but lacks prerequisites, exclusions, or comparisons with other create tools.

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

netlicensing_create_licenseA

Assign a new license to a customer from a license template.

Args: licensee_number: Customer to assign the license to license_template_number: Template defining type and rules number: Optional custom license number (auto-generated if empty) active: Whether the license is active immediately name: Display name (defaults from template if empty) start_date: ISO 8601 datetime β€” mandatory for TIMEVOLUME type price: License price (overrides template default, omit to inherit) currency: ISO 4217 currency code (overrides template default) time_volume: Duration value β€” mandatory for TIMEVOLUME type time_volume_period: DAY | WEEK | MONTH | YEAR (TIMEVOLUME type) quantity: Usage quota β€” mandatory for PayPerUse / NodeLocked models parent_feature: Parent feature β€” mandatory for TIMEVOLUME + Rental model hidden: Hide license from end customer in Shop (omit to inherit)

ParametersJSON Schema
NameRequiredDescriptionDefault
licensee_numberYes
license_template_numberYes
numberNo
activeNo
nameNo
start_dateNo
priceNo
currencyNo
time_volumeNo
time_volume_periodNo
quantityNo
parent_featureNo
hiddenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It discloses creation intent and conditional mandatory parameters, but omits behavioral traits like whether the operation is idempotent, if it modifies other resources, requires authentication, or triggers notifications. This is insufficient for a write operation.

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 a clear purpose sentence, followed by a well-structured list of parameters. Each line is concise. While slightly long (13 lines), it avoids fluff and uses a consistent format.

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

Completeness3/5

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

Despite complexity (13 parameters, 2 required), the description covers most parameters with context. However, it lacks details on error conditions, output (though output schema exists), and global prerequisites. Overall adequate but not exhaustive.

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 input schema has 0% coverage, so the description compensates well. It explains each parameter's purpose (e.g., 'licensee_number: Customer to assign the license to') and notes conditions (e.g., start_date mandatory for TIMEVOLUME type). This adds significant value beyond the schema's bare property list.

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 clearly states the action: 'Assign a new license to a customer from a license template.' It includes a specific verb ('assign') and identifies the key resources (customer, license template). This distinguishes it from sibling tools like 'create_licensee' or 'create_license_template'.

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 no explicit guidance on when to use this tool versus alternatives like 'netlicensing_update_license' or 'netlicensing_create_bundle'. It implies use when assigning a new license, but fails to mention exclusions or prerequisites (e.g., ensure customer and template exist).

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

netlicensing_create_licenseeA

Create a new customer (licensee) under a product.

Args: product_number: Product to associate the customer with number: Optional custom licensee number (auto-generated if empty) name: Optional display name for the customer active: Whether the licensee is active marked_for_transfer: Mark licensee for license transfer licensee_secret: Secret for licensee identification (when product licenseeSecretMode is PREDEFINED)

ParametersJSON Schema
NameRequiredDescriptionDefault
product_numberYes
numberNo
nameNo
activeNo
marked_for_transferNo
licensee_secretNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden. It discloses conditional behavior for licensee_secret (when product mode is PREDEFINED), but does not mention safety profile (write operation), side effects, authentication needs, or error handling.

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 concise with a clear first sentence and bullet-like parameter explanations. However, the parameter descriptions could be more structured (e.g., table or list) for quick scanning.

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

Completeness3/5

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

All parameters are explained, but missing information on prerequisites (e.g., product must exist), error scenarios (e.g., duplicate number), and return value (though output schema may cover it). Adequate but not comprehensive for a creation tool.

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 0%, but the description provides meaning for all 6 parameters, including purpose for product_number, auto-generation for number, conditional usage of licensee_secret, etc. This compensates well for the lack of schema 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 clearly states 'Create a new customer (licensee) under a product,' specifying the verb (create), resource (customer/licensee), and context (under a product). This effectively distinguishes it from sibling update tools like netlicensing_update_licensee.

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

Usage Guidelines3/5

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

The description implies usage for creation, but does not explicitly state when to use it versus alternatives, mention prerequisites (e.g., product must exist), or provide when-not-to-use guidance. No explicit exclusions or context.

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

netlicensing_create_license_templateB

Create a license template.

Args: module_number: Parent product module number: Unique template number (e.g. 'LT01') name: Template display name license_type: FEATURE | TIMEVOLUME | FLOATING | QUANTITY price: Template price (0 for free) currency: ISO 4217 currency code (default EUR) automatic: Auto-assign this license to new licensees hidden: Hide template in NetLicensing Shop hide_licenses: Hide licenses derived from this template in the Shop active: Whether the template is active time_volume: Number of time units (TIMEVOLUME type) time_volume_period: DAY | WEEK | MONTH | YEAR (TIMEVOLUME type) max_sessions: Concurrent sessions allowed (FLOATING type) quantity: Usage quota (QUANTITY / PayPerUse type) grace_period: Allow grace period after expiry (Subscription model)

ParametersJSON Schema
NameRequiredDescriptionDefault
module_numberYes
numberYes
nameYes
license_typeYes
priceNo
currencyNoEUR
automaticNo
hiddenNo
hide_licensesNo
activeNo
time_volumeNo
time_volume_periodNo
max_sessionsNo
quantityNo
grace_periodNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.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 must disclose behavioral traits. It fails to mention what happens upon creation (e.g., immediate activation, any side effects like automatic assignment), authentication requirements, or whether the template is immediately available. The description is purely parameter-focused without behavioral context.

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 sentence, then lists parameters. It is structured but lengthy (15 lines for parameters). Some redundancy with the schema exists, but since schema has no descriptions, the list is necessary. It could be more concise by grouping related parameters (e.g., time_volume and time_volume_period).

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

Completeness3/5

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

Given the high parameter count (15) and lack of annotations, the description covers parameter semantics decently but lacks behavioral context. It does not explain return values (despite an output schema existing) or error conditions. For a complex creation tool, more contextual information about the created object's state would be helpful.

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 0%, so the description must compensate. It provides explanations for all 15 parameters, though some are brief (e.g., 'automatic: Auto-assign this license to new licensees'). It clarifies types and defaults (e.g., price default 0, currency default EUR). However, some descriptions are almost tautological (e.g., 'active: Whether the template is active').

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 clearly states the tool's action: 'Create a license template.' It lists specific parameters like module_number, number, name, license_type, etc., and the purpose is distinct from sibling tools (e.g., netlicensing_create_license which creates a license for a licensee, not a template).

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 (e.g., product module must exist) or scenarios where another tool (like update_license_template) would be more appropriate. Sibling tools like netlicensing_create_license, netlicensing_create_product_module are present but no differentiation is given.

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

netlicensing_create_productB

Create a new product.

Args: number: Unique product number (e.g. 'P001') name: Human-readable product name version: Product version string active: Whether the product is active description: Optional product description licensing_info: Optional licensing information displayed in the shop licensee_auto_create: Auto-create licensees on first validation attempt vat_mode: GROSS or NET (leave empty to use account default) licensee_secret_mode: DISABLED, PREDEFINED, or CLIENT (leave empty for default)

ParametersJSON Schema
NameRequiredDescriptionDefault
numberYes
nameYes
versionNo1.0
activeNo
descriptionNo
licensing_infoNo
licensee_auto_createNo
vat_modeNo
licensee_secret_modeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, and the description lacks behavioral details such as side effects, idempotency, authentication requirements, or rate limits. It only describes parameters.

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 description is front-loaded with a clear purpose but uses a verbose docstring format with an 'Args' list. Could be more concise without losing clarity.

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 the presence of an output schema (not required to explain returns) and 9 parameters covered, the description is fairly complete. However, it could mention typical usage context (e.g., when to set vat_mode).

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 0%, so the description must compensate. It provides inline parameter meanings, examples (e.g., 'P001'), and valid values (e.g., GROSS/NET for vat_mode), adding significant value beyond the bare schema.

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

Purpose5/5

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

The description clearly states 'Create a new product.' with a specific verb and resource. Among sibling create tools, it uniquely identifies product creation.

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 on when to use this tool versus other create tools or alternatives. The description purely lists parameters without usage context.

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

netlicensing_create_product_moduleA

Create a product module with a licensing model.

Args: product_number: Parent product number: Unique module number (e.g. 'M01') name: Module name licensing_model: One of: TryAndBuy, Subscription, Rental, Floating, MultiFeature, PayPerUse, PricingTable, Quota, NodeLocked active: Whether the module is active max_checkout_validity: Maximum checkout validity in days (Floating model) yellow_threshold: Remaining time volume for yellow warning (Rental model) red_threshold: Remaining time volume for red warning (Rental model) node_secret_mode: PREDEFINED or CLIENT (NodeLocked model)

ParametersJSON Schema
NameRequiredDescriptionDefault
product_numberYes
numberYes
nameYes
licensing_modelYes
activeNo
max_checkout_validityNo
yellow_thresholdNo
red_thresholdNo
node_secret_modeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are present, so the description must disclose behavioral traits. However, it focuses entirely on parameter explanations and does not mention side effects (e.g., creation is destructive), authentication needs, rate limits, or return value structure. The description lacks behavioral context beyond basic parameter defaults.

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 a brief opening sentence followed by a bullet-like parameter list. It is concise for 9 parameters, though the Args section could be slightly tightened. Overall, every sentence earns its place.

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

Completeness3/5

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

Given the complexity (9 parameters, model-specific behavior) and the presence of an output schema (so return values are not needed), the description covers parameter semantics thoroughly but omits behavioral context, usage guidelines, and error conditions. It is adequate but not comprehensive.

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?

With 0% schema description coverage, the description fully compensates by explaining each parameter's purpose, valid values (e.g., explicit list of licensing models), and model-specific constraints (e.g., max_checkout_validity for Floating, thresholds for Rental, node_secret_mode for NodeLocked). This adds substantial meaning beyond the schema's bare titles and types.

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 clearly states the tool's function: 'Create a product module with a licensing model.' This specifies the verb (create), the resource (product module), and a key distinguishing attribute (licensing model). It effectively differentiates from sibling create tools like netlicensing_create_license or netlicensing_create_product.

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, nor does it mention prerequisites or when not to use it. It only lists parameters, leaving the agent to infer usage context from the tool's name and siblings.

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

netlicensing_create_shop_tokenB

Generate a NetLicensing Shop one-time checkout URL for a customer.

Args: licensee_number: Customer to generate the shop URL for product_number: Optional β€” scope shop to a specific product license_template_number: Optional β€” pre-select a specific license template success_url: Optional URL to redirect to after successful purchase cancel_url: Optional URL to redirect to if customer cancels success_url_title: Optional button/link label for success redirect cancel_url_title: Optional button/link label for cancel redirect

ParametersJSON Schema
NameRequiredDescriptionDefault
licensee_numberYes
product_numberNo
license_template_numberNo
success_urlNo
cancel_urlNo
success_url_titleNo
cancel_url_titleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/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. It discloses that the tool generates a checkout URL but omits behavioral details such as whether the action is idempotent, side effects, authentication needs, or rate limits. The description is too minimal for safe invocation.

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 short and to the point, starting with the purpose. It lists parameters in a readable format. However, it could be more structured (e.g., grouping optional params) and front-loads only the first sentence. Overall efficient but not maximally concise.

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

Completeness3/5

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

Given the tool's complexity (7 parameters, 1 required) and the existence of an output schema (as per context signals), the description does not mention what the tool returns (e.g., token, URL, expiration). While the output schema may cover this, the description should at least hint at the response. It is adequate but incomplete for full agent understanding.

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 lists each parameter and adds limited context (e.g., 'Customer to generate the shop URL for' for licensee_number, 'Optional URL to redirect to after successful purchase' for success_url). However, many parameters (e.g., cancel_url_title) only restate the name. This provides partial but not full compensation.

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 clearly states it generates a 'NetLicensing Shop one-time checkout URL for a customer,' which is a specific verb (generate) and resource (shop URL). It distinguishes from sibling tools like netlicensing_create_api_token or netlicensing_create_license, which have different 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?

The description provides no guidance on when to use this tool versus alternatives. It does not mention that it is specifically for one-time checkout URLs, nor does it exclude other methods. No explicit context or exclusions are given.

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

netlicensing_create_transactionB

Create a new transaction.

Args: status: CANCELLED | CLOSED | PENDING source: Transaction source β€” SHOP or AUTO (default SHOP) licensee_number: Optional β€” associated licensee number: Optional custom transaction number (auto-generated if empty) name: Optional human-readable transaction name active: Whether the transaction is active date_created: Optional ISO 8601 creation timestamp date_closed: Optional ISO 8601 close timestamp payment_method: Optional payment method number

ParametersJSON Schema
NameRequiredDescriptionDefault
statusYes
sourceNoSHOP
licensee_numberNo
numberNo
nameNo
activeNo
date_createdNo
date_closedNo
payment_methodNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior1/5

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

No annotations exist, and the description fails to disclose behavioral traits such as side effects, auth requirements, rate limits, or what happens upon creation. The tool's behavior beyond parameter values is completely opaque.

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 concise, using a bullet list format with no redundant information. Every sentence adds value for parameter 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?

While the parameter details are covered, the description lacks broader context: no usage guidance, no behavioral traits, and no mention of the output despite an existing output schema. The tool's role in the transaction lifecycle is not explained.

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 description adds meaning to all 9 parameters beyond the schema (e.g., enum values for status, explanation of source), compensating for the 0% schema description coverage. However, it does not describe the return value or output structure.

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 explicitly states 'Create a new transaction.' with a clear verb and resource, and it is distinguished from sibling tools like netlicensing_list_transactions and netlicensing_update_transaction.

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 (e.g., update_transaction for modifications). The description only lists parameters without usage context.

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

netlicensing_delete_bundleA

Delete a bundle permanently.

Args: bundle_number: Bundle to delete force_cascade: Force deletion even if dependencies exist

ParametersJSON Schema
NameRequiredDescriptionDefault
bundle_numberYes
force_cascadeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It states 'permanently' and explains force_cascade for dependencies, which is useful. However, it omits details about auth requirements, irreversibility side effects, or error conditions, which would enhance transparency.

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 (three lines) and front-loaded with the core purpose. Every sentence adds value, with no redundant information. Perfect structure for quick comprehension.

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 an output schema exists and only two parameters (one required), the description is largely sufficient. It covers the input semantics and basic behavior. However, it could mention what happens to related entities (e.g., licenses using the bundle) or the return value format, but the output schema mitigates the latter.

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 0%, so the description must compensate. It explains bundle_number as 'Bundle to delete' and force_cascade as 'Force deletion even if dependencies exist', adding meaning beyond the schema's titles and types. This is helpful, though more details like data format or validation would improve it.

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 'Delete a bundle permanently' clearly states the action (delete) and resource (bundle), distinguishing it from sibling tools like get_bundle, create_bundle, or list_bundles. The verb 'delete' is specific and unambiguous.

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

Usage Guidelines3/5

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

The description explains the parameters but does not explicitly state when to use this tool versus alternatives like netlicensing_get_bundle or netlicensing_obtain_bundle. It implies permanent deletion but lacks guidance on prerequisites or scenarios to avoid.

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

netlicensing_delete_licenseA

Delete a license permanently.

Args: license_number: License to delete force_cascade: Force deletion even if dependencies exist

ParametersJSON Schema
NameRequiredDescriptionDefault
license_numberYes
force_cascadeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Without annotations, the description carries the burden. It states the permanent nature and mentions the force_cascade parameter, but lacks details on authorization needs 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 concise with no wasted words, front-loading the purpose and clearly listing arguments in a structured format.

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 delete operation with two parameters and an output schema, the description covers the essential behavior and options, though it omits details about return values or failure modes.

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

Parameters3/5

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

Schema coverage is 0%, so description must compensate. It adds brief explanations for each parameter ('License to delete', 'Force deletion even if dependencies exist'), which adds value but could be more detailed.

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 clearly states 'Delete a license permanently' which specifies the verb (delete) and resource (license), distinguishing it from sibling tools like delete_bundle or delete_licensee.

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 on when to use this tool versus alternatives, such as when to favor other deletion tools. No prerequisites or exclusions are mentioned.

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

netlicensing_delete_licenseeA

Delete a licensee and all their licenses permanently.

Args: licensee_number: Licensee to delete force_cascade: Also delete all dependent licenses

ParametersJSON Schema
NameRequiredDescriptionDefault
licensee_numberYes
force_cascadeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations exist, so description carries full burden. It discloses permanence and cascading behavior (via force_cascade), but does not mention authorization, reversibility, or side effects when force_cascade is false.

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 concise: a single sentence followed by a clear argument list. Every sentence provides value, and the main purpose is upfront.

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

Completeness4/5

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

The description covers the essential behavior for a delete tool, and an output schema exists so return values are not needed. However, it does not clarify what happens when force_cascade is false and dependent licenses exist.

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?

With 0% schema coverage, the description compensates by explaining each parameter: licensee_number identifies the target, and force_cascade controls deletion of dependent licenses. This adds meaning beyond the schema.

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

Purpose5/5

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

The description states a specific verb ('Delete') and resource ('a licensee and all their licenses permanently'), clearly distinguishing it from sibling delete tools like delete_license or delete_bundle.

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 on when to use this tool vs alternatives (e.g., other delete tools or update tools). No prerequisites or contextual hints provided about when deletion is appropriate.

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

netlicensing_delete_license_templateB

Delete a license template.

Args: template_number: Template to delete force_cascade: Also delete all dependent licenses

ParametersJSON Schema
NameRequiredDescriptionDefault
template_numberYes
force_cascadeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

The description indicates a destructive action ('delete') and that force_cascade can delete dependents, but lacks details on irreversibility, authorization requirements, or success/error responses. With no annotations, 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 extremely concise: two sentences plus bullet-style args. Every word earns its place; no fluff or redundancy.

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

Completeness3/5

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

For a simple delete tool with an output schema (so return format need not be described), the description covers the basic operation and the force_cascade option. However, it omits potential error states (e.g., what happens if force_cascade=false and dependents exist) and usage context.

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 0%, so the description must add meaning. It explains both parameters: 'Template to delete' and 'Also delete all dependent licenses', which clarifies their roles beyond the schema's types and defaults.

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 'Delete a license template', which is a specific verb-resource pair. It differentiates from sibling tools that delete other resources (e.g., netlicensing_delete_license) by naming the resource explicitly, but does not elaborate on scope or side effects.

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 (e.g., netlicensing_delete_license, netlicensing_delete_bundle). There is no mention of prerequisites, when not to use, or typical scenarios.

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

netlicensing_delete_productB

Delete a product permanently.

Args: product_number: Product to delete force_cascade: Also delete all dependent modules, templates, licensees, and licenses

ParametersJSON Schema
NameRequiredDescriptionDefault
product_numberYes
force_cascadeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It states 'permanently' to indicate irreversibility and explains the force_cascade parameter's effect on dependencies. However, it lacks details on authorization needs or what happens if force_cascade is false and dependencies exist (likely failure).

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

Conciseness5/5

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

The description is two lines, highly concise with zero wasted words. It front-loads the core action ('Delete a product permanently') and then lists parameters. This is appropriate for a straightforward delete operation.

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

Completeness3/5

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

Given the tool's low complexity (2 params, simple delete) and the presence of an output schema, the description is mostly adequate. However, it fails to mention error conditions (e.g., deletion failure due to dependencies without cascade) or prerequisites (product must exist). Slightly incomplete for a confident agent 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?

Input schema has 0% description coverage, so the description must compensate. It explains product_number as 'Product to delete' (minimal but clear) and force_cascade as 'Also delete all dependent modules, templates, licensees, and licenses' (good semantic value). However, it does not specify the format of product_number (e.g., ID pattern).

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 'Delete a product permanently', which is a specific verb+resource. It distinguishes the tool from other delete actions like netlicensing_delete_bundle or netlicensing_delete_license. However, it could be more explicit about the scope of deletion (e.g., only the product metadata vs. all linked entities).

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 (e.g., netlicensing_update_product to deactivate). It also does not explain when to set force_cascade to true versus false, or mention prerequisites such as the product existing.

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

netlicensing_delete_product_moduleA

Delete a product module.

Args: module_number: Module to delete force_cascade: Also delete all dependent license templates and licenses

ParametersJSON Schema
NameRequiredDescriptionDefault
module_numberYes
force_cascadeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description must disclose behavior. It mentions the cascade effect ('Also delete all dependent license templates and licenses'), but does not state other traits such as prerequisites (e.g., module must exist), reversibility, or error conditions like what happens if cascade is false but dependents exist.

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 very concise, using a clear structure (purpose statement followed by parameter definitions). Every sentence is necessary and front-loaded.

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 it is a delete tool with two parameters and an output schema (not shown but exists), the description provides enough context for the core operation and cascade effect. However, it lacks details on return values, error handling, or prerequisites, which would make it complete for a delete operation.

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 input schema has 0% schema description coverage. The description adds value by explaining module_number as 'Module to delete' and force_cascade as 'Also delete all dependent license templates and licenses,' which goes beyond the schema's title and type.

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 clearly states 'Delete a product module,' using a specific verb and resource, and it distinguishes the tool from siblings that delete other entities (e.g., netlicensing_delete_license, netlicensing_delete_product).

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?

No explicit guidance on when to use this tool versus alternatives or when to set force_cascade to true. While the purpose is clear from the name, the description does not help an agent decide between this and other delete tools or when cascade is appropriate.

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

netlicensing_delete_tokenB

Revoke an API or shop token.

Args: token_number: Token to revoke

ParametersJSON Schema
NameRequiredDescriptionDefault
token_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only says 'Revoke,' implying a destructive action, but omits authentication needs, side effects, or irreversibility.

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 one sentence and a parameter line, no wasted words.

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

Completeness3/5

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

Output schema exists, so return values are covered. However, missing details like error conditions or idempotency make it only adequate for a simple tool.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate. It adds 'Token to revoke' for the token_number parameter, clarifying its role, but no further details on format or constraints.

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 clearly states the tool revokes 'an API or shop token,' a specific verb and resource. Among siblings, it contrasts with create and get token tools, making its purpose unambiguous.

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 given on when to use this tool versus alternatives (e.g., delete_token might differ from revoking? No other delete_token sibling exists, but there is no context for prerequisites or when not to use it).

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

netlicensing_get_bundleA

Get details of a specific bundle.

Args: bundle_number: Bundle identifier (e.g. 'B001')

ParametersJSON Schema
NameRequiredDescriptionDefault
bundle_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided. The description does not disclose that this is a read-only operation or any behavioral traits (e.g., idempotency, side effects). It only states 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.

Conciseness4/5

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

The description is concise, with a clear one-liner and an Args section. It is appropriately sized for a simple get operation, though it could be slightly more structured.

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

Completeness3/5

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

The tool has an output schema, so return values need not be described. However, the description lacks any additional context such as error scenarios or prerequisites, which would be helpful given the lack of annotations.

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 has 0% description coverage, but the description adds an example ('e.g. 'B001'') and a label for bundle_number, which helps the agent understand the parameter format beyond the schema.

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

Purpose5/5

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

The description clearly states 'Get details of a specific bundle', using a specific verb and resource. It distinguishes from sibling tools like netlicensing_list_bundles and netlicensing_obtain_bundle by indicating it retrieves a single bundle.

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

Usage Guidelines3/5

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

The description implies usage for fetching a single bundle but does not explicitly state when to use versus alternatives like netlicensing_list_bundles. No exclusion criteria or context for when not to use.

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

netlicensing_get_licenseB

Get details of a specific license.

Args: license_number: License identifier

ParametersJSON Schema
NameRequiredDescriptionDefault
license_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided. The description does not disclose any behavioral traits such as error handling, authentication requirements, or return format, which is insufficient for an unannotated tool.

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 description is very concise but lacks structure or front-loading. It is functional but minimal.

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

Completeness3/5

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

For a simple get tool with one parameter, the description is somewhat complete but misses context on errors, return values, or usage scenarios.

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%. The description adds 'License identifier' which provides minimal additional meaning over the schema's title 'License Number' and type string.

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 clearly states the action (get details) and the resource (a specific license), making it distinct from sibling tools like netlicensing_list_licenses.

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 does not explicitly state when to use this tool versus alternatives, though the name and context imply it is for retrieving a single license by ID.

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

netlicensing_get_licenseeB

Get a specific licensee (customer).

Args: licensee_number: Licensee identifier (e.g. 'I001')

ParametersJSON Schema
NameRequiredDescriptionDefault
licensee_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, and the description only says 'Get'. Does not disclose read-only nature, error behavior on missing licensee, or any authentication requirements.

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

Conciseness5/5

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

Extremely concise with only two sentences, no redundant information. Front-loads the main purpose.

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

Completeness3/5

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

Output schema exists, so return values are covered. However, description lacks mention of error cases or additional context about the licensee data retrieved.

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?

Adds meaning beyond schema by labeling licensee_number as 'Licensee identifier' and providing example 'I001', which is helpful despite 0% schema description 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?

Clearly states 'Get a specific licensee (customer)' which is a specific verb+resource. Distinguishes from list tools but not from other get tools for different resources.

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 on when to use this tool versus alternatives like netlicensing_list_licensees or other get tools. Context of use is not provided.

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

netlicensing_get_license_templateB

Get a specific license template.

Args: template_number: Template identifier

ParametersJSON Schema
NameRequiredDescriptionDefault
template_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only states the basic operation without explaining what happens if the template doesn't exist, authorization requirements, or any side effects. This is insufficient for safe invocation.

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 very concise with two sentences, no redundant information. However, it may be overly brief, lacking important context that could be added without bloating.

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

Completeness3/5

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

Given the simplicity of a single-parameter get operation and the presence of an output schema, the description provides the essential purpose and parameter. It does not mention return type or error conditions, but for a trivial tool this is borderline adequate.

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 labels the parameter as 'Template identifier', which adds minimal meaning beyond the parameter name and schema title 'Template Number'. Since schema coverage is 0%, the description should provide more detail about expected values (e.g., format, constraints) but fails to do so.

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 explicitly states the action 'Get' and the resource 'specific license template', clearly distinguishing it from sibling tools like 'list' (which returns all) and 'create' (which adds a new one).

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 the many sibling 'get' tools for other entities (e.g., get_license, get_bundle) or when to prefer list over get. The agent is left without context to choose correctly.

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

netlicensing_get_payment_methodC

Get details of a specific payment method.

Args: payment_method_number: Payment method identifier

ParametersJSON Schema
NameRequiredDescriptionDefault
payment_method_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must convey behavioral traits. It only says 'Get details' without explaining if this is read-only, authentication needs, error handling, or what happens if the payment method does not exist. For a tool with no annotations, 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.

Conciseness3/5

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

The description is very short (two lines), which is concise but borders on under-specification. It could be expanded to include parameter details and usage context without becoming verbose.

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?

Although the tool has an output schema (not shown), the description does not mention what details are returned. For a 'get' operation, it is typical to describe the response structure or key fields. The description is incomplete for the context of this tool.

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 the schema provides no descriptions for parameters. The description adds 'Payment method identifier' for payment_method_number, which offers some meaning but lacks format, examples, or constraints. Given the low coverage, more detail is needed.

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 'Get details of a specific payment method' clearly states the verb ('Get') and the resource ('payment method'). It distinguishes from sibling tools like list_payment_methods (which returns a list) and update_payment_method (which modifies).

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 that for listing all payment methods, one should use netlicensing_list_payment_methods, nor does it clarify 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.

netlicensing_get_productA

Get details of a specific product.

Args: product_number: Product identifier (e.g. 'P001')

ParametersJSON Schema
NameRequiredDescriptionDefault
product_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are present, so the description must fully convey behavioral traits. It only says 'Get details', implying a read operation, but does not disclose authentication needs, error handling (e.g., invalid product_number), idempotency, or rate limits. The minimal description leaves agents guessing.

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: one sentence for purpose and one line for the parameter. It is front-loaded with the core function and uses a structured 'Args' format. No unnecessary words.

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

Completeness4/5

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

For a simple retrieval tool with one parameter and an output schema, the description covers the essential purpose and parameter. Since an output schema exists, the return value does not need elaboration. Missing context about the product's scope (e.g., full details vs. summary) is minor.

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 has 0% description coverage, but the description adds an explicit explanation of the parameter: 'Product identifier (e.g. 'P001')'. This provides context and an example, which is valuable beyond the schema's property title and type.

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 clearly states 'Get details of a specific product', using a specific verb ('Get') and resource ('product'). It distinguishes from sibling tools like create, delete, update, and list products.

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 vs alternatives (e.g., list_products for multiple items, update_product for modifications). The description implies use when you need a single product's details, but no exclusions or comparisons are given.

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

netlicensing_get_product_moduleA

Get a specific product module.

Args: module_number: Module identifier

ParametersJSON Schema
NameRequiredDescriptionDefault
module_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations exist, so the description must carry the full burden. It states 'Get' indicating a read operation, but lacks details about authentication requirements, error handling, or data scope. It is adequate but not thorough.

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

Conciseness5/5

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

The description is two sentences: one for purpose and one for parameter. It is front-loaded, concise, and without any unnecessary words.

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 an output schema (not provided but indicated), the description sufficiently covers the single retrieval operation. No additional context is needed for this straightforward tool.

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 description documents the only parameter 'module_number' as 'Module identifier', adding context beyond the schema's title and type. For a single simple parameter, this is helpful but not extensive.

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 clearly states 'Get a specific product module' with a verb and resource, and the name distinguishes it from siblings like netlicensing_create_product_module and netlicensing_list_product_modules.

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?

No explicit when/when-not or alternative tools are mentioned. The implication from the name and siblings is that this is for retrieving a single module by ID, but no direct guidance is provided.

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

netlicensing_get_tokenC

Get details of a specific token.

Args: token_number: Token identifier

ParametersJSON Schema
NameRequiredDescriptionDefault
token_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

The description lacks behavioral details beyond the basic operation. It does not mention whether the operation is read-only, what happens if the token is not found, or any authentication requirements. With no annotations, this gap is significant.

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 description is very concise (two sentences), but at the cost of missing important details. It is not verbose, but could be more informative without becoming lengthy.

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 presence of an output schema, the description could explain that output details are defined there. However, it does not cover error behavior, return format, or how this operation fits into the broader API context. For a simple retrieval, more context would help.

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 only parameter, token_number, is described as 'Token identifier', which essentially rephrases the schema. With 0% schema description coverage, this adds minimal meaning beyond the schema's type and name.

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 resource 'token', indicating it retrieves token details. It is concise and matches the tool name, but does not explicitly differentiate from the sibling netlicensing_list_tokens, which likely provides a list of tokens.

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 like netlicensing_list_tokens or other get tools. There is no mention of prerequisites, context, or conditions for use.

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

netlicensing_get_transactionC

Get details of a specific transaction.

Args: transaction_number: Transaction identifier

ParametersJSON Schema
NameRequiredDescriptionDefault
transaction_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description must disclose behavior but only implies a read operation. It fails to mention idempotency, authentication needs, or lack of side effects, leaving the agent uninformed.

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 description is very short and front-loaded, but its brevity sacrifices necessary detail. It could include more structure (e.g., parameter format) without becoming verbose.

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 output schema exists, the description need not explain return values, but it omits usage context like required permissions or the type of identifier. The tool is simple, yet the description remains incomplete for reliable agent 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?

Schema description coverage is 0%. The description adds minimal value by labeling transaction_number as an identifier, which is already clear from the schema title. No format or constraints are specified.

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 retrieves details of a specific transaction, distinguishing it from list and create/update siblings. However, it is vague about what 'details' encompass, lacking explicit scope.

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 like netlicensing_list_transactions or when not to use it. The agent receives no context for selection.

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

netlicensing_list_bundlesB

List all bundles in the NetLicensing account.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are present, so the description bears full responsibility. It states only 'list all bundles' without disclosing any behavioral traits like pagination, rate limits, authentication needs, or side effects. This is insufficient for informed invocation.

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 wasted words. It is efficiently front-loaded with the action and resource.

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

Completeness3/5

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

Given the tool has an output schema and no parameters, the description is minimally adequate. However, it does not clarify that the output is a list or how it relates to other bundle tools. More context would improve completeness.

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 input schema has no parameters and 100% coverage, so the baseline is 3. The description adds no parameter information, but none is needed. It correctly implies no filtering is available.

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 lists all bundles, using a specific verb and resource. However, it does not differentiate from sibling list tools like netlicensing_list_products, so it does not achieve a 5.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as netlicensing_get_bundle for a single bundle or netlicensing_obtain_bundle for a different operation. The agent has no context for selection.

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

netlicensing_list_countriesA

List all countries available for VAT and localization settings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It adds context ('for VAT and localization settings') beyond the name, but does not disclose any behavioral traits like authentication needs, rate limits, or whether the list is static or dynamic.

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 is front-loaded and concise with no redundant words. Every word adds value.

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?

For a simple list tool with no parameters and an existing output schema, the description is complete. It specifies the purpose and scope (VAT/localization) without needing to detail return values.

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 input schema has zero parameters, so there is nothing to describe. The description's mention of VAT and localization settings provides context, but since no parameters exist, the baseline of 4 is appropriate.

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

Purpose5/5

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

The description clearly states the tool lists all countries available for VAT and localization settings. This distinguishes it from sibling list tools (e.g., netlicensing_list_products) by specifying the domain (VAT/localization).

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 on when to use this tool versus alternatives or when not to use it. The description does not mention prerequisites, alternative tools, or context for use.

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

netlicensing_list_licenseesA

List all customers (licensees) for a product.

Args: product_number: Product to list customers for filter: Optional server-side filter expression (e.g. 'active=true')

ParametersJSON Schema
NameRequiredDescriptionDefault
product_numberYes
filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the full burden. It states the tool lists licensees non-destructively but omits details on pagination, error behavior, or output format. The presence of an output schema mitigates the lack of return value description.

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: a single sentence for purpose and two lines for parameters. It is front-loaded with the key action and resource, with no redundant text.

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

Completeness4/5

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

Given the existence of an output schema, the description covers the essential purpose and parameters for a list operation. It lacks mention of pagination or result format, but the output schema likely fills that gap. Overall adequate for a straightforward list tool.

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?

With 0% schema description coverage, the parameter descriptions add value: 'product_number' is explained as 'Product to list customers for' and 'filter' as 'Optional server-side filter expression' with an example. This clarifies their purpose beyond the schema's basic type and title.

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 clearly states the tool lists all customers (licensees) for a product. The verb 'list' and resource 'licensees' are specific, distinguishing it from other list tools like netlicensing_list_licenses or netlicensing_list_products.

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

Usage Guidelines3/5

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

The description implies usage by requiring a product_number and offering an optional filter, but it does not explicitly state when to use this tool over alternatives or provide exclusion criteria. The context of siblings indicates it is the only licensee listing tool, so no direct alternative exists.

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

netlicensing_list_licensesB

List all licenses for a specific customer.

Args: licensee_number: Customer whose licenses to list filter: Optional server-side filter expression (e.g. 'active=true')

ParametersJSON Schema
NameRequiredDescriptionDefault
licensee_numberYes
filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, and the description does not disclose behavioral traits such as whether it is read-only, pagination, or rate limits. Listing implies safety, but no explicit transparency.

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 very concise with two sentences for the overall purpose and clear parameter explanations. No unnecessary words, but could be slightly more structured (e.g., using bullet points).

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

Completeness3/5

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

For a simple list tool with 2 parameters and an output schema (though not shown), the description covers the basic inputs but does not mention output format, pagination, or error conditions. Adequate but not complete.

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

Parameters3/5

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

With 0% schema description coverage, the description compensates by adding meaning: licensee_number is described as 'Customer whose licenses to list' and filter as 'Optional server-side filter expression' with an example. This adds value beyond the schema titles, though could be more detailed.

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?

Clearly states the action (list) and resource (licenses) and specifies the scope (for a specific customer via licensee_number). This distinguishes it from sibling tools like netlicensing_list_licensees or netlicensing_list_bundles.

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 on when to use this tool versus alternatives (e.g., netlicensing_get_license for a single license). The description does not mention exclusions or context.

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

netlicensing_list_license_templatesA

List all license templates for a product module.

Args: module_number: Module whose templates to list filter: Optional server-side filter expression (e.g. 'active=true')

ParametersJSON Schema
NameRequiredDescriptionDefault
module_numberYes
filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It implies read-only behavior but does not disclose details like pagination, limits, or the structure of returned data. The standard 'list' operation is adequately described but lacks depth.

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 concise (two sentences plus args) and front-loads the purpose. However, the 'Args' block could be integrated into the narrative for better flow, but overall it earns its space.

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

Completeness3/5

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

Given the tool's simplicity and the presence of an output schema, the description is mostly adequate. It explains the basic function and parameters but lacks finer behavioral details like pagination or when to use it over other list 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 coverage is 0%, so description compensates well: 'module_number' is explained as the target module, and 'filter' is explained with an example expression. This adds meaning beyond the schema's minimal type information.

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 clearly states it lists all license templates for a product module, using a specific verb ('list') and resource ('license templates'), distinguishing it from sibling list tools like 'list_licenses'.

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 explains what it does but does not provide explicit guidance on when to use it versus alternatives (e.g., get_license_template for a single template). No when-not or alternative conditions are mentioned.

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

netlicensing_list_license_typesA

List all license types supported by the NetLicensing service.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It does not disclose behavioral traits like idempotency, response size, or whether it returns cached data, which is minimal for a list operation.

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 sentence, front-loaded with the action and resource, containing no extraneous words.

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

Completeness3/5

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

Given the tool has an output schema (not detailed) and no parameters, the description is adequate but does not explain what license types are or any caveats like pagination, making it minimally complete.

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 input schema has zero parameters, so no parameter information is needed. According to guidelines, 0 parameters yields a baseline of 4.

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 clearly states the verb 'list' and the resource 'all license types supported by the NetLicensing service,' distinguishing it from sibling tools like netlicensing_list_licenses which list actual licenses.

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 netlicensing_list_licenses or netlicensing_list_license_templates, leaving the agent to infer usage from context.

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

netlicensing_list_licensing_modelsA

List all licensing models supported by the NetLicensing service.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It discloses a read-only list operation, which is transparent enough for a simple tool. No mention of side effects, but none are expected.

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 unnecessary words. Well-structured and front-loaded.

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 simplicity (no parameters), existing output schema, and the straightforward nature of listing all items, the description is fully complete.

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?

No parameters exist, so schema coverage is 100%. Description adds nothing extra, but the baseline for zero parameters is 4.

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 clearly states the verb 'list', the resource 'licensing models', and scope 'all'. It distinguishes from sibling tools that list other entities like license types or payment methods.

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

Usage Guidelines3/5

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

The description implies usage (list all models) but provides no explicit guidance on when to use this tool versus alternatives like netlicensing_list_license_types. No exclusions or context are given.

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

netlicensing_list_payment_methodsA

List all payment methods configured for the account.

Args: filter: Optional server-side filter expression (e.g. 'active=true')

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, the description provides minimal behavioral context beyond 'list', omitting details on side effects, authentication, rate limits, or pagination.

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 two sentences, no filler, and front-loads the core purpose.

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 one optional parameter and an output schema, the description covers the essential function and parameter usage, though it could mention output format.

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?

Despite 0% schema description coverage, the description adds meaning for the filter parameter with an example and denotes optionality, compensating for the schema's minimal information.

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 clearly states it lists payment methods for the account, using a specific verb and resource. It effectively distinguishes from sibling tools like netlicensing_get_payment_method.

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 on when to use this tool versus alternatives, and no mention of when not to use or any prerequisites.

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

netlicensing_list_product_modulesC

List all modules (feature groups) for a product.

Args: product_number: Product whose modules to list filter: Optional server-side filter expression (e.g. 'active=true')

ParametersJSON Schema
NameRequiredDescriptionDefault
product_numberYes
filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

Without annotations, the description fails to disclose behavioral traits beyond the action 'list'. It does not mention side effects, permissions, read-only nature, rate limits, pagination, or response format, despite having an output schema.

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 concise, front-loading the purpose in the first sentence, and uses a simple args list. It is easy to scan and contains no extraneous information.

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

Completeness3/5

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

For a simple list tool with few parameters, the description covers the basics. However, it misses context like output structure, pagination, and error handling, which would enhance completeness.

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?

With 0% schema coverage, the description adds basic meaning: product_number is the product whose modules to list, and filter is an optional server-side filter expression with an example. This is minimally adequate but lacks depth (e.g., filter syntax details).

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 lists all modules (feature groups) for a product, using a specific verb and resource. It distinguishes itself from sibling tools like create, get, delete by focusing on listing.

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 (e.g., get_product_module for a single module, or when to use filters). The description lacks context for appropriate usage.

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

netlicensing_list_productsA

List all products in the NetLicensing account.

Args: filter: Optional server-side filter expression (e.g. 'active=true')

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are present, so the description bears full responsibility for behavioral disclosure. It only states the basic operation without mentioning whether the action is idempotent, read-only, requires authentication, or if there are any side effects or limits like pagination.

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 two sentences and a one-line parameter breakdown. The main action is front-loaded, and every sentence adds value without superfluous text.

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

Completeness4/5

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

The tool has a simple purpose and one optional parameter. The description, though brief, covers the essential functionality for a listing operation. With an output schema assumed present, return values need not be detailed. However, it could mention if pagination or limits apply, but this is not critical.

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 has 0% description coverage, but the description adds a meaningful explanation for the `filter` parameter: 'Optional server-side filter expression (e.g. 'active=true')'. This provides an example and clarifies its optional nature, adding value beyond the schema's type definition.

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 clearly states 'List all products in the NetLicensing account', specifying the verb (list), resource (products), and scope (all). It is easily distinguishable from sibling tools like netlicensing_create_product or netlicensing_get_product by resource name.

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 (e.g., netlicensing_get_product for a single product, or netlicensing_create_product to create one). There are no when-to-use or when-not-to-use indications.

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

netlicensing_list_tokensA

List all active tokens in the account.

Args: filter: Optional server-side filter expression (e.g. 'tokenType=SHOP')

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It states 'list all active tokens' and mentions a filter, but does not disclose pagination, rate limits, or authentication requirements. Adequate for a simple read operation.

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 brief with a front-loaded purpose statement and a clear parameter block. Every sentence adds value without redundancy.

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 the presence of an output schema, return values need not be explained. The description covers the essential scope ('active tokens') and filter usage. It could mention pagination, but the tool's simplicity makes it sufficiently complete.

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 input schema has 0% description coverage, but the description explains the filter parameter as 'Optional server-side filter expression (e.g. 'tokenType=SHOP')', adding meaningful example and purpose beyond the schema.

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

Purpose5/5

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

The description clearly states 'List all active tokens in the account.' It uses a specific verb (list) and resource (tokens), and distinguishes from sibling tools via scope (active) and operation type.

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 a filter parameter example but does not explicitly specify when to use this tool versus alternatives like get_token or create_token tools. No exclusions or context for tool selection is given.

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

netlicensing_list_transactionsA

List all transactions in the account.

Args: filter: Optional server-side filter expression (e.g. 'status=CLOSED')

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It implies a read-only operation (list) but lacks details on authentication, rate limits, pagination, or potential side effects. This is insufficient 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 extremely concise, with a front-loaded purpose sentence followed by a clean parameter explanation. Every word serves a purpose; no wasted text.

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

Completeness3/5

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

Given the presence of an output schema, return value details are not needed. However, for a list tool, missing information about pagination, ordering, or result limits reduces completeness. It's adequate but not thorough.

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 0%, but the description adds meaning to the single parameter 'filter' by explaining it as an optional server-side filter expression and providing an example. This goes beyond the schema's raw type and default.

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 clearly states 'List all transactions in the account.' The verb 'List' and resource 'transactions' are specific, and the scope 'in the account' distinguishes it from tools like 'get_transaction' or 'create_transaction'.

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 on when to use this tool versus alternatives. There is no mention of prerequisites, use cases, or when not to use it. The optional filter parameter is noted but not in the context of choice.

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

netlicensing_obtain_bundleB

Obtain a bundle for a customer β€” creates licenses from all license templates included in the bundle for the specified licensee.

Args: bundle_number: Bundle to obtain licensee_number: Customer (licensee) who receives the licenses

ParametersJSON Schema
NameRequiredDescriptionDefault
bundle_numberYes
licensee_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are present, so the description must fully disclose behavioral traits. It mentions 'creates licenses' indicating a write operation, but lacks details on side effects (e.g., overwriting existing licenses), required permissions, error handling, or idempotency. Minimal disclosure overall.

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 concise with a clear sentence followed by an 'Args:' section listing parameters. No redundant information, though the parameter descriptions are minimal.

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 low complexity (2 required params, no enums) and existence of an output schema, the description covers basic purpose but omits important context like error scenarios, prerequisites (e.g., existence of bundle and licensee), and effects on existing licenses. Incomplete for practical use.

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

Parameters3/5

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

Schema coverage is 0%, so the description must add meaning. It provides brief descriptions: 'Bundle to obtain' and 'Customer (licensee) who receives the licenses.' This adds some context but is not rich enough to fully explain the parameters beyond their names.

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 clearly states 'Obtain a bundle for a customer β€” creates licenses from all license templates included in the bundle for the specified licensee.' This provides a specific verb (obtain), resource (bundle), and action (creates licenses), distinguishing it from sibling tools like netlicensing_create_license or netlicensing_get_bundle.

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

Usage Guidelines3/5

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

The description implies usage for bulk license creation via a bundle but does not explicitly state when to use this tool versus alternatives like netlicensing_create_license. No guidance on when not to use it is provided.

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

netlicensing_transfer_licensesB

Transfer all licenses from one licensee to another.

Args: from_licensee_number: Source licensee to_licensee_number: Destination licensee

ParametersJSON Schema
NameRequiredDescriptionDefault
from_licensee_numberYes
to_licensee_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, and the description only states 'transfer', which implies a mutation. It does not disclose whether the operation is reversible, permissions required, or the effect on the source licensee (e.g., becomes empty). For a write operation without annotations, more behavioral context is needed.

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 very concise: one sentence plus a two-line argument list. Every word earns its place, no fluff. The structure is clear and easy to parse.

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?

Despite having only two parameters and an output schema (unknown content), the description omits important context: the effect on the source licensee, whether all licenses are moved atomically, and error handling. This incompleteness could lead to misuse.

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 JSON schema has no descriptions, the tool description itself provides brief parameter explanations: 'Source licensee' and 'Destination licensee'. This adds meaning beyond the bare parameter names. However, it lacks format examples or constraints, which would increase clarity.

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 transfers all licenses from one licensee to another. It specifies the action and resources, but does not distinguish from sibling tools explicitly, though siblings are mostly CRUD operations. A more detailed explanation of the transfer effect would be beneficial.

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

Usage Guidelines3/5

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

The description implies use when needing to reassign licenses between licensees, but lacks explicit guidance on when to use versus alternatives (e.g., creating new licenses). No prerequisites or conditions for use are mentioned.

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

netlicensing_update_bundleA

Update an existing bundle's fields.

Args: bundle_number: Bundle to update name: New name (leave empty to keep current) active: Set active state (omit to keep current) license_template_numbers: New list of license template numbers (omit to keep current) price: New price (omit to keep current) currency: New currency code (leave empty to keep current) description: New description (leave empty to keep current)

ParametersJSON Schema
NameRequiredDescriptionDefault
bundle_numberYes
nameNo
activeNo
license_template_numbersNo
priceNo
currencyNo
descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.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 must fully disclose behavior. It lacks details on success/error responses, idempotency, required permissions, or side effects. The update operation's atomicity is not mentioned.

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 concise: one introductory line followed by a clear list of arguments with usage notes. No extraneous information.

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

Completeness3/5

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

Input parameters are thoroughly described, but the description omits return value (output schema exists but not explained) and error conditions. For a 7-parameter mutation tool, this is adequate but not complete.

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?

Schema description coverage is 0%, so the description compensates fully by explaining each parameter's purpose and behavior (e.g., 'leave empty to keep current', 'omit to keep current'). This adds critical meaning beyond the raw schema.

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

Purpose5/5

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

The description clearly states 'Update an existing bundle's fields', specifying the action (update) and resource (bundle). It distinguishes from sibling tools like netlicensing_create_bundle and netlicensing_delete_bundle.

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 explains parameter semantics (e.g., 'leave empty to keep current') but does not provide explicit guidance on when to use this tool versus other update tools among siblings. Usage is implied by the tool name and description.

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

netlicensing_update_licenseA

Update a license's properties.

Args: license_number: License to update active: True to activate, False to deactivate (omit to keep current) name: New display name (leave empty to keep current) start_date: ISO 8601 datetime β€” TIMEVOLUME type (leave empty to keep current) price: License price (omit to keep current) currency: ISO 4217 currency code (leave empty to keep current) time_volume: Duration value β€” TIMEVOLUME type (leave empty to keep current) time_volume_period: DAY | WEEK | MONTH | YEAR (leave empty to keep current) quantity: Usage quota β€” PayPerUse model (leave empty to keep current) used_quantity: Used count β€” PayPerUse model (leave empty to keep current) parent_feature: Parent feature β€” Rental model (leave empty to keep current) hidden: Visibility in Shop (omit to keep current)

ParametersJSON Schema
NameRequiredDescriptionDefault
license_numberYes
activeNo
nameNo
start_dateNo
priceNo
currencyNo
time_volumeNo
time_volume_periodNo
quantityNo
used_quantityNo
parent_featureNo
hiddenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as whether the update is atomic, reversible, or requires specific permissions. It does explain parameter effects (e.g., 'active: True to activate'), but overall transparency is limited.

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 description uses a structured docstring format with clear sections, but it is verbose due to repeated phrases like 'leave empty to keep current' for many parameters. It could be more concise without losing clarity.

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

Completeness3/5

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

Given the complexity (12 parameters, no schema coverage, no annotations), the description covers parameter semantics well but lacks information about return values (output schema exists), error handling, and required fields beyond the first. It is adequate but not fully complete.

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?

With 0% schema description coverage, the description adds significant meaning by explaining each parameter's purpose and effect, such as 'start_date: ISO 8601 datetime β€” TIMEVOLUME type' and 'active: True to activate, False to deactivate.' However, some descriptions like 'time_volume' remain vague.

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 starts with 'Update a license's properties,' which is a clear verb+resource statement. It distinguishes itself from sibling tools like 'create_license' and 'delete_license' by explicitly indicating an update operation.

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 does not explicitly state when to use this tool versus alternatives like 'create_license' or 'delete_license.' It implies usage for updating an existing license but lacks explicit guidance or exclusions.

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

netlicensing_update_licenseeB

Update a licensee's properties.

Args: licensee_number: Licensee to update name: New name (empty to keep current) active: New active state (omit to keep current) marked_for_transfer: Mark for license transfer (omit to keep current) licensee_secret: Secret for licensee identification (leave empty to keep current)

ParametersJSON Schema
NameRequiredDescriptionDefault
licensee_numberYes
nameNo
activeNo
marked_for_transferNo
licensee_secretNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided. The description does not disclose consequences like whether updates are irreversible, require specific permissions, or affect related entities. It does hint that empty strings keep current values, but lacks comprehensive behavioral context expected 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.

Conciseness3/5

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

The description is concise with a bullet-like list of parameters. It front-loads the purpose sentence. However, the format could be more readable, and the parameter explanations are terse. It is appropriately sized but not exemplary.

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

Completeness3/5

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

The description covers the behavior of keeping current values for optional parameters. However, it does not mention the output schema (which exists), error conditions, or required permissions. Given no annotations and moderate complexity, it is minimally adequate but could be more complete.

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 0%, so the description carries the burden. It adds meaning beyond the schema: explains that empty string keeps current name, omitting active keeps current state, etc. This is valuable context not present in the schema's default values and titles.

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 'Update a licensee's properties', indicating the verb (update) and resource (licensee properties). It distinguishes from siblings like netlicensing_update_license as it targets licensee, not license. However, it does not emphasize unique aspects beyond parameter list.

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 on when to use this tool versus alternatives. There are many update tools among siblings, but the description provides no context, prerequisites, or exclusions. The agent must infer that this is for updating licensee properties.

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

netlicensing_update_license_templateB

Update a license template's properties.

Args: template_number: Template to update name: New name (leave empty to keep current) active: Set active state (omit to keep current) price: New price (omit to keep current) currency: New ISO 4217 currency code (leave empty to keep current) automatic: Auto-assign to new licensees (omit to keep current) hidden: Hide template in NetLicensing Shop (omit to keep current) hide_licenses: Hide derived licenses in the Shop (omit to keep current) time_volume: Number of time units β€” TIMEVOLUME type (omit to keep current) time_volume_period: DAY | WEEK | MONTH | YEAR β€” TIMEVOLUME type (leave empty to keep current) max_sessions: Concurrent sessions β€” FLOATING type (omit to keep current) quantity: Usage quota β€” QUANTITY / PayPerUse type (omit to keep current) grace_period: Grace period after expiry β€” Subscription model (omit to keep current)

ParametersJSON Schema
NameRequiredDescriptionDefault
template_numberYes
nameNo
activeNo
priceNo
currencyNo
automaticNo
hiddenNo
hide_licensesNo
time_volumeNo
time_volume_periodNo
max_sessionsNo
quantityNo
grace_periodNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.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 full burden. While it explains parameter effects, it lacks disclosure of overall side effects, idempotency, permissions, or error conditions, leaving critical behavioral traits unaddressed.

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 description is clear and front-loaded with a purpose sentence, but the parameter list is lengthy and could be more concise or structured (e.g., grouping related parameters).

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 13-parameter mutation with no annotations, the description lacks global context (e.g., that only provided fields are updated) and does not cover error scenarios or interaction with related tools, leaving gaps for an AI agent.

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?

Input schema has 0% description coverage, but the description compensates by clarifying each parameter's purpose and usage (e.g., 'omit to keep current' for optional fields), adding significant value beyond type information.

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?

Description clearly states 'Update a license template's properties.' It uses a specific verb (Update) and resource (license template), distinguishing it from sibling tools like create, delete, get, and list.

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

Usage Guidelines3/5

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

The description implies usage for altering existing license templates but does not explicitly state when to use this tool versus alternatives, nor does it mention prerequisites or conditions.

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

netlicensing_update_payment_methodB

Update a payment method's configuration.

Args: payment_method_number: Payment method to update active: Enable or disable the payment method paypal_subject: PayPal account e-mail address

ParametersJSON Schema
NameRequiredDescriptionDefault
payment_method_numberYes
activeNo
paypal_subjectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It states 'Update' but does not disclose side effects (e.g., overwrite vs. merge), authentication needs, or what happens to unspecified fields. No mention of return value despite an output schema being present.

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

Conciseness5/5

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

Two sentences plus an arg list. Purpose stated immediately, parameters listed clearly. No fluff or unnecessary detail.

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?

Despite low parameter count and no enums, the tool has 3 parameters, an output schema, and no annotations. Description omits return value, potential errors, and any behavioral constraints (e.g., what happens if active is null). Incomplete for an update operation.

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

Parameters3/5

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

Schema coverage is 0%, so description must compensate. It adds brief clarification: 'Enable or disable the payment method' for the boolean field, and 'PayPal account e-mail address' for the string. However, 'Payment method to update' is nearly redundant with the parameter name, and no additional semantics are provided for defaults or constraints.

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?

Clear verb+resource: 'Update a payment method's configuration.' Distinguishes from sibling update tools (e.g., netlicensing_update_license) by specifying the payment method resource.

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 on when to use this tool vs. alternatives (e.g., get, list). The description does not mention prerequisites or situations where other tools would be more appropriate.

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

netlicensing_update_productB

Update an existing product's fields.

Args: product_number: Product to update name: New name (leave empty to keep current) active: Set active state (omit to keep current) version: New version string (leave empty to keep current) description: New description (leave empty to keep current) licensing_info: Licensing information for the shop (leave empty to keep current) licensee_auto_create: Auto-create licensees on first validation vat_mode: GROSS or NET (leave empty to keep current) licensee_secret_mode: DISABLED, PREDEFINED, or CLIENT (leave empty to keep current)

ParametersJSON Schema
NameRequiredDescriptionDefault
product_numberYes
nameNo
activeNo
versionNo
descriptionNo
licensing_infoNo
licensee_auto_createNo
vat_modeNo
licensee_secret_modeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only says 'Update' (mutation) and gives per-field behavior, but lacks details on side effects, idempotency, or required permissions.

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 description is structured as an Args list but is relatively long. The opening sentence is clear, but the parameter explanations could be more concise. It is adequate but not efficient.

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

Completeness3/5

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

Given the complexity (9 parameters, output schema exists, no annotations), the description covers parameter behavior but lacks overall context like whether the update is partial or full, and does not discuss validation or error cases.

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 0%, so the description bears the burden. It adds meaning by explaining each parameter's effect (e.g., 'leave empty to keep current' and provides allowed values for vat_mode and licensee_secret_mode. However, some descriptions are vague (e.g., 'Set active state').

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 'Update an existing product's fields,' specifying the verb and resource. The name also includes 'update_product,' but the description does not explicitly differentiate from other update tools, so it gets a 4.

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 given on when to use this tool versus alternatives (e.g., create_product or other updates). There is no mention of prerequisites, context, or exclusions.

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

netlicensing_update_product_moduleA

Update a product module's properties.

Args: module_number: Module to update name: New name (leave empty to keep current) active: Set active state (omit to keep current) max_checkout_validity: Maximum checkout validity in days (Floating model, omit to keep current) yellow_threshold: Remaining time volume for yellow warning (Rental model, omit to keep current) red_threshold: Remaining time volume for red warning (Rental model, omit to keep current) node_secret_mode: PREDEFINED or CLIENT (NodeLocked model, leave empty to keep current)

ParametersJSON Schema
NameRequiredDescriptionDefault
module_numberYes
nameNo
activeNo
max_checkout_validityNo
yellow_thresholdNo
red_thresholdNo
node_secret_modeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description partially discloses behavior by noting what happens when parameters are omitted (e.g., 'leave empty to keep current'), but it does not explain side effects, auth requirements, 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.

Conciseness4/5

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

The description is well-structured as a docstring with an initial purpose sentence followed by parameter explanations. It is concise without unnecessary fluff, though the parameter list is lengthy but necessary.

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

Completeness4/5

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

The description covers all 7 parameters with model-specific guidance. The output schema exists to handle return values, so its omission is acceptable. It provides sufficient context for agent 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?

Despite 0% schema description coverage, the description adds substantial meaning by explaining each parameter's purpose and model-specific context (e.g., 'Remaining time volume for yellow warning (Rental model)'). This goes beyond the schema's type-only information.

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 clearly states 'Update a product module's properties', specifying the verb (update) and resource (product module). It distinguishes from create_product_module by name and purpose.

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?

No explicit when-to-use or alternatives are given. The agent can infer from sibling tools that this is for modifying existing modules, but no direct guidance is provided.

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

netlicensing_update_transactionB

Update a transaction's status or properties.

Args: transaction_number: Transaction to update status: CANCELLED | CLOSED | PENDING (leave empty to keep current) active: Set active state (omit to keep current) name: Human-readable name (leave empty to keep current) date_closed: ISO 8601 close timestamp (leave empty to keep current) payment_method: Payment method number (leave empty to keep current)

ParametersJSON Schema
NameRequiredDescriptionDefault
transaction_numberYes
statusNo
activeNo
nameNo
date_closedNo
payment_methodNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations exist, so the description must bear the full burden. It does not disclose behavioral aspects like destructiveness, reversibility, permission requirements, or side effects of updating a transaction.

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 concise and structured as a list under 'Args', making it easy to scan. It contains no redundant information and efficiently conveys usage notes.

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

Completeness3/5

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

An output schema exists, so return value details are not required. However, it misses important behavioral context (e.g., constraints on updating closed transactions) and does not fully cover edge cases, making it adequate but not comprehensive.

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?

Despite zero schema description coverage, the description adds meaningful hints for each parameter (e.g., 'leave empty to keep current'), compensating for the lack of schema documentation. However, it could specify valid values for payment_method and date_closed format.

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 clearly states 'Update a transaction's status or properties.' It uses a specific verb and resource, distinguishing it from sibling tools like create_transaction, get_transaction, and list_transactions.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, such as when to update vs. create or delete a transaction. No context on prerequisites or exclusions is provided.

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

netlicensing_validate_licenseeA

Validate a customer's licenses across all product modules.

Returns per-module validity, type, expiry dates, and usage counts.

Args: licensee_number: Customer to validate product_number: Optional β€” scope validation to a specific product licensee_name: Human-readable name for auto-created licensees (when licenseeAutoCreate is enabled) session_id: Floating model β€” unique session identifier action: Floating model β€” 'checkOut' or 'checkIn' product_module_number: NodeLocked model β€” target product module node_secret: NodeLocked model β€” unique device/node secret

ParametersJSON Schema
NameRequiredDescriptionDefault
licensee_numberYes
product_numberNo
licensee_nameNo
session_idNo
actionNo
product_module_numberNo
node_secretNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.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. It states the tool validates licenses but does not disclose whether it is read-only, idempotent, or has side effects. No behavioral traits like rate limits or permissions are mentioned.

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 concise: a one-sentence purpose, a return summary, and a parameter list with brief explanations. No fluff or redundancy, every sentence adds value.

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 the 7 parameters, output schema, and no nested objects, the description covers return values and parameter meanings well. However, it omits edge cases (e.g., invalid licensee) and error handling, and lacks prerequisites or usage contexts.

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?

Despite 0% schema description coverage, the description text adds meaning for all 7 parameters by explaining their purposes (e.g., 'licensee_number: Customer to validate', 'action: Floating model β€” checkOut or checkIn'). This provides context beyond the schema's titles and types.

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 clearly states the action ('Validate a customer's licenses') and the resource ('across all product modules'), and specifies the return values (per-module validity, type, expiry dates, usage counts). This differentiates it from sibling tools like get_licensee or list_licenses.

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

Usage Guidelines3/5

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

The description implies usage for validation but does not explicitly state when to use this tool versus alternatives, nor does it provide when-not-to-use guidance. It lists optional parameters for specific licensing models, but lacks explicit contextual direction.

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. Dates show when Glama detected each change.

  1. 48 tool updatesv0.1.0
    • First observednetlicensing_create_api_token
    • First observednetlicensing_create_bundle
    • First observednetlicensing_create_license
    • First observednetlicensing_create_license_template
    • First observednetlicensing_create_licensee
    • First observednetlicensing_create_product
    • First observednetlicensing_create_product_module
    • First observednetlicensing_create_shop_token
    • First observednetlicensing_create_transaction
    • First observednetlicensing_delete_bundle
    • First observednetlicensing_delete_license
    • First observednetlicensing_delete_license_template
    • First observednetlicensing_delete_licensee
    • First observednetlicensing_delete_product
    • First observednetlicensing_delete_product_module
    • First observednetlicensing_delete_token
    • First observednetlicensing_get_bundle
    • First observednetlicensing_get_license
    • First observednetlicensing_get_license_template
    • First observednetlicensing_get_licensee
    • First observednetlicensing_get_payment_method
    • First observednetlicensing_get_product
    • First observednetlicensing_get_product_module
    • First observednetlicensing_get_token
    • First observednetlicensing_get_transaction
    • First observednetlicensing_list_bundles
    • First observednetlicensing_list_countries
    • First observednetlicensing_list_license_templates
    • First observednetlicensing_list_license_types
    • First observednetlicensing_list_licensees
    • First observednetlicensing_list_licenses
    • First observednetlicensing_list_licensing_models
    • First observednetlicensing_list_payment_methods
    • First observednetlicensing_list_product_modules
    • First observednetlicensing_list_products
    • First observednetlicensing_list_tokens
    • First observednetlicensing_list_transactions
    • First observednetlicensing_obtain_bundle
    • First observednetlicensing_transfer_licenses
    • First observednetlicensing_update_bundle
    • First observednetlicensing_update_license
    • First observednetlicensing_update_license_template
    • First observednetlicensing_update_licensee
    • First observednetlicensing_update_payment_method
    • First observednetlicensing_update_product
    • First observednetlicensing_update_product_module
    • First observednetlicensing_update_transaction
    • First observednetlicensing_validate_licensee

TDQS

A3.5/5.0
Disambiguation5/5

Each tool has a clear, distinct purpose with unique verb-noun combinations (create, get, list, update, delete, obtain, transfer, validate). There is no overlap; for example, 'create_license' and 'create_license_template' target different resources.

Naming Consistency5/5

All tools follow the consistent pattern 'netlicensing_{action}_{resource}' using snake_case. Verbs are uniform and predictable across all entities, and there are no mixed conventions.

Tool Count3/5

At 48 tools, the count is high for an MCP server, but the domain is a comprehensive licensing platform with many entities and CRUD operations. While justified by scope, it exceeds typical counts and may overwhelm agents.

Completeness5/5

The tool set covers all major entities (product, module, license template, license, licensee, bundle, transaction, token, payment method) with full CRUD plus specialized operations like validation, transfer, and bundle obtain. Reference data (countries, license types) is also included.

Maintenance

ActivityMaintained
ResponsivenessResponsive

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

  • A
    license
    C
    quality
    D
    maintenance
    A Model Context Protocol server for the Hetzner Cloud API that enables natural language management of cloud infrastructure. Users can list, create, and modify servers, networks, volumes, and load balancers through MCP-compatible clients.
    67
    17
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for integrating with n8n, enabling workflow automation and management through natural language.
    225
    1
    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/Labs64/NetLicensing-MCP'

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