MCP server that provides tools for searching and analyzing structured data from Aralia data platform
Critical gaps across all dimensions. Tool names lack clear action verbs and are overly verbose (search_aralia_data_first_step, search_aralia_data_second_step, etc.). Descriptions are present but generic and lack actionable guidance on when/why to use each tool. Input schemas visible but severely underspecified: parameters lack type constraints, enums, ranges, or validation rules. No output schemas documented. No error handling guidance. Tools appear to form a rigid multi-step pipeline rather than composable, independent operations. No evidence of idempotency, pagination, or result limiting.
Final step to get related structured data to user's question from Aralia. Args: charts (list[dict]): The charts that are related to the user's question Returns: charts data related to the user's question
First step to get related structured data to user's question from Aralia. Args: query (str): The user's question Returns: 1. The related datasets to the user's question. 2. Instruction and task to the next step's input.
Second step to get related structured data to user's question from Aralia. Args: datasets (list[dict]): The datasets that are related to the user's question Returns: 1. The related datasets column metadata to the user's question. 2. Instruction and task to the next step's input.
Third step to get related structured data to user's question from Aralia. Args: charts (list[dict]): The charts that are related to the user's question Returns: 1. aralia api request with candidate filter values 2. Instruction and task to the next step's input.
Tool names violate verb_noun convention and lack clarity. Names like 'search_aralia_data_first_step' are procedural and ordinal rather than action-focused. LLMs cannot infer intent from 'first_step' vs 'second_step', these should be named by what they discover (e.g., search_datasets, get_column_metadata, get_filter_options, fetch_chart_data).
Input schemas present but critically underspecified. 'question' parameter has no constraints, length limits, or format guidance. 'datasets' and 'charts' parameters are typed as array[object] with no schema for the object structure, LLMs cannot validate what fields are required or optional. No enums, patterns, or validation rules visible.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 31 | 2026-07-28+ | v2 |
No output schemas documented. Descriptions state 'Returns: 1. The related datasets... 2. Instruction and task...' but the actual JSON structure is not specified. LLMs cannot plan downstream calls or extract required fields (e.g., dataset IDs for chaining to next step) without knowing the response shape.
Tools form a rigid, sequential pipeline (first → second → third → final) rather than composable operations. This violates the single-responsibility principle and forces agents into a fixed execution order. If an agent needs only datasets without proceeding to filters, it cannot call just the first tool, it must invoke all four in sequence.
No error handling guidance. Descriptions do not explain what happens on invalid input, network failures, or empty results. No recovery hints (e.g., 'If no datasets found, try a broader query'). Agents cannot self-correct or adapt when calls fail.