[{"slug":"ZV-2026-1769","server_name":"medical-terminologies-mcp.sidneybissoli.workers.dev","severity":"breaking","title":"medical-terminologies-mcp.sidneybissoli.workers.dev: Tool map_loinc_to_snomed was removed.","summary":"[breaking] Tool map_loinc_to_snomed was removed. [breaking] Enum value snomed removed from source_terminology on find_equivalent. [breaking] Enum value snomed removed from terminology on terminology_diff. [breaking] Enum value snomed removed from terminology on terminology_diff. [safe] Description of terminology_versions changed (4% word delta). [breaking] Enum value snomed removed from terminology on terminology_versions. [safe] Description of validate_codes changed (3% word delta).","changes":[{"kind":"tool_removed","tool":"map_loinc_to_snomed","detail":"Tool `map_loinc_to_snomed` was removed.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.source_terminology","tool":"find_equivalent","before":"snomed","detail":"Enum value `snomed` removed from `source_terminology` on `find_equivalent`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.terminology","tool":"terminology_diff","before":"snomed","detail":"Enum value `snomed` removed from `terminology` on `terminology_diff`.","severity":"breaking"},{"kind":"enum_value_removed","path":"outputSchema.properties.terminology","tool":"terminology_diff","before":"snomed","detail":"Enum value `snomed` removed from `terminology` on `terminology_diff`.","severity":"breaking"},{"kind":"description_changed","tool":"terminology_versions","after":"List the current version, release date, publisher, source URL, and update cadence of every terminology this server queries against.\n\nUseful for pipeline maintainers who need to:\n- Confirm which release of ICD-11 / LOINC / RxNorm / MeSH / ATC the server is querying before a batch run.\n- Verify the bundled CID-10 (frozen at V2008) and ICD-10 → ICD-11 transition tables (currently 2025-01) match expectations.\n- Cite the data version in research artifacts.\n\nPass `terminology` to filter to a single entry; otherwise the full set of 7 is returned. The ICD-10 → ICD-11 version reads live from the bundled dataset; everything else is metadata maintained alongside the project release.","before":"List the current version, release date, publisher, source URL, and update cadence of every terminology this server queries against.\n\nUseful for pipeline maintainers who need to:\n- Confirm which release of ICD-11 / SNOMED / LOINC / RxNorm / MeSH / ATC the server is querying before a batch run.\n- Verify the bundled CID-10 (frozen at V2008) and ICD-10 → ICD-11 transition tables (currently 2025-01) match expectations.\n- Cite the data version in research artifacts.\n\nPass `terminology` to filter to a single entry; otherwise the full set of 8 is returned. The ICD-10 → ICD-11 version reads live from the bundled dataset; everything else is metadata maintained alongside the project release.","detail":"Description of `terminology_versions` changed (4% word delta).","severity":"safe","descriptionDelta":0.03749999999999998},{"kind":"enum_value_removed","path":"inputSchema.properties.terminology","tool":"terminology_versions","before":"snomed","detail":"Enum value `snomed` removed from `terminology` on `terminology_versions`.","severity":"breaking"},{"kind":"description_changed","tool":"validate_codes","after":"Validate a mixed batch of medical codes against their source terminologies. Useful for retrospective analysis of legacy databases — flag codes that no longer exist, surface ICD-10 → ICD-11 replacements, and grade activity status where the terminology exposes it.\n\nFor each input `{ code, terminology }`, returns:\n- **valid**: whether the code exists in the source terminology.\n- **active**: whether the code is currently active. Null when the source doesn't expose an explicit active/inactive distinction at category level (CID-10, ATC, ICD-11, RxNorm, MeSH all return null today; LOINC returns a real boolean).\n- **title**: the official label/name when available.\n- **replaced_by**: a successor code, populated today only for ICD-10 codes that have a primary ICD-11 mapping in the bundled WHO transition tables.\n- **source**: human-readable provenance of the validation (terminology + release/version).\n- **error**: non-null only when validation couldn't be performed (network error, upstream outage, etc.). `valid: false` + `error: null` means \"code not found\"; `valid: false` + `error: set` means \"couldn't validate\".\n\nTerminology is **required per code** — auto-detection isn't supported because category codes like \"A00\" exist in both ICD-10 and CID-10. Accepted values: `icd11`, `icd10`, `loinc`, `rxnorm`, `mesh`, `atc`, `cid10`.\n\nHard cap of 50 codes per call; codes are validated in parallel through their respective clients, so total wall time scales with the slowest upstream + its rate limit (worst case ~10 s for a full batch hitting ICD-11).","before":"Validate a mixed batch of medical codes against their source terminologies. Useful for retrospective analysis of legacy databases — flag codes that no longer exist, surface ICD-10 → ICD-11 replacements, and grade activity status where the terminology exposes it.\n\nFor each input `{ code, terminology }`, returns:\n- **valid**: whether the code exists in the source terminology.\n- **active**: whether the code is currently active. Null when the source doesn't expose an explicit active/inactive distinction at category level (CID-10, ATC, ICD-11, RxNorm, MeSH all return null today; SNOMED and LOINC return a real boolean).\n- **title**: the official label/name when available.\n- **replaced_by**: a successor code, populated today only for ICD-10 codes that have a primary ICD-11 mapping in the bundled WHO transition tables.\n- **source**: human-readable provenance of the validation (terminology + release/version).\n- **error**: non-null only when validation couldn't be performed (network error, SNOMED feature flag off, etc.). `valid: false` + `error: null` means \"code not found\"; `valid: false` + `error: set` means \"couldn't validate\".\n\nTerminology is **required per code** — auto-detection isn't supported because category codes like \"A00\" exist in both ICD-10 and CID-10. Accepted values: `icd11`, `icd10`, `snomed`, `loinc`, `rxnorm`, `mesh`, `atc`, `cid10`.\n\nHard cap of 50 codes per call; codes are validated in parallel through their respective clients, so total wall time scales with the slowest upstream + its rate limit (worst case ~10 s for a full batch hitting ICD-11).","detail":"Description of `validate_codes` changed (3% word delta).","severity":"safe","descriptionDelta":0.027027027027026973}],"published_at":"2026-10-04T01:51:18.168Z"},{"slug":"ZV-2026-1572","server_name":"medical-terminologies-mcp.sidneybissoli.workers.dev","severity":"breaking","title":"medical-terminologies-mcp.sidneybissoli.workers.dev: Type of rxcui on rxnorm_classes changed string → unset.","summary":"[breaking] Type of rxcui on rxnorm_classes changed string → unset. [safe] Description of rxnorm_concept changed (14% word delta). [breaking] Type of rxcui on rxnorm_concept changed string → unset. [breaking] Type of include_related on rxnorm_concept changed boolean → unset. [risky] Default of include_related on rxnorm_concept changed false → unset. [risky] Field found was added to rxnorm_concept output. [breaking] Type of tty on rxnorm_concept changed string → string|null. [breaking] Type of name on rxnorm_concept changed string → string|null. [breaking] Type of status on rxnorm_concept changed string → string|null. [breaking] Type of synonym on rxnorm_concept changed string → string|null. [breaking] Type of umlscui on rxnorm_concept changed string → string|null. [breaking] Type of language on rxnorm_concept changed string → string|null. [breaking] Type of suppress on rxnorm_concept changed string → string|null. [breaking] Type of rxcui on rxnorm_ingredients changed string → unset. [breaking] Type of rxcui on rxnorm_ndc changed string → unset.","changes":[{"kind":"input_type_changed","path":"inputSchema.properties.rxcui","tool":"rxnorm_classes","after":"unset","before":"string","detail":"Type of `rxcui` on `rxnorm_classes` changed string → unset.","severity":"breaking"},{"kind":"description_changed","tool":"rxnorm_concept","after":"Get detailed information about a specific RxNorm concept by RxCUI.\n\nUse this tool to:\n- Get the full name and synonyms for a drug\n- Check the concept status (active, remapped, etc.)\n- View related concepts (ingredients, brands, forms)\n\nProvide an RxCUI (RxNorm Concept Unique Identifier) like \"161\" — as a string of digits or as an integer.","before":"Get detailed information about a specific RxNorm concept by RxCUI.\n\nUse this tool to:\n- Get the full name and synonyms for a drug\n- Check the concept status (active, remapped, etc.)\n- View related concepts (ingredients, brands, forms)\n\nProvide an RxCUI (RxNorm Concept Unique Identifier) like \"161\".","detail":"Description of `rxnorm_concept` changed (14% word delta).","severity":"safe","descriptionDelta":0.13636363636363635},{"kind":"input_type_changed","path":"inputSchema.properties.rxcui","tool":"rxnorm_concept","after":"unset","before":"string","detail":"Type of `rxcui` on `rxnorm_concept` changed string → unset.","severity":"breaking"},{"kind":"input_type_changed","path":"inputSchema.properties.include_related","tool":"rxnorm_concept","after":"unset","before":"boolean","detail":"Type of `include_related` on `rxnorm_concept` changed boolean → unset.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.include_related","tool":"rxnorm_concept","before":false,"detail":"Default of `include_related` on `rxnorm_concept` changed false → unset.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.found","tool":"rxnorm_concept","after":{"type":"boolean","description":"false when RxNorm has no concept with this RxCUI (the lookup answered; the fields below are null)"},"detail":"Field `found` was added to `rxnorm_concept` output.","severity":"risky"},{"kind":"output_type_changed","path":"outputSchema.properties.tty","tool":"rxnorm_concept","after":"string|null","before":"string","detail":"Type of `tty` on `rxnorm_concept` changed string → string|null.","severity":"breaking"},{"kind":"output_type_changed","path":"outputSchema.properties.name","tool":"rxnorm_concept","after":"string|null","before":"string","detail":"Type of `name` on `rxnorm_concept` changed string → string|null.","severity":"breaking"},{"kind":"output_type_changed","path":"outputSchema.properties.status","tool":"rxnorm_concept","after":"string|null","before":"string","detail":"Type of `status` on `rxnorm_concept` changed string → string|null.","severity":"breaking"},{"kind":"output_type_changed","path":"outputSchema.properties.synonym","tool":"rxnorm_concept","after":"string|null","before":"string","detail":"Type of `synonym` on `rxnorm_concept` changed string → string|null.","severity":"breaking"},{"kind":"output_type_changed","path":"outputSchema.properties.umlscui","tool":"rxnorm_concept","after":"string|null","before":"string","detail":"Type of `umlscui` on `rxnorm_concept` changed string → string|null.","severity":"breaking"},{"kind":"output_type_changed","path":"outputSchema.properties.language","tool":"rxnorm_concept","after":"string|null","before":"string","detail":"Type of `language` on `rxnorm_concept` changed string → string|null.","severity":"breaking"},{"kind":"output_type_changed","path":"outputSchema.properties.suppress","tool":"rxnorm_concept","after":"string|null","before":"string","detail":"Type of `suppress` on `rxnorm_concept` changed string → string|null.","severity":"breaking"},{"kind":"input_type_changed","path":"inputSchema.properties.rxcui","tool":"rxnorm_ingredients","after":"unset","before":"string","detail":"Type of `rxcui` on `rxnorm_ingredients` changed string → unset.","severity":"breaking"},{"kind":"input_type_changed","path":"inputSchema.properties.rxcui","tool":"rxnorm_ndc","after":"unset","before":"string","detail":"Type of `rxcui` on `rxnorm_ndc` changed string → unset.","severity":"breaking"}],"published_at":"2026-09-29T01:33:18.465Z"},{"slug":"ZV-2026-0535","server_name":"medical-terminologies-mcp.sidneybissoli.workers.dev","severity":"breaking","title":"medical-terminologies-mcp.sidneybissoli.workers.dev: Type of code on icd11_lookup changed unset → string|null.","summary":"[breaking] Type of code on icd11_lookup changed unset → string|null. [breaking] Type of block_id on icd11_lookup changed unset → string|null. [breaking] Type of class_kind on icd11_lookup changed unset → string|null. [breaking] Type of code_range on icd11_lookup changed unset → string|null. [breaking] Type of definition on icd11_lookup changed unset → string|null. [breaking] Type of browser_url on icd11_lookup changed unset → string|null. [breaking] Type of coding_note on icd11_lookup changed unset → string|null. [breaking] Type of long_definition on icd11_lookup changed unset → string|null. [breaking] Type of diagnostic_criteria on icd11_lookup changed unset → string|null. [breaking] Type of external_copyright_notice on loinc_details changed unset → string|null. [breaking] Type of ndc on rxnorm_ndc changed unset → string|null. [breaking] Type of rxcui on rxnorm_ndc changed unset → string|null. [breaking] Type of to_version on terminology_diff changed unset → string|null. [breaking] Type of from_version on terminology_diff changed unset → string|null. [breaking] Type of changelog_url on terminology_diff changed unset → string|null.","changes":[{"kind":"output_type_changed","path":"outputSchema.properties.code","tool":"icd11_lookup","after":"string|null","before":"unset","detail":"Type of `code` on `icd11_lookup` changed unset → string|null.","severity":"breaking"},{"kind":"output_type_changed","path":"outputSchema.properties.block_id","tool":"icd11_lookup","after":"string|null","before":"unset","detail":"Type of `block_id` on `icd11_lookup` changed unset → string|null.","severity":"breaking"},{"kind":"output_type_changed","path":"outputSchema.properties.class_kind","tool":"icd11_lookup","after":"string|null","before":"unset","detail":"Type of `class_kind` on `icd11_lookup` changed unset → string|null.","severity":"breaking"},{"kind":"output_type_changed","path":"outputSchema.properties.code_range","tool":"icd11_lookup","after":"string|null","before":"unset","detail":"Type of `code_range` on `icd11_lookup` changed unset → string|null.","severity":"breaking"},{"kind":"output_type_changed","path":"outputSchema.properties.definition","tool":"icd11_lookup","after":"string|null","before":"unset","detail":"Type of `definition` on `icd11_lookup` changed unset → string|null.","severity":"breaking"},{"kind":"output_type_changed","path":"outputSchema.properties.browser_url","tool":"icd11_lookup","after":"string|null","before":"unset","detail":"Type of `browser_url` on `icd11_lookup` changed unset → string|null.","severity":"breaking"},{"kind":"output_type_changed","path":"outputSchema.properties.coding_note","tool":"icd11_lookup","after":"string|null","before":"unset","detail":"Type of `coding_note` on `icd11_lookup` changed unset → string|null.","severity":"breaking"},{"kind":"output_type_changed","path":"outputSchema.properties.long_definition","tool":"icd11_lookup","after":"string|null","before":"unset","detail":"Type of `long_definition` on `icd11_lookup` changed unset → string|null.","severity":"breaking"},{"kind":"output_type_changed","path":"outputSchema.properties.diagnostic_criteria","tool":"icd11_lookup","after":"string|null","before":"unset","detail":"Type of `diagnostic_criteria` on `icd11_lookup` changed unset → string|null.","severity":"breaking"},{"kind":"output_type_changed","path":"outputSchema.properties.external_copyright_notice","tool":"loinc_details","after":"string|null","before":"unset","detail":"Type of `external_copyright_notice` on `loinc_details` changed unset → string|null.","severity":"breaking"},{"kind":"output_type_changed","path":"outputSchema.properties.ndc","tool":"rxnorm_ndc","after":"string|null","before":"unset","detail":"Type of `ndc` on `rxnorm_ndc` changed unset → string|null.","severity":"breaking"},{"kind":"output_type_changed","path":"outputSchema.properties.rxcui","tool":"rxnorm_ndc","after":"string|null","before":"unset","detail":"Type of `rxcui` on `rxnorm_ndc` changed unset → string|null.","severity":"breaking"},{"kind":"output_type_changed","path":"outputSchema.properties.to_version","tool":"terminology_diff","after":"string|null","before":"unset","detail":"Type of `to_version` on `terminology_diff` changed unset → string|null.","severity":"breaking"},{"kind":"output_type_changed","path":"outputSchema.properties.from_version","tool":"terminology_diff","after":"string|null","before":"unset","detail":"Type of `from_version` on `terminology_diff` changed unset → string|null.","severity":"breaking"},{"kind":"output_type_changed","path":"outputSchema.properties.changelog_url","tool":"terminology_diff","after":"string|null","before":"unset","detail":"Type of `changelog_url` on `terminology_diff` changed unset → string|null.","severity":"breaking"}],"published_at":"2026-08-31T00:18:14.433Z"}]