MCP server for Korean Saju (Four Pillars of Destiny) child temperament analysis
Three tools with complete schemas and descriptions, but descriptions are generic and lack LLM-optimized guidance. Tool names are clear action verbs (analyze_, compare_, explain_). All parameters have types and descriptions. Output is formatted as markdown text rather than structured JSON, which forces LLMs to parse unstructured content. Error handling is minimal. No tool annotations (readOnlyHint, etc.) despite all being read-only operations.
Calculate a child's Four Pillars of Destiny (사주팔자) and return their temperament profile including dominant element, personality traits, learning style, and parenting tips based on Korean Saju astrology.
Compare the Saju temperament profiles of two siblings to understand their differences, compatibilities, and how to parent each child differently.
Explain what a specific Five Element (오행) means for a child's personality, learning, and development in Korean Saju astrology.
Output is unstructured markdown text instead of structured JSON. LLMs must parse free-form text to extract fields like dominantElement, elementBalance, personalityTraits. This wastes tokens and increases hallucination risk.
Tool descriptions lack LLM-optimized guidance. 'Calculate a child's Four Pillars...' is functional but does not explain WHEN to use this tool vs explain_five_elements, or what the output enables. Descriptions should be 50-200 chars with clear intent signals.
No tool annotations despite all three tools being read-only. Adding readOnlyHint=true signals to agents that these calls are safe to retry and have no side effects.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | 2026-07-28+ | v2 |
Error handling is minimal. Catch block returns generic 'Error calculating temperament: {message}' with no recovery guidance. Should suggest next steps (e.g., 'Check date format is YYYY-MM-DD') or categorize as retryable vs user-fixable.
Parameter descriptions lack format constraints. 'Birth date in YYYY-MM-DD format' is stated but not enforced. Should validate and return 'Invalid date format: got "2024/01/15", use YYYY-MM-DD' on failure.