Strict AST-based YAML and JSON parser Model Context Protocol (MCP) server. Bidirectional conversion with deep validation.
Single tool with basic structure but significant gaps. Tool name 'convert_yaml' lacks action verb clarity (should be 'convert_yaml_to_json' or similar). Description is adequate (97 chars, within baseline 34-392 range) but lacks WHEN/WHY guidance. Input schema present with types and descriptions, but output schema is underdocumented, YamlResponsePresenter exists but return type structure is not explicitly declared in tool definition. No error handling guidance for LLMs. No parameter constraints (direction enum not enforced in schema). Tool is read-only but lacks explicit idempotentHint annotation.
Converts massive YAML files to JSON and vice-versa, preventing indentation hallucinations by the LLM.
Tool name lacks action verb clarity. 'convert_yaml' is ambiguous, does it convert FROM yaml, TO yaml, or bidirectionally? Should be 'convert_yaml_to_json' or 'convert_between_yaml_json' to signal intent before LLM reads description.
Output schema not documented in tool definition. YamlResponsePresenter exists in views but tool.returns() does not expose the schema structure (success: boolean, result: string, error: string) to the LLM. LLM cannot plan downstream operations without knowing response fields.
Direction parameter lacks enum constraint in schema. 'direction' accepts 'yaml2json' or 'json2yaml' but is defined as free-form optional string. LLM may hallucinate invalid values like 'yaml-to-json' or 'convert'. Should declare enum: ['yaml2json', 'json2yaml'].
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
No error recovery guidance. Error response includes raw error message but does not guide LLM on next steps. E.g., 'Invalid YAML syntax at line 5' should suggest 'Check YAML indentation and quote escaping, or provide valid JSON for json2yaml conversion.'
Tool lacks idempotentHint annotation. convert_yaml is read-only and deterministic (same input always produces same output), but no toolAnnotations present in schema to signal this to the MCP client. Should include idempotentHint: true.