[{"slug":"ZV-2026-0355","server_name":"npi-providers.caseyjhand.com","severity":"breaking","title":"npi-providers.caseyjhand.com: Field code was removed from npi_lookup_taxonomy input; consumers still sending it may be rejected or silently ignored.","summary":"[risky] Field error was added to npi_get_provider output. [risky] Description of npi_lookup_taxonomy changed (33% word delta). [breaking] Field code was removed from npi_lookup_taxonomy input; consumers still sending it may be rejected or silently ignored. [breaking] Field mode was removed from npi_lookup_taxonomy input; consumers still sending it may be rejected or silently ignored. [breaking] Field skip was removed from npi_lookup_taxonomy input; consumers still sending it may be rejected or silently ignored. [breaking] Field limit was removed from npi_lookup_taxonomy input; consumers still sending it may be rejected or silently ignored. [breaking] Field query was removed from npi_lookup_taxonomy input; consumers still sending it may be rejected or silently ignored. [breaking] Field section was removed from npi_lookup_taxonomy input; consumers still sending it may be rejected or silently ignored. [breaking] Field grouping was removed from npi_lookup_taxonomy input; consumers still sending it may be rejected or silently ignored. [risky] Field error was added to npi_lookup_taxonomy output. [risky] Description of npi_search_providers changed (47% word delta). [risky] Field error was added to npi_search_providers output.","changes":[{"kind":"output_property_added","path":"outputSchema.properties.error","tool":"npi_get_provider","after":{"type":"object","required":["code","message"],"properties":{"code":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991,"description":"JSON-RPC error code for this failure."},"data":{"type":"object","properties":{"reason":{"type":"string","description":"Machine-readable failure mode. Declared by this tool: `none_found`: Every requested NPI returned a confirmed no-record response — none failed with an upstream error (those surface as the underlying service/timeout error instead). Other values are possible when a failure originates below the handler."},"recovery":{"type":"object","required":["hint"],"properties":{"hint":{"type":"string"}},"description":"Actionable next step for the caller.","additionalProperties":{}},"retryable":{"type":"boolean","description":"Whether retrying may succeed."}},"additionalProperties":{}},"message":{"type":"string","description":"Human-readable description of what went wrong."}},"description":"Present when the call failed. Absent on success.","additionalProperties":{}},"detail":"Field `error` was added to `npi_get_provider` output.","severity":"risky"},{"kind":"description_changed","tool":"npi_lookup_taxonomy","after":"Resolve and browse the NUCC Healthcare Provider Taxonomy — the specialty code set NPPES uses — fully offline (bundled). Mode `resolve` turns a plain-language specialty (e.g. \"cardiologist\", \"heart doctor\") into matching taxonomy entries; mode `get` returns the full entry for an exact code; mode `browse` walks the hierarchy (grouping → classification → specialization), optionally filtered by grouping and by NPI section (Individual/NPI-1 vs Non-Individual/NPI-2). A resolved entry's specialization, or its classification when specialization is absent, maps directly to npi_search_providers.taxonomy_description.","before":"Resolve and browse the NUCC Healthcare Provider Taxonomy — the specialty code set NPPES uses — fully offline (bundled). Mode `resolve` turns a plain-language specialty (e.g. \"cardiologist\", \"heart doctor\") into matching taxonomy codes and their canonical descriptions; mode `get` returns the full entry for an exact code; mode `browse` walks the hierarchy (grouping → classification → specialization), optionally filtered by grouping and by NPI section (Individual/NPI-1 vs Non-Individual/NPI-2). Grounding a plain-language specialty here before calling npi_search_providers ensures the correct taxonomy code is sent rather than returning nothing.","detail":"Description of `npi_lookup_taxonomy` changed (33% word delta).","severity":"risky","descriptionDelta":0.33333333333333337},{"kind":"input_property_removed","path":"inputSchema.properties.code","tool":"npi_lookup_taxonomy","before":{"type":"string","description":"For mode \"get\": the exact NUCC taxonomy code (e.g. \"207RC0000X\")."},"detail":"Field `code` was removed from `npi_lookup_taxonomy` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_property_removed","path":"inputSchema.properties.mode","tool":"npi_lookup_taxonomy","before":{"enum":["resolve","get","browse"],"type":"string","description":"resolve: plain term → codes. get: exact code → entry. browse: walk the hierarchy."},"detail":"Field `mode` was removed from `npi_lookup_taxonomy` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_property_removed","path":"inputSchema.properties.skip","tool":"npi_lookup_taxonomy","before":{"type":"integer","default":0,"maximum":1000,"minimum":0,"description":"Entries to skip before the page, for paging past a truncated resolve/browse result (0–1000). Keep the same query/filters and limit, raise skip by limit each call. Ignored for get."},"detail":"Field `skip` was removed from `npi_lookup_taxonomy` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_property_removed","path":"inputSchema.properties.limit","tool":"npi_lookup_taxonomy","before":{"type":"integer","default":20,"maximum":50,"minimum":1,"description":"Maximum entries to return for resolve/browse (1–50). Ignored for get."},"detail":"Field `limit` was removed from `npi_lookup_taxonomy` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_property_removed","path":"inputSchema.properties.query","tool":"npi_lookup_taxonomy","before":{"type":"string","description":"For mode \"resolve\": the plain-language specialty term to resolve (e.g. \"pediatric cardiologist\")."},"detail":"Field `query` was removed from `npi_lookup_taxonomy` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_property_removed","path":"inputSchema.properties.section","tool":"npi_lookup_taxonomy","before":{"enum":["Individual","Non-Individual"],"type":"string","description":"For mode \"browse\": filter by NPI section — Individual (NPI-1) or Non-Individual (NPI-2)."},"detail":"Field `section` was removed from `npi_lookup_taxonomy` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_property_removed","path":"inputSchema.properties.grouping","tool":"npi_lookup_taxonomy","before":{"type":"string","description":"For mode \"browse\": filter to a top-level grouping by case-insensitive substring (e.g. \"physicians\")."},"detail":"Field `grouping` was removed from `npi_lookup_taxonomy` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"output_property_added","path":"outputSchema.properties.error","tool":"npi_lookup_taxonomy","after":{"type":"object","required":["code","message"],"properties":{"code":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991,"description":"JSON-RPC error code for this failure."},"data":{"type":"object","properties":{"reason":{"type":"string","description":"Machine-readable failure mode. Declared by this tool: `no_match`: A resolve query or get code matched no taxonomy entry. `missing_argument`: The required query or code was present but blank after trimming. Other values are possible when a failure originates below the handler."},"recovery":{"type":"object","required":["hint"],"properties":{"hint":{"type":"string"}},"description":"Actionable next step for the caller.","additionalProperties":{}},"retryable":{"type":"boolean","description":"Whether retrying may succeed."}},"additionalProperties":{}},"message":{"type":"string","description":"Human-readable description of what went wrong."}},"description":"Present when the call failed. Absent on success.","additionalProperties":{}},"detail":"Field `error` was added to `npi_lookup_taxonomy` output.","severity":"risky"},{"kind":"description_changed","tool":"npi_search_providers","after":"Search the NPPES NPI registry for individual practitioners and healthcare organizations by name, organization name, location, provider type, and specialty. Plain-language specialty terms (e.g. \"cardiologist\", \"pediatric cardiologist\") resolve through the bundled NUCC taxonomy; the top match's specialization or classification becomes taxonomy_description, and all resolved candidates are returned in metadata. Location belongs in the dedicated city/state/postal_code inputs, not inside specialty. Each provider row includes the NPI, name, primary specialty, city/state/ZIP, type, and active/deactivated status; the NPI is the input for npi_get_provider when the full record is needed. At least one search criterion is required, and the registry rejects state-only searches. For specialty searches, returned providers are limited to the requested city/state/postal_code even when the registry includes providers outside that location. The registry never reports a true match total and only the first 1200 matches are reachable, so broad queries are capped.","before":"Search the NPPES NPI registry for individual practitioners and healthcare organizations by name, organization name, location, provider type, and specialty. The specialty filter accepts plain-language terms (e.g. \"cardiologist\", \"pediatric cardiologist\") and resolves them through the bundled NUCC taxonomy to the registry's exact taxonomy descriptions before searching; the resolved taxonomy is echoed back so you can see what was actually searched. Pass location as the dedicated city/state/postal_code inputs, not inside specialty. Returns a compact row per provider — NPI, name, primary specialty, city/state/ZIP, type, and active/deactivated status — suitable for disambiguation; call npi_get_provider with an NPI for the full record. At least one search criterion is required, and the registry rejects state-only searches (pair state with another filter). The registry does not treat location as a hard filter for specialty searches, so location-constrained results are post-filtered server-side to the requested city/state/postal_code. The registry never reports a true match total and only the first 1200 matches are reachable, so broad queries are capped — narrow with more filters.","detail":"Description of `npi_search_providers` changed (47% word delta).","severity":"risky","descriptionDelta":0.46715328467153283},{"kind":"output_property_added","path":"outputSchema.properties.error","tool":"npi_search_providers","after":{"type":"object","required":["code","message"],"properties":{"code":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991,"description":"JSON-RPC error code for this failure."},"data":{"type":"object","properties":{"reason":{"type":"string","description":"Machine-readable failure mode. Declared by this tool: `no_search_criteria`: No effective search criterion was provided. `conflicting_specialty`: Both specialty and taxonomy_description were supplied. `unresolved_specialty`: The specialty term matched no NUCC taxonomy. `invalid_search_field`: The registry returned a field error (e.g. wildcard under 2 characters, bad provider type). Other values are possible when a failure originates below the handler."},"recovery":{"type":"object","required":["hint"],"properties":{"hint":{"type":"string"}},"description":"Actionable next step for the caller.","additionalProperties":{}},"retryable":{"type":"boolean","description":"Whether retrying may succeed."}},"additionalProperties":{}},"message":{"type":"string","description":"Human-readable description of what went wrong."}},"description":"Present when the call failed. Absent on success.","additionalProperties":{}},"detail":"Field `error` was added to `npi_search_providers` output.","severity":"risky"}],"published_at":"2026-08-25T03:38:09.743Z"}]