Skip to main content
Glama
ogbm77

Cisco CX Cloud MCP Server

by ogbm77

Cisco CX Cloud MCP Server

A Model Context Protocol (MCP) server that provides natural language access to Cisco CX Cloud APIs. Query your Cisco inventory, contracts, alerts, and more using conversational language through Claude or other MCP-compatible clients.

Features

This MCP server provides 10 tools to access Cisco CX Cloud data:

Customer Management

  • get_customer_accounts - Get all accessible CX Cloud customer accounts and IDs

Inventory Management

  • get_hardware_inventory - Get hardware inventory for a customer

  • get_network_elements - Get network elements and devices

Contract Management

  • get_contracts - Get all contracts for a customer

  • get_covered_assets - Get assets covered by contracts

  • get_uncovered_assets - Identify coverage gaps

Product Alerts

  • get_field_notices - Get field notices and bulletins

  • get_hardware_eol - Get hardware end-of-life information

  • get_software_eol - Get software end-of-life information

  • get_security_advisories - Get security advisories and alerts

Related MCP server: Cisco NSO MCP Server

Prerequisites

  1. Cisco.com Account - You need a Cisco.com account

  2. CX Cloud Access - You must have a role in at least one CX Cloud account at https://cx.cisco.com

  3. API Credentials - Register an application to get OAuth credentials

Setup Instructions

Step 1: Register Your Application

  1. Go to Cisco API Console

  2. Sign in with your Cisco.com credentials

  3. Click "My Apps & Keys" → "Register a New App"

  4. Choose "Service" as application type

  5. Select "Client Credentials" as grant type

  6. Add these CX Cloud API resources:

    • Alerts v2

    • Contracts v2

    • Customer v2

    • Inventory v2

  7. Accept terms and complete registration

  8. Save your Client ID and Client Secret

Step 2: Associate Credentials with CX Cloud

  1. Log into CX Cloud

  2. Navigate to Profile & AccountManage ProfileAPI tab

  3. Enter your Client ID from Step 1

Note: There may be up to 10 minutes delay before you can use the API after first-time setup.

Step 3: Install and Configure

# Install dependencies
npm install

# Create .env file from example
cp .env.example .env

# Edit .env and add your credentials
# CISCO_CLIENT_ID=your_client_id_here
# CISCO_CLIENT_SECRET=your_client_secret_here

Step 4: Build the Server

npm run build

Running the Server

Development mode (with auto-reload)

npm run dev

Production mode

npm start

Configuration for Claude Desktop

To use this MCP server with Claude Desktop, add the following to your configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "cisco-cx-cloud": {
      "command": "node",
      "args": [
        "/absolute/path/to/cisco-cx-cloud-mcp/dist/index.js"
      ],
      "env": {
        "CISCO_CLIENT_ID": "your_client_id_here",
        "CISCO_CLIENT_SECRET": "your_client_secret_here"
      }
    }
  }
}

Important: Replace /absolute/path/to/cisco-cx-cloud-mcp/ with your actual installation path and add your real credentials.

After configuration, restart Claude Desktop.

Usage Examples

Once configured, you can ask Claude questions like:

Getting Started

  • "What customer accounts do I have access to?"

  • "Show me my customer IDs"

Inventory Queries

  • "What hardware inventory do we have for customer XYZ?"

  • "List all network elements for my customer"

  • "Show me all Cisco devices in our inventory"

Contract Management

  • "What contracts do we have?"

  • "Are there any assets without contract coverage?"

  • "Which devices are covered by support contracts?"

Alerts and Compliance

  • "Are there any security advisories I should know about?"

  • "What hardware is reaching end-of-life?"

  • "Show me all field notices for customer ABC"

  • "Which software versions are being deprecated?"

Complex Queries

  • "Find all uncovered assets and check if any have security advisories"

  • "Show me hardware that's both EOL and not covered by contracts"

  • "Compare our inventory against active contracts"

How It Works

  1. OAuth Authentication: The server automatically handles OAuth 2.0 authentication using client credentials

  2. Token Management: Access tokens are cached and automatically refreshed when expired

  3. API Calls: Natural language requests are translated to appropriate API calls

  4. Data Formatting: Responses are formatted in easy-to-read JSON

  5. Logging: Comprehensive logging tracks all operations for debugging and monitoring

