The SNOMED CT server has decent tool naming (verb-first), reasonable descriptions, and explicit schemas visible in the source. However, descriptions lack actionable context and specific constraints. Parameters are described but lack ranges, format specifics, and error recovery guidance. Output schemas are not documented in the source code. Tool annotations are present (readOnlyHint, destructiveHint, idempotentHint, openWorldHint), which is a positive signal. Error handling is minimal, the code returns format_error() but the actual error messages are not visible. The server passes basic quality checks but falls short of production-grade clarity.
Get full details for a SNOMED CT concept: label, definition, synonyms, parents, and clinical relationships.
Get hierarchically related SNOMED CT concepts (parents, children, ancestors, or descendants).
Search SNOMED CT concepts. Returns matching concept IDs, labels, and definitions. For domain filter, use one of: - clinical_finding: diseases, signs, symptoms - procedure: surgeries, therapies, diagnostic tests - observable_entity: measurements, scores, lab values, vital signs - body_structure: anatomical structures, organs, body regions - organism: bacteria, viruses, organisms - substance: chemicals, dietary substances, biological substances - pharmaceutical_product: medications, vaccines, clinical drugs, biologic products - specimen: blood samples, tissue specimens - special_concept: navigational and grouping concepts for browsing - physical_object: devices, implants, instruments - physical_force: radiation, thermal, mechanical forces - event: accidents, exposures, falls, natural phenomena - environment: environments, geographical locations, healthcare settings - social_context: occupations, religions, ethnic groups, family roles, economic status - situation: findings or procedures with explicit temporal or subject context - staging_and_scales: tumor staging, grading systems, assessment scales - qualifier_value: severity, laterality, chronicity, other qualifiers - record_artifact: clinical documents, reports, orders, consent forms - snomed_model_component: metadata and model components
Output schemas not documented. The search, get_concept, and get_hierarchy tools return formatted strings (via format_search_results, format_concept, format_hierarchy helpers) but the code does not show the resulting JSON structure. LLMs cannot plan downstream operations without knowing what fields to expect.
Parameter constraints are incomplete. 'limit' accepts 1-50 for search and 1-100 for get_hierarchy, but descriptions do not state the bounds. 'page' parameter lacks minimum (should be >= 1). 'domain' parameter lists valid values in the description rather than as an enum, LLMs may hallucinate invalid domain names.
Error recovery guidance is absent. The search() tool returns format_error() for invalid domains, but the error message format and LLM recovery path are not visible in the code. No guidance on retryability, user-fixable vs. fatal errors, or how to obtain valid domain values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 51 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 49 | - | v1 |
Description clarity and actionability. The 'domain' parameter description states 'Optional SNOMED branch filter' but does not explain what a 'branch filter' does or when to use it. The get_hierarchy 'relation' parameter description says 'One of: parents, children, ancestors, descendants' but does not explain the semantic difference (e.g., 'parents' = immediate parent; 'ancestors' = all parents, grandparents, etc.).
Pagination not documented. The search() tool accepts 'page' and 'limit' parameters but does not state whether a 'total' or 'has_more' field is returned, or how many results are actually available. Without pagination metadata, the LLM cannot determine if results are complete or if further pages exist.
include_detail parameter lacks context. The get_concept tool's boolean 'include_detail' parameter description states what is returned in each branch but does not guide the LLM on when to use each mode. Guidance like 'Use False for quick lookups; use True when full clinical context is needed' would clarify selection.