Skip to main content
Glama
hungryweb

CS-Cart MCP Server

by hungryweb

CS-Cart MCP Server

A Model Context Protocol (MCP) server that provides comprehensive tools for managing CS-Cart e-commerce stores, including product management, order handling, and sales analytics.

Features

Product Management

  • get_products: Retrieve product listings with filtering and pagination

  • get_product: Get detailed product information

  • create_product: Add new products to the store

  • update_product: Modify existing product details

  • delete_product: Remove products from the store

  • update_product_stock: Update product inventory levels

Order Management

  • get_orders: Retrieve order listings with various filters

  • get_order: Get detailed order information

  • update_order_status: Change order status and notify customers

Category Management

  • get_categories: Retrieve product categories and subcategories

User Management

  • get_users: Get customer and user information

Analytics

  • get_sales_statistics: Retrieve sales data and statistics

Related MCP server: FakeStore MCP

Installation

  1. Clone this repository:

git clone <repository-url>
cd cscart-mcp-server
  1. Run the setup script:

npm run setup
  1. Install dependencies:

npm install
  1. Update .env with your CS-Cart credentials and start:

npm start

Option 2: Manual Local Installation

  1. Clone this repository:

git clone <repository-url>
cd cscart-mcp-server
  1. Install dependencies:

npm install
  1. Configure environment variables:

cp .env.example .env

Edit .env with your CS-Cart API credentials:

CSCART_API_URL=https://your-store.com/api
CSCART_API_EMAIL=admin@yourstore.com
CSCART_API_KEY=your-api-key-here

Option 2: Docker Installation

  1. Clone this repository:

git clone <repository-url>
cd cscart-mcp-server
  1. Configure environment variables:

cp .env.example .env
  1. Build and run with Docker Compose:

docker-compose up -d

Or build and run with Docker:

# Build the image
docker build -t cscart-mcp-server .

# Run the container
docker run -d \
  --name cscart-mcp-server \
  --env-file .env \
  cscart-mcp-server

Option 3: Production Docker Build

For production deployment with optimized image:

# Build production image
docker build -f Dockerfile.production -t cscart-mcp-server:prod .

# Run production container
docker run -d \
  --name cscart-mcp-server-prod \
  --env-file .env \
  --restart unless-stopped \
  cscart-mcp-server:prod

CS-Cart API Setup

  1. Enable API Access:

    • Log into your CS-Cart admin panel

    • Go to Administration → API access

    • Enable API access for your store

  2. Generate API Key:

    • Create a new API key or use existing one

    • Note the API key and admin email for configuration

  3. API Permissions:

    • Ensure the API user has appropriate permissions for:

      • Products (read/write)

      • Orders (read/write)

      • Categories (read)

      • Users (read)

      • Statistics (read)

Usage

Running the Server

Quick Commands

# Setup project
npm run setup

# Development
npm run dev

# Production
npm start

# Docker commands
npm run docker:build      # Build standard image
npm run docker:build:prod # Build production image
npm run docker:run        # Start with docker-compose
npm run docker:stop       # Stop docker-compose
npm run docker:logs       # View logs

Docker Deployment

Start with Docker Compose:

docker-compose up -d

View logs:

docker-compose logs -f cscart-mcp-server

Stop the service:

docker-compose down

Production Deployment

For production use the optimized Dockerfile:

docker build -f Dockerfile.production -t cscart-mcp-server:latest .
docker run -d \
  --name cscart-mcp-prod \
  --env-file .env \
  --restart unless-stopped \
  --memory=512m \
  --cpus=0.5 \
  cscart-mcp-server:latest

Integration with MCP Clients

Add this server to your MCP client configuration. For example, with Claude Desktop:

{
  "mcpServers": {
    "cscart": {
      "command": "node",
      "args": ["/path/to/cscart-mcp-server/src/index.js"],
      "env": {
        "CSCART_API_URL": "https://your-store.com/api",
        "CSCART_API_EMAIL": "admin@yourstore.com",
        "CSCART_API_KEY": "your-api-key-here"
      }
    }
  }
}