Logging

The server includes detailed logging capabilities:

Log Levels

Configure logging via the LOG_LEVEL environment variable:

  • ERROR - Only errors (authentication failures, API errors)

  • WARN - Warnings and errors

  • INFO - General information, tool invocations, API requests (default)

  • DEBUG - Detailed debugging including request/response details, token management

Configuration

Edit your .env file:

# Set log level (ERROR, WARN, INFO, DEBUG)
LOG_LEVEL=DEBUG

# Enable file logging
LOG_TO_FILE=true

# Set log directory (default: ./logs)
LOG_DIR=./logs

Log Output

Console Logs (stderr):

  • When running via Claude Desktop: Check ~/Library/Logs/Claude/mcp*.log (macOS)

  • When running manually: Logs appear in terminal

File Logs (optional):

  • Enable with LOG_TO_FILE=true

  • Files are created in the LOG_DIR directory

  • Named by date: mcp-server-2024-12-01.log

What Gets Logged

INFO level:

  • Server startup/shutdown

  • Tool invocations

  • Authentication events

  • Tool completion with duration

DEBUG level (includes INFO plus):

  • Environment configuration

  • OAuth token details (sanitized)

  • Full API request/response cycles

  • Request timing and performance metrics

Example DEBUG output:

[2024-12-01T00:00:00.000Z] [INFO] Cisco CX Cloud MCP Server starting...
[2024-12-01T00:00:00.001Z] [DEBUG] Environment loaded
{
  "logLevel": "DEBUG",
  "hasClientId": true,
  "hasClientSecret": true
}
[2024-12-01T00:00:01.000Z] [INFO] Tool invoked: get_customer_accounts
[2024-12-01T00:00:01.100Z] [DEBUG] API Request: GET https://apix.cisco.com/...
[2024-12-01T00:00:01.500Z] [DEBUG] API call completed in 400ms
[2024-12-01T00:00:01.501Z] [INFO] Tool SUCCESS: get_customer_accounts
{
  "duration": "500ms"
}

API Rate Limits

The Cisco CX Cloud API has rate limits. The server handles:

  • Automatic token refresh (tokens expire after 1 hour)

  • Error handling for API failures

  • Proper authentication header management

  • Request/response logging for debugging

Project Structure

cisco-cx-cloud-mcp/
├── src/
│   ├── index.ts          # Main MCP server
│   ├── auth.ts           # OAuth authentication client
│   └── logger.ts         # Logging utility
├── dist/                 # Compiled JavaScript (generated)
├── logs/                 # Log files (if LOG_TO_FILE=true)
├── .env.example          # Environment template
├── .env                  # Your credentials (git-ignored)
├── package.json          # Project configuration
├── tsconfig.json         # TypeScript configuration
└── README.md            # This file

Troubleshooting

Authentication Errors

  • Verify your Client ID and Secret are correct

  • Ensure you've associated the Client ID with your CX Cloud profile

  • Wait 10 minutes after first-time setup

  • Check logs: Set LOG_LEVEL=DEBUG to see detailed OAuth flow

No Data Returned

  • Confirm you have access to CX Cloud accounts at https://cx.cisco.com

  • Verify your user has proper roles assigned

  • Check that you're using the correct customer ID

  • Check logs: Look for API response codes and error messages

API Errors

  • Check that all required API resources are enabled in API Console

  • Ensure your credentials haven't expired

  • Verify network connectivity

  • Check logs: Review full error stack traces with LOG_LEVEL=DEBUG

Debugging Tips

Enable debug logging:

# In .env file
LOG_LEVEL=DEBUG
LOG_TO_FILE=true

View logs in real-time:

# macOS - Claude Desktop logs
tail -f ~/Library/Logs/Claude/mcp*.log

# Or if LOG_TO_FILE=true
tail -f ./logs/mcp-server-*.log

Common log messages:

  • "Access token obtained successfully" - Authentication working

  • "Tool invoked: get_customer_accounts" - Tool called by Claude

  • "API call completed in Xms" - Request performance

  • "Failed to obtain access token" - Check credentials

Resources

License

