E-commerce data analysis system that performs comprehensive data quality assessment, exploratory data analysis, preprocessing, and generates analysis code
This server has 30 tools for e-commerce data analysis. While all tools have names and descriptions, the quality of parameter schemas is inconsistent and concerning. Many tools accept dataframe parameters without clear JSON Schema definitions, schemas are inferred from docstrings rather than formally declared. Parameters lack type constraints, enums where appropriate, and detailed format documentation. Descriptions are adequate (typically 40-150 chars) but many lack dependency hints or explanation of when to use each tool. Error handling is minimal, no recovery guidance, no actionable error messages. The server appears to be STDIO-only (custom framework, no visible HTTP/SSE transport configuration), which is a critical blocker for remote MCP compliance. Tools are well-named with action verbs (analyze_, calculate_, generate_, etc.) but composition is loose, many tools perform overlapping analysis (e.g., temporal_analysis appears in both tools 5 and 25). Output schemas are not documented, making it unclear what fields downstream tools should expect.
Analyze correlations between variables identifying strong and moderate correlations
Analyze customer behavior patterns including repeat rates and geographic distribution
Analyze product performance metrics including sales per product and pricing
Assess data accuracy by detecting outliers, negative values, and data type issues
Assess data completeness by analyzing missing values and calculating completeness score
Assess data consistency by checking for duplicates and ID column issues
Assess data timeliness by analyzing date ranges, recency, and temporal coverage
Dataframe parameters lack formal JSON Schema definitions. Tools accept 'dataframe' type parameters (e.g., orders_df, customers_df) but these are not formally typed or constrained in JSON Schema. Schemas show type='dataframe' which is not a standard JSON Schema primitive, should be 'object' with documented field constraints or explicit schema references.
No output schemas documented. Tools like calculate_order_metrics return dictionaries (e.g., {'total_orders': int, 'unique_days': int, 'avg_orders_per_day': float}) but the response structure is not formally documented. LLMs cannot plan downstream calls without knowing what fields are available in responses.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 10 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 35 | - | v1 |
Calculate key order metrics including total orders, unique customers, and average orders per day
Calculate overall data quality score using weighted average of completeness, accuracy, consistency, and timeliness
Calculate customer satisfaction metrics from review scores
Check data accuracy by detecting outliers and data type issues
Check data completeness by analyzing missing values
Check data consistency including duplicates and ID column issues
Clean and preprocess customers data including categorical encoding
Clean and preprocess order items data including calculated total item values
Clean and preprocess orders data including date conversion and feature extraction
Clean and preprocess payments data including installment flagging
Clean and preprocess reviews data including sentiment classification
Perform correlation analysis on specified columns to identify relationships
Discover patterns in data including trends, seasonal patterns, distribution patterns, and associations
Export cleaned and merged datasets to CSV files
Generate data preprocessing module code for data loading, cleaning, and preparation
Generate data quality validation module code for comprehensive quality checks
Generate data quality validation report from validation results
Load all datasets from data_storage directory
Load all CSV datasets from the data_storage directory
Merge related datasets (orders with items, orders with customers)
Analyze payment patterns including payment types, installments, and values
Run complete data quality assessment on all datasets in data_storage directory
Save data quality assessment results to JSON and text files
Generate comprehensive statistical summary including basic info, numeric stats, categorical stats, and temporal stats
Analyze temporal patterns in orders by hour, day of week, and month
Run all validation checks on a dataset and return overall quality score
Duplicate tool functionality. temporal_analysis (tool 5) and analyze_temporal_patterns (tool 25) perform the same analysis on orders with timestamps. LLMs will waste reasoning cycles deciding between them. These should be consolidated into a single canonical tool.
Parameter descriptions lack format constraints and dependencies. Parameters like file_path (tool 22) say 'Path to orders CSV file' but do not specify: required format (relative vs absolute), file encoding, whether it must exist, or acceptable extensions. Parameter cols in correlation_analysis (tool 7) says 'List of column names' but does not state min/max length or validation rules.
No error handling or recovery guidance. Tools like load_all_data (tool 8) do not document what happens if CSV files are missing, malformed, or unreadable. No error descriptions explain what the LLM should do (retry, use different parameters, ask user). Error responses will likely be unstructured Python exceptions.
No dependency hints between tools. Tools like generate_summary_report (tool 28) require pre-computed results (overview, status_analysis, temporal_analysis, delivery_stats) but the description does not explain which tools must be called first or in what order. This forces LLMs to infer the workflow from parameter names alone.
No idempotency or dry-run support. Destructive/write tools (export_cleaned_data tool 16, create_visualizations tool 27, generate_summary_report tool 28, export_results tool 30) do not support dry-run or confirmation. An LLM could accidentally overwrite critical output files without warning.
Parameter names overloaded and ambiguous. Tools accept bare dataframe parameters (orders_df, customers_df, reviews_df) but descriptions do not specify required columns, data types, or acceptable ranges. A tool expecting 'order_purchase_timestamp' will fail silently if passed an 'order_date' column instead.
No pagination or result limits documented. Tools like analyze_customer_behavior (tool 2) return top_states and other aggregations but do not specify if results are capped, ordered, or paginated. Large datasets could produce unbounded responses that exhaust context windows.
Generic descriptions lack actionable context. Tools like merge_datasets (tool 14) have description 'Merge related datasets including orders with items and orders with customers', this does not explain when to call it, what it returns, or what the merged schema looks like. Descriptions should answer: What does it do? When should I use it? What should I expect?