Note: Use the full path to the node executable. Common paths:

  • macOS: /usr/local/bin/node or /opt/homebrew/bin/node

  • Linux: /usr/bin/node or /usr/local/bin/node

  • Windows: C:\\Program Files\\nodejs\\node.exe

Integration with AnythingLLM

To integrate this MCP server with AnythingLLM:

  1. Navigate to AnythingLLM Settings:

    • Open your AnythingLLM instance

    • Go to SettingsIntegrationsMCP Servers

  2. Add the CS-Cart MCP Server:

    {
      "command": "/usr/local/bin/node",
      "args": ["/full/path/to/cscart-mcp-server/src/index.js"],
      "env": {
        "CSCART_API_URL": "https://your-store.com/api",
        "CSCART_API_EMAIL": "admin@yourstore.com",
        "CSCART_API_KEY": "your-api-key-here"
      }
    }
  3. Important Path Notes:

    • Use the full absolute path to the node executable

    • Use the full absolute path to the src/index.js file

    • Ensure the paths are accessible from the AnythingLLM container/environment

  4. Example for macOS:

    {
      "command": "/usr/local/bin/node",
      "args": ["/Users/username/GitHub/cscart-mcp/src/index.js"],
      "env": {
        "CSCART_API_URL": "https://your-store.com/api",
        "CSCART_API_EMAIL": "admin@yourstore.com",
        "CSCART_API_KEY": "your-api-key-here"
      }
    }
  5. Docker Integration (if AnythingLLM is running in Docker):

    • Mount the CS-Cart MCP server directory as a volume

    • Use the container path in the configuration

    • Ensure proper file permissions

  6. Test the Integration:

    • Restart AnythingLLM after adding the MCP server

    • Check the logs for any connection errors

    • Try using CS-Cart tools in your conversations

Available Tools

Product Tools

get_products

Retrieve a list of products with optional filtering:

{
  "page": 1,
  "items_per_page": 10,
  "status": "A",
  "category_id": 123,
  "q": "search term"
}

create_product

Create a new product:

{
  "product": "Product Name",
  "price": 29.99,
  "category_ids": [123, 456],
  "description": "Short description",
  "full_description": "Full product description",
  "status": "A",
  "amount": 100
}

Order Tools

get_orders

Retrieve orders with filtering:

{
  "page": 1,
  "items_per_page": 10,
  "status": "P",
  "period": "M",
  "user_id": 123
}

update_order_status

Update order status:

{
  "order_id": 12345,
  "status": "C",
  "notify_user": true
}

Status Codes

Product Status:

  • A - Active

  • D - Disabled

  • H - Hidden

Order Status:

  • O - Open

  • P - Processed

  • C - Complete

  • F - Failed

  • D - Declined

  • B - Backordered

  • I - Incomplete

User Status:

  • A - Active

  • D - Disabled

User Types:

  • A - Admin

  • V - Vendor

  • C - Customer

Error Handling

The server includes comprehensive error handling:

  • API connection errors

  • Invalid parameters

  • Missing required fields

  • CS-Cart API errors

All errors are returned with descriptive messages to help with debugging.

Docker Configuration

Environment Variables

When using Docker, you can set environment variables in several ways:

  1. Using .env file (recommended):

CSCART_API_URL=https://your-store.com/api
CSCART_API_EMAIL=admin@yourstore.com
CSCART_API_KEY=your-api-key-here
LOG_LEVEL=info
  1. Using docker-compose.yml:

environment:
  - CSCART_API_URL=https://your-store.com/api
  - CSCART_API_EMAIL=admin@yourstore.com
  - CSCART_API_KEY=your-api-key-here
  1. Using Docker run command:

docker run -d \
  -e CSCART_API_URL=https://your-store.com/api \
  -e CSCART_API_EMAIL=admin@yourstore.com \
  -e CSCART_API_KEY=your-api-key-here \
  cscart-mcp-server

