CS-Cart MCP Server
Provides containerized deployment options for the CS-Cart MCP server with both standard and optimized production images, including resource limits and environment variable configuration.
Supports installation and management of the CS-Cart MCP server through npm commands for setup, development, and production deployment.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@CS-Cart MCP Servershow me the latest orders from the past week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
Option 1: Quick Setup (Recommended)
Clone this repository:
git clone <repository-url>
cd cscart-mcp-serverRun the setup script:
npm run setupInstall dependencies:
npm installUpdate
.envwith your CS-Cart credentials and start:
npm startOption 2: Manual Local Installation
Clone this repository:
git clone <repository-url>
cd cscart-mcp-serverInstall dependencies:
npm installConfigure environment variables:
cp .env.example .envEdit .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-hereOption 2: Docker Installation
Clone this repository:
git clone <repository-url>
cd cscart-mcp-serverConfigure environment variables:
cp .env.example .envBuild and run with Docker Compose:
docker-compose up -dOr 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-serverOption 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:prodCS-Cart API Setup
Enable API Access:
Log into your CS-Cart admin panel
Go to Administration → API access
Enable API access for your store
Generate API Key:
Create a new API key or use existing one
Note the API key and admin email for configuration
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 logsDocker Deployment
Start with Docker Compose:
docker-compose up -dView logs:
docker-compose logs -f cscart-mcp-serverStop the service:
docker-compose downProduction 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:latestIntegration 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/nodeor/opt/homebrew/bin/nodeLinux:
/usr/bin/nodeor/usr/local/bin/nodeWindows:
C:\\Program Files\\nodejs\\node.exe
Integration with AnythingLLM
To integrate this MCP server with AnythingLLM:
Navigate to AnythingLLM Settings:
Open your AnythingLLM instance
Go to Settings → Integrations → MCP Servers
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" } }Important Path Notes:
Use the full absolute path to the
nodeexecutableUse the full absolute path to the
src/index.jsfileEnsure the paths are accessible from the AnythingLLM container/environment
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" } }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
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- ActiveD- DisabledH- Hidden
Order Status:
O- OpenP- ProcessedC- CompleteF- FailedD- DeclinedB- BackorderedI- Incomplete
User Status:
A- ActiveD- Disabled
User Types:
A- AdminV- VendorC- 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:
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=infoUsing docker-compose.yml:
environment:
- CSCART_API_URL=https://your-store.com/api
- CSCART_API_EMAIL=admin@yourstore.com
- CSCART_API_KEY=your-api-key-hereUsing 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-serverDocker 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 documentationAdding New Tools
To add new tools, extend the ListToolsRequestSchema handler and add corresponding methods to the CSCartMCPServer class.
Contributing
Fork the repository
Create a feature branch
Make your changes
Add tests if applicable
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 toolscreate_productC
Create a new product in the CS-Cart store
| Name | Required | Description | Default |
|---|---|---|---|
| product | Yes | Product name | |
| price | Yes | Product price | |
| category_ids | No | Array of category IDs | |
| description | No | Product description | |
| full_description | No | Full product description | |
| status | No | Product status (A=Active, D=Disabled, H=Hidden) | A |
| amount | No | Product quantity in stock | |
| weight | No | Product weight | |
| shipping_freight | No | Shipping cost |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | Product ID to delete |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| parent_id | No | Parent category ID (0 for root categories) | |
| status | No | Category status filter (A=Active, D=Disabled, H=Hidden) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes | Order ID |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination | |
| items_per_page | No | Number of items per page | |
| status | No | Order status filter (O=Open, P=Processed, C=Complete, F=Failed, D=Declined, B=Backordered, I=Incomplete) | |
| period | No | Time period filter (A=All time, D=Today, W=This week, M=This month, Y=This year) | |
| time_from | No | Start date for custom period (YYYY-MM-DD) | |
| time_to | No | End date for custom period (YYYY-MM-DD) | |
| user_id | No | Filter by user ID |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | Product ID |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination | |
| items_per_page | No | Number of items per page | |
| status | No | Product status filter (A=Active, D=Disabled, H=Hidden) | |
| category_id | No | Filter by category ID | |
| q | No | Search query for product name |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Time period (D=Today, W=This week, M=This month, Y=This year) | M |
| time_from | No | Start date for custom period (YYYY-MM-DD) | |
| time_to | No | End date for custom period (YYYY-MM-DD) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination | |
| items_per_page | No | Number of items per page | |
| status | No | User status filter (A=Active, D=Disabled) | |
| user_type | No | User type filter (A=Admin, V=Vendor, C=Customer) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes | Order ID | |
| status | Yes | New order status (O=Open, P=Processed, C=Complete, F=Failed, D=Declined, B=Backordered, I=Incomplete) | |
| notify_user | No | Whether to notify the user about status change |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | Product ID to update | |
| product | No | Product name | |
| price | No | Product price | |
| category_ids | No | Array of category IDs | |
| description | No | Product description | |
| full_description | No | Full product description | |
| status | No | Product status (A=Active, D=Disabled, H=Hidden) | |
| amount | No | Product quantity in stock | |
| weight | No | Product weight | |
| shipping_freight | No | Shipping cost |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | Product ID | |
| amount | Yes | New stock quantity |
TDQS
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.
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.
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.
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.
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.
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.
12 tool updates
- First observed
create_product - First observed
delete_product - First observed
get_categories - First observed
get_order - First observed
get_orders - First observed
get_product - First observed
get_products - First observed
get_sales_statistics - First observed
get_users - First observed
update_order_status - First observed
update_product - First observed
update_product_stock
TDQS
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.
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.
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.
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
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
Unified MCP server for 70+ eCommerce platforms: products, orders, customers, and more.
The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.
A Model Context Protocol server for Wix AI tools
MCP server for Product Management
Related MCP Servers
- AlicenseCqualityCmaintenanceA Model Context Protocol server enabling product searches across e-commerce platforms, price history tracking, and product specification-based searches using natural language prompts.219MIT
- FlicenseNot gradedqualityDmaintenanceA 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.-
- AlicenseNot gradedqualityBmaintenanceA 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,1926MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server for interacting with the Amazon Selling Partner API, providing tools and resources for managing catalog, inventory, orders, reports, and more.43-
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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