ISC

Available Tools

10 tools
get_contractsC

Get all contracts for a specific customer. Returns contract details including coverage periods.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerIdYesThe customer ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool returns contract details including coverage periods, which is useful, but lacks critical information such as whether this is a read-only operation, potential rate limits, authentication requirements, or error handling. This leaves significant gaps for a tool that likely accesses sensitive data.

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 and front-loaded, consisting of just two sentences that directly state the tool's purpose and return value. Every word earns its place with zero waste or redundancy.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete. It covers the basic purpose and return scope but misses behavioral details like safety, permissions, or response format. For a tool that likely handles sensitive contract data, this leaves the agent under-informed about critical operational aspects.

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

Parameters3/5

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

The schema description coverage is 100%, with the single parameter 'customerId' fully documented in the schema. The description adds no additional parameter semantics beyond implying the customer context, so it meets the baseline for adequate but not exceptional value.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('contracts'), and specifies the scope ('for a specific customer'). It doesn't explicitly differentiate from sibling tools like 'get_customer_accounts' or 'get_covered_assets', which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'get_customer_accounts' or 'get_covered_assets'. It mentions the customer context but offers no explicit when/when-not instructions or prerequisites, leaving usage decisions ambiguous.

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

get_covered_assetsB

Get all assets covered by contracts for a specific customer.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerIdYesThe customer ID

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action 'Get all assets' but does not describe return format, pagination, error handling, or whether it's a read-only operation. For a tool with no annotations, this leaves significant gaps in understanding its behavior.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded with the core action and resource, making it easy to parse quickly.

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 (1 parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks details on behavior, usage context, or output, which are needed for full understanding. Without annotations or output schema, more descriptive 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 100% description coverage, with 'customerId' documented as 'The customer ID.' The description adds no additional meaning beyond this, such as format examples or validation rules. With high schema coverage, the baseline score of 3 is appropriate as the schema handles parameter documentation adequately.

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

Purpose4/5

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

The description clearly states the verb 'Get' and the resource 'assets covered by contracts for a specific customer,' making the purpose understandable. It distinguishes from siblings like 'get_uncovered_assets' by specifying 'covered' assets, but does not explicitly differentiate from others like 'get_contracts' or 'get_hardware_inventory' in terms of scope or data type.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, such as needing a valid customer ID, or specify use cases like contract management versus asset tracking. With siblings like 'get_uncovered_assets' and 'get_contracts,' explicit usage context is missing.

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

get_customer_accountsA

Get all accessible CX Cloud customer accounts and their IDs. Use this first to get customer IDs for other operations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.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 the full burden. It states the tool retrieves 'all accessible' accounts, which implies a read-only operation without destructive effects, but lacks details on permissions, rate limits, pagination, or response format. It adds some context about accessibility but misses key behavioral traits.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core purpose and followed by usage guidance. Every word earns its place with no redundancy or fluff, making it highly efficient and well-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?

Given no annotations and no output schema, the description is incomplete for a tool that likely returns a list of accounts. It explains the purpose and usage but omits details on response format, error handling, or data scope (e.g., what 'accessible' means). For a read operation with zero structured metadata, more context 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?

The tool has 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description doesn't add param info beyond the schema, but with no params, a baseline of 4 is appropriate as there's nothing to compensate for.

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 ('Get') and resource ('all accessible CX Cloud customer accounts and their IDs'), making the purpose specific and unambiguous. It distinguishes this tool from siblings by focusing on customer accounts rather than contracts, assets, or other entities.

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

Usage Guidelines5/5

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

The description explicitly provides usage guidance: 'Use this first to get customer IDs for other operations.' This tells the agent when to use this tool (as an initial step) and implies its role in a workflow, though it doesn't name specific alternatives.

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

get_field_noticesB

Get field notices for a specific customer. Returns important product notifications and bulletins.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerIdYesThe customer ID

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool returns 'important product notifications and bulletins,' which implies a read-only operation, but does not specify permissions, rate limits, error handling, or response format. For a tool with zero annotation coverage, this is inadequate, scoring 2 for lacking essential behavioral details.

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 appropriately sized and front-loaded: two concise sentences that directly state the tool's purpose and return value without waste. Every sentence earns its place by conveying essential information efficiently, warranting a score of 5.

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 (1 parameter, 100% schema coverage, no output schema), the description is minimally complete. It covers the basic purpose and return type but lacks behavioral details, usage guidelines, and output specifics. With no annotations and simple schema, it meets the bare minimum, scoring 3 as adequate but with clear gaps.

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

Parameters3/5

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

The description does not add meaning beyond the input schema, which has 100% coverage for the single parameter 'customerId.' The schema already describes it as 'The customer ID,' so the baseline is 3. No additional parameter context is provided in the description, keeping it at the minimum viable score.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Get field notices for a specific customer' specifies the verb (get) and resource (field notices), with scope (for a specific customer). It distinguishes from siblings like get_security_advisories or get_hardware_eol by focusing on product notifications and bulletins, though not explicitly contrasting them. A 5 would require explicit sibling differentiation.

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 mentions 'for a specific customer' but does not clarify prerequisites, exclusions, or when to choose this over other tools like get_security_advisories. Without any usage context or alternatives named, it scores 2 for minimal guidance.

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

get_hardware_eolC

Get hardware end-of-life information for a specific customer. Shows which hardware is reaching end-of-life.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerIdYesThe customer ID

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 carries the full burden. It implies a read-only operation ('Get', 'Shows') but doesn't disclose behavioral traits such as authentication requirements, rate limits, error handling, or what 'end-of-life information' entails (e.g., dates, statuses). The description is too vague to fully inform the agent.

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 two sentences that are front-loaded and to the point. However, the second sentence ('Shows which hardware is reaching end-of-life') is somewhat redundant with the first, slightly reducing efficiency.

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 lack of annotations and output schema, the description is incomplete. It doesn't explain what the return values include (e.g., hardware items, EOL dates, statuses) or provide enough context for a tool that likely involves complex data retrieval. More detail is needed to compensate for missing structured information.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents the single parameter 'customerId'. The description adds no additional meaning beyond implying it's used to fetch data for that customer, which is redundant with the schema. Baseline 3 is appropriate as the schema handles parameter documentation.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('hardware end-of-life information'), and it specifies the scope ('for a specific customer'). However, it doesn't explicitly distinguish this tool from its sibling 'get_software_eol', which is similar but for software instead of hardware.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'get_hardware_inventory' or 'get_software_eol'. It mentions the target ('customer') but lacks context on prerequisites, exclusions, or comparison with sibling tools.

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

get_hardware_inventoryB

Get hardware inventory for a specific customer. Returns details about all hardware assets.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerIdYesThe customer ID (get from get_customer_accounts first)

TDQS

B3.3/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 returns 'details about all hardware assets', which gives some behavioral insight, but lacks critical information such as whether this is a read-only operation, any rate limits, authentication needs, pagination, or error handling. The description is minimal and doesn't compensate for the absence of annotations.

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 that directly state the tool's function and output. It is front-loaded with the core purpose and wastes no words, making it efficient and easy to parse for an AI agent.

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 no annotations, no output schema, and a simple input schema, the description is minimally adequate. It covers the basic purpose and output, but lacks details on behavior, error cases, or return format. For a tool with no structured metadata, it should provide more context to be fully helpful, but it meets the bare minimum for a simple read 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?

The input schema has 100% description coverage, with the parameter 'customerId' well-documented in the schema itself. The description doesn't add any additional meaning beyond what the schema provides, such as format examples or constraints. With high schema coverage, the baseline score of 3 is appropriate as the schema handles the parameter documentation adequately.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('hardware inventory'), and specifies the scope ('for a specific customer'). It distinguishes from siblings like 'get_covered_assets' or 'get_uncovered_assets' by focusing on hardware assets. However, it doesn't explicitly differentiate from all siblings, such as 'get_network_elements' which might overlap.

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 when needing hardware inventory for a customer, and the input schema hints at prerequisites by noting 'get from get_customer_accounts first'. However, it lacks explicit guidance on when to use this tool versus alternatives like 'get_covered_assets' or 'get_uncovered_assets', and doesn't specify exclusions or detailed context.

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

get_network_elementsC

Get network elements inventory for a specific customer. Returns network devices and their details.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerIdYesThe customer ID

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 carries the full burden of behavioral disclosure. It states the tool returns 'network devices and their details,' which implies a read-only operation, but does not cover aspects like authentication requirements, rate limits, error handling, or pagination. For a tool with no annotations, this leaves significant gaps in behavioral understanding.

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 front-loaded, consisting of two sentences that directly state the tool's purpose and return value. There is no wasted language, and it efficiently communicates the core functionality. However, it could be slightly improved with more structured guidance, preventing a perfect score.

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 (simple parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose and return value but lacks details on behavioral traits, usage context, and output structure. This makes it complete enough for a basic read operation but with clear gaps that hinder full 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?

The input schema has 100% description coverage, with the parameter 'customerId' documented as 'The customer ID.' The description adds no additional semantic information beyond what the schema provides, such as format examples or constraints. According to the rules, when schema coverage is high (>80%), the baseline score is 3, which applies here.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Get network elements inventory for a specific customer.' It specifies the verb ('Get'), resource ('network elements inventory'), and scope ('for a specific customer'), which is clear and specific. However, it does not explicitly distinguish this tool from its siblings (e.g., get_hardware_inventory), which prevents a score of 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?

The description provides no guidance on when to use this tool versus alternatives. It mentions 'for a specific customer,' but does not clarify prerequisites, exclusions, or when to choose this over sibling tools like get_hardware_inventory or get_covered_assets. This lack of explicit usage context results in a minimal score.

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

get_security_advisoriesC

Get security advisories for a specific customer. Returns security alerts and recommendations.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerIdYesThe customer ID

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 carries the full burden of behavioral disclosure. It mentions the return content ('security alerts and recommendations') but doesn't describe format, pagination, rate limits, authentication requirements, or error conditions. For a data retrieval tool with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves.

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 appropriately concise with two sentences that directly state the tool's function and return value. There's no unnecessary information or repetition. However, it could be slightly more front-loaded by combining the two ideas more tightly.

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 no annotations, no output schema, and a simple single-parameter input schema, the description provides basic completeness by stating what data is returned. However, it lacks details about response format, error handling, or behavioral constraints that would be helpful for an agent to use this tool effectively in context with its siblings.

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

Parameters3/5

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

Schema description coverage is 100%, with the single parameter 'customerId' documented as 'The customer ID'. The description adds no additional parameter information beyond what the schema provides. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('security advisories'), and specifies the scope ('for a specific customer'). It distinguishes from siblings by focusing on security advisories rather than contracts, assets, or other data types. However, it doesn't explicitly differentiate from hypothetical similar tools like 'get_all_security_advisories' or 'search_security_advisories'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context for selecting this over other tools, or any exclusions. Given the sibling tools include various data retrieval functions, the agent must infer usage based on the resource name alone without explicit direction.

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

get_software_eolC

Get software end-of-life information for a specific customer. Shows which software versions are reaching end-of-life.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerIdYesThe customer ID

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 carries the full burden of behavioral disclosure. It states this is a read operation ('Get'), but doesn't describe what the output looks like (e.g., list format, data fields), whether it requires authentication, any rate limits, or error conditions. For a tool with no annotation coverage, this leaves significant gaps in understanding its behavior.

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

Conciseness5/5

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

The description is appropriately sized and front-loaded with the core purpose in the first sentence. Both sentences earn their place by clarifying the action and what information is shown. There's no wasted verbiage, making it efficient for an agent 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?

Given the lack of annotations and output schema, the description is incomplete. It adequately states the purpose but fails to provide necessary context such as output format, error handling, or usage guidelines relative to siblings. For a tool with no structured behavioral data, this leaves the agent under-informed about how to effectively use it.

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

Parameters3/5

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

The description doesn't add any meaning beyond what the input schema provides. The schema has 100% description coverage, with the single parameter 'customerId' documented as 'The customer ID'. The description implies the tool operates on a specific customer but doesn't elaborate on parameter usage, format, or constraints. With high schema coverage, the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Get software end-of-life information for a specific customer. Shows which software versions are reaching end-of-life.' This specifies the verb ('Get'), resource ('software end-of-life information'), and scope ('for a specific customer'). However, it doesn't explicitly distinguish this tool from its sibling 'get_hardware_eol' beyond the 'software' vs 'hardware' distinction in their names, which is why it doesn't reach a score of 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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, when not to use it, or how it differs from sibling tools like 'get_hardware_eol' or 'get_security_advisories'. The agent must infer usage from the tool name and description alone, which is insufficient for optimal selection.

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

get_uncovered_assetsB

Get all assets NOT covered by contracts for a specific customer. Useful for identifying coverage gaps.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerIdYesThe customer ID

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the tool's utility ('identifying coverage gaps') but does not describe key behavioral traits such as whether it's a read-only operation, what the return format looks like, potential rate limits, or error handling. For a tool with no annotation coverage, this leaves significant gaps in understanding its behavior.

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

Conciseness5/5

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

The description is concise and well-structured, consisting of two sentences that efficiently convey the tool's purpose and utility. It is front-loaded with the core functionality and avoids unnecessary details, making it easy to understand quickly without 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?

Given the tool's complexity is low (single parameter, no output schema, no annotations), the description is adequate but incomplete. It covers the basic purpose and usage hint but lacks details on behavioral aspects like return values or error conditions. For a tool with no annotations or output schema, more context would be beneficial to fully understand its 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?

The input schema has 100% description coverage, with the parameter 'customerId' documented as 'The customer ID.' The description does not add any additional meaning or context beyond what the schema provides, such as format examples or constraints. Given the high schema coverage, the baseline score of 3 is appropriate, as the description does not compensate but also does not detract.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Get all assets NOT covered by contracts for a specific customer.' It specifies the verb ('Get'), resource ('assets'), and scope ('NOT covered by contracts'), which is specific and actionable. However, it does not explicitly differentiate from sibling tools like 'get_covered_assets' or 'get_contracts', though the distinction is implied by the 'NOT covered' phrasing.

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 implied usage context with 'Useful for identifying coverage gaps,' suggesting when this tool might be applied. However, it does not offer explicit guidance on when to use this tool versus alternatives like 'get_covered_assets' or 'get_contracts', nor does it specify any exclusions or prerequisites. The guidance is present but lacks detail on sibling tool differentiation.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv1.0.0
    • First observedget_contracts
    • First observedget_covered_assets
    • First observedget_customer_accounts
    • First observedget_field_notices
    • First observedget_hardware_eol
    • First observedget_hardware_inventory
    • First observedget_network_elements
    • First observedget_security_advisories
    • First observedget_software_eol
    • First observedget_uncovered_assets

TDQS

A3.6/5.0

Scored across 10 tools

Disambiguation5/5

Every tool has a clearly distinct purpose targeting specific data types like contracts, assets, accounts, field notices, hardware/software EOL, inventory, network elements, security advisories, and uncovered assets. The descriptions explicitly differentiate each tool's function, eliminating any ambiguity or overlap.

Naming Consistency5/5

All tool names follow a consistent 'get_' prefix with descriptive nouns (e.g., get_contracts, get_covered_assets), using snake_case uniformly throughout. This predictable pattern makes the tool set easy to navigate and understand.

Tool Count5/5

With 10 tools, the server is well-scoped for its purpose of retrieving various customer-specific data from Cisco CX Cloud. Each tool serves a distinct and necessary function, covering key areas like contracts, assets, inventory, and advisories without being overly sparse or bloated.

Completeness4/5

The tool set provides comprehensive read-only coverage for retrieving customer data, including contracts, assets, inventory, and advisories, with no obvious gaps for its apparent domain. However, it lacks write or update operations (e.g., create or modify contracts), which might limit full lifecycle management but is typical for a data retrieval-focused server.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with Cisco network devices through the RADKit SDK, allowing users to discover device inventory, fetch device attributes, and execute CLI commands via natural language.
    Apache 2.0
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI-powered network automation through natural language interactions with Cisco NSO, providing access to device management, configuration retrieval, sync operations, and service orchestration via the RESTCONF API.
    9
    4
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables network management through Cisco Catalyst Center, providing tools for monitoring device health, tracking client data, and managing network issues. It also supports compliance and lifecycle management by retrieving EoX summaries and detailed security advisory status.
    -