Docker Images

  • Dockerfile: Standard development image (~200MB)

  • Dockerfile.production: Optimized production image (~150MB)

    • Multi-stage build for smaller size

    • Non-root user for security

    • Proper signal handling with dumb-init

    • Health checks included

Resource Limits

The docker-compose.yml includes resource limits:

  • CPU: 0.5 cores max, 0.25 cores reserved

  • Memory: 512MB max, 256MB reserved

Adjust these based on your server capacity and usage requirements.

Project Structure

cscart-mcp-server/
├── src/
│   └── index.js              # Main server file (moved here)
├── scripts/
│   └── setup.js              # Setup automation script
├── logs/                     # Log files directory
├── tests/                    # Test files directory
├── config/                   # Configuration files
├── package.json              # Updated paths
├── project.config.js         # Project configuration
├── Dockerfile               # Updated for new structure
├── Dockerfile.production    # Updated for new structure
├── docker-compose.yml       # Docker orchestration
├── .env.example             # Environment template
└── README.md                # Updated documentation

Adding New Tools

To add new tools, extend the ListToolsRequestSchema handler and add corresponding methods to the CSCartMCPServer class.

Contributing

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Add tests if applicable

  5. Submit a pull request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

For issues related to:

  • CS-Cart API: Check CS-Cart documentation or support

  • MCP Protocol: Refer to MCP documentation

  • This Server: Open an issue in this repository

Changelog

v0.1.0

  • Initial release

  • Basic product management tools

  • Order management functionality

  • Category and user tools

  • Sales statistics support

Available Tools

12 tools
create_productC

Create a new product in the CS-Cart store

ParametersJSON Schema
NameRequiredDescriptionDefault
productYesProduct name
priceYesProduct price
category_idsNoArray of category IDs
descriptionNoProduct description
full_descriptionNoFull product description
statusNoProduct status (A=Active, D=Disabled, H=Hidden)A
amountNoProduct quantity in stock
weightNoProduct weight
shipping_freightNoShipping cost

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure but only states the basic action. It doesn't cover critical aspects like required permissions, whether creation is idempotent, error handling, or what happens on success (e.g., returns a product ID). For a mutation tool with zero annotation coverage, this is a significant gap.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without any fluff or redundancy. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.

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

Completeness2/5

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

For a creation tool with 9 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what the tool returns, error conditions, or behavioral nuances, leaving the agent with insufficient context to use it effectively beyond basic parameter passing.

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 all 9 parameters with clear descriptions and defaults. The description adds no additional parameter semantics beyond implying creation involves these fields, meeting the baseline for high schema coverage without compensation needed.

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 ('Create') and target resource ('new product in the CS-Cart store'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'update_product' beyond the obvious verb difference, missing an opportunity to clarify when to choose creation over modification.

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 'update_product' or 'get_products'. There's no mention of prerequisites, context for creation, or exclusions, leaving the agent to infer usage solely from the tool name and schema.

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

delete_productC

Delete a product from the store

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesProduct ID to delete

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 full burden. While 'Delete' implies a destructive mutation, the description doesn't disclose whether this operation is reversible, what permissions are required, whether it cascades to related data, or what happens on success/failure. For a destructive operation with zero annotation coverage, this is inadequate behavioral disclosure.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It's appropriately sized for a simple delete operation and gets straight to the point without unnecessary elaboration.

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

Completeness2/5

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

For a destructive mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after deletion (e.g., confirmation message, error handling), whether there are side effects, or what the agent should expect. Given the complexity of a delete operation in a store context, more completeness is needed.

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 'product_id' clearly documented in the schema. The description doesn't add any parameter semantics beyond what the schema already provides (e.g., format examples, validation rules, or where to find product IDs). Baseline 3 is appropriate when schema does the heavy lifting.

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 ('Delete') and target resource ('a product from the store'), providing specific verb+resource pairing. However, it doesn't explicitly distinguish this from sibling tools like 'update_product' or 'create_product' beyond the obvious difference in action verbs.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., product must exist), consequences of deletion, or when to choose deletion over other operations like updating product status. With multiple sibling tools available, this lack of context is a significant gap.

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

get_categoriesB

Get list of product categories

ParametersJSON Schema
NameRequiredDescriptionDefault
parent_idNoParent category ID (0 for root categories)
statusNoCategory status filter (A=Active, D=Disabled, H=Hidden)

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool retrieves a list but doesn't describe what kind of list (e.g., paginated, sorted, limited), whether it requires authentication, rate limits, or error conditions. For a read operation with zero annotation coverage, this leaves significant behavioral gaps.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It's appropriately sized for a simple list-retrieval tool and front-loads the core purpose immediately. Every word 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 tool's moderate complexity (2 parameters, no output schema, no annotations), the description is minimally adequate. It states what the tool does but lacks behavioral context, usage guidance, and output information. For a read-only tool with good schema coverage, this is the bare minimum.

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 has 100% description coverage, with both parameters clearly documented in the schema itself. The description adds no additional parameter information beyond what's already in the schema (e.g., it doesn't explain the relationship between parent_id and category hierarchy). Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the action ('Get list') and resource ('product categories'), providing a specific verb+resource combination. However, it doesn't distinguish this tool from sibling tools like 'get_products' or 'get_product', which also retrieve product-related information but focus on 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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when this tool is appropriate (e.g., for browsing categories vs. products) or when to use sibling tools like 'get_products' instead. There's no context about prerequisites or exclusions.

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

