A multi-agent system for automated data analysis, EDA, model training, and report generation with agent-to-agent messaging
This server has severe definition quality gaps. While 35 tools are registered with basic schemas, most lack proper descriptions (many under 20 chars), parameter descriptions are minimal or absent, and output schemas are undocumented. Tool names are inconsistent (send vs publish, get_inbox vs fetch vs peek). No error handling guidance, no security annotations, and no tool composition support. The codebase shows internal Python classes but no evidence of MCP protocol implementation, this appears to be a standalone Python agent framework, not an MCP server.
Retrieve the complete audit log of all messages published on the A2A bus
Automatically detect the data type of a pandas Series by attempting conversions to datetime, int, float, bool, or category
Generate automatic data type suggestions for all object columns in a dataframe
Compute and return the correlation matrix for numeric columns in the dataframe
Create an auto-generated Jupyter notebook with data analysis report including profiler, EDA, model, and verifier outputs with Gemini AI insights
Delete a file from the project storage directory
No MCP protocol implementation detected. Codebase is a standalone Python agent framework with internal tool classes, not an MCP server. No evidence of MCP transport (HTTP, SSE, STDIO), tool registration via MCP, or protocol compliance.
Duplicate and conflicting tool names for the same functionality: send/direct_message (both send messages), get_inbox/fetch/peek (all retrieve messages), get_audit_log/audit_log (both audit logs). LLMs will waste reasoning cycles deciding between them.
Output schemas are undocumented. Tools return structured dicts (e.g., profile_column returns {status, profile}, train returns model metadata) but no schema is declared for LLMs to understand the response structure. This forces LLMs to infer field names and types.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 40 | 2026-07-28+ | v2 |
Return descriptive statistics for all columns in the dataframe
Compatibility wrapper for send method to send direct messages between agents
Analyze duplicates in the dataframe including total duplicates, sample duplicate rows, and duplicates per column
Fetch pending messages for an agent from the A2A bus, optionally consuming them
Retrieve the complete audit log of all messages sent through the A2A bus
Return list of column names from a dataframe
Retrieve all messages in an agent's inbox
Return the shape (rows and columns) of a dataframe
Return the first n rows of the dataframe
List files and directories in a directory within the project storage
List all registered agents on the A2A bus
Load a specific key from JSON-based memory storage
Load all stored memory from JSON-based storage
Execute a long-running job that sleeps for a specified number of seconds
Return a count of missing values for each column in the dataframe
Peek at pending messages for an agent without consuming them
Generate a detailed profile of a single column including missing values, unique values, data type, and statistics
Publish a message from one agent to another or broadcast via the A2A bus with topic and payload
Read text content from a file in the project storage directory
Read binary content from a file in the project storage directory
Register an agent with the A2A bus to ensure it has an inbox
Save a key-value pair to JSON-based memory storage
Send a message from one agent to another via the A2A bus with sender, receiver, topic, and payload
Return basic summary statistics of a dataframe including rows, columns, column names, and data types
Train machine learning models on a dataset with automatic task detection (classification/regression), preprocessing, and model selection
Validate classification model predictions by computing accuracy score
Validate regression model predictions by computing mean squared error
Write text content to a file in the project storage directory
Write binary content to a file in the project storage directory
Generic tool names lack clarity: 'describe' (describe what?), 'list' (list what?), 'load_all' (load all what?). These names do not convey intent and will cause LLM confusion when many tools are available.
No error handling guidance. Tools return generic error dicts (e.g., {status: error, error: str(e)}) with no recovery hints. LLMs cannot determine if errors are retryable, user-fixable, or fatal.