Multi-industry intake and triage system that classifies, scores severity, and routes cases using keyword matching and LLM-assisted classification. Supports healthcare and other industries via configurable taxonomy, severity rules, and routing policies.
Server has 4 tools with basic schemas and descriptions, but significant gaps limit production readiness. All tools have input schemas with type definitions and descriptions present, meeting minimum requirements. However, descriptions are generic (avg ~120 chars, below the 194-char baseline for A+ tools), lack actionable context, and omit critical details like when to use each tool vs. alternatives. Output schemas are undocumented, LLMs cannot predict return structure. Error handling returns structured responses but lacks recovery guidance. No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tool composition is reasonable (classify → score → route → orchestrated triage), but parameter naming could be clearer (e.g., 'text' is generic; 'intake_text' would be more specific). No pagination, no batch operations, no natural-language identifier support.
Classifies intake text against a configurable taxonomy using keyword matching. Returns category, confidence score, matched keywords, and whether LLM assistance is needed.
Routes a case to the appropriate destination queue based on category and severity score. Uses configurable routing rules with severity overrides.
Scores the severity of intake text based on configurable severity rules. Returns severity level, numeric score, and reason for the assessment.
Complete triage workflow that classifies intake text, scores severity, and routes the case. Orchestrates classify_intake, score_severity, and route_case in a single call.
Output schemas not documented. LLMs cannot predict return structure (fields, types, nested objects). Breaks downstream tool chaining and forces agents to guess field names.
Descriptions lack actionable context. No explanation of WHEN to use each tool vs. alternatives (e.g., when to call classify_intake vs. triage_intake directly). Descriptions avg ~120 chars; baseline for A+ is 194 chars.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot determine which tools are safe to retry or have side effects. All tools are marked READ_ONLY in metadata but not in schema.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Parameter 'text' is generic. Should be 'intake_text' to clarify domain context. Parameter 'category' in score_severity and route_case lacks enum constraint, accepts any string, inviting hallucinated values.
Error responses return structured format but lack recovery guidance. 'Invalid input: text must be non-empty' tells LLM nothing about what to do next. Should suggest 'Provide non-empty intake text and retry.'