MCP server for e-commerce customer operations including orders, returns, reviews, storefront data, and email functionality
MemCommerce Customer MCP server demonstrates reasonable definition quality with clear naming conventions and mostly complete parameter schemas. However, several critical issues reduce the overall score: (1) Two tools lack proper input schemas visible in code (add_review_sentiment, send_email have object types without nested schema details), (2) Parameter descriptions are present but generic for some tools, (3) Output schemas are documented in docstrings but not formally exposed in tool registration, (4) Error handling exists but recovery guidance is minimal. The server uses modular-mcp with Streamable HTTP, which is current. Tool naming follows verb_noun conventions (list_, create_, add_, send_) which is good. Most tools have descriptions 100-300 chars which is within baseline (194 avg). However, the 'list_hole_storefront_data' naming contains a typo/unclear term ('hole' instead of 'whole'), and several output types are complex objects without clear field documentation visible in the registration.
Add or update sentiment for a review.
Submit a return request for a user's order. This function allows the user to initiate a return request by providing the order ID, reason for return, and the list of items to be returned along with their quantities. It uses the provided JWT token for authentication and submits the data to the MemCommerce API.
Retrieve all return requests submitted by the user. This function fetches all return requests associated with the provided user JWT token. Each return includes information about the return reason, order, status, and the items being returned. It is useful for allowing users to view their return history within the system.
Retrieve complete storefront data from the MemCommerce system for display purposes. This function fetches all publicly available product information that would typically be displayed on an e-commerce storefront, including products with their variants, pricing, and categorization. The data returned is structured for front-end display and customer browsing experiences.
Retrieve a list of all orders placed by the user. This function fetches all orders associated with the provided user JWT token. It returns a structured list of orders, including details such as order ID, status, and associated user information along with their respective order items.
add_review_sentiment lacks meaningful description beyond 'Add or update sentiment for a review.' No details on what ReviewSentiment object contains, valid sentiment values, or use cases.
Complex parameter types (ReviewSentiment, EmailDetails, ReturnDataCreate) are defined as generic 'object' in input schemas without nested field documentation visible in tool registration. LLMs cannot infer required fields or valid values.
Tool 'list_hole_storefront_data' contains apparent typo or unclear naming ('hole' instead of 'whole'). Ambiguous names reduce LLM clarity about tool purpose.
Output schemas are documented in Python docstrings (e.g., OrderListData, StorefrontData) but not formally exposed in the MCP tool schema registration. LLMs cannot parse return types from docstrings, they need structured output documentation in the protocol.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 71 | 2026-07-28+ | v2 |
| 2026-03-09 | C | 62 | - | v1 |
Sends an email to a user using the provided details. This Model Context Protocol tool attempts to send an email with the specified subject and content to the user identified by `user_id`. If the operation succeeds, the function returns `None`. If an error occurs during the process (such as a MemCommerce API exception), a `CallToolResult` is returned with error details.
No pagination parameters (limit, offset, page) on list_user_orders or list_all_user_returns, yet these tools return potentially large result sets. If orders/returns exceed context window limits, no mechanism exists to fetch subset.
Error messages rely on MemCommerceAPIException wrapping but provide no recovery guidance. When 'API error 404' occurs, the LLM has no hint whether to retry, check input, or escalate.
User JWT token passed as string parameter in multiple tools. While authentication is handled server-side, no documentation warns about JWT expiration, token refresh, or what to do if token is invalid.