get_orderC

Get detailed information about a specific order

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYesOrder 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 retrieves 'detailed information,' implying a read-only operation, but doesn't specify what details are included, whether authentication is required, potential error conditions, or response format. This leaves significant gaps for a tool with no annotation coverage.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and wastes no space, making it easy for an agent to parse quickly.

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

Completeness2/5

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

For a tool with no annotations and no output schema, the description is insufficient. It doesn't explain what 'detailed information' includes, how errors are handled, or any behavioral traits. Given the complexity of order data and the lack of structured fields, more context is needed to ensure the agent can use the tool effectively.

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 single parameter 'order_id' documented as 'Order ID.' The description adds no additional meaning beyond this, such as format examples or constraints. Given the high schema coverage, a baseline score of 3 is appropriate, as the schema already provides adequate parameter information.

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 ('detailed information about a specific order'), making it immediately understandable. However, it doesn't explicitly distinguish this from sibling tools like 'get_orders' (plural) or 'update_order_status', which could cause confusion about when to use each 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?

The description provides no guidance on when to use this tool versus alternatives like 'get_orders' (for listing multiple orders) or 'update_order_status' (for modifying orders). It lacks any context about prerequisites, such as needing an existing order ID, or exclusions, leaving the agent to infer usage from the tool name alone.

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

get_ordersC

Retrieve orders from the CS-Cart store

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination
items_per_pageNoNumber of items per page
statusNoOrder status filter (O=Open, P=Processed, C=Complete, F=Failed, D=Declined, B=Backordered, I=Incomplete)
periodNoTime period filter (A=All time, D=Today, W=This week, M=This month, Y=This year)
time_fromNoStart date for custom period (YYYY-MM-DD)
time_toNoEnd date for custom period (YYYY-MM-DD)
user_idNoFilter by user 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 only states the basic action ('Retrieve') without mentioning whether this is a read-only operation, if it requires authentication, what the return format looks like (e.g., list of orders with fields), pagination behavior beyond parameters, or any rate limits. This is inadequate for a tool with 7 parameters and no 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.

Conciseness5/5

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

The description is a single, efficient sentence that gets straight to the point without any wasted words. It's appropriately sized for a straightforward retrieval tool and is perfectly front-loaded with the essential information.

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

Completeness2/5

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

Given the tool's complexity (7 parameters, no output schema, and no annotations), the description is insufficient. It doesn't explain what the tool returns (e.g., order objects with fields like ID, total, customer), how results are structured, or any behavioral aspects like error handling. For a list-retrieval tool with filtering options, more context is needed to use it effectively.

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

Parameters3/5

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

The schema description coverage is 100%, with all parameters clearly documented in the input schema itself. The description adds no additional parameter information beyond what's already in the schema, so it meets the baseline of 3. However, it doesn't compensate for any gaps since there are none in the schema.

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

Purpose4/5

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

The description clearly states the action ('Retrieve') and resource ('orders from the CS-Cart store'), making the purpose immediately understandable. However, it doesn't distinguish this tool from its sibling 'get_order' (singular), which likely retrieves a single order by ID, leaving some ambiguity about when to use one versus the other.

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 the sibling 'get_order' for single-order retrieval or other filtering tools like 'get_sales_statistics' for aggregated data. There's no context about prerequisites, limitations, or typical use cases.

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

get_productC

Get detailed information about a specific product

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesProduct 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 this is a read operation ('Get'), implying it's likely safe and non-destructive, but doesn't confirm this or add details like error handling (e.g., what happens if the product_id is invalid), authentication needs, rate limits, or response format. 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.

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's front-loaded with the core action and resource, making it easy to parse quickly. There's no wasted verbiage 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 tool's complexity (a read operation with one parameter) and the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'detailed information' includes, potential return values, or error conditions. For a tool that likely returns structured data, more context is needed to guide the agent effectively.

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 'product_id' documented in the schema. The description doesn't add any meaning beyond this, such as explaining what a product ID is or how to obtain it. Since the schema handles the parameter documentation adequately, 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 verb ('Get') and resource ('detailed information about a specific product'), making the purpose unambiguous. However, it doesn't explicitly distinguish this from sibling tools like 'get_products' (plural) or 'update_product', which would require more specific differentiation for 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. It doesn't mention prerequisites (e.g., needing a product ID), contrast with 'get_products' for listing multiple products, or specify use cases like retrieving product details for updates or orders. This leaves the agent without contextual usage cues.

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

get_productsC

Retrieve a list of products from the CS-Cart store

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination
items_per_pageNoNumber of items per page
statusNoProduct status filter (A=Active, D=Disabled, H=Hidden)
category_idNoFilter by category ID
qNoSearch query for product name

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states it 'retrieves a list' without disclosing behavioral traits. It doesn't mention whether this is a read-only operation, if it requires authentication, rate limits, pagination behavior beyond parameters, or what format the returned list has. For a tool with 5 parameters and no annotation coverage, this is inadequate.

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's appropriately sized for a basic retrieval tool and front-loads the essential information.

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

Completeness2/5

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

For a tool with 5 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't explain the return format, error conditions, authentication requirements, or how it differs from similar sibling tools. The agent would lack important contextual information needed to use this tool effectively.

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 fully documents all 5 parameters with descriptions and defaults. The description adds no additional parameter information beyond what's in the schema, meeting the baseline for high schema coverage but not providing extra context about how parameters interact or typical usage patterns.

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 'Retrieve' and resource 'list of products from the CS-Cart store', making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'get_product' (singular) or 'get_categories', which would require more specific scope information.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'get_product' (for single products) or 'get_categories' (for categories). There's no mention of prerequisites, typical use cases, 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_sales_statisticsC

Get sales statistics for a specific period

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoTime period (D=Today, W=This week, M=This month, Y=This year)M
time_fromNoStart date for custom period (YYYY-MM-DD)
time_toNoEnd date for custom period (YYYY-MM-DD)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states what the tool does without behavioral details. It doesn't disclose if this is a read-only operation, requires authentication, has rate limits, or what the output format might be, which is inadequate for a tool with potential data retrieval implications.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. Every part earns its place by clearly stating the action and scope, making it easy to parse quickly.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete for a data retrieval tool. It lacks details on return values, error handling, or behavioral traits, which are crucial for an agent to use it effectively in context with sibling tools.

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 fully documents all three parameters with descriptions, enum values, and defaults. The description adds no additional parameter semantics beyond implying period-based filtering, meeting the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the verb 'Get' and resource 'sales statistics' with scope 'for a specific period', making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like get_orders or get_products that also retrieve data, missing explicit distinction.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like get_orders or get_products for sales-related data. The description implies usage for sales statistics but doesn't specify context, prerequisites, or exclusions, leaving the agent to infer based on tool name alone.

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

get_usersC

Get list of users/customers

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination
items_per_pageNoNumber of items per page
statusNoUser status filter (A=Active, D=Disabled)
user_typeNoUser type filter (A=Admin, V=Vendor, C=Customer)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure but offers minimal insight. It states it 'gets' a list, implying a read operation, but doesn't cover pagination behavior, rate limits, authentication needs, or what the return format looks like (e.g., list structure, fields). For a tool with 4 parameters and no output schema, this leaves significant gaps in understanding how it behaves.

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

Conciseness5/5

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

The description is extremely concise at just four words, with no wasted language. It's front-loaded with the core action and resource, making it easy to parse quickly. Every word ('Get', 'list', 'users/customers') directly contributes to understanding the tool's function.

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

Completeness2/5

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

Given the tool has 4 parameters, no annotations, and no output schema, the description is incomplete. It doesn't address behavioral aspects like pagination handling, filtering logic, or return format, which are critical for an agent to use it correctly. The high schema coverage helps with parameters, but overall context for invocation and results is lacking.

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 fully documents all parameters (page, items_per_page, status, user_type) with descriptions, defaults, and enums. The description adds no additional parameter semantics beyond implying a list output, which is already clear from the tool name. This meets the baseline of 3 for high schema coverage.

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

Purpose4/5

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

The description 'Get list of users/customers' clearly states the verb ('Get') and resource ('users/customers'), making the purpose immediately understandable. However, it doesn't differentiate from potential sibling tools like 'get_categories' or 'get_products' beyond the resource name, and the dual 'users/customers' phrasing is slightly ambiguous about whether these are distinct categories.

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 filtering, or comparisons to other tools like 'get_orders' that might involve user data. Usage is implied only by the name and parameters, with no explicit when/when-not instructions.

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

update_order_statusD

Update order status

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYesOrder ID
statusYesNew order status (O=Open, P=Processed, C=Complete, F=Failed, D=Declined, B=Backordered, I=Incomplete)
notify_userNoWhether to notify the user about status change

TDQS

D1.7/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Update order status' implies a mutation operation but reveals nothing about permissions required, whether changes are reversible, side effects (like notifications), rate limits, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is a critical gap that leaves the agent guessing about important 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.

Conciseness2/5

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

While technically concise with just three words, this is under-specification rather than effective brevity. The description fails to provide essential context that would help an agent use the tool correctly. Every sentence should earn its place, but here the single phrase doesn't provide enough value to justify its existence as a helpful description.

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

Completeness1/5

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

This is a mutation tool with no annotations, no output schema, and sibling tools that could be confused with it. The description is completely inadequate - it doesn't explain what the tool does beyond the name, provides no behavioral context, offers no usage guidance, and leaves critical questions unanswered about permissions, side effects, and error conditions.

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 fully documents all three parameters (order_id, status with enum values, notify_user with default). The description adds no additional meaning beyond what's in the schema - it doesn't explain parameter interactions, constraints, or usage nuances. With complete 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.

Purpose2/5

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

The description 'Update order status' is essentially a tautology that restates the tool name. While it includes a verb ('Update') and resource ('order status'), it lacks specificity about what this operation entails or how it differs from other order-related tools like 'get_order' or 'update_product'. It doesn't distinguish itself from siblings beyond the obvious name difference.

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

Usage Guidelines1/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. There are sibling tools like 'get_order' and 'update_product' that might be relevant in similar contexts, but the description offers no explicit or implicit advice on when this tool is appropriate, what prerequisites exist, or when to choose other tools instead.

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

update_productC

Update an existing product

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesProduct ID to update
productNoProduct name
priceNoProduct price
category_idsNoArray of category IDs
descriptionNoProduct description
full_descriptionNoFull product description
statusNoProduct status (A=Active, D=Disabled, H=Hidden)
amountNoProduct quantity in stock
weightNoProduct weight
shipping_freightNoShipping cost

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. 'Update an existing product' implies a mutation operation but doesn't disclose permission requirements, whether updates are partial or complete, validation rules, error conditions, or what happens to unspecified fields. This leaves significant behavioral gaps for a tool with 10 parameters.

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

Conciseness5/5

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

The description is extremely concise at just 4 words with zero wasted language. It's front-loaded with the core action and resource, making it efficient despite its simplicity.

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

Completeness2/5

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

For a mutation tool with 10 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what happens during updates, what the response contains, error handling, or how it differs from similar tools. The 100% schema coverage helps but doesn't compensate for the lack of behavioral context.

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 all 10 parameters thoroughly. The description adds no additional parameter information beyond what's in the schema, maintaining the baseline score of 3 for adequate but unenhanced coverage.

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

Purpose3/5

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

The description 'Update an existing product' clearly states the verb (update) and resource (product), but it's vague about scope and doesn't distinguish from sibling tools like update_product_stock or update_order_status. It doesn't specify what aspects of a product can be updated beyond the basic concept.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives like update_product_stock or create_product. The description doesn't mention prerequisites (e.g., product must exist), exclusions, or appropriate contexts for use.

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

update_product_stockC

Update product stock quantity

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesProduct ID
amountYesNew stock quantity

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. 'Update product stock quantity' implies a mutation operation but doesn't specify whether this requires special permissions, if it's idempotent, what happens with invalid amounts (e.g., negative values), or how it affects related data (e.g., inventory logs). For a mutation tool with zero annotation coverage, this is insufficient.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core purpose and appropriately sized for a simple update operation. Every word earns its place.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., success confirmation, updated product object, error details) or address potential side effects. Given the complexity of stock updates (which could trigger inventory events), more context is needed.

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 both parameters ('product_id' and 'amount') clearly documented in the schema. The description adds no additional parameter semantics beyond what the schema provides (e.g., no clarification on 'amount' units or valid ranges). Baseline 3 is appropriate when the schema does the heavy lifting.

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 'Update product stock quantity' clearly states the action (update) and the target resource (product stock quantity). It distinguishes from siblings like 'create_product' or 'update_product' by focusing specifically on stock quantity rather than general product attributes or creation. However, it doesn't explicitly differentiate from 'update_product' which might also handle stock updates.

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 'update_product' (which might handle stock) or 'get_product' (for checking current stock). There's no mention of prerequisites, constraints, or typical usage scenarios. The agent must infer usage from the tool name alone.

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. 12 tool updates
    • First observedcreate_product
    • First observeddelete_product
    • First observedget_categories
    • First observedget_order
    • First observedget_orders
    • First observedget_product
    • First observedget_products
    • First observedget_sales_statistics
    • First observedget_users
    • First observedupdate_order_status
    • First observedupdate_product
    • First observedupdate_product_stock

TDQS

B3/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose targeting specific resources and actions, such as create/delete/get/update for products, get for orders/categories/users/statistics, and update for order status and product stock. There is no overlap or ambiguity between tools, making it easy for an agent to select the correct one.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern (e.g., create_product, get_products, update_order_status), but there are minor deviations like 'get_categories' and 'get_users' which use plural nouns inconsistently compared to 'get_product' and 'get_order' (singular). Overall, naming is highly readable and predictable.

Tool Count5/5

With 12 tools, this server is well-scoped for managing a CS-Cart store, covering key operations like product management, order handling, user and category retrieval, and sales statistics. Each tool earns its place without being excessive or insufficient for the domain.

Completeness4/5

The tool set provides strong coverage for core e-commerce workflows, including CRUD operations for products, order retrieval and status updates, and access to categories, users, and sales data. Minor gaps include no tools for creating or updating categories/users, but agents can work around this with the existing tools.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that enables AI assistants to interact with a complete e-commerce application, providing authentication, product browsing, and shopping cart management through standardized MCP tools.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    A Model Context Protocol server that connects AI agents to the Shopify Admin GraphQL API, enabling management of products, orders, customers, and more through natural language.
    1,192
    6
    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/hungryweb/cscart-mcp-server'

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